package wrag

import (
	"strconv"
	"strings"
	"wartank/pkg/components/kernel/logger"
	"wartank/pkg/types"
)

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

// Враг -- объект врага
type Враг struct {
	сервер types.ИСервер
	лог    types.ИЛоггер
	health int // здоровье вражины
}

// НовВраг -- возвращает новый объект врага
func НовВраг(app types.ИСервер, lstBattle []string) *Враг {
	лог := logger.НовЛоггер("Враг")
	лог.Отладка("НовВраг()\n")
	сам := &Враг{
		сервер: app,
		лог:    лог,
	}
	сам.update(lstBattle)
	return сам
}

// Обновляет вражину
func (сам *Враг) 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
		еслиНайдено bool
	)
	for ind, strOut = range lstBattleOn {
		if strings.Contains(strOut, `<img class="tank-img" src="/`) {
			// Убедиться, что это не свой танк
			if strings.Contains(strOut, "prospero tank") {
				continue
			}
			еслиНайдено = true
			break
		}
	}
	if !еслиНайдено { // Не нашёл метку врага
		сам.лог.Ошибка("update(): не нашёл метку врага\n")
		сам.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 {
		сам.лог.Ошибка("update(): здоровье(%v) не число, err=\n\t%v\n", strHealth, err)
		сам.health = 800
		return
	}
	сам.health = iHealth
}
