rest of the routes, dummy game creation
This commit is contained in:
parent
06e2175021
commit
86883cff71
21
api.go
21
api.go
@ -22,8 +22,27 @@ func NewAPI() *API {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//NewGame takes a POST and creates a new game
|
//NewGame takes a POST and creates a new game or returns an open one
|
||||||
func (a *API) NewGame(res http.ResponseWriter, req *http.Request) {
|
func (a *API) NewGame(res http.ResponseWriter, req *http.Request) {
|
||||||
|
for i, g := range a.games {
|
||||||
|
if !g.redPlayer.Ready {
|
||||||
|
g.redPlayer.Ready = true
|
||||||
|
if g.bluePlayer.Ready {
|
||||||
|
g.simulator.Setup()
|
||||||
|
initDummy(g.simulator)
|
||||||
|
}
|
||||||
|
respondWithJSON(res, http.StatusOK, newGameResp{i, "red"})
|
||||||
|
}
|
||||||
|
if !g.bluePlayer.Ready {
|
||||||
|
g.bluePlayer.Ready = true
|
||||||
|
if g.redPlayer.Ready {
|
||||||
|
g.simulator.Setup()
|
||||||
|
initDummy(g.simulator)
|
||||||
|
}
|
||||||
|
respondWithJSON(res, http.StatusOK, newGameResp{i, "blue"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
a.games[a.nextInt] = NewSession()
|
a.games[a.nextInt] = NewSession()
|
||||||
respondWithJSON(res, http.StatusOK, newGameResp{a.nextInt, "red"})
|
respondWithJSON(res, http.StatusOK, newGameResp{a.nextInt, "red"})
|
||||||
a.nextInt = a.nextInt + 1
|
a.nextInt = a.nextInt + 1
|
||||||
|
2
go.mod
2
go.mod
@ -3,6 +3,6 @@ module git.saintnet.tech/freego_api
|
|||||||
go 1.17
|
go 1.17
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.saintnet.tech/stryan/freego v0.0.0-20220307180035-64bab97c38d6 // indirect
|
git.saintnet.tech/stryan/freego v0.0.0-20220307194514-b5fc90339454 // indirect
|
||||||
github.com/gorilla/mux v1.8.0 // indirect
|
github.com/gorilla/mux v1.8.0 // indirect
|
||||||
)
|
)
|
||||||
|
2
go.sum
2
go.sum
@ -1,4 +1,6 @@
|
|||||||
git.saintnet.tech/stryan/freego v0.0.0-20220307180035-64bab97c38d6 h1:0GzkfU8R4Rj7SVxTpkOf9oZN4YpW2xe/IjYbNP5Zxjs=
|
git.saintnet.tech/stryan/freego v0.0.0-20220307180035-64bab97c38d6 h1:0GzkfU8R4Rj7SVxTpkOf9oZN4YpW2xe/IjYbNP5Zxjs=
|
||||||
git.saintnet.tech/stryan/freego v0.0.0-20220307180035-64bab97c38d6/go.mod h1:NXXisQVSPklkvs2Qg6Iv3LqXNaJwwEtho/2WmzhvAZc=
|
git.saintnet.tech/stryan/freego v0.0.0-20220307180035-64bab97c38d6/go.mod h1:NXXisQVSPklkvs2Qg6Iv3LqXNaJwwEtho/2WmzhvAZc=
|
||||||
|
git.saintnet.tech/stryan/freego v0.0.0-20220307194514-b5fc90339454 h1:KK8YuhJYMjbmyREbCDX+DshFaarrzxhjRTyPDIDhzDs=
|
||||||
|
git.saintnet.tech/stryan/freego v0.0.0-20220307194514-b5fc90339454/go.mod h1:NXXisQVSPklkvs2Qg6Iv3LqXNaJwwEtho/2WmzhvAZc=
|
||||||
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
||||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||||
|
@ -34,8 +34,9 @@ func (p *Player) Colour() freego.Colour {
|
|||||||
|
|
||||||
//NewSession creates a new game session
|
//NewSession creates a new game session
|
||||||
func NewSession() *Session {
|
func NewSession() *Session {
|
||||||
|
sim := freego.NewGame()
|
||||||
return &Session{
|
return &Session{
|
||||||
simulator: freego.NewGame(),
|
simulator: sim,
|
||||||
redPlayer: &Player{false, freego.Red},
|
redPlayer: &Player{false, freego.Red},
|
||||||
bluePlayer: &Player{false, freego.Blue},
|
bluePlayer: &Player{false, freego.Blue},
|
||||||
moveNum: 0,
|
moveNum: 0,
|
||||||
|
50
util.go
50
util.go
@ -2,7 +2,11 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"git.saintnet.tech/stryan/freego"
|
||||||
)
|
)
|
||||||
|
|
||||||
func respondWithError(res http.ResponseWriter, code int, message string) {
|
func respondWithError(res http.ResponseWriter, code int, message string) {
|
||||||
@ -16,3 +20,49 @@ func respondWithJSON(res http.ResponseWriter, code int, payload interface{}) {
|
|||||||
res.WriteHeader(code)
|
res.WriteHeader(code)
|
||||||
res.Write(response)
|
res.Write(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO remove this when you can actually setup a game
|
||||||
|
func initDummy(g *freego.Game) {
|
||||||
|
//Setup terrain
|
||||||
|
terrain := []struct {
|
||||||
|
x, y, t int
|
||||||
|
}{
|
||||||
|
{1, 1, 1},
|
||||||
|
{2, 2, 1},
|
||||||
|
}
|
||||||
|
for _, tt := range terrain {
|
||||||
|
res, err := g.Board.AddTerrain(tt.x, tt.y, tt.t)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
if !res {
|
||||||
|
panic(errors.New("Error creating terrain"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pieces := []struct {
|
||||||
|
x, y int
|
||||||
|
p *freego.Piece
|
||||||
|
}{
|
||||||
|
{0, 0, freego.NewPiece(freego.Flag, freego.Blue)},
|
||||||
|
{3, 0, freego.NewPiece(freego.Spy, freego.Blue)},
|
||||||
|
{2, 0, freego.NewPiece(freego.Captain, freego.Blue)},
|
||||||
|
{3, 1, freego.NewPiece(freego.Marshal, freego.Blue)},
|
||||||
|
{0, 1, freego.NewPiece(freego.Bomb, freego.Blue)},
|
||||||
|
|
||||||
|
{1, 6, freego.NewPiece(freego.Flag, freego.Red)},
|
||||||
|
{3, 6, freego.NewPiece(freego.Spy, freego.Red)},
|
||||||
|
{2, 7, freego.NewPiece(freego.Captain, freego.Red)},
|
||||||
|
{0, 6, freego.NewPiece(freego.Marshal, freego.Red)},
|
||||||
|
{0, 7, freego.NewPiece(freego.Bomb, freego.Red)},
|
||||||
|
}
|
||||||
|
for _, tt := range pieces {
|
||||||
|
res, err := g.SetupPiece(tt.x, tt.y, tt.p)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("Piece %v,%v:%v", tt.x, tt.y, err))
|
||||||
|
}
|
||||||
|
if !res {
|
||||||
|
panic(errors.New("error placing dummy piece"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.Start()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user