frm_bot_param.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // package frm_bot_param -- фрейм параметров бота
  2. package frm_bot_param
  3. import (
  4. "time"
  5. . "gitp78su.ipnodns.ru/svi/kern"
  6. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  7. tk "modernc.org/tk9.0"
  8. . "wartank/app/lev0/types"
  9. // "wartank/desktop/win_add_bot"
  10. // "wartank/desktop/win_main/frm_status"
  11. )
  12. type FrmBotParam struct {
  13. ctx IKernelCtx
  14. лблАтака *tk.TLabelWidget
  15. лблБроня *tk.TLabelWidget
  16. лблТочность *tk.TLabelWidget
  17. лблПрочность *tk.TLabelWidget
  18. лблМощь *tk.TLabelWidget
  19. лблТопливо *tk.TLabelWidget
  20. лблЗолото *tk.TLabelWidget
  21. лблСеребро *tk.TLabelWidget
  22. }
  23. func NewFrmBotParam(frmStateBot *tk.TFrameWidget) *FrmBotParam {
  24. sf := &FrmBotParam{
  25. ctx: GetKernelCtx(),
  26. }
  27. frmBotForce := frmStateBot.Frame(tk.Border(1), tk.Relief(tk.SUNKEN))
  28. tk.Pack(frmBotForce, tk.Side(tk.LEFT), tk.Fill(tk.FILL_Y))
  29. лблПараметрыБота := frmBotForce.Label(tk.Txt("Параметры"),
  30. tk.Background("#888"),
  31. tk.Border(1),
  32. tk.Relief(tk.GROOVE),
  33. )
  34. tk.Pack(лблПараметрыБота, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  35. sf.лблАтака = frmBotForce.TLabel(tk.Txt("Атака"),
  36. tk.Border(1),
  37. tk.Relief(tk.GROOVE),
  38. )
  39. tk.Pack(sf.лблАтака, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  40. sf.лблБроня = frmBotForce.TLabel(tk.Txt("Броня"),
  41. tk.Border(1),
  42. tk.Relief(tk.GROOVE),
  43. )
  44. tk.Pack(sf.лблБроня, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  45. sf.лблТочность = frmBotForce.TLabel(tk.Txt("Точность"),
  46. tk.Border(1),
  47. tk.Relief(tk.GROOVE),
  48. )
  49. tk.Pack(sf.лблТочность, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  50. sf.лблПрочность = frmBotForce.TLabel(tk.Txt("Прочность"),
  51. tk.Border(1),
  52. tk.Relief(tk.GROOVE),
  53. )
  54. tk.Pack(sf.лблПрочность, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  55. sf.лблМощь = frmBotForce.TLabel(tk.Txt("Мощь"),
  56. tk.Border(1),
  57. tk.Relief(tk.GROOVE),
  58. )
  59. tk.Pack(sf.лблМощь, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  60. sf.лблТопливо = frmBotForce.TLabel(tk.Txt("Топливо"),
  61. tk.Border(1),
  62. tk.Relief(tk.GROOVE),
  63. )
  64. tk.Pack(sf.лблТопливо, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  65. sf.лблЗолото = frmBotForce.TLabel(tk.Txt("Золото"),
  66. tk.Border(1),
  67. tk.Relief(tk.GROOVE),
  68. )
  69. sf.лблСеребро = frmBotForce.TLabel(tk.Txt("Серебро"),
  70. tk.Border(1),
  71. tk.Relief(tk.GROOVE),
  72. )
  73. tk.Pack(sf.лблСеребро, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
  74. sf.update()
  75. return sf
  76. }
  77. func (sf *FrmBotParam) update() {
  78. select {
  79. case <-sf.ctx.Ctx().Done():
  80. return
  81. default:
  82. farm := sf.ctx.Get("ботоФерма").Val().(ИБотоФерма)
  83. lstBot := farm.ListBot()
  84. if len(lstBot) > 0 {
  85. bot := lstBot[0]
  86. ботСеть := bot.КонтБот()
  87. ангар := ботСеть.Get("ангар").Val().(ИАренаАнгар)
  88. { // Стата танка
  89. стрАтака := bot.Стата().Атака().ЗначСтр()
  90. sf.лблАтака.Configure(tk.Txt("Атака: " + стрАтака))
  91. стрБроня := bot.Стата().Броня().ЗначСтр()
  92. sf.лблБроня.Configure(tk.Txt("Броня: " + стрБроня))
  93. стрТочность := bot.Стата().Точность().ЗначСтр()
  94. sf.лблТочность.Configure(tk.Txt("Точность: " + стрТочность))
  95. стрПрочность := bot.Стата().Прочность().ЗначСтр()
  96. sf.лблПрочность.Configure(tk.Txt("Прочность: " + стрПрочность))
  97. стрМощь := bot.Стата().Мощь().ЗначСтр()
  98. sf.лблМощь.Configure(tk.Txt("Мощь: " + стрМощь))
  99. стрТопливо := ангар.Топливо().ЗначСтр()
  100. sf.лблТопливо.Configure(tk.Txt("Топливо: " + стрТопливо))
  101. стрЗолото := ангар.Золото().ЗначСтр()
  102. sf.лблЗолото.Configure(tk.Txt("Золото: " + стрЗолото))
  103. стрСеребро := ангар.Серебро().ЗначСтр()
  104. sf.лблСеребро.Configure(tk.Txt("Серебро: " + стрСеребро))
  105. }
  106. }
  107. }
  108. tk.TclAfter(time.Millisecond*250, sf.update)
  109. }