fix: ship group zero tech levels

This commit is contained in:
Ilia Denisov
2026-02-14 13:11:35 +02:00
parent 96a47f5934
commit 0ab3147bdd
+21 -4
View File
@@ -519,16 +519,33 @@ TODO: Точность тех. уровней корабля
а не округлённые уровни технологий. а не округлённые уровни технологий.
*/ */
func (c *Cache) unsafeCreateShips(ri int, classID uuid.UUID, planet uint, quantity uint) { func (c *Cache) unsafeCreateShips(ri int, classID uuid.UUID, planet uint, quantity uint) {
st := c.MustShipType(ri, classID)
// TODO: test new group levels
level := func(t game.Tech) float64 {
if t == game.TechDrive && st.DriveBlockMass() > 0 {
return c.g.Race[ri].TechLevel(game.TechDrive)
}
if t == game.TechWeapons && st.WeaponsBlockMass() > 0 {
return c.g.Race[ri].TechLevel(game.TechDrive)
}
if t == game.TechShields && st.ShieldsBlockMass() > 0 {
return c.g.Race[ri].TechLevel(game.TechDrive)
}
if t == game.TechCargo && st.CargoBlockMass() > 0 {
return c.g.Race[ri].TechLevel(game.TechDrive)
}
return 0
}
c.appendShipGroup(ri, &game.ShipGroup{ c.appendShipGroup(ri, &game.ShipGroup{
OwnerID: c.g.Race[ri].ID, OwnerID: c.g.Race[ri].ID,
TypeID: classID, TypeID: classID,
Destination: planet, Destination: planet,
Number: uint(quantity), Number: uint(quantity),
Tech: map[game.Tech]game.Float{ Tech: map[game.Tech]game.Float{
game.TechDrive: game.F(c.g.Race[ri].TechLevel(game.TechDrive)), game.TechDrive: game.F(level(game.TechDrive)),
game.TechWeapons: game.F(c.g.Race[ri].TechLevel(game.TechWeapons)), game.TechWeapons: game.F(level(game.TechWeapons)),
game.TechShields: game.F(c.g.Race[ri].TechLevel(game.TechShields)), game.TechShields: game.F(level(game.TechShields)),
game.TechCargo: game.F(c.g.Race[ri].TechLevel(game.TechCargo)), game.TechCargo: game.F(level(game.TechCargo)),
}, },
}) })
} }