feat: command types list
This commit is contained in:
@@ -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)
|
||||
|
||||
+120
-120
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user