func init() { file := "../replay/testdata/replay.0.json" match, err := replay.Load(file) if err != nil { log.Panicf("Load of %s failed %v", file, err) } M = match.Replay.GetMap() A = NewArena(M, torus.Location(9*96+11)) }
func TestArena(t *testing.T) { files := []string{ "../replay/testdata/replay.0.json", } for _, file := range files { match, err := replay.Load(file) if err != nil { t.Errorf("Load of %s failed %v", file, err) } m := match.Replay.GetMap() a := NewArena(m, torus.Location(9*96+11)) if chatty { log.Printf("Arena:\n%v", a) } } }
func LoadState(file, player string, turn int) *state.State { match, err := replay.Load(file) if err != nil { log.Print("Read error for ", file, ":", err) return nil } unum := -1 for i, pn := range match.PlayerNames { if player == pn { unum = i break } } if unum < 0 { log.Print("User name ", player, " not found in ", file) return nil } m := match.GetMap() g := NewGame(&match.GameInfo, m) g.Replay(match.Replay, 0, match.GameLength, true) replay := g.PlayerInput s := state.NewState(&match.GameInfo) turns := make([]*game.Turn, 1, turn) var i int for i = 0; i < turn && len(replay[i][unum].A) > 0; i++ { turns = append(turns, replay[i][unum]) s.ProcessTurn(replay[i][unum]) s.UpdateStatistics(replay[i][unum]) } if i != turn { log.Print("turn ", turn, " not reached for player ", player, " last was ", i, " file ", file) return nil } return s }