`+сам.логин+`"`) {
еслиНайдено = true
break
}
}
if !еслиНайдено { // Свой танк не найден
сам.isEnd.Set()
сам.Отменить()
return
}
// Свой танк найден, ищем здоровье
//
500
ind += 11
strOut = lstBattle[ind]
strHealth := strings.TrimPrefix(strOut, `
`)
strHealth = strings.TrimSuffix(strHealth, `
`)
iHealth, err := strconv.Atoi(strHealth)
if err != nil {
сам.isEnd.Set()
сам.Отменить()
return
}
сам.здоровьеУстановить(iHealth)
}
// здоровьеУстановить -- устанавливает текущее здоровье
func (сам *Здоровье) здоровьеУстановить(здоровье int) {
if здоровье < 0 {
// log._rintf("WARN Health.здоровьеУстановить(): кривое значение здоровья танка(%v)\n", val)
здоровье = 0
}
дельта := сам.здоровьеСейчас.Get() - здоровье
if дельта < 0 { // Такое может быть, если было лечение
дельта = 0
}
if здоровье >= сам.здоровьеПолное.Get() {
// log._rintf("WARN Health.здоровьеУстановить(): кривое текущее здоровье, %v/%v\n", val, сам.full.Get())
сам.здоровьеПолное.Set(здоровье)
сам.здоровьеСейчас.Set(здоровье)
// сам.deltaOld = 0
сам.Выстрел().БлокСброс()
сам.еслиНадо.Reset()
return
}
switch {
case сам.isEnd.Get(): // Конец сражения
сам.здоровьеСейчас.Set(0)
сам.isEnd.Set()
сам.Отменить()
return
case здоровье <= 0: // Убит
сам.здоровьеСейчас.Set(0)
сам.isEnd.Set()
сам.Отменить()
return
case здоровье <= 500: // Запретить стрельбу
сам.Выстрел().БлокУст() // Установить запрет стрельбы пока слабое здоровье
сам.еслиНадо.Set()
сам.Манёвр().УстНадо()
case здоровье > 500: // Разрешить стрельбу
сам.Выстрел().БлокСброс()
сам.еслиНадо.Reset()
if дельта > сам.здоровьеПолное.Get()*4/10 { // Проверить на критичность падения здоровья на 40%
// log._rintf("WARN Health.здоровьеУстановить(): большая разовая потеря здоровья(%v)\n", delta)
сам.Манёвр().УстНадо()
сам.еслиНадо.Set()
return
}
}
}