package wrag

import (
	"strconv"
	"strings"
	"wartank/pkg/types"

	"github.com/sirupsen/logrus"
)

/*
	Танк враг на битве, сражении, дуэли, войне
*/

// Wrag -- объект врага
type Wrag struct {
	app    types.IServer
	health int // здоровье вражины
}

// NewWrag -- возвращает новый объект врага
func NewWrag(app types.IServer, lstBattle []string) *Wrag {
	sf := &Wrag{
		app: app,
	}
	sf.update(lstBattle)
	return sf
}

// Обновляет вражину
func (sf *Wrag) update(lstBattleOn []string) {
	// <img class="tank-img" src="/tankimg?c=2&amp;k=1&amp;m=0-2,1-2,2-0,3-2,5-2,6-0&amp;t=png" alt="Тень Брата">
	var (
		ind    int
		strOut string
		isFind bool
	)
	for ind, strOut = range lstBattleOn {
		if strings.Contains(strOut, `<img class="tank-img" src="/`) {
			// Убедиться, что это не свой танк
			if strings.Contains(strOut, "prospero tank") {
				continue
			}
			isFind = true
			break
		}
	}
	if !isFind { // Не нашёл метку врага
		logrus.Errorf("Wrag.update(): не нашёл имя врага")
		sf.health = 800
		return
	}
	// Вражина найдена, ищем настоящее здоровье
	ind += 13
	strOut = lstBattleOn[ind]
	lstHealth := strings.Split(strOut, `<span>`)
	strHealth := lstHealth[1]
	lstHealth = strings.Split(strHealth, `</span>`)
	strHealth = lstHealth[0]
	iHealth, err := strconv.Atoi(strHealth)
	if err != nil {
		logrus.WithError(err).Errorf("Wrag.update(): здоровье(%v) не число", strHealth)
		sf.health = 800
		return
	}
	sf.health = iHealth
}
