Files
galaxy-game/pkg/model/game/planet.go
T
2025-09-25 02:13:16 +03:00

62 lines
1.8 KiB
Go

package game
import (
"math"
"github.com/google/uuid"
)
type Planet struct {
X, Y float64
Size float64
Name string
Number uint
Owner uuid.UUID
Production ProductionType
Population float64 // P - Население
Industry float64 // I - Промышленность
Resources float64 // R - Ресурсы / сырьё
Capital float64 // CAP $ - Запасы промышленности
Material float64 // MAT M - Запасы ресурсов / сырья
Colonists float64 // COL C - Количество колонистов
// Параметр "L" - Свободный производственный потенциал
}
// Свободный производственный потенциал (L)
// промышленность * 0.75 + население * 0.25
// TODO: за вычетом затрат, расходуемых в течение хода на модернизацию кораблей
func (p Planet) ProductionCapacity() float64 {
return p.Industry*0.75 + p.Population*0.25
}
// Производство промышленности
// TODO: test on real values
func (p *Planet) IncreaseIndustry() {
prod := p.ProductionCapacity() / 5
industryIncrement := math.Min(prod, p.Material)
p.Industry += industryIncrement
if p.Industry > p.Population {
p.Industry = p.Population
p.Capital += p.Population - p.Industry
}
}
// Производство материалов
// TODO: test on real values
func (p *Planet) IncreaseMaterial() {
p.Material += p.ProductionCapacity() * p.Industry
}
// Автоматическое увеличение населения на каждом ходу
func (p *Planet) IncreasePopulation() {
p.Population *= 1.08
var extraPopulation = p.Size - p.Population
if extraPopulation > 0 {
p.Colonists += extraPopulation / 8
p.Population -= extraPopulation
}
}