// package proc_fuel_find -- процесс поиска топлива в баке package proc_fuel_find import ( "strconv" "strings" "time" . "wartank/app/lev0/types" "wartank/app/lev1/stat_param" "wartank/kernel" . "wartank/kernel/kernel_types" ) // Топливо -- процесс поиска топлива в баке +1 каждые 15 сек type ПроцессТопливоНайти struct { ИАренаАнгар лог ИЯдроЛог топливо ИСтатПарам } // НовТопливо -- возвращает новый топливный бак func НовПроцессТопливоНайти(конт ИБотКонтекст) ИПроцессТопливоНайти { лог := kernel.НовЛог("ПроцессТопливоНайти") лог.Отладка("НовПроцессТопливоНайти\n") сам := &ПроцессТопливоНайти{ ИАренаАнгар: конт.Получ("ангар").(ИАренаАнгар), лог:лог, топливо: stat_param.НовСтатПарам("топливо"), } конт.Уст("проц_поиск_топливо", сам) return сам } // Пуск -- блокирующий вызов поиска количества топлива func (сам *ПроцессТопливоНайти) Пуск() { // Каждые 15 сек +1 топливо for { time.Sleep(time.Second * 15) топливо := сам.топливо.Получ() топливо++ сам.топливо.Уст(топливо) // log.Printf("Fuel.Run: val=%v\n", fuel) } } // Обновить -- ищет в теле текста ангара топливо func (сам *ПроцессТопливоНайти) Обновить() { // _mt.Println("\tAngarNet.findFuel()") сам.ИАренаАнгар.Обновить() lstAngar := сам.СписПолучить() var strOut string for _, strFuel := range lstAngar { if strings.Contains(strFuel, `Топливо `) // Здесь бывает ошибка (когда возвращена пустая строка) if len(lstFuel) != 2 { сам.лог.Ошибка("Обновить(): бот=%q, при поиске строки топлива, стр=\n\t%v\n", сам.Бот().Имя(), strOut) return } if lstFuel[1] == "" { сам.лог.Ошибка("Обновить(): %q, пустое значение в строке топлива, стр=\n\t%v\n", сам.Бот().Имя(), strOut) return } strFuel := lstFuel[1] iFuel, err := strconv.Atoi(strFuel) if err != nil { // log._rintf("ERRO Fuel.findFuel(): fuel(%v) not number, err=\n\t%v\n", strFuel, err) return } сам.топливо.Уст(iFuel) if iFuel <= 314 { // Минимальное значение "топливного склада-1" -- 315 return } // log._rintf("Fuel.findFuel():iFuel=%v\n", iFuel) } // Fuel -- возвращает объект статического параметра топлива func (сам *ПроцессТопливоНайти) Fuel() ИСтатПарам { return сам.топливо }