factor out renderProjection

This commit is contained in:
Luke Meyers 2020-02-08 20:11:55 -08:00
parent 82dc081c35
commit a104330404
3 changed files with 34 additions and 30 deletions

View File

@ -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),

View File

@ -213,5 +213,5 @@ const (
numRacers = 3 numRacers = 3
NumTeams = 8 NumTeams = 8
NumLanes = NumTeams NumLanes = NumTeams
baseCharge = 18 baseCharge = 16
) )

View File

@ -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