factor out renderProjection
This commit is contained in:
parent
82dc081c35
commit
a104330404
|
@ -50,7 +50,7 @@ func randomOpenPosition(ts []Team, os []Obstacle) Position {
|
||||||
func randomObstacles(teams []Team) []Obstacle {
|
func randomObstacles(teams []Team) []Obstacle {
|
||||||
var os []Obstacle
|
var os []Obstacle
|
||||||
|
|
||||||
const numObstacles = 5 * NumTeams
|
const numObstacles = 3 * NumTeams
|
||||||
for i := 0; i < numObstacles; i++ {
|
for i := 0; i < numObstacles; i++ {
|
||||||
os = append(os, Obstacle{
|
os = append(os, Obstacle{
|
||||||
Position: randomOpenPosition(teams, os),
|
Position: randomOpenPosition(teams, os),
|
||||||
|
|
|
@ -213,5 +213,5 @@ const (
|
||||||
numRacers = 3
|
numRacers = 3
|
||||||
NumTeams = 8
|
NumTeams = 8
|
||||||
NumLanes = NumTeams
|
NumLanes = NumTeams
|
||||||
baseCharge = 18
|
baseCharge = 16
|
||||||
)
|
)
|
||||||
|
|
64
gfx/gfx.go
64
gfx/gfx.go
|
@ -147,37 +147,11 @@ func renderRacer(ctx context, batch *pixel.Batch, oldRacer, racer game.Racer, ac
|
||||||
Y: oldPos.Y + ctx.tween*(newPos.Y-oldPos.Y),
|
Y: oldPos.Y + ctx.tween*(newPos.Y-oldPos.Y),
|
||||||
}
|
}
|
||||||
|
|
||||||
if active {
|
|
||||||
im := imdraw.New(nil)
|
|
||||||
projC := c
|
|
||||||
alpha := 0.25
|
|
||||||
projC.R *= alpha
|
|
||||||
projC.G *= alpha
|
|
||||||
projC.B *= alpha
|
|
||||||
projC.A = alpha
|
|
||||||
im.Color = projC
|
|
||||||
w := pic.Bounds().W() * 0.65
|
|
||||||
|
|
||||||
ll := pixel.Vec{
|
|
||||||
X: pos.X + w,
|
|
||||||
Y: pos.Y - w,
|
|
||||||
}
|
|
||||||
ur := pixel.Vec{
|
|
||||||
X: pos.X + w*float64(racer.Kinetics.V+1),
|
|
||||||
Y: pos.Y + w,
|
|
||||||
}
|
|
||||||
if ctx.tween < 1 {
|
|
||||||
ur.X = math.Min(ur.X, newPos.X+racerWidth)
|
|
||||||
}
|
|
||||||
ur.X = math.Max(ur.X, ll.X)
|
|
||||||
|
|
||||||
im.Push(ll)
|
|
||||||
im.Push(ur)
|
|
||||||
im.Rectangle(0)
|
|
||||||
im.Draw(batch)
|
|
||||||
}
|
|
||||||
|
|
||||||
bounds := pic.Bounds()
|
bounds := pic.Bounds()
|
||||||
|
if active {
|
||||||
|
renderProjection(ctx, batch, c, bounds, racer.Kinetics, pos, newPos)
|
||||||
|
}
|
||||||
|
|
||||||
sprite := pixel.NewSprite(pic, bounds)
|
sprite := pixel.NewSprite(pic, bounds)
|
||||||
sprite.DrawColorMask(batch, pixel.IM.Moved(pos).ScaledXY(pos, pixel.Vec{1.7, 1.7}), c)
|
sprite.DrawColorMask(batch, pixel.IM.Moved(pos).ScaledXY(pos, pixel.Vec{1.7, 1.7}), c)
|
||||||
|
|
||||||
|
@ -203,6 +177,36 @@ func renderRacer(ctx context, batch *pixel.Batch, oldRacer, racer game.Racer, ac
|
||||||
im2.Draw(batch)
|
im2.Draw(batch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func renderProjection(ctx context, b *pixel.Batch, c pixel.RGBA, bounds pixel.Rect, k game.Kinetics, pos, newPos pixel.Vec) {
|
||||||
|
im := imdraw.New(nil)
|
||||||
|
projC := c
|
||||||
|
alpha := 0.25
|
||||||
|
projC.R *= alpha
|
||||||
|
projC.G *= alpha
|
||||||
|
projC.B *= alpha
|
||||||
|
projC.A = alpha
|
||||||
|
im.Color = projC
|
||||||
|
w := bounds.W() * 0.65
|
||||||
|
|
||||||
|
ll := pixel.Vec{
|
||||||
|
X: pos.X + w,
|
||||||
|
Y: pos.Y - w,
|
||||||
|
}
|
||||||
|
ur := pixel.Vec{
|
||||||
|
X: pos.X + w*float64(k.V+1),
|
||||||
|
Y: pos.Y + w,
|
||||||
|
}
|
||||||
|
if ctx.tween < 1 {
|
||||||
|
ur.X = math.Min(ur.X, newPos.X+racerWidth)
|
||||||
|
}
|
||||||
|
ur.X = math.Max(ur.X, ll.X)
|
||||||
|
|
||||||
|
im.Push(ll)
|
||||||
|
im.Push(ur)
|
||||||
|
im.Rectangle(0)
|
||||||
|
im.Draw(b)
|
||||||
|
}
|
||||||
|
|
||||||
func renderBaton(pos pixel.Vec, b *pixel.Batch) {
|
func renderBaton(pos pixel.Vec, b *pixel.Batch) {
|
||||||
im := imdraw.New(nil)
|
im := imdraw.New(nil)
|
||||||
im.Color = colornames.Bisque
|
im.Color = colornames.Bisque
|
||||||
|
|
Loading…
Reference in New Issue