package tankstat

import (
	"wartank/pkg/types"
	"wartank/server/serv_bots/warbot/tank/tankstat/static_param"
)

/*
	Исходник предоставляет статические параметры танка.
	Броня, атака, прочность и т.п.
*/

// TankStat -- статические параметры танка
type TankStat struct {
	attack types.IStatParam // Сила атаки танка
	fyne   types.IStatParam // Точность танка
	armor  types.IStatParam // Броня танка
	hard   types.IStatParam // Броня танка
	power  types.IStatParam // Танковая мощь (может не совпадать по сумме, если есть усиление)
	force  types.IStatParam
}

// NewTankStat -- возвращает новый *TankStat
func NewTankStat() *TankStat {
	sf := &TankStat{
		attack: static_param.NewStaticParam("attack"),
		fyne:   static_param.NewStaticParam("fyne"),
		armor:  static_param.NewStaticParam("armor"),
		hard:   static_param.NewStaticParam("hard"),
		power:  static_param.NewStaticParam("power"),
		force:  static_param.NewStaticParam("force"),
	}
	return sf
}

// Attack -- возвращает объект силы атаки
func (sf *TankStat) Attack() types.IStatParam {
	return sf.attack
}

// Hard -- возвращает объект прочности танка
func (sf *TankStat) Hard() types.IStatParam {
	return sf.hard
}

// Fyne -- возвращает объект точности танка
func (sf *TankStat) Fyne() types.IStatParam {
	return sf.fyne
}

// Armor -- возвращает объект брони танка
func (sf *TankStat) Armor() types.IStatParam {
	return sf.armor
}

// Power -- возвращает объект мощи танка
func (sf *TankStat) Power() types.IStatParam {
	return sf.power
}

// Force -- возвращает объект форсированного параметра
func (sf *TankStat) Force() types.IStatParam {
	return sf.force
}
