From e8c3411a50cd4db8b4f433e3886ae8dc73758312 Mon Sep 17 00:00:00 2001 From: IliaDenisov Date: Thu, 12 Feb 2026 14:32:54 +0300 Subject: [PATCH] refactor: exclude from fleet when break group --- internal/controller/fleet.go | 2 +- internal/controller/ship_group.go | 17 ++++++++--------- internal/util/string.go | 1 - 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/internal/controller/fleet.go b/internal/controller/fleet.go index 6163811..52002f3 100644 --- a/internal/controller/fleet.go +++ b/internal/controller/fleet.go @@ -135,7 +135,7 @@ func (c *Cache) ShipGroupJoinFleet(ri int, fleetName string, groupID uuid.UUID) } } - c.internalShipGroupJoinFleet(sgi, &c.g.Fleets[fi].ID) + c.internalShipGroupJoinFleet(sgi, c.g.Fleets[fi].ID) if oldFleetID != nil { keepOldFleet := false diff --git a/internal/controller/ship_group.go b/internal/controller/ship_group.go index 10a1d35..72b76ab 100644 --- a/internal/controller/ship_group.go +++ b/internal/controller/ship_group.go @@ -18,9 +18,9 @@ func (c *Cache) ShipGroup(groupIndex int) *game.ShipGroup { return &c.g.ShipGroups[groupIndex] } -func (c *Cache) internalShipGroupJoinFleet(groupIndex int, fID *uuid.UUID) { +func (c *Cache) internalShipGroupJoinFleet(groupIndex int, fID uuid.UUID) { c.validateShipGroupIndex(groupIndex) - c.g.ShipGroups[groupIndex].FleetID = fID + c.g.ShipGroups[groupIndex].FleetID = &fID c.invalidateFleetCache() } @@ -377,7 +377,7 @@ func (c *Cache) shipGroupTransfer(ri, riAccept int, groupID uuid.UUID) (err erro return nil } -func (c *Cache) ShipGroupBreak(ri int, groupID, newID uuid.UUID, quantity uint) error { +func (c *Cache) ShipGroupBreak(ri int, groupID, newID uuid.UUID, quantity uint) (err error) { c.validateRaceIndex(ri) sgi, ok := c.raceShipGroupIndex(ri, groupID) if !ok { @@ -397,15 +397,14 @@ func (c *Cache) ShipGroupBreak(ri int, groupID, newID uuid.UUID, quantity uint) return e.NewBeakGroupNumberNotEnoughError("%d<%d", c.ShipGroup(sgi).Number, quantity) } - 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 + if quantity > 0 && quantity < c.ShipGroup(sgi).Number { + if sgi, err = c.breakGroup(ri, groupID, quantity); err != nil { + return } } + c.ShipGroup(sgi).FleetID = nil + return nil } diff --git a/internal/util/string.go b/internal/util/string.go index 80ac210..388215c 100644 --- a/internal/util/string.go +++ b/internal/util/string.go @@ -14,7 +14,6 @@ var allowedSpecialChars = map[rune]bool{ '_': true, } -// TODO: router validator func ValidateTypeName(input string) (string, bool) { // Trim leading and trailing spaces trimmed := strings.TrimSpace(input)