|
|
@@ -2,6 +2,7 @@ package game
|
|
|
|
|
|
import (
|
|
|
"battlecamp-go-server/board"
|
|
|
+ "battlecamp-go-server/events"
|
|
|
"battlecamp-go-server/player"
|
|
|
"battlecamp-go-server/stomp"
|
|
|
"log"
|
|
|
@@ -11,13 +12,13 @@ import (
|
|
|
)
|
|
|
|
|
|
type Game struct {
|
|
|
- Id int64 `json:"id"`
|
|
|
- StartTime int64 `json:"startTime"`
|
|
|
- EndTime int64 `json:"endTime"`
|
|
|
- Board *board.Board `json:"board"`
|
|
|
- Players []*player.Player `json:"-"`
|
|
|
- mutex sync.Mutex
|
|
|
- Winner *player.Player `json:"winner,omitempty"`
|
|
|
+ Id int64 `json:"id"`
|
|
|
+ StartTime int64 `json:"startTime"`
|
|
|
+ EndTime int64 `json:"endTime"`
|
|
|
+ Board *board.Board `json:"board"`
|
|
|
+ Players []*player.Player `json:"-"`
|
|
|
+ mutex sync.Mutex
|
|
|
+ Winner *player.Player `json:"winner,omitempty"`
|
|
|
}
|
|
|
|
|
|
func NewGame(cols, rows int) *Game {
|
|
|
@@ -56,17 +57,6 @@ func (g *Game) placePlayer(p *player.Player) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-type updatePlayers struct {
|
|
|
- GameId int64 `json:"gameId"`
|
|
|
- Players []*player.Player `json:"players"`
|
|
|
-}
|
|
|
-
|
|
|
-type stompGameEnd struct {
|
|
|
- Type string `json:"type"`
|
|
|
- GameId int64 `json:"gameId"`
|
|
|
- Payload string `json:"payload"`
|
|
|
-}
|
|
|
-
|
|
|
func (g *Game) Move(p *player.Player, direction string) bool {
|
|
|
if !(direction == "N" || direction == "W" || direction == "S" || direction == "E") {
|
|
|
log.Printf("Illigal direction %v", direction)
|
|
|
@@ -95,7 +85,7 @@ func (g *Game) Move(p *player.Player, direction string) bool {
|
|
|
p.Pos.X = newX
|
|
|
p.Pos.Y = newY
|
|
|
// END TODO make tread safe
|
|
|
- up := updatePlayers{
|
|
|
+ up := events.PlayerUpdate{
|
|
|
GameId: g.Id,
|
|
|
Players: g.Players,
|
|
|
}
|
|
|
@@ -105,7 +95,7 @@ func (g *Game) Move(p *player.Player, direction string) bool {
|
|
|
if g.isWinner(p) {
|
|
|
g.EndTime = time.Now().Unix()
|
|
|
g.Winner = p
|
|
|
- ge := stompGameEnd{
|
|
|
+ ge := events.GameEnd{
|
|
|
Type: "GAME_END",
|
|
|
GameId: g.Id,
|
|
|
Payload: g.Winner.Id,
|