From a104330404e69b4f4160cc08e066f8820b0df627 Mon Sep 17 00:00:00 2001 From: Luke Meyers Date: Sat, 8 Feb 2020 20:11:55 -0800 Subject: [PATCH] factor out renderProjection --- game/env.go | 2 +- game/game.go | 2 +- gfx/gfx.go | 60 ++++++++++++++++++++++++++++------------------------ 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/game/env.go b/game/env.go index 4488887..5fd1a9e 100644 --- a/game/env.go +++ b/game/env.go @@ -50,7 +50,7 @@ func randomOpenPosition(ts []Team, os []Obstacle) Position { func randomObstacles(teams []Team) []Obstacle { var os []Obstacle - const numObstacles = 5 * NumTeams + const numObstacles = 3 * NumTeams for i := 0; i < numObstacles; i++ { os = append(os, Obstacle{ Position: randomOpenPosition(teams, os), diff --git a/game/game.go b/game/game.go index ab84f00..39ad25b 100644 --- a/game/game.go +++ b/game/game.go @@ -213,5 +213,5 @@ const ( numRacers = 3 NumTeams = 8 NumLanes = NumTeams - baseCharge = 18 + baseCharge = 16 ) diff --git a/gfx/gfx.go b/gfx/gfx.go index 79fe8ed..3e78446 100644 --- a/gfx/gfx.go +++ b/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), } + bounds := pic.Bounds() 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) + renderProjection(ctx, batch, c, bounds, racer.Kinetics, pos, newPos) } - bounds := pic.Bounds() sprite := pixel.NewSprite(pic, bounds) 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) } +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) { im := imdraw.New(nil) im.Color = colornames.Bisque