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
|
assert.NoError(t, c.CreateShips(Race_1_idx, Race_1_Gunship, R1_Planet_1_num, 15)) // 2
|
||||||
undefeatedShip := ship
|
undefeatedShip := ship
|
||||||
undefeatedShip.Shields = 100
|
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
|
assert.NoError(t, c.CreateShips(Race_1_idx, undefeatedShip.Name, R1_Planet_1_num, 1)) // 3
|
||||||
|
|
||||||
cacheProbability := make(map[int]map[int]float64)
|
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)
|
c.CreateShipsUnsafe_T(Race_1_idx, c.MustShipClass(Race_1_idx, Race_1_Gunship).ID, R0_Planet_0_num, 11)
|
||||||
|
|
||||||
// Race_C
|
// 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)
|
c.CreateShipsUnsafe_T(race_C_idx, c.MustShipClass(race_C_idx, Cruiser.Name).ID, R0_Planet_0_num, 12)
|
||||||
|
|
||||||
// Race_D
|
// 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)
|
c.CreateShipsUnsafe_T(race_D_idx, c.MustShipClass(race_D_idx, Cruiser.Name).ID, R0_Planet_0_num, 13)
|
||||||
|
|
||||||
battle := controller.ProduceBattles(c)
|
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)
|
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 {
|
func (c *Controller) JoinShipGroupToFleet(actor, fleetName string, group, count uint) error {
|
||||||
ri, err := c.Cache.validActor(actor)
|
ri, err := c.Cache.validActor(actor)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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 {
|
func (c *Controller) JoinFleets(actor, fleetSourceName, fleetTargetName string) error {
|
||||||
@@ -67,7 +164,7 @@ func (c *Controller) JoinFleets(actor, fleetSourceName, fleetTargetName string)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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 {
|
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 {
|
if !ok {
|
||||||
return e.NewEntityNotExistsError("fleet %q", fleetName)
|
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 {
|
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 {
|
if err != nil {
|
||||||
return err
|
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 {
|
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:
|
default:
|
||||||
return e.NewProductionInvalidError(prodType)
|
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 {
|
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 {
|
if !ok {
|
||||||
return e.NewCargoTypeInvalidError(loadType)
|
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 {
|
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 {
|
if !ok {
|
||||||
return e.NewCargoTypeInvalidError(loadType)
|
return e.NewCargoTypeInvalidError(loadType)
|
||||||
}
|
}
|
||||||
return c.Cache.RemoveRoute(ri, rt, origin)
|
return c.Cache.PlanetRouteRemove(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)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,13 +133,13 @@ func newCache() (*controller.Cache, *controller.Controller) {
|
|||||||
// g := newGame()
|
// g := newGame()
|
||||||
// c := controller.NewCache(g)
|
// c := controller.NewCache(g)
|
||||||
c := ctl.Cache
|
c := ctl.Cache
|
||||||
assertNoError(c.CreateShipType(Race_0_idx, Race_0_Gunship, 60, 3, 30, 100, 0))
|
assertNoError(c.ShipClassCreate(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.ShipClassCreate(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, 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.ShipClassCreate(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.ShipClassCreate(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, ShipType_Cruiser, 15, 2, 15, 15, 0)) // same name - different type (why.)
|
||||||
|
|
||||||
// ctl := controller.NewRepoController(nil)
|
// ctl := controller.NewRepoController(nil)
|
||||||
// ctl.Cache = c
|
// ctl.Cache = c
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ func (c *Cache) FleetSpeedAndMass(fi int) (float64, float64) {
|
|||||||
return speed, mass
|
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)
|
c.validateRaceIndex(ri)
|
||||||
name, ok := util.ValidateTypeName(fleetName)
|
name, ok := util.ValidateTypeName(fleetName)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -146,7 +146,7 @@ func (c *Cache) JoinShipGroupToFleet(ri int, fleetName string, groupIndex, quant
|
|||||||
sgi = nsgi
|
sgi = nsgi
|
||||||
}
|
}
|
||||||
|
|
||||||
c.ShipGroupJoinFleet(sgi, &c.g.Fleets[fi].ID)
|
c.internalShipGroupJoinFleet(sgi, &c.g.Fleets[fi].ID)
|
||||||
|
|
||||||
if oldFleetID != nil {
|
if oldFleetID != nil {
|
||||||
keepOldFleet := false
|
keepOldFleet := false
|
||||||
@@ -170,7 +170,7 @@ func (c *Cache) JoinShipGroupToFleet(ri int, fleetName string, groupIndex, quant
|
|||||||
return nil
|
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)
|
fiSource, ok := c.fleetIndex(ri, fleetSourceName)
|
||||||
if !ok {
|
if !ok {
|
||||||
return e.NewEntityNotExistsError("source fleet %s", fleetSourceName)
|
return e.NewEntityNotExistsError("source fleet %s", fleetSourceName)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"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.validateRaceIndex(ri)
|
||||||
c.validateFleetIndex(fi)
|
c.validateFleetIndex(fi)
|
||||||
fleetState := c.FleetState(c.g.Fleets[fi].ID)
|
fleetState := c.FleetState(c.g.Fleets[fi].ID)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"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)
|
n, ok := util.ValidateTypeName(name)
|
||||||
if !ok {
|
if !ok {
|
||||||
return e.NewEntityTypeNameValidationError("%q", n)
|
return e.NewEntityTypeNameValidationError("%q", n)
|
||||||
@@ -30,7 +30,7 @@ func (c *Cache) RenamePlanet(ri int, number int, name string) error {
|
|||||||
return nil
|
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)
|
c.validateRaceIndex(ri)
|
||||||
if number < 0 {
|
if number < 0 {
|
||||||
return e.NewPlanetNumberError(number)
|
return e.NewPlanetNumberError(number)
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ func TestProduceShips(t *testing.T) {
|
|||||||
progress := *c.MustPlanet(R0_Planet_0_num).Production.Progress
|
progress := *c.MustPlanet(R0_Planet_0_num).Production.Progress
|
||||||
assert.InDelta(t, 0.45, progress.F(), 0.001)
|
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.NoError(t, c.CreateShips(Race_0_idx, "Drone", uint(pn), 7))
|
||||||
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 1)
|
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 1)
|
||||||
assert.Equal(t, uint(7), c.ShipGroup(0).Number)
|
assert.Equal(t, uint(7), c.ShipGroup(0).Number)
|
||||||
@@ -364,7 +364,7 @@ func TestListProducingPlanets(t *testing.T) {
|
|||||||
|
|
||||||
func TestTurnPlanetProductions(t *testing.T) {
|
func TestTurnPlanetProductions(t *testing.T) {
|
||||||
c, g := newCache()
|
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))
|
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).Resources = 10.
|
||||||
c.MustPlanet(R0_Planet_0_num).Size = 1000.
|
c.MustPlanet(R0_Planet_0_num).Size = 1000.
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"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)
|
c.validateRaceIndex(ri)
|
||||||
p1, ok := c.Planet(origin)
|
p1, ok := c.Planet(origin)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -36,7 +36,7 @@ func (c *Cache) SetRoute(ri int, rt game.RouteType, origin, destination uint) er
|
|||||||
return nil
|
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)
|
c.validateRaceIndex(ri)
|
||||||
p1, ok := c.Planet(origin)
|
p1, ok := c.Planet(origin)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"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)
|
c.validateRaceIndex(ri)
|
||||||
n, ok := util.ValidateTypeName(name)
|
n, ok := util.ValidateTypeName(name)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -47,7 +47,7 @@ func (c *Cache) CreateScience(ri int, name string, drive, weapons, shileds, carg
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cache) DeleteScience(ri int, name string) error {
|
func (c *Cache) ScienceRemove(ri int, name string) error {
|
||||||
c.validateRaceIndex(ri)
|
c.validateRaceIndex(ri)
|
||||||
sc := slices.IndexFunc(c.g.Race[ri].Sciences, func(s game.Science) bool { return s.Name == name })
|
sc := slices.IndexFunc(c.g.Race[ri].Sciences, func(s game.Science) bool { return s.Name == name })
|
||||||
if sc < 0 {
|
if sc < 0 {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"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)
|
c.validateRaceIndex(ri)
|
||||||
if err := validateShipTypeValues(drive, ammo, weapons, shileds, cargo); err != nil {
|
if err := validateShipTypeValues(drive, ammo, weapons, shileds, cargo); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -37,7 +37,7 @@ func (c *Cache) CreateShipType(ri int, typeName string, drive float64, ammo int,
|
|||||||
return nil
|
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)
|
c.validateRaceIndex(ri)
|
||||||
sourceClass, sti, ok := c.ShipClass(ri, sourceName)
|
sourceClass, sti, ok := c.ShipClass(ri, sourceName)
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ func (c *Cache) MergeShipType(ri int, sourceName, targetName string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cache) DeleteShipType(ri int, name string) error {
|
func (c *Cache) shipClassRemove(ri int, name string) error {
|
||||||
c.validateRaceIndex(ri)
|
c.validateRaceIndex(ri)
|
||||||
st, i, ok := c.ShipClass(ri, name)
|
st, i, ok := c.ShipClass(ri, name)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ func (c *Cache) ShipGroup(groupIndex int) *game.ShipGroup {
|
|||||||
return &c.g.ShipGroups[groupIndex]
|
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.validateShipGroupIndex(groupIndex)
|
||||||
c.g.ShipGroups[groupIndex].FleetID = fID
|
c.g.ShipGroups[groupIndex].FleetID = fID
|
||||||
c.invalidateFleetCache()
|
c.invalidateFleetCache()
|
||||||
@@ -140,7 +140,7 @@ func (c *Cache) DeleteKilledShipGroups() {
|
|||||||
func (c *Cache) TurnMergeEqualShipGroups() {
|
func (c *Cache) TurnMergeEqualShipGroups() {
|
||||||
for i := range c.listRaceActingIdx() {
|
for i := range c.listRaceActingIdx() {
|
||||||
c.transferPendingGroups(i)
|
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)
|
c.validateRaceIndex(ri)
|
||||||
raceGroups := make([]game.ShipGroup, 0)
|
raceGroups := make([]game.ShipGroup, 0)
|
||||||
for sg := range c.listShipGroups(ri) {
|
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)
|
sgi, ok := c.raceShipGroupIndex(ri, groupIndex)
|
||||||
if !ok {
|
if !ok {
|
||||||
return e.NewEntityNotExistsError("group #%d", groupIndex)
|
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 {
|
if ships == 0 && quantity > 0 {
|
||||||
return e.NewCargoQuantityWithoutGroupBreakError()
|
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)
|
c.validateRaceIndex(ri)
|
||||||
if ships == 0 && quantity > 0 {
|
if ships == 0 && quantity > 0 {
|
||||||
return e.NewCargoQuantityWithoutGroupBreakError()
|
return e.NewCargoQuantityWithoutGroupBreakError()
|
||||||
@@ -404,7 +405,7 @@ func (c *Cache) unsafeUnloadCargo(sgi int, q float64) {
|
|||||||
p.UnpackCapital()
|
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 {
|
if ri == riAccept {
|
||||||
return e.NewSameRaceError(c.g.Race[riAccept].Name)
|
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)
|
return e.NewGiveawayGroupShipsTypeNotEqualError("race %q, ship type %q", c.g.Race[riAccept].Name, c.g.Race[riAccept].ShipTypes[stAcc].Name)
|
||||||
}
|
}
|
||||||
if stAcc < 0 {
|
if stAcc < 0 {
|
||||||
err = c.CreateShipType(riAccept,
|
err = c.ShipClassCreate(riAccept,
|
||||||
st.Name,
|
st.Name,
|
||||||
st.Drive.F(),
|
st.Drive.F(),
|
||||||
int(st.Armament),
|
int(st.Armament),
|
||||||
@@ -461,7 +462,7 @@ func (c *Cache) TransferGroup(ri, riAccept int, groupIndex, quantity uint) (err
|
|||||||
return nil
|
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)
|
c.validateRaceIndex(ri)
|
||||||
sgi := -1
|
sgi := -1
|
||||||
for i := range c.ShipGroupsIndex() {
|
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 {
|
if quantity == 0 || quantity == c.ShipGroup(sgi).Number {
|
||||||
c.ShipGroupJoinFleet(sgi, nil)
|
c.internalShipGroupJoinFleet(sgi, nil)
|
||||||
} else {
|
} else {
|
||||||
if _, err := c.breakGroupSafe(ri, groupIndex, quantity); err != nil {
|
if _, err := c.breakGroupSafe(ri, groupIndex, quantity); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"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)
|
c.validateRaceIndex(ri)
|
||||||
|
|
||||||
sgi, ok := c.raceShipGroupIndex(ri, groupIndex)
|
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 {
|
if p1.Number == p2.Number {
|
||||||
c.UnsendShips(c.ShipGroup(sgi))
|
c.UnsendShips(c.ShipGroup(sgi))
|
||||||
c.JoinEqualGroups(ri)
|
c.shipGroupMerge(ri)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ func TestBreakGroup(t *testing.T) {
|
|||||||
assert.Len(t, slices.Collect(c.ListFleets(Race_0_idx)), 1)
|
assert.Len(t, slices.Collect(c.ListFleets(Race_0_idx)), 1)
|
||||||
|
|
||||||
// group #1 -> group #3 (5 new, 8 left)
|
// 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.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 3)
|
||||||
assert.Equal(t, uint(8), c.ShipGroup(0).Number)
|
assert.Equal(t, uint(8), c.ShipGroup(0).Number)
|
||||||
assert.NotNil(t, c.ShipGroup(0).FleetID)
|
assert.NotNil(t, c.ShipGroup(0).FleetID)
|
||||||
@@ -139,14 +139,14 @@ func TestBreakGroup(t *testing.T) {
|
|||||||
// group #1 -> group #4 (2 new, 6 left)
|
// group #1 -> group #4 (2 new, 6 left)
|
||||||
c.ShipGroup(0).CargoType = game.CargoColonist.Ref()
|
c.ShipGroup(0).CargoType = game.CargoColonist.Ref()
|
||||||
c.ShipGroup(0).Load = 32.8 // 8 ships
|
c.ShipGroup(0).Load = 32.8 // 8 ships
|
||||||
assert.NoError(t, c.BreakGroup(Race_0_idx, 1, 2)) // group #4 (3)
|
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.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 4)
|
||||||
assert.Equal(t, uint(6), c.ShipGroup(0).Number)
|
assert.Equal(t, uint(6), c.ShipGroup(0).Number)
|
||||||
assert.NotNil(t, c.ShipGroup(0).FleetID)
|
assert.NotNil(t, c.ShipGroup(0).FleetID)
|
||||||
assert.Equal(t, uint(2), c.ShipGroup(3).Number)
|
assert.Equal(t, uint(2), c.ShipGroup(3).Number)
|
||||||
assert.Equal(t, uint(4), c.ShipGroup(3).Index)
|
assert.Equal(t, uint(4), c.ShipGroup(3).Index)
|
||||||
assert.Nil(t, c.ShipGroup(3).FleetID)
|
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.NotNil(t, c.ShipGroup(3).FleetID)
|
||||||
|
|
||||||
assert.Equal(t, game.CargoColonist.Ref(), c.ShipGroup(0).CargoType)
|
assert.Equal(t, game.CargoColonist.Ref(), c.ShipGroup(0).CargoType)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/model/game"
|
"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)
|
c.validateRaceIndex(ri)
|
||||||
sgi, ok := c.raceShipGroupIndex(ri, groupIndex)
|
sgi, ok := c.raceShipGroupIndex(ri, groupIndex)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -10,8 +10,28 @@ type Command struct {
|
|||||||
type CommandType string
|
type CommandType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
CommandTypeQuit CommandType = "quit"
|
||||||
CommandTypeVote CommandType = "vote"
|
CommandTypeVote CommandType = "vote"
|
||||||
CommandTypeRelation CommandType = "declarePeace"
|
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 {
|
type CommandMeta struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user