core/internal/bun/bunmodel/unit_info.go

76 lines
1.5 KiB
Go

package bunmodel
import (
"fmt"
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
)
type Unit struct {
BuildTime float64
Pop int
Speed float64
Attack int
Defense int
DefenseCavalry int
DefenseArcher int
Carry int
}
type UnitInfo struct {
Spear Unit
Sword Unit
Axe Unit
Archer Unit
Spy Unit
Light Unit
Marcher Unit
Heavy Unit
Ram Unit
Catapult Unit
Knight Unit
Snob Unit
Militia Unit
}
func NewUnitInfo(info domain.UnitInfo) UnitInfo {
return UnitInfo{
Spear: Unit(info.Spear()),
Sword: Unit(info.Sword()),
Axe: Unit(info.Axe()),
Archer: Unit(info.Archer()),
Spy: Unit(info.Spy()),
Light: Unit(info.Light()),
Marcher: Unit(info.Marcher()),
Heavy: Unit(info.Heavy()),
Ram: Unit(info.Ram()),
Catapult: Unit(info.Catapult()),
Knight: Unit(info.Knight()),
Snob: Unit(info.Snob()),
Militia: Unit(info.Militia()),
}
}
func (u UnitInfo) ToDomain() (domain.UnitInfo, error) {
info, err := domain.NewUnitInfo(
domain.Unit(u.Spear),
domain.Unit(u.Sword),
domain.Unit(u.Axe),
domain.Unit(u.Archer),
domain.Unit(u.Spy),
domain.Unit(u.Light),
domain.Unit(u.Marcher),
domain.Unit(u.Heavy),
domain.Unit(u.Ram),
domain.Unit(u.Catapult),
domain.Unit(u.Knight),
domain.Unit(u.Snob),
domain.Unit(u.Militia),
)
if err != nil {
return domain.UnitInfo{}, fmt.Errorf("couldn't construct domain.UnitInfo: %w", err)
}
return info, nil
}