Skip to content

Commit f78e7cb

Browse files
committed
Automatically break after crossing the finish line
1 parent 53e3bf8 commit f78e7cb

File tree

3 files changed

+17
-19
lines changed

3 files changed

+17
-19
lines changed

events.cge

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@ type hovercraft {
6868
}
6969

7070
// One unit equals the width of the hovercrafts and checkpoints.
71-
// The origin is in the bottom left corner.
7271
type vec {
72+
// left to right
7373
x: float,
74+
// bottom to top
7475
y: float
7576
}

hoverrace/game.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,6 @@ func (g *Game) onPlayerSocketConnected(player *cg.Player, socket *cg.Socket) {
113113
}
114114

115115
func (g *Game) update(delta time.Duration) {
116-
if !g.running {
117-
return
118-
}
119-
120116
for _, player := range g.players {
121117
player.update(delta)
122118
}
@@ -151,10 +147,6 @@ func (g *Game) handleReady(playerId string) {
151147

152148
player.ready = true
153149

154-
if len(g.players) < 2 {
155-
return
156-
}
157-
158150
readyPlayers := make([]string, 0, len(g.players))
159151
for _, p := range g.players {
160152
if p.ready {
@@ -190,14 +182,23 @@ func (g *Game) start() {
190182
g.finishedPlayers = 0
191183
g.createCheckpoints()
192184

185+
x := 0.0
186+
i := 0
193187
for _, player := range g.players {
188+
player.finished = false
194189
player.checkpoints = make([]Vec, len(g.checkpoints))
195190
copy(player.checkpoints, g.checkpoints)
196191

197192
player.pos = Vec{
198-
X: 10,
199-
Y: 1,
193+
X: x,
194+
Y: 0,
200195
}
196+
if i%2 != 0 {
197+
player.pos.X = -x
198+
}
199+
200+
x += 1.5
201+
i++
201202
}
202203

203204
g.cg.Send("server", CheckpointsEvent, CheckpointsEventData{
@@ -220,7 +221,7 @@ func (g *Game) start() {
220221

221222
func (g *Game) finish() {
222223
for _, player := range g.players {
223-
player.reset()
224+
player.ready = false
224225
}
225226
g.running = false
226227
}

hoverrace/player.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,11 @@ func (p *Player) move(delta time.Duration) {
8383

8484
if p.vel.MagnitudeSquared() != 0 {
8585
velMag := p.vel.Magnitude()
86+
8687
p.acc = Vec{
8788
X: -p.vel.X / velMag,
8889
Y: -p.vel.Y / velMag,
89-
}.Mul(math.Max(maxAcceleration, math.Abs(velMag)))
90+
}.Mul(math.Min(maxAcceleration, math.Abs(velMag)))
9091
}
9192

9293
if p.vel.MagnitudeSquared() < 0.01 {
@@ -101,7 +102,7 @@ func (p *Player) move(delta time.Duration) {
101102
}
102103

103104
func (p *Player) checkCollisions() {
104-
if p.finished {
105+
if !p.game.running || p.finished {
105106
return
106107
}
107108

@@ -140,8 +141,3 @@ outer:
140141
}
141142
}
142143
}
143-
144-
func (p *Player) reset() {
145-
p.ready = false
146-
p.finished = false
147-
}

0 commit comments

Comments
 (0)