package stat_tank

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

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

// СтатТанк -- статические параметры танка
type СтатТанк struct {
	атака     types.ИСтатПарам // Сила атаки танка
	точность  types.ИСтатПарам // Точность танка
	прочность types.ИСтатПарам // Броня танка
	броня     types.ИСтатПарам // Броня танка
	power     types.ИСтатПарам // Танковая мощь (может не совпадать по сумме, если есть усиление)
	усиление  types.ИСтатПарам
}

// НовТанкСтат -- возвращает новый *TankStat
func НовТанкСтат() *СтатТанк {
	сам := &СтатТанк{
		атака:     static_param.НовСтатПарам("атака"),
		точность:  static_param.НовСтатПарам("точность"),
		прочность: static_param.НовСтатПарам("прочность"),
		броня:     static_param.НовСтатПарам("броня"),
		power:     static_param.НовСтатПарам("мощь"),
		усиление:  static_param.НовСтатПарам("усиление"),
	}
	return сам
}

// Атака -- возвращает объект силы атаки
func (сам *СтатТанк) Атака() types.ИСтатПарам {
	return сам.атака
}

// Прочность -- возвращает объект прочности танка
func (сам *СтатТанк) Прочность() types.ИСтатПарам {
	return сам.броня
}

// Точность -- возвращает объект точности танка
func (сам *СтатТанк) Точность() types.ИСтатПарам {
	return сам.точность
}

// Броня -- возвращает объект брони танка
func (сам *СтатТанк) Броня() types.ИСтатПарам {
	return сам.прочность
}

// Мощь -- возвращает объект мощи танка
func (сам *СтатТанк) Мощь() types.ИСтатПарам {
	return сам.power
}

// Форсаж -- возвращает объект форсированного параметра
func (сам *СтатТанк) Форсаж() types.ИСтатПарам {
	return сам.усиление
}

// Форсаж -- возвращает объект форсированного параметра
func (сам *СтатТанк) ФорсажОбнов(парам string, знач int) {
	сам.усиление = static_param.НовСтатПарам("force")
	сам.усиление.Уст(знач)
}
