| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- // package bf_tank_stat -- бизнес-функция поиска статы танка
- package bf_tank_stat
- import (
- "strconv"
- "strings"
- . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
- . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
- . "wartank/app/lev0/types"
- )
- // ТанкСтатПолучить -- получает стату танка
- func ТанкСтатПолучить(конт ILocalCtx) {
- найтиАтаку(конт)
- найтиБроню(конт)
- найтиТочность(конт)
- найтиПрочность(конт)
- найтиМощь(конт)
- }
- func найтиМощь(конт ILocalCtx) {
- ангар := конт.Get("ангар").Val().(ИАренаАнгар)
- списАнгар := ангар.СписПолучить()
- if len(списАнгар) == 0 {
- ангар.Обновить()
- списАнгар = ангар.СписПолучить()
- }
- var (
- стрМощь string
- еслиЕсть bool
- )
- // alt="Точность" title="Точность"/> Точность <span class="green2">
- for _, стр := range списАнгар {
- if strings.Contains(стр, `<img src="/images/icons/power.png?2" height="14" width="14"> <span class="green2">Танковая мощь: `) {
- стрМощь = стр
- еслиЕсть = true
- break
- }
- }
- Hassert(еслиЕсть, "найтиМощь(): не найдена строка мощи")
- // Вырезать ссылку на атаку
- // <img src="/images/icons/power.png?2" height="14" width="14"> <span class="green2">Танковая мощь: 3115</span>
- стрМощь = strings.TrimPrefix(стрМощь, `<img src="/images/icons/power.png?2" height="14" width="14"> <span class="green2">Танковая мощь: `)
- стрМощь = strings.TrimSuffix(стрМощь, `</span>`)
- Hassert(стрМощь != "", "стрПрочность(): строк для мощи нет")
- цМощь, ош := strconv.Atoi(стрМощь)
- Hassert(ош == nil, "найтиМощь(): стрМощь(%v) не число, ош=\n\t%v", стрМощь, ош)
- танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
- танкСтата.Мощь().Уст(цМощь)
- }
- func найтиПрочность(конт ILocalCtx) {
- ангар := конт.Get("ангар").Val().(ИАренаАнгар)
- списАнгар := ангар.СписПолучить()
- if len(списАнгар) == 0 {
- ангар.Обновить()
- списАнгар = ангар.СписПолучить()
- }
- var (
- стрПрочность string
- еслиЕсть bool
- )
- // alt="Точность" title="Точность"/> Точность <span class="green2">
- for _, стр := range списАнгар {
- if strings.Contains(стр, `alt="Прочность" title="Прочность"/> Прочность <span class="green2">`) {
- стрПрочность = стр
- еслиЕсть = true
- break
- }
- }
- Hassert(еслиЕсть, "найтиПрочность(): не найдена строка прочности")
- // Вырезать ссылку на атаку
- // <img width="14" height="14" src="/images/icons/durability.png?1" alt="Прочность" title="Прочность"/> Прочность <span class="green2">797</span><br/>
- стрПрочность = strings.TrimPrefix(стрПрочность, `<img width="14" height="14" src="/images/icons/durability.png?1" alt="Прочность" title="Прочность"/> Прочность <span class="green2">`)
- стрПрочность = strings.TrimSuffix(стрПрочность, `</span><br/>`)
- Hassert(стрПрочность != "", "стрПрочность(): строк для прочности нет")
- цПрочность, ош := strconv.Atoi(стрПрочность)
- Hassert(ош == nil, "найтиПрочность(): стрТочность(%v) не число, ош=\n\t%v", стрПрочность, ош)
- танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
- танкСтата.Прочность().Уст(цПрочность)
- }
- func найтиТочность(конт ILocalCtx) {
- ангар := конт.Get("ангар").Val().(ИАренаАнгар)
- списАнгар := ангар.СписПолучить()
- if len(списАнгар) == 0 {
- ангар.Обновить()
- списАнгар = ангар.СписПолучить()
- }
- var (
- стрТочность string
- еслиЕсть bool
- )
- // alt="Точность" title="Точность"/> Точность <span class="green2">
- for _, стр := range списАнгар {
- if strings.Contains(стр, `alt="Точность" title="Точность"/> Точность <span class="green2">`) {
- стрТочность = стр
- еслиЕсть = true
- break
- }
- }
- Hassert(еслиЕсть, "найтиТочность(): не найдена строка точности")
- // Вырезать ссылку на атаку
- // <img width="14" height="14" src="/images/icons/accuracy.png?1" alt="Точность" title="Точность"/> Точность <span class="green2">833</span><br/>
- стрТочность = strings.TrimPrefix(стрТочность, `<img width="14" height="14" src="/images/icons/accuracy.png?1" alt="Точность" title="Точность"/> Точность <span class="green2">`)
- стрТочность = strings.TrimSuffix(стрТочность, `</span><br/>`)
- Hassert(стрТочность != "", "найтиТочность(): строк для точности нет")
- цТочность, ош := strconv.Atoi(стрТочность)
- Hassert(ош == nil, "найтиТочность(): стрТочность(%v) не число, ош=\n\t%v", стрТочность, ош)
- танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
- танкСтата.Точность().Уст(цТочность)
- }
- func найтиБроню(конт ILocalCtx) {
- ангар := конт.Get("ангар").Val().(ИАренаАнгар)
- списАнгар := ангар.СписПолучить()
- if len(списАнгар) == 0 {
- ангар.Обновить()
- списАнгар = ангар.СписПолучить()
- }
- var (
- стрБроня string
- еслиЕсть bool
- )
- // alt="Броня" title="Броня"/> Броня <span class="green2">
- for _, стр := range списАнгар {
- if strings.Contains(стр, `alt="Броня" title="Броня"/> Броня <span class="green2">`) {
- стрБроня = стр
- еслиЕсть = true
- break
- }
- }
- Hassert(еслиЕсть, "найтиБроню(): не найдена строка брони")
- // Вырезать ссылку на атаку
- // <img width="14" height="14" src="/images/icons/armor.png?1" alt="Броня" title="Броня"/> Броня <span class="green2">787</span><br/>
- стрБроня = strings.TrimPrefix(стрБроня, `<img width="14" height="14" src="/images/icons/armor.png?1" alt="Броня" title="Броня"/> Броня <span class="green2">`)
- стрБроня = strings.TrimSuffix(стрБроня, `</span><br/>`)
- Hassert(стрБроня != "", "найтиБроню(): строк для брони нет")
- цБроня, ош := strconv.Atoi(стрБроня)
- Hassert(ош == nil, "найтиБроню(): стрБроня(%v) не число, ош=\n\t%v", стрБроня, ош)
- танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
- танкСтата.Броня().Уст(цБроня)
- }
- func найтиАтаку(конт ILocalCtx) {
- ангар := конт.Get("ангар").Val().(ИАренаАнгар)
- списАнгар := ангар.СписПолучить()
- if len(списАнгар) == 0 {
- ангар.Обновить()
- списАнгар = ангар.СписПолучить()
- }
- var (
- стрАтака string
- еслиЕсть bool
- )
- // alt="Атака" title="Атака"/> Атака <span class="green2">
- for _, стр := range списАнгар {
- if strings.Contains(стр, `alt="Атака" title="Атака"/> Атака <span class="green2">`) {
- стрАтака = стр
- еслиЕсть = true
- break
- }
- }
- Hassert(еслиЕсть, "найтиАтаку(): не найдена строка атаки")
- // Вырезать ссылку на атаку
- // <img width="14" height="14" src="/images/icons/attack.png?1" alt="Атака" title="Атака"/> Атака <span class="green2">698</span><br/>
- стрАтака = strings.TrimPrefix(стрАтака, `<img width="14" height="14" src="/images/icons/attack.png?1" alt="Атака" title="Атака"/> Атака <span class="green2">`)
- стрАтака = strings.TrimSuffix(стрАтака, `</span><br/>`)
- Hassert(стрАтака != "", "найтиАтаку(): строк для атаки пустая")
- цАтака, ош := strconv.Atoi(стрАтака)
- Hassert(ош == nil, "найтиАтаку(): стрАтака(%v) не число, ош=\n\t%v", стрАтака, ош)
- танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
- танкСтата.Атака().Уст(цАтака)
- }
|