laneya2

cave exploration game
git clone https://git.ce9e.org/laneya2.git

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') {