recator: Repo interface

This commit is contained in:
Ilia Denisov
2026-02-04 17:29:05 +02:00
parent 9a6d4112cf
commit 9d46abe805
11 changed files with 25 additions and 25 deletions
+5 -5
View File
@@ -16,10 +16,10 @@ type Repo interface {
Release() error Release() error
// SaveTurn stores just generated new turn // 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 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 retrieves game current state with required lock acquisition
LoadState() (*game.Game, error) LoadState() (*game.Game, error)
@@ -28,13 +28,13 @@ type Repo interface {
LoadStateSafe() (*game.Game, error) LoadStateSafe() (*game.Game, error)
// SaveBattle stores a new battle protocol and battle meta data for turn t // 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 // 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 stores latest report for a race
SaveReport(t uint, rep *report.Report) error SaveReport(uint, *report.Report) error
} }
type Controller struct { type Controller struct {
+1 -1
View File
@@ -25,7 +25,7 @@ func newGameOnMap(r Repo, races []string, m generator.Map) (uuid.UUID, error) {
if err != nil { if err != nil {
return uuid.Nil, err 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 uuid.Nil, err
} }
return g.ID, nil return g.ID, nil
+1 -1
View File
@@ -108,7 +108,7 @@ func MakeTurn(c *Controller, r Repo) error {
c.Cache.DeleteKilledShipGroups() c.Cache.DeleteKilledShipGroups()
// Store game state for the new turn and 'current' state as well // 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 return err
} }
+1 -1
View File
@@ -18,5 +18,5 @@ func joinEqualGroups(c *controller.Controller, r controller.Repo, g *game.Game,
if err := c.JoinEqualGroups(race); err != nil { if err := c.JoinEqualGroups(race); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
+1 -1
View File
@@ -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 { if err := c.RenamePlanet(race, number, name); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
+1 -1
View File
@@ -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 { if err := c.PlanetProduction(race, planetNumber, prodType, subject); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
+2 -2
View File
@@ -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 { if err := c.CreateScience(race, typeName, drive, weapons, shields, cargo); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
func DeleteScience(configure func(*controller.Param), race, typeName string) (err error) { 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 { if err := c.DeleteScience(race, typeName); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
+3 -3
View File
@@ -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 { if err := c.CreateShipType(race, typeName, drive, ammo, weapons, shields, cargo); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
func MergeShipType(configure func(*controller.Param), race, source, target string) (err error) { 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 { if err := c.MergeShipType(race, source, target); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
func DeleteShipType(configure func(*controller.Param), race, typeName string) (err error) { 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 { if err := c.DeleteShipType(race, typeName); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
+1 -1
View File
@@ -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 { if err := c.UpdateRelation(hostRace, opponentRace, rel); err != nil {
return err return err
} }
return r.SaveState(g) return r.SaveLastState(g)
} }
+8 -8
View File
@@ -34,30 +34,30 @@ func saveReport(s Storage, t uint, v *report.Report) error {
return nil return nil
} }
func (r *repo) SaveTurn(t uint, g *game.Game) error { func (r *repo) SaveNewTurn(t uint, g *game.Game) error {
return saveTurn(r.s, t, g) 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)) path := fmt.Sprintf("%s/state.json", turnDir(t))
exist, err := s.Exists(path) exist, err := s.Exists(path)
if err != nil { if err != nil {
return NewStorageError(err) return NewStorageError(err)
} }
if exist { 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 { if err := s.Write(path, g); err != nil {
return NewStorageError(err) 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 { func (r *repo) SaveLastState(g *game.Game) error {
return saveState(r.s, g) 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 { if err := s.Write(statePath, g); err != nil {
return NewStorageError(err) return NewStorageError(err)
} }
+1 -1
View File
@@ -12,7 +12,7 @@ func NextTravelCoord(w, h uint32, x1, y1, x2, y2, delta float64) (float64, float
if distance <= delta { if distance <= delta {
return x2, y2, true return x2, y2, true
} }
// TODO: refactor - remove extra vars // [ ] refactor - remove extra vars
xa := 0. xa := 0.
ya := 0. ya := 0.
xb := deltaX xb := deltaX