main.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. "os"
  6. "battlecamp-go-server/stomp"
  7. "battlecamp-go-server/flag"
  8. "battlecamp-go-server/events"
  9. "battlecamp-go-server/player"
  10. )
  11. var Server *string
  12. func main() {
  13. initLogging()
  14. log.Println("Game bot version 0.1")
  15. flag.ParseFlags()
  16. go subscribeToGame()
  17. subscribeToUpdate()
  18. }
  19. func subscribeToGame() {
  20. sub := stomp.Subscribe("game")
  21. for {
  22. announcement := <- sub
  23. gs := new(events.GameStart)
  24. json.Unmarshal(announcement.Body, &gs)
  25. log.Printf("announcement type: %v ", gs.Type)
  26. gameEndChan := make(chan bool)
  27. if("GAME_START" == gs.Type) {
  28. go joinGame(gs.GameId, gameEndChan)
  29. } else {
  30. gameEndChan <- true
  31. }
  32. }
  33. }
  34. func subscribeToUpdate() {
  35. sub := stomp.Subscribe("update")
  36. for {
  37. announcement := <- sub
  38. if("vnd.battlecamp.player" == announcement.ContentType) {
  39. p := new(player.Player)
  40. json.Unmarshal(announcement.Body, &p)
  41. playerJoin(p)
  42. } else {
  43. pu := new(events.PlayerUpdate)
  44. json.Unmarshal(announcement.Body, &pu)
  45. playerUpdate(pu)
  46. }
  47. }
  48. }
  49. func joinGame(gameId int64, gameEndChan chan bool) {
  50. //join game
  51. //retrieve board
  52. for {
  53. select {
  54. case <-gameEndChan:
  55. return
  56. default:
  57. move()
  58. }
  59. }
  60. }
  61. func move() {
  62. }
  63. func playerJoin(p *player.Player) {
  64. }
  65. func playerUpdate(pu *events.PlayerUpdate) {
  66. }
  67. func initLogging() {
  68. logFile, err := os.Create("server.log")
  69. if err == nil {
  70. log.SetOutput(logFile)
  71. } else {
  72. log.Println("ERROR: Cannot open log file, using console.")
  73. log.Printf("%v=n", err)
  74. }
  75. }