frm_bot_param.go 3.0 KB

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