// package section -- типовая секция работы части игры (банк, арсенал и т.п.) package section import ( "fmt" "log" "wartank/pkg/components/lst_string" "wartank/pkg/components/parsetime" "wartank/pkg/components/section/down_time" "wartank/pkg/components/section/section_mode" "wartank/pkg/components/section/zone" "wartank/pkg/types" ) // Section -- секция игры type Section struct { *zone.Zone countDown types.ИВремяОстат // Обратный отсчёт до окончания работы режима mode types.ИРежимРаботы // Объект режима работы lstString *lst_string.LstString // Список строк из сети для анализа секции } // NewSection -- возвращает новую секцию игры func NewSection(bot types.ИБот, zoneName, strControl string) (*Section, error) { log.Printf("NewSection(): strControl=%q\n", strControl) zone, err := zone.NewZone(bot, zoneName) if err != nil { return nil, fmt.Errorf("NewSection(): in create IZone, err=\n\t%w", err) } sf := &Section{ Zone: zone, countDown: down_time.НовВремОбрат(zone, 5), mode: section_mode.NewSectionMode(), } sf.lstString, err = lst_string.NewLstString(strControl) if err != nil { return nil, fmt.Errorf("NewSection(): in create *LstString, err=\n\t%w", err) } return sf, nil } // СтрОбновить -- обновляет список строк секции по требованию func (sf *Section) СтрОбновить(lstString []string) error { if err := sf.lstString.Set(lstString); err != nil { return fmt.Errorf("Section.СтрОбновить(): при установке lstString, err=\n\t%w", err) } return nil } // СписПолучить -- возвращает список строк секции func (sf *Section) СписПолучить() []string { return sf.lstString.Get() } // SetCountDown -- устанавливает новое значение обратного счётчика времени (int) func (sf *Section) SetCountDown(sec int) error { sf.countDown = down_time.НовВремОбрат(sf, sec) // if err := sf.countDown.Set(sec); err != nil { // return fmt.Errorf("Section.SetCountDown(): err=\n\t%w", err) // } return nil } // ParseCountDown -- устанавливает новое значение обратного счётчика времени (string) func (sf *Section) ParseCountDown(sec string) error { pt := parsetime.NewParseTime() pt.Parse(sec) _sec := pt.Get() sf.countDown = down_time.НовВремОбрат(sf, _sec) // if err := sf.countDown.Set(sec); err != nil { // return fmt.Errorf("Section.SetCountDown(): err=\n\t%w", err) // } return nil } // ВремяОпрос -- объект оставшегося времени func (sf *Section) ВремяОпрос() types.ИВремяОстат { return sf.countDown } // РежимТекущ -- текущий режим работы func (sf *Section) РежимТекущ() types.ИРежимРаботы { return sf.mode }