Initial stats, etc.
This commit is contained in:
88
koboldsim/stats.go
Normal file
88
koboldsim/stats.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package koboldsim
|
||||
|
||||
import (
|
||||
"git.chromaticdragon.app/kistaro/CardSimEngine/cardsim"
|
||||
)
|
||||
|
||||
// KoboldMine is the state of a kobold mine.
|
||||
type KoboldMine struct {
|
||||
Kobolds cardsim.Stored[int64]
|
||||
|
||||
SectorMiningProductivity cardsim.Stored[float64]
|
||||
SectorScavengingProductivity cardsim.Stored[float64]
|
||||
|
||||
GovBureaucracyProductivity cardsim.Stored[float64]
|
||||
GovWarProductivity cardsim.Stored[float64]
|
||||
}
|
||||
|
||||
func (k *KoboldMine) ProductivityFunc(s *cardsim.Stored[float64]) func() float64 {
|
||||
return func() float64 {
|
||||
return s.Value * float64(k.Kobolds.Value)
|
||||
}
|
||||
}
|
||||
|
||||
func (k *KoboldMine) TotalSectorProductivity() float64 {
|
||||
return float64(k.Kobolds.Value) * (k.SectorMiningProductivity.Value + k.SectorScavengingProductivity.Value)
|
||||
}
|
||||
|
||||
func (k *KoboldMine) TotalGovProductivity() float64 {
|
||||
return float64(k.Kobolds.Value) * (k.GovBureaucracyProductivity.Value + k.GovWarProductivity.Value)
|
||||
}
|
||||
|
||||
func (k *KoboldMine) Stats() []cardsim.Stat {
|
||||
stats := cardsim.ExtractStats(k)
|
||||
funcs := []cardsim.Stat{
|
||||
cardsim.StatFunc(
|
||||
"Total Sector Mining Productivity",
|
||||
k.ProductivityFunc(&k.SectorMiningProductivity),
|
||||
),
|
||||
cardsim.StatFunc(
|
||||
"Total Sector Scavenging Productivity",
|
||||
k.ProductivityFunc(&k.SectorScavengingProductivity),
|
||||
),
|
||||
cardsim.StatFunc(
|
||||
"Total Government Bureaucracy Productivity",
|
||||
k.ProductivityFunc(&k.GovBureaucracyProductivity),
|
||||
),
|
||||
cardsim.StatFunc(
|
||||
"Total Government War Productivity",
|
||||
k.ProductivityFunc(&k.GovBureaucracyProductivity),
|
||||
),
|
||||
cardsim.StatFunc(
|
||||
"Total Sector Productivity",
|
||||
k.TotalSectorProductivity,
|
||||
),
|
||||
cardsim.StatFunc(
|
||||
"Total Government Productivity",
|
||||
k.TotalGovProductivity,
|
||||
),
|
||||
}
|
||||
stats = append(stats, funcs...)
|
||||
cardsim.SortStats(stats)
|
||||
return stats
|
||||
}
|
||||
|
||||
func NewKoboldMine() *KoboldMine {
|
||||
return &KoboldMine{
|
||||
Kobolds: cardsim.Stored[int64]{
|
||||
Name: "Kobolds",
|
||||
Value: 1000,
|
||||
},
|
||||
SectorMiningProductivity: cardsim.Stored[float64]{
|
||||
Name: "Sector Mining Productivity",
|
||||
Value: 0.15,
|
||||
},
|
||||
SectorScavengingProductivity: cardsim.Stored[float64]{
|
||||
Name: "Sector Scavening Productivity",
|
||||
Value: 0.1,
|
||||
},
|
||||
GovBureaucracyProductivity: cardsim.Stored[float64]{
|
||||
Name: "Government Bureaucracy Productivity",
|
||||
Value: 0.05,
|
||||
},
|
||||
GovWarProductivity: cardsim.Stored[float64]{
|
||||
Name: "Government War Productivity",
|
||||
Value: 0.1,
|
||||
},
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user