Add support for fixed object geometry
also updated config file
This commit is contained in:
parent
961cf5d7da
commit
c9dfa27320
@ -1,7 +1,13 @@
|
|||||||
{
|
{
|
||||||
"tick": 66,
|
"tick": 66,
|
||||||
"timescale": 1.0,
|
"timescale": 1.0,
|
||||||
"width": 1600,
|
"width": 1000,
|
||||||
"height": 1100,
|
"height": 500,
|
||||||
"obstacle": 20
|
"obstacles": [
|
||||||
|
[100, 300, 200, 400],
|
||||||
|
[100, 100, 200, 200],
|
||||||
|
[400, 150, 600, 350],
|
||||||
|
[800, 300, 900, 400],
|
||||||
|
[800, 100, 900, 200]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
24
control.go
24
control.go
@ -64,6 +64,7 @@ func (c *Controller) StartGame(w http.ResponseWriter, req *http.Request) {
|
|||||||
requested_game_name := c.Idg.Hash()
|
requested_game_name := c.Idg.Hash()
|
||||||
width, height := float64(c.Conf.Width), float64(c.Conf.Height)
|
width, height := float64(c.Conf.Width), float64(c.Conf.Height)
|
||||||
obstacleCount := 0
|
obstacleCount := 0
|
||||||
|
obstacles := []Obstacle{}
|
||||||
maxPoints := c.Conf.MaxPoints
|
maxPoints := c.Conf.MaxPoints
|
||||||
mode := "deathmatch"
|
mode := "deathmatch"
|
||||||
|
|
||||||
@ -90,6 +91,7 @@ func (c *Controller) StartGame(w http.ResponseWriter, req *http.Request) {
|
|||||||
width = float64(cfg.Width)
|
width = float64(cfg.Width)
|
||||||
height = float64(cfg.Height)
|
height = float64(cfg.Height)
|
||||||
obstacleCount = cfg.ObstacleCount
|
obstacleCount = cfg.ObstacleCount
|
||||||
|
obstacles = cfg.Obstacles
|
||||||
maxPoints = cfg.MaxPoints
|
maxPoints = cfg.MaxPoints
|
||||||
mode = cfg.Mode
|
mode = cfg.Mode
|
||||||
}
|
}
|
||||||
@ -98,7 +100,27 @@ func (c *Controller) StartGame(w http.ResponseWriter, req *http.Request) {
|
|||||||
if g == nil {
|
if g == nil {
|
||||||
log.Printf("Game '%s' non-existant; making it now", requested_game_name)
|
log.Printf("Game '%s' non-existant; making it now", requested_game_name)
|
||||||
var err error
|
var err error
|
||||||
g, err = NewGame(requested_game_name, width, height, obstacleCount, c.Conf.Tick, maxPoints, mode)
|
g, err = NewGame(
|
||||||
|
requested_game_name,
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
c.Conf.Tick,
|
||||||
|
maxPoints,
|
||||||
|
mode,
|
||||||
|
)
|
||||||
|
g.obstacleCount = obstacleCount
|
||||||
|
g.obstacles = obstacles
|
||||||
|
g.defaultObstacles = obstacles
|
||||||
|
if len(g.defaultObstacles) == 0 {
|
||||||
|
g.obstacles = GenerateObstacles(
|
||||||
|
g.obstacleCount,
|
||||||
|
g.width,
|
||||||
|
g.height,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
g.obstacles = c.Conf.Obstacles
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("problem creating game: %s: %s", requested_game_name, err)
|
log.Printf("problem creating game: %s: %s", requested_game_name, err)
|
||||||
b, _ := json.Marshal(NewFailure("game creation failure"))
|
b, _ := json.Marshal(NewFailure("game creation failure"))
|
||||||
|
@ -17,7 +17,13 @@ func (g *deathmatch) gameOver(gg *Game) (bool, *GameOver) {
|
|||||||
var stats *GameOver
|
var stats *GameOver
|
||||||
|
|
||||||
if gg.players_remaining <= 1 && len(gg.players) > 1 {
|
if gg.players_remaining <= 1 && len(gg.players) > 1 {
|
||||||
gg.obstacles = GenerateObstacles(gg.obstacle_count, gg.width, gg.height)
|
if len(gg.defaultObstacles) == 0 {
|
||||||
|
gg.obstacles = GenerateObstacles(
|
||||||
|
gg.obstacleCount,
|
||||||
|
gg.width,
|
||||||
|
gg.height,
|
||||||
|
)
|
||||||
|
}
|
||||||
log.Printf("game %s: game over", gg.id)
|
log.Printf("game %s: game over", gg.id)
|
||||||
stats = NewGameOver()
|
stats = NewGameOver()
|
||||||
|
|
||||||
|
7
game.go
7
game.go
@ -59,8 +59,9 @@ type Game struct {
|
|||||||
players map[*Player]bool
|
players map[*Player]bool
|
||||||
projectiles map[*Projectile]bool
|
projectiles map[*Projectile]bool
|
||||||
splosions map[*Splosion]bool
|
splosions map[*Splosion]bool
|
||||||
|
defaultObstacles []Obstacle
|
||||||
obstacles []Obstacle
|
obstacles []Obstacle
|
||||||
obstacle_count int
|
obstacleCount int
|
||||||
register chan *Player
|
register chan *Player
|
||||||
unregister chan *Player
|
unregister chan *Player
|
||||||
turn int
|
turn int
|
||||||
@ -87,7 +88,7 @@ type GameMode interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewGame Poplulates a Game struct and starts the bandwidth calculator.
|
// NewGame Poplulates a Game struct and starts the bandwidth calculator.
|
||||||
func NewGame(id string, width, height float64, obstacles, tick, maxPoints int, mode string) (*Game, error) {
|
func NewGame(id string, width, height float64, tick, maxPoints int, mode string) (*Game, error) {
|
||||||
bw, err := bandwidth.NewBandwidth(
|
bw, err := bandwidth.NewBandwidth(
|
||||||
[]int{1, 10, 60},
|
[]int{1, 10, 60},
|
||||||
1*time.Second,
|
1*time.Second,
|
||||||
@ -102,8 +103,6 @@ func NewGame(id string, width, height float64, obstacles, tick, maxPoints int, m
|
|||||||
unregister: make(chan *Player, maxPlayer),
|
unregister: make(chan *Player, maxPlayer),
|
||||||
projectiles: make(map[*Projectile]bool),
|
projectiles: make(map[*Projectile]bool),
|
||||||
splosions: make(map[*Splosion]bool),
|
splosions: make(map[*Splosion]bool),
|
||||||
obstacles: GenerateObstacles(obstacles, width, height),
|
|
||||||
obstacle_count: obstacles,
|
|
||||||
players: make(map[*Player]bool),
|
players: make(map[*Player]bool),
|
||||||
turn: 0,
|
turn: 0,
|
||||||
width: width,
|
width: width,
|
||||||
|
13
protocol.go
13
protocol.go
@ -177,11 +177,22 @@ func (c *Controller) AddPlayer(ws *websocket.Conn) {
|
|||||||
gid.Id,
|
gid.Id,
|
||||||
float64(c.Conf.Width),
|
float64(c.Conf.Width),
|
||||||
float64(c.Conf.Height),
|
float64(c.Conf.Height),
|
||||||
c.Conf.ObstacleCount,
|
|
||||||
c.Conf.Tick,
|
c.Conf.Tick,
|
||||||
c.Conf.MaxPoints,
|
c.Conf.MaxPoints,
|
||||||
"",
|
"",
|
||||||
)
|
)
|
||||||
|
game.defaultObstacles = c.Conf.Obstacles
|
||||||
|
game.obstacleCount = c.Conf.ObstacleCount
|
||||||
|
log.Printf("%t", len(game.defaultObstacles) == 0)
|
||||||
|
if len(game.defaultObstacles) == 0 {
|
||||||
|
game.obstacles = GenerateObstacles(
|
||||||
|
game.obstacleCount,
|
||||||
|
game.width,
|
||||||
|
game.height,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
game.obstacles = c.Conf.Obstacles
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("problem creating game: %s", gid.Id)
|
log.Printf("problem creating game: %s", gid.Id)
|
||||||
websocket.JSON.Send(ws, NewFailure("game creation error"))
|
websocket.JSON.Send(ws, NewFailure("game creation error"))
|
||||||
|
Loading…
Reference in New Issue
Block a user