// 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="Точность"/> Точность for _, стр := range списАнгар { if strings.Contains(стр, ` Танковая мощь: `) { стрМощь = стр еслиЕсть = true break } } Hassert(еслиЕсть, "найтиМощь(): не найдена строка мощи") // Вырезать ссылку на атаку // Танковая мощь: 3115 стрМощь = strings.TrimPrefix(стрМощь, ` Танковая мощь: `) стрМощь = strings.TrimSuffix(стрМощь, ``) Hassert(стрМощь != "", "стрПрочность(): строк для мощи нет") цМощь, ош := strconv.Atoi(стрМощь) Hassert(ош == nil, "найтиМощь(): стрМощь(%v) не число, ош=\n\t%v", стрМощь, ош) танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат) танкСтата.Мощь().Уст(цМощь) } func найтиПрочность(конт ILocalCtx) { ангар := конт.Get("ангар").Val().(ИАренаАнгар) списАнгар := ангар.СписПолучить() if len(списАнгар) == 0 { ангар.Обновить() списАнгар = ангар.СписПолучить() } var ( стрПрочность string еслиЕсть bool ) // alt="Точность" title="Точность"/> Точность for _, стр := range списАнгар { if strings.Contains(стр, `alt="Прочность" title="Прочность"/> Прочность `) { стрПрочность = стр еслиЕсть = true break } } Hassert(еслиЕсть, "найтиПрочность(): не найдена строка прочности") // Вырезать ссылку на атаку // Прочность Прочность 797
стрПрочность = strings.TrimPrefix(стрПрочность, `Прочность Прочность `) стрПрочность = strings.TrimSuffix(стрПрочность, `
`) Hassert(стрПрочность != "", "стрПрочность(): строк для прочности нет") цПрочность, ош := strconv.Atoi(стрПрочность) Hassert(ош == nil, "найтиПрочность(): стрТочность(%v) не число, ош=\n\t%v", стрПрочность, ош) танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат) танкСтата.Прочность().Уст(цПрочность) } func найтиТочность(конт ILocalCtx) { ангар := конт.Get("ангар").Val().(ИАренаАнгар) списАнгар := ангар.СписПолучить() if len(списАнгар) == 0 { ангар.Обновить() списАнгар = ангар.СписПолучить() } var ( стрТочность string еслиЕсть bool ) // alt="Точность" title="Точность"/> Точность for _, стр := range списАнгар { if strings.Contains(стр, `alt="Точность" title="Точность"/> Точность `) { стрТочность = стр еслиЕсть = true break } } Hassert(еслиЕсть, "найтиТочность(): не найдена строка точности") // Вырезать ссылку на атаку // Точность Точность 833
стрТочность = strings.TrimPrefix(стрТочность, `Точность Точность `) стрТочность = strings.TrimSuffix(стрТочность, `
`) Hassert(стрТочность != "", "найтиТочность(): строк для точности нет") цТочность, ош := strconv.Atoi(стрТочность) Hassert(ош == nil, "найтиТочность(): стрТочность(%v) не число, ош=\n\t%v", стрТочность, ош) танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат) танкСтата.Точность().Уст(цТочность) } func найтиБроню(конт ILocalCtx) { ангар := конт.Get("ангар").Val().(ИАренаАнгар) списАнгар := ангар.СписПолучить() if len(списАнгар) == 0 { ангар.Обновить() списАнгар = ангар.СписПолучить() } var ( стрБроня string еслиЕсть bool ) // alt="Броня" title="Броня"/> Броня for _, стр := range списАнгар { if strings.Contains(стр, `alt="Броня" title="Броня"/> Броня `) { стрБроня = стр еслиЕсть = true break } } Hassert(еслиЕсть, "найтиБроню(): не найдена строка брони") // Вырезать ссылку на атаку // Броня Броня 787
стрБроня = strings.TrimPrefix(стрБроня, `Броня Броня `) стрБроня = strings.TrimSuffix(стрБроня, `
`) Hassert(стрБроня != "", "найтиБроню(): строк для брони нет") цБроня, ош := strconv.Atoi(стрБроня) Hassert(ош == nil, "найтиБроню(): стрБроня(%v) не число, ош=\n\t%v", стрБроня, ош) танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат) танкСтата.Броня().Уст(цБроня) } func найтиАтаку(конт ILocalCtx) { ангар := конт.Get("ангар").Val().(ИАренаАнгар) списАнгар := ангар.СписПолучить() if len(списАнгар) == 0 { ангар.Обновить() списАнгар = ангар.СписПолучить() } var ( стрАтака string еслиЕсть bool ) // alt="Атака" title="Атака"/> Атака for _, стр := range списАнгар { if strings.Contains(стр, `alt="Атака" title="Атака"/> Атака `) { стрАтака = стр еслиЕсть = true break } } Hassert(еслиЕсть, "найтиАтаку(): не найдена строка атаки") // Вырезать ссылку на атаку // Атака Атака 698
стрАтака = strings.TrimPrefix(стрАтака, `Атака Атака `) стрАтака = strings.TrimSuffix(стрАтака, `
`) Hassert(стрАтака != "", "найтиАтаку(): строк для атаки пустая") цАтака, ош := strconv.Atoi(стрАтака) Hassert(ош == nil, "найтиАтаку(): стрАтака(%v) не число, ош=\n\t%v", стрАтака, ош) танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат) танкСтата.Атака().Уст(цАтака) }