recator: Repo interface
This commit is contained in:
@@ -16,10 +16,10 @@ type Repo interface {
|
||||
Release() error
|
||||
|
||||
// SaveTurn stores just generated new turn
|
||||
SaveTurn(uint, *game.Game) error
|
||||
SaveNewTurn(uint, *game.Game) error
|
||||
|
||||
// SaveState stores current game state updated between turns
|
||||
SaveState(*game.Game) error
|
||||
SaveLastState(*game.Game) error
|
||||
|
||||
// LoadState retrieves game current state with required lock acquisition
|
||||
LoadState() (*game.Game, error)
|
||||
@@ -28,13 +28,13 @@ type Repo interface {
|
||||
LoadStateSafe() (*game.Game, error)
|
||||
|
||||
// SaveBattle stores a new battle protocol and battle meta data for turn t
|
||||
SaveBattle(t uint, b *report.BattleReport, m *game.BattleMeta) error
|
||||
SaveBattle(uint, *report.BattleReport, *game.BattleMeta) error
|
||||
|
||||
// SaveBombing stores all prodused bombings for turn t
|
||||
SaveBombings(t uint, b []*game.Bombing) error
|
||||
SaveBombings(uint, []*game.Bombing) error
|
||||
|
||||
// SaveReport stores latest report for a race
|
||||
SaveReport(t uint, rep *report.Report) error
|
||||
SaveReport(uint, *report.Report) error
|
||||
}
|
||||
|
||||
type Controller struct {
|
||||
|
||||
@@ -25,7 +25,7 @@ func newGameOnMap(r Repo, races []string, m generator.Map) (uuid.UUID, error) {
|
||||
if err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
if err := r.SaveTurn(0, g); err != nil {
|
||||
if err := r.SaveNewTurn(0, g); err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
return g.ID, nil
|
||||
|
||||
@@ -108,7 +108,7 @@ func MakeTurn(c *Controller, r Repo) error {
|
||||
c.Cache.DeleteKilledShipGroups()
|
||||
|
||||
// Store game state for the new turn and 'current' state as well
|
||||
if err := r.SaveTurn(c.Cache.g.Turn, c.Cache.g); err != nil {
|
||||
if err := r.SaveNewTurn(c.Cache.g.Turn, c.Cache.g); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -18,5 +18,5 @@ func joinEqualGroups(c *controller.Controller, r controller.Repo, g *game.Game,
|
||||
if err := c.JoinEqualGroups(race); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
@@ -18,5 +18,5 @@ func renamePlanet(c *controller.Controller, r controller.Repo, g *game.Game, rac
|
||||
if err := c.RenamePlanet(race, number, name); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
@@ -18,5 +18,5 @@ func planetProduction(c *controller.Controller, r controller.Repo, g *game.Game,
|
||||
if err := c.PlanetProduction(race, planetNumber, prodType, subject); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ func createScience(c *controller.Controller, r controller.Repo, g *game.Game, ra
|
||||
if err := c.CreateScience(race, typeName, drive, weapons, shields, cargo); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
func DeleteScience(configure func(*controller.Param), race, typeName string) (err error) {
|
||||
@@ -34,5 +34,5 @@ func deleteScience(c *controller.Controller, r controller.Repo, g *game.Game, ra
|
||||
if err := c.DeleteScience(race, typeName); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ func createShipType(c *controller.Controller, r controller.Repo, g *game.Game, r
|
||||
if err := c.CreateShipType(race, typeName, drive, ammo, weapons, shields, cargo); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
func MergeShipType(configure func(*controller.Param), race, source, target string) (err error) {
|
||||
@@ -34,7 +34,7 @@ func mergeShipType(c *controller.Controller, r controller.Repo, g *game.Game, ra
|
||||
if err := c.MergeShipType(race, source, target); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
func DeleteShipType(configure func(*controller.Param), race, typeName string) (err error) {
|
||||
@@ -50,5 +50,5 @@ func deleteShipType(c *controller.Controller, r controller.Repo, g *game.Game, r
|
||||
if err := c.DeleteShipType(race, typeName); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
@@ -23,5 +23,5 @@ func updateRelation(c *controller.Controller, r controller.Repo, g *game.Game, h
|
||||
if err := c.UpdateRelation(hostRace, opponentRace, rel); err != nil {
|
||||
return err
|
||||
}
|
||||
return r.SaveState(g)
|
||||
return r.SaveLastState(g)
|
||||
}
|
||||
|
||||
@@ -34,30 +34,30 @@ func saveReport(s Storage, t uint, v *report.Report) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *repo) SaveTurn(t uint, g *game.Game) error {
|
||||
return saveTurn(r.s, t, g)
|
||||
func (r *repo) SaveNewTurn(t uint, g *game.Game) error {
|
||||
return saveNewTurn(r.s, t, g)
|
||||
}
|
||||
|
||||
func saveTurn(s Storage, t uint, g *game.Game) error {
|
||||
func saveNewTurn(s Storage, t uint, g *game.Game) error {
|
||||
path := fmt.Sprintf("%s/state.json", turnDir(t))
|
||||
exist, err := s.Exists(path)
|
||||
if err != nil {
|
||||
return NewStorageError(err)
|
||||
}
|
||||
if exist {
|
||||
return NewStateError(fmt.Sprintf("state for turn %d already saved", t))
|
||||
return NewStateError(fmt.Sprintf("turn %d already saved at %s", t, path))
|
||||
}
|
||||
if err := s.Write(path, g); err != nil {
|
||||
return NewStorageError(err)
|
||||
}
|
||||
return saveState(s, g) // FIXME: either save it here, or in tre repo controller
|
||||
return saveLastState(s, g)
|
||||
}
|
||||
|
||||
func (r *repo) SaveState(g *game.Game) error {
|
||||
return saveState(r.s, g)
|
||||
func (r *repo) SaveLastState(g *game.Game) error {
|
||||
return saveLastState(r.s, g)
|
||||
}
|
||||
|
||||
func saveState(s Storage, g *game.Game) error {
|
||||
func saveLastState(s Storage, g *game.Game) error {
|
||||
if err := s.Write(statePath, g); err != nil {
|
||||
return NewStorageError(err)
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ func NextTravelCoord(w, h uint32, x1, y1, x2, y2, delta float64) (float64, float
|
||||
if distance <= delta {
|
||||
return x2, y2, true
|
||||
}
|
||||
// TODO: refactor - remove extra vars
|
||||
// [ ] refactor - remove extra vars
|
||||
xa := 0.
|
||||
ya := 0.
|
||||
xb := deltaX
|
||||
|
||||
Reference in New Issue
Block a user