Пример #1
0
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))
}
Пример #2
0
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)
		}
	}
}
Пример #3
0
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
}