Add battery levels and indicator

This commit is contained in:
Luke Meyers 2020-02-08 12:29:49 -08:00
parent 7fc869a675
commit a083b291fe
3 changed files with 33 additions and 5 deletions

View File

@ -147,6 +147,7 @@ type Racer struct {
Position Position
StartPos Position
Kinetics Kinetics
Battery Battery
}
type Kinetics struct {
@ -180,6 +181,10 @@ func NewState() State {
Lane: i,
Pos: j * (Steps / numRacers),
},
Battery: Battery{
Capacity: baseCharge,
Charge: baseCharge,
},
}
r.Position = r.StartPos
racers = append(racers, r)
@ -199,8 +204,9 @@ func NewState() State {
}
const (
Steps = 50
numRacers = 5
NumTeams = 8
NumLanes = NumTeams
Steps = 80
numRacers = 3
NumTeams = 8
NumLanes = NumTeams
baseCharge = 4
)

View File

@ -8,6 +8,11 @@ func accelerate(r Racer) Racer {
r.Kinetics.A = MaxA
}
if r.Kinetics.A > r.Battery.Charge {
r.Kinetics.A = r.Battery.Charge
}
r.Battery.Charge -= r.Kinetics.A
r.Kinetics.V += r.Kinetics.A
if r.Kinetics.V > MaxV {
r.Kinetics.V = MaxV
@ -51,6 +56,6 @@ func collide(pos, lane int, s State) interface{} {
const (
baseAccel = 1
MaxA = 1
MaxV = 3
MaxV = 4
PassDistance = 2
)

View File

@ -163,6 +163,23 @@ func renderRacer(ctx context, oldRacer, racer game.Racer, active bool, c pixel.R
bounds := pic.Bounds()
sprite := pixel.NewSprite(pic, bounds)
sprite.DrawColorMask(ctx.w, pixel.IM.Moved(pos).ScaledXY(pos, pixel.Vec{2, 2}), c)
im := imdraw.New(nil)
for i := 0; i < racer.Battery.Capacity; i++ {
pos := pos
pos.X -= racerWidth
pos.Y -= racerWidth
w := 4.0
pos.X += (w * 2) * float64(i)
im.Color = colornames.Yellow
im.Push(pos)
var lw float64
if i > racer.Battery.Charge {
lw = 1
}
im.Circle(w, lw)
im.Draw(ctx.w)
}
}
func renderBaton(pos pixel.Vec, w *pixelgl.Window) {