1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // 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
- }
|