diff --git a/internal/controller/battle_test.go b/internal/controller/battle_test.go index a204a4f..d87eb89 100644 --- a/internal/controller/battle_test.go +++ b/internal/controller/battle_test.go @@ -97,7 +97,7 @@ func TestFilterBattleOpponents(t *testing.T) { assert.NoError(t, c.CreateShips(Race_1_idx, Race_1_Gunship, R1_Planet_1_num, 15)) // 2 undefeatedShip := ship undefeatedShip.Shields = 100 - assert.NoError(t, c.CreateShipType(Race_1_idx, undefeatedShip.Name, undefeatedShip.Drive.F(), int(undefeatedShip.Armament), undefeatedShip.Weapons.F(), undefeatedShip.Shields.F(), undefeatedShip.Cargo.F())) + assert.NoError(t, c.ShipClassCreate(Race_1_idx, undefeatedShip.Name, undefeatedShip.Drive.F(), int(undefeatedShip.Armament), undefeatedShip.Weapons.F(), undefeatedShip.Shields.F(), undefeatedShip.Cargo.F())) assert.NoError(t, c.CreateShips(Race_1_idx, undefeatedShip.Name, R1_Planet_1_num, 1)) // 3 cacheProbability := make(map[int]map[int]float64) @@ -152,11 +152,11 @@ func TestProduceBattles(t *testing.T) { c.CreateShipsUnsafe_T(Race_1_idx, c.MustShipClass(Race_1_idx, Race_1_Gunship).ID, R0_Planet_0_num, 11) // Race_C - assert.NoError(t, c.CreateShipType(race_C_idx, Cruiser.Name, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F())) + assert.NoError(t, c.ShipClassCreate(race_C_idx, Cruiser.Name, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F())) c.CreateShipsUnsafe_T(race_C_idx, c.MustShipClass(race_C_idx, Cruiser.Name).ID, R0_Planet_0_num, 12) // Race_D - assert.NoError(t, c.CreateShipType(race_D_idx, Cruiser.Name, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F())) + assert.NoError(t, c.ShipClassCreate(race_D_idx, Cruiser.Name, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F())) c.CreateShipsUnsafe_T(race_D_idx, c.MustShipClass(race_D_idx, Cruiser.Name).ID, R0_Planet_0_num, 13) battle := controller.ProduceBattles(c) diff --git a/internal/controller/command.go b/internal/controller/command.go index 9b20b0a..7ab7fe2 100644 --- a/internal/controller/command.go +++ b/internal/controller/command.go @@ -54,12 +54,109 @@ func (c Controller) UpdateRelation(actor, acceptor string, v string) error { return c.Cache.UpdateRelation(ri, other, rel) } +func (c *Controller) CreateShipType(actor, typeName string, drive float64, ammo int, weapons, shileds, cargo float64) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.ShipClassCreate(ri, typeName, drive, ammo, weapons, shileds, cargo) +} + +func (c *Controller) MergeShipType(actor, name, targetName string) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.shipClassMerge(ri, name, targetName) +} + +func (c *Controller) DeleteShipType(actor, typeName string) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.shipClassRemove(ri, typeName) +} + +func (c *Controller) LoadCargo(actor string, groupIndex uint, cargoType string, ships uint, quantity float64) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + ct, ok := game.CargoTypeSet[cargoType] + if !ok { + return e.NewCargoTypeInvalidError(cargoType) + } + return c.Cache.shipGroupLoad(ri, groupIndex, ct, ships, quantity) +} + +func (c *Controller) UnloadCargo(actor string, groupIndex uint, ships uint, quantity float64) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.shipGroupUnload(ri, groupIndex, ships, quantity) +} + +func (c *Controller) SendGroup(actor string, groupIndex, planetNumber, quantity uint) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.shipGroupSend(ri, groupIndex, planetNumber, quantity) +} + +func (c *Controller) UpgradeGroup(actor string, groupIndex uint, techInput string, limitShips uint, limitLevel float64) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.shipGroupUpgrade(ri, groupIndex, techInput, limitShips, limitLevel) +} + +func (c *Controller) JoinEqualGroups(actor string) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + c.Cache.shipGroupMerge(ri) + return nil +} + +func (c *Controller) BreakGroup(actor string, groupIndex, quantity uint) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.ShipGroupBreak(ri, groupIndex, quantity) +} + +func (c *Controller) DisassembleGroup(actor string, groupIndex, quantity uint) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.shipGroupDismantle(ri, groupIndex, quantity) +} + +func (c *Controller) TransferGroup(actor, acceptor string, groupIndex, quantity uint) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + riAccept, err := c.Cache.validRace(acceptor) + if err != nil { + return err + } + return c.Cache.shipGroupTransfer(ri, riAccept, groupIndex, quantity) +} + func (c *Controller) JoinShipGroupToFleet(actor, fleetName string, group, count uint) error { ri, err := c.Cache.validActor(actor) if err != nil { return err } - return c.Cache.JoinShipGroupToFleet(ri, fleetName, group, count) + return c.Cache.ShipGroupJoinFleet(ri, fleetName, group, count) } func (c *Controller) JoinFleets(actor, fleetSourceName, fleetTargetName string) error { @@ -67,7 +164,7 @@ func (c *Controller) JoinFleets(actor, fleetSourceName, fleetTargetName string) if err != nil { return err } - return c.Cache.JoinFleets(ri, fleetSourceName, fleetTargetName) + return c.Cache.fleetMerge(ri, fleetSourceName, fleetTargetName) } func (c *Controller) SendFleet(actor, fleetName string, planetNumber uint) error { @@ -79,7 +176,23 @@ func (c *Controller) SendFleet(actor, fleetName string, planetNumber uint) error if !ok { return e.NewEntityNotExistsError("fleet %q", fleetName) } - return c.Cache.SendFleet(ri, fi, planetNumber) + return c.Cache.FleetSend(ri, fi, planetNumber) +} + +func (c *Controller) CreateScience(actor, typeName string, drive, weapons, shields, cargo float64) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.ScienceCreate(ri, typeName, drive, weapons, shields, cargo) +} + +func (c *Controller) DeleteScience(actor, typeName string) error { + ri, err := c.Cache.validActor(actor) + if err != nil { + return err + } + return c.Cache.ScienceRemove(ri, typeName) } func (c *Controller) RenamePlanet(actor string, planetNumber int, typeName string) error { @@ -87,7 +200,7 @@ func (c *Controller) RenamePlanet(actor string, planetNumber int, typeName strin if err != nil { return err } - return c.Cache.RenamePlanet(ri, planetNumber, typeName) + return c.Cache.PlanetRename(ri, planetNumber, typeName) } func (c *Controller) PlanetProduction(actor string, planetNumber int, prodType, subject string) error { @@ -116,7 +229,7 @@ func (c *Controller) PlanetProduction(actor string, planetNumber int, prodType, default: return e.NewProductionInvalidError(prodType) } - return c.Cache.PlanetProduction(ri, planetNumber, prod, subject) + return c.Cache.PlanetProduce(ri, planetNumber, prod, subject) } func (c *Controller) SetRoute(actor, loadType string, origin, destination uint) error { @@ -128,7 +241,7 @@ func (c *Controller) SetRoute(actor, loadType string, origin, destination uint) if !ok { return e.NewCargoTypeInvalidError(loadType) } - return c.Cache.SetRoute(ri, rt, origin, destination) + return c.Cache.PlanetRouteSet(ri, rt, origin, destination) } func (c *Controller) RemoveRoute(actor, loadType string, origin uint) error { @@ -140,118 +253,5 @@ func (c *Controller) RemoveRoute(actor, loadType string, origin uint) error { if !ok { return e.NewCargoTypeInvalidError(loadType) } - return c.Cache.RemoveRoute(ri, rt, origin) -} - -func (c *Controller) CreateScience(actor, typeName string, drive, weapons, shields, cargo float64) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.CreateScience(ri, typeName, drive, weapons, shields, cargo) -} - -func (c *Controller) DeleteScience(actor, typeName string) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.DeleteScience(ri, typeName) -} - -func (c *Controller) CreateShipType(actor, typeName string, drive float64, ammo int, weapons, shileds, cargo float64) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.CreateShipType(ri, typeName, drive, ammo, weapons, shileds, cargo) -} - -func (c *Controller) MergeShipType(actor, name, targetName string) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.MergeShipType(ri, name, targetName) -} - -func (c *Controller) DeleteShipType(actor, typeName string) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.DeleteShipType(ri, typeName) -} - -func (c *Controller) SendGroup(actor string, groupIndex, planetNumber, quantity uint) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.SendGroup(ri, groupIndex, planetNumber, quantity) -} - -func (c *Controller) UpgradeGroup(actor string, groupIndex uint, techInput string, limitShips uint, limitLevel float64) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.UpgradeGroup(ri, groupIndex, techInput, limitShips, limitLevel) -} - -func (c *Controller) JoinEqualGroups(actor string) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - c.Cache.JoinEqualGroups(ri) - return nil -} - -func (c *Controller) BreakGroup(actor string, groupIndex, quantity uint) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.BreakGroup(ri, groupIndex, quantity) -} - -func (c *Controller) DisassembleGroup(actor string, groupIndex, quantity uint) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.DisassembleGroup(ri, groupIndex, quantity) -} - -func (c *Controller) LoadCargo(actor string, groupIndex uint, cargoType string, ships uint, quantity float64) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - ct, ok := game.CargoTypeSet[cargoType] - if !ok { - return e.NewCargoTypeInvalidError(cargoType) - } - return c.Cache.LoadCargo(ri, groupIndex, ct, ships, quantity) -} - -func (c *Controller) UnloadCargo(actor string, groupIndex uint, ships uint, quantity float64) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - return c.Cache.UnloadCargo(ri, groupIndex, ships, quantity) -} - -func (c *Controller) TransferGroup(actor, acceptor string, groupIndex, quantity uint) error { - ri, err := c.Cache.validActor(actor) - if err != nil { - return err - } - riAccept, err := c.Cache.validRace(acceptor) - if err != nil { - return err - } - return c.Cache.TransferGroup(ri, riAccept, groupIndex, quantity) + return c.Cache.PlanetRouteRemove(ri, rt, origin) } diff --git a/internal/controller/controller_test.go b/internal/controller/controller_test.go index 6c45edf..1a812fd 100644 --- a/internal/controller/controller_test.go +++ b/internal/controller/controller_test.go @@ -133,13 +133,13 @@ func newCache() (*controller.Cache, *controller.Controller) { // g := newGame() // c := controller.NewCache(g) c := ctl.Cache - assertNoError(c.CreateShipType(Race_0_idx, Race_0_Gunship, 60, 3, 30, 100, 0)) - assertNoError(c.CreateShipType(Race_0_idx, Race_0_Freighter, 8, 0, 0, 2, 10)) - assertNoError(c.CreateShipType(Race_0_idx, ShipType_Cruiser, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F())) + assertNoError(c.ShipClassCreate(Race_0_idx, Race_0_Gunship, 60, 3, 30, 100, 0)) + assertNoError(c.ShipClassCreate(Race_0_idx, Race_0_Freighter, 8, 0, 0, 2, 10)) + assertNoError(c.ShipClassCreate(Race_0_idx, ShipType_Cruiser, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F())) - assertNoError(c.CreateShipType(Race_1_idx, Race_1_Gunship, 60, 3, 30, 100, 0)) - assertNoError(c.CreateShipType(Race_1_idx, Race_1_Freighter, 8, 0, 0, 2, 10)) - assertNoError(c.CreateShipType(Race_1_idx, ShipType_Cruiser, 15, 2, 15, 15, 0)) // same name - different type (why.) + assertNoError(c.ShipClassCreate(Race_1_idx, Race_1_Gunship, 60, 3, 30, 100, 0)) + assertNoError(c.ShipClassCreate(Race_1_idx, Race_1_Freighter, 8, 0, 0, 2, 10)) + assertNoError(c.ShipClassCreate(Race_1_idx, ShipType_Cruiser, 15, 2, 15, 15, 0)) // same name - different type (why.) // ctl := controller.NewRepoController(nil) // ctl.Cache = c diff --git a/internal/controller/fleet.go b/internal/controller/fleet.go index fda1a75..66b95b0 100644 --- a/internal/controller/fleet.go +++ b/internal/controller/fleet.go @@ -100,7 +100,7 @@ func (c *Cache) FleetSpeedAndMass(fi int) (float64, float64) { return speed, mass } -func (c *Cache) JoinShipGroupToFleet(ri int, fleetName string, groupIndex, quantity uint) (err error) { +func (c *Cache) ShipGroupJoinFleet(ri int, fleetName string, groupIndex, quantity uint) (err error) { c.validateRaceIndex(ri) name, ok := util.ValidateTypeName(fleetName) if !ok { @@ -146,7 +146,7 @@ func (c *Cache) JoinShipGroupToFleet(ri int, fleetName string, groupIndex, quant sgi = nsgi } - c.ShipGroupJoinFleet(sgi, &c.g.Fleets[fi].ID) + c.internalShipGroupJoinFleet(sgi, &c.g.Fleets[fi].ID) if oldFleetID != nil { keepOldFleet := false @@ -170,7 +170,7 @@ func (c *Cache) JoinShipGroupToFleet(ri int, fleetName string, groupIndex, quant return nil } -func (c *Cache) JoinFleets(ri int, fleetSourceName, fleetTargetName string) (err error) { +func (c *Cache) fleetMerge(ri int, fleetSourceName, fleetTargetName string) (err error) { fiSource, ok := c.fleetIndex(ri, fleetSourceName) if !ok { return e.NewEntityNotExistsError("source fleet %s", fleetSourceName) diff --git a/internal/controller/fleet_send.go b/internal/controller/fleet_send.go index aa4ecb0..9136a1f 100644 --- a/internal/controller/fleet_send.go +++ b/internal/controller/fleet_send.go @@ -6,7 +6,7 @@ import ( "github.com/iliadenisov/galaxy/internal/util" ) -func (c *Cache) SendFleet(ri, fi int, planetNumber uint) error { +func (c *Cache) FleetSend(ri, fi int, planetNumber uint) error { c.validateRaceIndex(ri) c.validateFleetIndex(fi) fleetState := c.FleetState(c.g.Fleets[fi].ID) diff --git a/internal/controller/planet.go b/internal/controller/planet.go index 3a41cf2..0256c84 100644 --- a/internal/controller/planet.go +++ b/internal/controller/planet.go @@ -11,7 +11,7 @@ import ( "github.com/iliadenisov/galaxy/internal/util" ) -func (c *Cache) RenamePlanet(ri int, number int, name string) error { +func (c *Cache) PlanetRename(ri int, number int, name string) error { n, ok := util.ValidateTypeName(name) if !ok { return e.NewEntityTypeNameValidationError("%q", n) @@ -30,7 +30,7 @@ func (c *Cache) RenamePlanet(ri int, number int, name string) error { return nil } -func (c *Cache) PlanetProduction(ri int, number int, prod game.ProductionType, subj string) error { +func (c *Cache) PlanetProduce(ri int, number int, prod game.ProductionType, subj string) error { c.validateRaceIndex(ri) if number < 0 { return e.NewPlanetNumberError(number) diff --git a/internal/controller/planet_test.go b/internal/controller/planet_test.go index ea2e2e1..eee6330 100644 --- a/internal/controller/planet_test.go +++ b/internal/controller/planet_test.go @@ -163,7 +163,7 @@ func TestProduceShips(t *testing.T) { progress := *c.MustPlanet(R0_Planet_0_num).Production.Progress assert.InDelta(t, 0.45, progress.F(), 0.001) - assert.NoError(t, c.CreateShipType(Race_0_idx, "Drone", 1, 0, 0, 0, 0)) + assert.NoError(t, c.ShipClassCreate(Race_0_idx, "Drone", 1, 0, 0, 0, 0)) assert.NoError(t, c.CreateShips(Race_0_idx, "Drone", uint(pn), 7)) assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 1) assert.Equal(t, uint(7), c.ShipGroup(0).Number) @@ -364,7 +364,7 @@ func TestListProducingPlanets(t *testing.T) { func TestTurnPlanetProductions(t *testing.T) { c, g := newCache() - assert.NoError(t, c.CreateShipType(Race_0_idx, "Drone", 1, 0, 0, 0, 0)) + assert.NoError(t, c.ShipClassCreate(Race_0_idx, "Drone", 1, 0, 0, 0, 0)) assert.NoError(t, g.CreateScience(Race_0.Name, "Equality", 0.25, 0.25, 0.25, 0.25)) c.MustPlanet(R0_Planet_0_num).Resources = 10. c.MustPlanet(R0_Planet_0_num).Size = 1000. diff --git a/internal/controller/route.go b/internal/controller/route.go index b5a70c6..7fcbe43 100644 --- a/internal/controller/route.go +++ b/internal/controller/route.go @@ -13,7 +13,7 @@ import ( "github.com/iliadenisov/galaxy/internal/util" ) -func (c *Cache) SetRoute(ri int, rt game.RouteType, origin, destination uint) error { +func (c *Cache) PlanetRouteSet(ri int, rt game.RouteType, origin, destination uint) error { c.validateRaceIndex(ri) p1, ok := c.Planet(origin) if !ok { @@ -36,7 +36,7 @@ func (c *Cache) SetRoute(ri int, rt game.RouteType, origin, destination uint) er return nil } -func (c *Cache) RemoveRoute(ri int, rt game.RouteType, origin uint) error { +func (c *Cache) PlanetRouteRemove(ri int, rt game.RouteType, origin uint) error { c.validateRaceIndex(ri) p1, ok := c.Planet(origin) if !ok { diff --git a/internal/controller/science.go b/internal/controller/science.go index 1b975b9..013f53c 100644 --- a/internal/controller/science.go +++ b/internal/controller/science.go @@ -10,7 +10,7 @@ import ( "github.com/iliadenisov/galaxy/internal/util" ) -func (c *Cache) CreateScience(ri int, name string, drive, weapons, shileds, cargo float64) error { +func (c *Cache) ScienceCreate(ri int, name string, drive, weapons, shileds, cargo float64) error { c.validateRaceIndex(ri) n, ok := util.ValidateTypeName(name) if !ok { @@ -47,7 +47,7 @@ func (c *Cache) CreateScience(ri int, name string, drive, weapons, shileds, carg return nil } -func (c *Cache) DeleteScience(ri int, name string) error { +func (c *Cache) ScienceRemove(ri int, name string) error { c.validateRaceIndex(ri) sc := slices.IndexFunc(c.g.Race[ri].Sciences, func(s game.Science) bool { return s.Name == name }) if sc < 0 { diff --git a/internal/controller/ship_class.go b/internal/controller/ship_class.go index 7b49294..805890a 100644 --- a/internal/controller/ship_class.go +++ b/internal/controller/ship_class.go @@ -11,7 +11,7 @@ import ( "github.com/iliadenisov/galaxy/internal/util" ) -func (c *Cache) CreateShipType(ri int, typeName string, drive float64, ammo int, weapons, shileds, cargo float64) error { +func (c *Cache) ShipClassCreate(ri int, typeName string, drive float64, ammo int, weapons, shileds, cargo float64) error { c.validateRaceIndex(ri) if err := validateShipTypeValues(drive, ammo, weapons, shileds, cargo); err != nil { return err @@ -37,7 +37,7 @@ func (c *Cache) CreateShipType(ri int, typeName string, drive float64, ammo int, return nil } -func (c *Cache) MergeShipType(ri int, sourceName, targetName string) error { +func (c *Cache) shipClassMerge(ri int, sourceName, targetName string) error { c.validateRaceIndex(ri) sourceClass, sti, ok := c.ShipClass(ri, sourceName) @@ -85,7 +85,7 @@ func (c *Cache) MergeShipType(ri int, sourceName, targetName string) error { return nil } -func (c *Cache) DeleteShipType(ri int, name string) error { +func (c *Cache) shipClassRemove(ri int, name string) error { c.validateRaceIndex(ri) st, i, ok := c.ShipClass(ri, name) if !ok { diff --git a/internal/controller/ship_group.go b/internal/controller/ship_group.go index d50d83e..d428bd6 100644 --- a/internal/controller/ship_group.go +++ b/internal/controller/ship_group.go @@ -53,7 +53,7 @@ func (c *Cache) ShipGroup(groupIndex int) *game.ShipGroup { return &c.g.ShipGroups[groupIndex] } -func (c *Cache) ShipGroupJoinFleet(groupIndex int, fID *uuid.UUID) { +func (c *Cache) internalShipGroupJoinFleet(groupIndex int, fID *uuid.UUID) { c.validateShipGroupIndex(groupIndex) c.g.ShipGroups[groupIndex].FleetID = fID c.invalidateFleetCache() @@ -140,7 +140,7 @@ func (c *Cache) DeleteKilledShipGroups() { func (c *Cache) TurnMergeEqualShipGroups() { for i := range c.listRaceActingIdx() { c.transferPendingGroups(i) - c.JoinEqualGroups(i) + c.shipGroupMerge(i) } } @@ -152,7 +152,8 @@ func (c *Cache) transferPendingGroups(ri int) { } } -func (c *Cache) JoinEqualGroups(ri int) { +// shipGroupMerge merges several equal ship groups into one +func (c *Cache) shipGroupMerge(ri int) { c.validateRaceIndex(ri) raceGroups := make([]game.ShipGroup, 0) for sg := range c.listShipGroups(ri) { @@ -194,7 +195,7 @@ func (c *Cache) JoinEqualGroups(ri int) { } } -func (c *Cache) DisassembleGroup(ri int, groupIndex, quantity uint) error { +func (c *Cache) shipGroupDismantle(ri int, groupIndex, quantity uint) error { sgi, ok := c.raceShipGroupIndex(ri, groupIndex) if !ok { return e.NewEntityNotExistsError("group #%d", groupIndex) @@ -252,7 +253,7 @@ func (c *Cache) DisassembleGroup(ri int, groupIndex, quantity uint) error { // Корабль может нести только один тип груза одновременно. // Возможные типы груза - это колонисты, сырье и промышленность. // Груз может быть доставлен на борт корабля с Вашей или не занятой планеты, на которой он имеется. -func (c *Cache) LoadCargo(ri int, groupIndex uint, ct game.CargoType, ships uint, quantity float64) error { +func (c *Cache) shipGroupLoad(ri int, groupIndex uint, ct game.CargoType, ships uint, quantity float64) error { if ships == 0 && quantity > 0 { return e.NewCargoQuantityWithoutGroupBreakError() } @@ -322,7 +323,7 @@ func (c *Cache) LoadCargo(ri int, groupIndex uint, ct game.CargoType, ships uint // Промышленность и Сырье могут быть выгружены на любой планете. // Колонисты могут быть высажены только на планеты, принадлежащие Вам или на необитаемые планеты. -func (c *Cache) UnloadCargo(ri int, groupIndex uint, ships uint, quantity float64) error { +func (c *Cache) shipGroupUnload(ri int, groupIndex uint, ships uint, quantity float64) error { c.validateRaceIndex(ri) if ships == 0 && quantity > 0 { return e.NewCargoQuantityWithoutGroupBreakError() @@ -404,7 +405,7 @@ func (c *Cache) unsafeUnloadCargo(sgi int, q float64) { p.UnpackCapital() } -func (c *Cache) TransferGroup(ri, riAccept int, groupIndex, quantity uint) (err error) { +func (c *Cache) shipGroupTransfer(ri, riAccept int, groupIndex, quantity uint) (err error) { if ri == riAccept { return e.NewSameRaceError(c.g.Race[riAccept].Name) } @@ -429,7 +430,7 @@ func (c *Cache) TransferGroup(ri, riAccept int, groupIndex, quantity uint) (err return e.NewGiveawayGroupShipsTypeNotEqualError("race %q, ship type %q", c.g.Race[riAccept].Name, c.g.Race[riAccept].ShipTypes[stAcc].Name) } if stAcc < 0 { - err = c.CreateShipType(riAccept, + err = c.ShipClassCreate(riAccept, st.Name, st.Drive.F(), int(st.Armament), @@ -461,7 +462,7 @@ func (c *Cache) TransferGroup(ri, riAccept int, groupIndex, quantity uint) (err return nil } -func (c *Cache) BreakGroup(ri int, groupIndex, quantity uint) error { +func (c *Cache) ShipGroupBreak(ri int, groupIndex, quantity uint) error { c.validateRaceIndex(ri) sgi := -1 for i := range c.ShipGroupsIndex() { @@ -483,7 +484,7 @@ func (c *Cache) BreakGroup(ri int, groupIndex, quantity uint) error { } if quantity == 0 || quantity == c.ShipGroup(sgi).Number { - c.ShipGroupJoinFleet(sgi, nil) + c.internalShipGroupJoinFleet(sgi, nil) } else { if _, err := c.breakGroupSafe(ri, groupIndex, quantity); err != nil { return err diff --git a/internal/controller/ship_group_send.go b/internal/controller/ship_group_send.go index 27cbb03..52a2da0 100644 --- a/internal/controller/ship_group_send.go +++ b/internal/controller/ship_group_send.go @@ -6,7 +6,7 @@ import ( "github.com/iliadenisov/galaxy/internal/util" ) -func (c *Cache) SendGroup(ri int, groupIndex, planetNumber, quantity uint) error { +func (c *Cache) shipGroupSend(ri int, groupIndex, planetNumber, quantity uint) error { c.validateRaceIndex(ri) sgi, ok := c.raceShipGroupIndex(ri, groupIndex) @@ -51,7 +51,7 @@ func (c *Cache) SendGroup(ri int, groupIndex, planetNumber, quantity uint) error if p1.Number == p2.Number { c.UnsendShips(c.ShipGroup(sgi)) - c.JoinEqualGroups(ri) + c.shipGroupMerge(ri) return nil } diff --git a/internal/controller/ship_group_test.go b/internal/controller/ship_group_test.go index 6b18758..1008d78 100644 --- a/internal/controller/ship_group_test.go +++ b/internal/controller/ship_group_test.go @@ -127,7 +127,7 @@ func TestBreakGroup(t *testing.T) { assert.Len(t, slices.Collect(c.ListFleets(Race_0_idx)), 1) // group #1 -> group #3 (5 new, 8 left) - assert.NoError(t, c.BreakGroup(Race_0_idx, 1, 5)) // group #3 (2) + assert.NoError(t, c.ShipGroupBreak(Race_0_idx, 1, 5)) // group #3 (2) assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 3) assert.Equal(t, uint(8), c.ShipGroup(0).Number) assert.NotNil(t, c.ShipGroup(0).FleetID) @@ -138,15 +138,15 @@ func TestBreakGroup(t *testing.T) { // group #1 -> group #4 (2 new, 6 left) c.ShipGroup(0).CargoType = game.CargoColonist.Ref() - c.ShipGroup(0).Load = 32.8 // 8 ships - assert.NoError(t, c.BreakGroup(Race_0_idx, 1, 2)) // group #4 (3) + c.ShipGroup(0).Load = 32.8 // 8 ships + assert.NoError(t, c.ShipGroupBreak(Race_0_idx, 1, 2)) // group #4 (3) assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 4) assert.Equal(t, uint(6), c.ShipGroup(0).Number) assert.NotNil(t, c.ShipGroup(0).FleetID) assert.Equal(t, uint(2), c.ShipGroup(3).Number) assert.Equal(t, uint(4), c.ShipGroup(3).Index) assert.Nil(t, c.ShipGroup(3).FleetID) - assert.NoError(t, c.JoinShipGroupToFleet(Race_0_idx, fleet, 4, 0)) + assert.NoError(t, c.ShipGroupJoinFleet(Race_0_idx, fleet, 4, 0)) assert.NotNil(t, c.ShipGroup(3).FleetID) assert.Equal(t, game.CargoColonist.Ref(), c.ShipGroup(0).CargoType) diff --git a/internal/controller/ship_group_upgrade.go b/internal/controller/ship_group_upgrade.go index fd753ea..eabae26 100644 --- a/internal/controller/ship_group_upgrade.go +++ b/internal/controller/ship_group_upgrade.go @@ -9,7 +9,7 @@ import ( "github.com/iliadenisov/galaxy/internal/model/game" ) -func (c *Cache) UpgradeGroup(ri int, groupIndex uint, techInput string, limitShips uint, limitLevel float64) error { +func (c *Cache) shipGroupUpgrade(ri int, groupIndex uint, techInput string, limitShips uint, limitLevel float64) error { c.validateRaceIndex(ri) sgi, ok := c.raceShipGroupIndex(ri, groupIndex) if !ok { diff --git a/internal/model/rest/command.go b/internal/model/rest/command.go index 2ba4d69..d8b16b3 100644 --- a/internal/model/rest/command.go +++ b/internal/model/rest/command.go @@ -10,8 +10,28 @@ type Command struct { type CommandType string const ( - CommandTypeVote CommandType = "vote" - CommandTypeRelation CommandType = "declarePeace" + CommandTypeQuit CommandType = "quit" + CommandTypeVote CommandType = "vote" + CommandTypeRelation CommandType = "declarePeace" + CommandShipClassCreate CommandType = "shipClassCreate" + CommandShipClassMerge CommandType = "shipClassMerge" + CommandShipClassRemove CommandType = "shipClassRemove" + CommandShipGroupLoad CommandType = "shipGroupLoad" + CommandShipGroupUnload CommandType = "shipGroupUnload" + CommandShipGroupSend CommandType = "shipGroupSend" + CommandShipGroupUpgrade CommandType = "shipGroupUpgrade" + CommandShipGroupMerge CommandType = "shipGroupMerge" + CommandShipGroupDismantle CommandType = "shipGroupDismantle" + CommandShipGroupTransfer CommandType = "shipGroupTransfer" + CommandTypeShipGroupJoinFleet CommandType = "shipGroupJoinFleet" + CommandTypeFleetMerge CommandType = "fleetMerge" + CommandTypeFleetSend CommandType = "fleetSend" + CommandTypeScienceCreate CommandType = "scienceCreate" + CommandTypeScienceRemove CommandType = "scienceRemove" + CommandTypePlanetRename CommandType = "planetRename" + CommandTypePlanetProduce CommandType = "planetProduce" + CommandTypePlanetRouteSet CommandType = "planetRouteSet" + CommandTypePlanetRouteRemove CommandType = "planetRouteRemove" ) type CommandMeta struct {