core/internal/bun/bunmodel/building_info.go

92 lines
2.2 KiB
Go

package bunmodel
import (
"fmt"
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
)
type Building struct {
BuildTime float64
BuildTimeFactor float64
Iron int
IronFactor float64
MaxLevel int
MinLevel int
Pop int
PopFactor float64
Stone int
StoneFactor float64
Wood int
WoodFactor float64
}
type BuildingInfo struct {
Main Building
Barracks Building
Stable Building
Garage Building
Watchtower Building
Snob Building
Smith Building
Place Building
Statue Building
Market Building
Wood Building
Stone Building
Iron Building
Farm Building
Storage Building
Hide Building
Wall Building
}
func NewBuildingInfo(info domain.BuildingInfo) BuildingInfo {
return BuildingInfo{
Main: Building(info.Main()),
Barracks: Building(info.Barracks()),
Stable: Building(info.Stable()),
Garage: Building(info.Garage()),
Watchtower: Building(info.Watchtower()),
Snob: Building(info.Snob()),
Smith: Building(info.Smith()),
Place: Building(info.Place()),
Statue: Building(info.Statue()),
Market: Building(info.Market()),
Wood: Building(info.Wood()),
Stone: Building(info.Stone()),
Iron: Building(info.Iron()),
Farm: Building(info.Farm()),
Storage: Building(info.Storage()),
Hide: Building(info.Hide()),
Wall: Building(info.Wall()),
}
}
func (b BuildingInfo) ToDomain() (domain.BuildingInfo, error) {
info, err := domain.NewBuildingInfo(
domain.Building(b.Main),
domain.Building(b.Barracks),
domain.Building(b.Stable),
domain.Building(b.Garage),
domain.Building(b.Watchtower),
domain.Building(b.Snob),
domain.Building(b.Smith),
domain.Building(b.Place),
domain.Building(b.Statue),
domain.Building(b.Market),
domain.Building(b.Wood),
domain.Building(b.Stone),
domain.Building(b.Iron),
domain.Building(b.Farm),
domain.Building(b.Storage),
domain.Building(b.Hide),
domain.Building(b.Wall),
)
if err != nil {
return domain.BuildingInfo{}, fmt.Errorf("couldn't construct domain.BuildingInfo: %w", err)
}
return info, nil
}