// package desktop -- главный тип локального приложения package desktop import ( "fmt" "log" "wartank/desktop/dict_bot" "wartank/desktop/root" "wartank/desktop/store_net" "wartank/desktop/web_socket" "wartank/desktop/win_main" "wartank/pkg/components/kernel" "wartank/pkg/types" ) // Desktop -- главный тип локального приложения type Desktop struct { *kernel.Kernel store types.IStore winMain *win_main.WinMain ws types.IWebSocket root types.IRoot dictBot types.IDictBot } // NewDesktop -- возвращает новый объект настольного приложения func NewDesktop() (*Desktop, error) { log.Println("NewDesktop()") kernel, err := kernel.NewKernel() if err != nil { return nil, fmt.Errorf("NewDesktop(): in create IKernel, err=\n\t%w", err) } sf := &Desktop{ Kernel: kernel, } sf.ws, err = web_socket.NewWebSocket(sf) if err != nil { return nil, fmt.Errorf("NewDesktop(): in create IWebSocket, err=\n\t%w", err) } sf.store, err = store_net.NewStoreNet(sf) if err != nil { return nil, fmt.Errorf("NewDesktop(): in create IStore, err=\n\t%w", err) } sf.root, err = root.NewRoot(sf) if err != nil { return nil, fmt.Errorf("NewDesktop(): in create IRoot, err=\n\t%w", err) } sf.dictBot, err = dict_bot.NewDictBot(sf) if err != nil { return nil, fmt.Errorf("NewDesktop(): in create IGamers, err=\n\t%w", err) } sf.winMain, err = win_main.NewWinMain(sf) if err != nil { return nil, fmt.Errorf("NewDesktop(): in create WinMain, err=\n\t%w", err) } return sf, nil } // Run -- запускает десктоп в работу func (sf *Desktop) Run() error { sf.Slog().Infof("Desktop.Run()\n") sf.winMain.Run() sf.Wg().Wait() return nil } // Store -- возвращает хранилище func (sf *Desktop) Store() types.IStore { return sf.store } // Ws -- возвращает веб-сокет func (sf *Desktop) Ws() types.IWebSocket { return sf.ws } // Root -- возвращает объект рута func (sf *Desktop) Root() types.IRoot { return sf.root } // DictBot -- возвращает объект списка ботов игрока func (sf *Desktop) DictBot() types.IDictBot { return sf.dictBot }