// package bf_ammo_stat -- бизнес-функция статистики снарядов
package bf_ammo_stat
import (
"strconv"
"strings"
. "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
. "wartank/app/lev0/types"
)
// СнарядыСтат -- получает статистику снарядов
func СнарядыСтат(конт ILocalCtx) {
арсенал := конт.Get("арсенал")
if арсенал == nil { // Может быть не построен
return
}
фугасыНайти(конт)
бронейбойкиНайти(конт)
кумульНайти(конт)
ремкаНайти(конт)
}
func ремкаНайти(конт ILocalCtx) {
арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
lstArsenal := арсенал.СписПолучить()
if len(lstArsenal) == 0 {
арсенал.Обновить()
lstArsenal = арсенал.СписПолучить()
}
strOut := ""
isFind := false
//
282
for _, стрСнаряд := range lstArsenal {
if strings.Contains(стрСнаряд, `
`) {
strOut = стрСнаряд
isFind = true
break
}
}
Hassert(isFind, "ремкаНайти(): не найдена контрольная строка")
strOut = strings.TrimPrefix(strOut, `
`)
strOut = strings.TrimSuffix(strOut, ``)
целФугас, err := strconv.Atoi(strOut)
Hassert(err == nil, "ремкаНайти(): strOut(%v), err=\n\t%v", strOut, err)
арсенал.Ремки().Уст(целФугас)
}
func кумульНайти(конт ILocalCtx) {
арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
lstArsenal := арсенал.СписПолучить()
if len(lstArsenal) == 0 {
арсенал.Обновить()
lstArsenal = арсенал.СписПолучить()
}
strOut := ""
isFind := false
//
7340
for _, стрСнаряд := range lstArsenal {
if strings.Contains(стрСнаряд, `
`) {
strOut = стрСнаряд
isFind = true
break
}
}
Hassert(isFind, "кумульНайти(): не найдена контрольная строка")
strOut = strings.TrimPrefix(strOut, `
`)
strOut = strings.TrimSuffix(strOut, ` `)
целФугас, err := strconv.Atoi(strOut)
Hassert(err == nil, "кумульНайти(): strOut(%v), err=\n\t%v", strOut, err)
арсенал.Кумулятивы().Уст(целФугас)
}
func бронейбойкиНайти(конт ILocalCtx) {
арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
lstArsenal := арсенал.СписПолучить()
if len(lstArsenal) == 0 {
арсенал.Обновить()
lstArsenal = арсенал.СписПолучить()
}
strOut := ""
isFind := false
//
7335
for _, стрСнаряд := range lstArsenal {
if strings.Contains(стрСнаряд, `
`) {
strOut = стрСнаряд
isFind = true
break
}
}
Hassert(isFind, "бронейбойкиНайти(): не найдена контрольная строка")
strOut = strings.TrimPrefix(strOut, `
`)
strOut = strings.TrimSuffix(strOut, ` `)
целФугас, err := strconv.Atoi(strOut)
Hassert(err == nil, "бронейбойкиНайти(): strOut(%v), err=\n\t%v", strOut, err)
арсенал.Бронебойки().Уст(целФугас)
}
func фугасыНайти(конт ILocalCtx) {
арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
lstArsenal := арсенал.СписПолучить()
if len(lstArsenal) == 0 {
арсенал.Обновить()
lstArsenal = арсенал.СписПолучить()
}
strOut := ""
isFind := false
//
7343
for _, стрФугас := range lstArsenal {
if strings.Contains(стрФугас, `
`) {
strOut = стрФугас
isFind = true
break
}
}
Hassert(isFind, "фугасыНайти(): не найдена контрольная строка")
strOut = strings.TrimPrefix(strOut, `
`)
strOut = strings.TrimSuffix(strOut, ` `)
целФугас, err := strconv.Atoi(strOut)
Hassert(err == nil, "фугасыНайти(): strOut(%v), err=\n\t%v", strOut, err)
арсенал.Фугасы().Уст(целФугас)
}