feat: more validators

This commit is contained in:
Ilia Denisov
2026-02-11 00:30:37 +02:00
parent 43dc8ab3f9
commit a477f5ce0b
12 changed files with 224 additions and 39 deletions
+7 -7
View File
@@ -83,7 +83,7 @@ func (c *Controller) ShipGroupLoad(actor string, groupID uuid.UUID, cargoType st
if err != nil {
return err
}
ct, ok := game.CargoTypeSet[cargoType]
ct, ok := game.CargoTypeSet[strings.ToLower(cargoType)]
if !ok {
return e.NewCargoTypeInvalidError(cargoType)
}
@@ -151,12 +151,12 @@ func (c *Controller) ShipGroupTransfer(actor, acceptor string, groupID uuid.UUID
return c.Cache.shipGroupTransfer(ri, riAccept, groupID, quantity)
}
func (c *Controller) ShipGroupJoinFleet(actor, fleetName string, groupID uuid.UUID, count uint) error {
func (c *Controller) ShipGroupJoinFleet(actor, fleetName string, groupID uuid.UUID, quantity uint) error {
ri, err := c.Cache.validActor(actor)
if err != nil {
return err
}
return c.Cache.ShipGroupJoinFleet(ri, fleetName, groupID, count)
return c.Cache.ShipGroupJoinFleet(ri, fleetName, groupID, quantity)
}
func (c *Controller) FleetMerge(actor, fleetSourceName, fleetTargetName string) error {
@@ -195,12 +195,12 @@ func (c *Controller) ScienceRemove(actor, typeName string) error {
return c.Cache.ScienceRemove(ri, typeName)
}
func (c *Controller) PlanetRename(actor string, planetNumber int, typeName string) error {
func (c *Controller) PlanetRename(actor string, planetNumber int, name string) error {
ri, err := c.Cache.validActor(actor)
if err != nil {
return err
}
return c.Cache.PlanetRename(ri, planetNumber, typeName)
return c.Cache.PlanetRename(ri, planetNumber, name)
}
func (c *Controller) PlanetProduce(actor string, planetNumber int, prodType, subject string) error {
@@ -237,7 +237,7 @@ func (c *Controller) PlanetRouteSet(actor, loadType string, origin, destination
if err != nil {
return err
}
rt, ok := game.RouteTypeSet[loadType]
rt, ok := game.RouteTypeSet[strings.ToLower(loadType)]
if !ok {
return e.NewCargoTypeInvalidError(loadType)
}
@@ -249,7 +249,7 @@ func (c *Controller) PlanetRouteRemove(actor, loadType string, origin uint) erro
if err != nil {
return err
}
rt, ok := game.RouteTypeSet[loadType]
rt, ok := game.RouteTypeSet[strings.ToLower(loadType)]
if !ok {
return e.NewCargoTypeInvalidError(loadType)
}
@@ -143,3 +143,7 @@ func (c *Cache) CreateShipsUnsafe_T(ri int, classID uuid.UUID, planet uint, quan
func (c *Cache) WipeRace(ri int) {
c.wipeRace(ri)
}
func (c *Cache) UnsafeDeleteShipGroup(sgi int) {
c.unsafeDeleteShipGroup(sgi)
}
+1 -1
View File
@@ -407,7 +407,6 @@ func (c *Cache) shipGroupTransfer(ri, riAccept int, groupID uuid.UUID, quantity
}
if quantity == 0 || quantity == sg.Number {
// FIXME: remove fleet & invalidate cache?
c.unsafeDeleteShipGroup(sgi)
} else {
newGroup.Number = quantity
@@ -437,6 +436,7 @@ func (c *Cache) ShipGroupBreak(ri int, groupID uuid.UUID, quantity uint) error {
if quantity == 0 || quantity == c.ShipGroup(sgi).Number {
c.internalShipGroupJoinFleet(sgi, nil)
} else {
// TODO: which group stays in fleet?
if _, err := c.breakGroup(ri, groupID, quantity); err != nil {
return err
}
+17
View File
@@ -572,3 +572,20 @@ func TestShipGroupDestroyItem(t *testing.T) {
func TestState(t *testing.T) {
assert.Equal(t, "In_Orbit", fmt.Sprintf("%s", game.StateInOrbit))
}
func TestUnsafeDeleteShipGroup(t *testing.T) {
c, g := newCache()
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Gunship, R0_Planet_0_num, 3)) // 0
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Gunship, R0_Planet_2_num, 5)) // 1
assert.NoError(t, g.ShipGroupJoinFleet(Race_0.Name, "Fleet", c.ShipGroup(0).ID, 0))
assert.NoError(t, c.CreateShips(Race_0_idx, Race_0_Freighter, R0_Planet_2_num, 7)) // 2
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 3)
c.UnsafeDeleteShipGroup(1)
assert.Len(t, slices.Collect(c.RaceShipGroups(Race_0_idx)), 2)
assert.Equal(t, uint(3), c.ShipGroup(0).Number)
assert.Equal(t, uint(7), c.ShipGroup(1).Number)
}