|
@@ -0,0 +1,178 @@
|
|
|
|
|
+// 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().(ИТанкСтат)
|
|
|
|
|
+ танкСтата.Атака().Уст(цАтака)
|
|
|
|
|
+}
|