2023-12-24 10:44:20 +00:00
|
|
|
package bunmodel
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Unit struct {
|
|
|
|
Attack int
|
2024-02-10 12:28:41 +00:00
|
|
|
BuildTime float64
|
|
|
|
Carry int
|
2023-12-24 10:44:20 +00:00
|
|
|
Defense int
|
|
|
|
DefenseArcher int
|
2024-02-10 12:28:41 +00:00
|
|
|
DefenseCavalry int
|
|
|
|
Pop int
|
|
|
|
Speed float64
|
2023-12-24 10:44:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|