Add battery levels and indicator
This commit is contained in:
parent
7fc869a675
commit
a083b291fe
14
game/game.go
14
game/game.go
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
17
gfx/gfx.go
17
gfx/gfx.go
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue