| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // package zone -- игровая зона (ангар, база, бан, битва и т.п.)
- package zone
- import (
- "context"
- "fmt"
- "log"
- "wartank/pkg/types"
- )
- // Зона -- игровая зона (ангар, база, бан, битва и т.п.)
- type Зона struct {
- бот types.ИБот // Ссылка на бота зоны
- кнт context.Context
- фнОтмена func()
- имя string // Имя игровой зоны
- }
- // НовЗона -- возвращает новую игровую зону
- func НовЗона(бот types.ИБот, зонаИмя string) (*Зона, error) {
- { // Предусловия
- if бот == nil {
- return nil, fmt.Errorf("НовЗона(): IBot==nil")
- }
- if зонаИмя == "" {
- return nil, fmt.Errorf("НовЗона(): zoneName is empty")
- }
- }
- log.Printf("НовЗона(): name=%q\tzone=%q\n", бот.Имя(), зонаИмя)
- кнт, fnCancel := context.WithCancel(бот.Кнт())
- sf := &Зона{
- бот: бот,
- имя: зонаИмя,
- кнт: кнт,
- фнОтмена: fnCancel,
- }
- _ = types.ИСцена(sf)
- return sf, nil
- }
- // Кнт -- возвращает контекст игровой зоны
- func (sf *Зона) Кнт() context.Context {
- return sf.кнт
- }
- // Закончить -- отменяет контекст игровой зоны
- func (sf *Зона) Закончить() {
- sf.фнОтмена()
- }
- // Бот -- возвращает бота игровой зоны
- func (sf *Зона) Бот() types.ИБот {
- return sf.бот
- }
- // Имя -- возвращает имя зоны
- func (sf *Зона) Имя() string {
- return sf.имя
- }
|