- commit
- 4a8917ab9de3c2e4a1780629802b07a355ebca4c
- parent
- 2badc47c5b27b61a1978885d84508f33a9ad06df
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-09-20 21:07
go to next level on ladder
Diffstat
| M | laneya.go | 33 | +++++++++++++++++++++++++++++++++ |
| M | main.js | 4 | ++++ |
2 files changed, 37 insertions, 0 deletions
diff --git a/laneya.go b/laneya.go
@@ -66,6 +66,7 @@ type Game struct {
66 66 unregister chan *Player
67 67 lastId int
68 68 Rects []Rect
-1 69 Ladder Point
69 70 }
70 71
71 72 var mux = &sync.RWMutex{}
@@ -110,6 +111,7 @@ func (game *Game) generateMap() {
110 111 }
111 112 }
112 113
-1 114 game.Ladder = prev.Center()
113 115
114 116 for _, line := range lines {
115 117 game.Rects = append(game.Rects, line)
@@ -176,6 +178,34 @@ func (game *Game) IsFree(x int, y int) bool {
176 178 return false
177 179 }
178 180
-1 181 func (game *Game) MaybeNextLevel() {
-1 182 for player := range game.Players {
-1 183 if player.Pos != game.Ladder {
-1 184 return
-1 185 }
-1 186 }
-1 187
-1 188 game.generateMap()
-1 189 msgs := []Message{
-1 190 Message{
-1 191 "action": "setLevel",
-1 192 "rects": game.Rects,
-1 193 "ladder": game.Ladder,
-1 194 },
-1 195 }
-1 196
-1 197 for player := range game.Players {
-1 198 player.Pos = Point{0, 0}
-1 199 msgs = append(msgs, Message{
-1 200 "action": "setPosition",
-1 201 "id": player.Id,
-1 202 "pos": player.Pos,
-1 203 })
-1 204 }
-1 205
-1 206 game.broadcast(msgs)
-1 207 }
-1 208
179 209 func (game *Game) run() {
180 210 for {
181 211 select {
@@ -188,6 +218,7 @@ func (game *Game) run() {
188 218 Message{
189 219 "action": "setLevel",
190 220 "rects": game.Rects,
-1 221 "ladder": game.Ladder,
191 222 },
192 223 }
193 224 for p := range game.Players {
@@ -248,6 +279,8 @@ func (game *Game) run() {
248 279 "pos": player.Pos,
249 280 },
250 281 })
-1 282
-1 283 game.MaybeNextLevel()
251 284 }
252 285 } else {
253 286 log.Println(msg)
diff --git a/main.js b/main.js
@@ -15,6 +15,9 @@ var game = {
15 15 objects: {},
16 16
17 17 getChar(x, y) {
-1 18 if (x === this.ladder.x && y === this.ladder.y) {
-1 19 return ['>', -1];
-1 20 }
18 21 if (Object.values(this.objects).some(obj => x === obj.pos.x && y === obj.pos.y)) {
19 22 return ['@', 1];
20 23 }
@@ -94,6 +97,7 @@ socket.onmessage = function(event) {
94 97 game.id = msg.id;
95 98 } else if (msg.action === 'setLevel') {
96 99 game.rects = msg.rects;
-1 100 game.ladder = msg.ladder;
97 101 game.horizontal = msg.horizontal;
98 102 game.vertical = msg.vertical;
99 103 } else if (msg.action === 'create') {