refactor: floats, tests
This commit is contained in:
@@ -69,7 +69,7 @@ type InUpgrade struct {
|
||||
func (iu InUpgrade) Cost() float64 {
|
||||
var sum float64
|
||||
for i := range iu.UpgradeTech {
|
||||
sum += iu.UpgradeTech[i].Cost
|
||||
sum += iu.UpgradeTech[i].Cost.F()
|
||||
}
|
||||
return sum
|
||||
}
|
||||
@@ -77,16 +77,16 @@ func (iu InUpgrade) Cost() float64 {
|
||||
func (iu InUpgrade) TechCost(t Tech) float64 {
|
||||
for i := range iu.UpgradeTech {
|
||||
if iu.UpgradeTech[i].Tech == t {
|
||||
return iu.UpgradeTech[i].Cost
|
||||
return iu.UpgradeTech[i].Cost.F()
|
||||
}
|
||||
}
|
||||
return 0.
|
||||
}
|
||||
|
||||
type UpgradePreference struct {
|
||||
Tech Tech `json:"tech"`
|
||||
Level float64 `json:"level"`
|
||||
Cost float64 `json:"cost"`
|
||||
Tech Tech `json:"tech"`
|
||||
Level Float `json:"level"`
|
||||
Cost Float `json:"cost"`
|
||||
}
|
||||
|
||||
type Tech string
|
||||
@@ -177,7 +177,7 @@ func (sg ShipGroup) Equal(other ShipGroup) bool {
|
||||
|
||||
// Грузоподъёмность
|
||||
func (sg ShipGroup) CargoCapacity(st *ShipType) float64 {
|
||||
return sg.TechLevel(TechCargo).F() * (st.Cargo + (st.Cargo*st.Cargo)/20) * float64(sg.Number)
|
||||
return sg.TechLevel(TechCargo).F() * (st.Cargo.F() + (st.Cargo.F()*st.Cargo.F())/20) * float64(sg.Number)
|
||||
}
|
||||
|
||||
// Масса перевозимого груза -
|
||||
@@ -200,7 +200,7 @@ func (sg ShipGroup) FullMass(st *ShipType) float64 {
|
||||
// Эффективность двигателя -
|
||||
// равна мощности Двигателей, умноженной на технологический уровень блока Двигателей
|
||||
func (sg ShipGroup) DriveEffective(st *ShipType) float64 {
|
||||
return st.Drive * sg.TechLevel(TechDrive).F()
|
||||
return st.Drive.F() * sg.TechLevel(TechDrive).F()
|
||||
}
|
||||
|
||||
// Корабли перемещаются за один ход на количество световых лет, равное
|
||||
@@ -210,7 +210,7 @@ func (sg ShipGroup) Speed(st *ShipType) float64 {
|
||||
}
|
||||
|
||||
func (sg ShipGroup) UpgradeDriveCost(st *ShipType, drive float64) float64 {
|
||||
return (1 - sg.TechLevel(TechDrive).F()/drive) * 10 * st.Drive
|
||||
return (1 - sg.TechLevel(TechDrive).F()/drive) * 10 * st.Drive.F()
|
||||
}
|
||||
|
||||
// TODO: test on other values
|
||||
@@ -219,17 +219,17 @@ func (sg ShipGroup) UpgradeWeaponsCost(st *ShipType, weapons float64) float64 {
|
||||
}
|
||||
|
||||
func (sg ShipGroup) UpgradeShieldsCost(st *ShipType, shields float64) float64 {
|
||||
return (1 - sg.TechLevel(TechShields).F()/shields) * 10 * st.Shields
|
||||
return (1 - sg.TechLevel(TechShields).F()/shields) * 10 * st.Shields.F()
|
||||
}
|
||||
|
||||
func (sg ShipGroup) UpgradeCargoCost(st *ShipType, cargo float64) float64 {
|
||||
return (1 - sg.TechLevel(TechCargo).F()/cargo) * 10 * st.Cargo
|
||||
return (1 - sg.TechLevel(TechCargo).F()/cargo) * 10 * st.Cargo.F()
|
||||
}
|
||||
|
||||
// Мощность бомбардировки
|
||||
func (sg ShipGroup) BombingPower(st *ShipType) float64 {
|
||||
return (math.Sqrt(st.Weapons*sg.TechLevel(TechWeapons).F())/10. + 1.) *
|
||||
st.Weapons *
|
||||
return (math.Sqrt(st.Weapons.F()*sg.TechLevel(TechWeapons).F())/10. + 1.) *
|
||||
st.Weapons.F() *
|
||||
sg.TechLevel(TechWeapons).F() *
|
||||
float64(st.Armament) *
|
||||
float64(sg.Number)
|
||||
|
||||
Reference in New Issue
Block a user