desktop.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // package desktop -- главный тип локального приложения
  2. package desktop
  3. import (
  4. "fmt"
  5. "log"
  6. "wartank/desktop/dict_bot"
  7. "wartank/desktop/root"
  8. "wartank/desktop/store_net"
  9. "wartank/desktop/web_socket"
  10. "wartank/desktop/win_main"
  11. "wartank/pkg/components/kernel"
  12. "wartank/pkg/types"
  13. )
  14. // Desktop -- главный тип локального приложения
  15. type Desktop struct {
  16. *kernel.Kernel
  17. store types.IStore
  18. winMain *win_main.WinMain
  19. ws types.IWebSocket
  20. root types.IRoot
  21. dictBot types.IDictBot
  22. }
  23. // NewDesktop -- возвращает новый объект настольного приложения
  24. func NewDesktop() (*Desktop, error) {
  25. log.Println("NewDesktop()")
  26. kernel, err := kernel.NewKernel()
  27. if err != nil {
  28. return nil, fmt.Errorf("NewDesktop(): in create IKernel, err=\n\t%w", err)
  29. }
  30. sf := &Desktop{
  31. Kernel: kernel,
  32. }
  33. sf.ws, err = web_socket.NewWebSocket(sf)
  34. if err != nil {
  35. return nil, fmt.Errorf("NewDesktop(): in create IWebSocket, err=\n\t%w", err)
  36. }
  37. sf.store, err = store_net.NewStoreNet(sf)
  38. if err != nil {
  39. return nil, fmt.Errorf("NewDesktop(): in create IStore, err=\n\t%w", err)
  40. }
  41. sf.root, err = root.NewRoot(sf)
  42. if err != nil {
  43. return nil, fmt.Errorf("NewDesktop(): in create IRoot, err=\n\t%w", err)
  44. }
  45. sf.dictBot, err = dict_bot.NewDictBot(sf)
  46. if err != nil {
  47. return nil, fmt.Errorf("NewDesktop(): in create IGamers, err=\n\t%w", err)
  48. }
  49. sf.winMain, err = win_main.NewWinMain(sf)
  50. if err != nil {
  51. return nil, fmt.Errorf("NewDesktop(): in create WinMain, err=\n\t%w", err)
  52. }
  53. return sf, nil
  54. }
  55. // Run -- запускает десктоп в работу
  56. func (sf *Desktop) Run() error {
  57. sf.Slog().Infof("Desktop.Run()\n")
  58. sf.winMain.Run()
  59. sf.Wg().Wait()
  60. return nil
  61. }
  62. // Store -- возвращает хранилище
  63. func (sf *Desktop) Store() types.IStore {
  64. return sf.store
  65. }
  66. // Ws -- возвращает веб-сокет
  67. func (sf *Desktop) Ws() types.IWebSocket {
  68. return sf.ws
  69. }
  70. // Root -- возвращает объект рута
  71. func (sf *Desktop) Root() types.IRoot {
  72. return sf.root
  73. }
  74. // DictBot -- возвращает объект списка ботов игрока
  75. func (sf *Desktop) DictBot() types.IDictBot {
  76. return sf.dictBot
  77. }