Эх сурвалжийг харах

SVI Выведение статы танка

SVI 9 сар өмнө
parent
commit
b7d2b26e22

+ 98 - 0
desktop/win_main/frm_bot_param/frm_bot_param.go

@@ -0,0 +1,98 @@
+// package frm_bot_param -- фрейм параметров бота
+package frm_bot_param
+
+import (
+	// "time"
+
+	"time"
+
+	. "gitp78su.ipnodns.ru/svi/kern"
+	. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
+	tk "modernc.org/tk9.0"
+	. "wartank/app/lev0/types"
+	// "wartank/desktop/win_add_bot"
+	// "wartank/desktop/win_main/frm_status"
+)
+
+type FrmBotParam struct {
+	ctx          IKernelCtx
+	лблАтака     *tk.TLabelWidget
+	лблБроня     *tk.TLabelWidget
+	лблТочность  *tk.TLabelWidget
+	лблПрочность *tk.TLabelWidget
+	лблМощь      *tk.TLabelWidget
+	// стрАтака string
+}
+
+func NewFrmBotParam(frmStateBot *tk.TFrameWidget) *FrmBotParam {
+	sf := &FrmBotParam{
+		ctx: GetKernelCtx(),
+	}
+	frmBotForce := frmStateBot.Frame(tk.Border(1), tk.Relief(tk.SUNKEN))
+	tk.Pack(frmBotForce, tk.Side(tk.LEFT), tk.Fill(tk.FILL_Y))
+
+	лблПараметрыБота := frmBotForce.Label(tk.Txt("Параметры"),
+		tk.Background("#888"),
+		tk.Border(1),
+		tk.Relief(tk.GROOVE),
+	)
+	tk.Pack(лблПараметрыБота, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
+
+	sf.лблАтака = frmBotForce.TLabel(tk.Txt("Атака"),
+		tk.Border(1),
+		tk.Relief(tk.GROOVE),
+	)
+	tk.Pack(sf.лблАтака, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
+
+	sf.лблБроня = frmBotForce.TLabel(tk.Txt("Броня"),
+		tk.Border(1),
+		tk.Relief(tk.GROOVE),
+	)
+	tk.Pack(sf.лблБроня, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
+
+	sf.лблТочность = frmBotForce.TLabel(tk.Txt("Точность"),
+		tk.Border(1),
+		tk.Relief(tk.GROOVE),
+	)
+	tk.Pack(sf.лблТочность, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
+
+	sf.лблПрочность = frmBotForce.TLabel(tk.Txt("Прочность"),
+		tk.Border(1),
+		tk.Relief(tk.GROOVE),
+	)
+	tk.Pack(sf.лблПрочность, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
+
+	sf.лблМощь = frmBotForce.TLabel(tk.Txt("Мощь"),
+		tk.Border(1),
+		tk.Relief(tk.GROOVE),
+	)
+	tk.Pack(sf.лблМощь, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
+
+	sf.update()
+	return sf
+}
+
+func (sf *FrmBotParam) update() {
+	select {
+	case <-sf.ctx.Ctx().Done():
+		return
+	default:
+		farm := sf.ctx.Get("ботоФерма").Val().(ИБотоФерма)
+		lstBot := farm.ListBot()
+		if len(lstBot) > 0 {
+			bot := lstBot[0]
+			стрАтака := bot.Стата().Атака().ЗначСтр()
+			sf.лблАтака.Configure(tk.Txt("Атака: " + стрАтака))
+			стрБроня := bot.Стата().Броня().ЗначСтр()
+			sf.лблБроня.Configure(tk.Txt("Броня: " + стрБроня))
+			стрТочность := bot.Стата().Точность().ЗначСтр()
+			sf.лблТочность.Configure(tk.Txt("Точность: " + стрТочность))
+			стрПрочность := bot.Стата().Прочность().ЗначСтр()
+			sf.лблПрочность.Configure(tk.Txt("Прочность: " + стрПрочность))
+			стрМощь := bot.Стата().Мощь().ЗначСтр()
+			sf.лблМощь.Configure(tk.Txt("Мощь: " + стрМощь))
+		}
+
+	}
+	tk.TclAfter(time.Millisecond*250, sf.update)
+}

+ 1 - 0
desktop/win_main/frm_status/frm_status.go

@@ -30,6 +30,7 @@ func NewFrmStatus() *FrmStatus {
 
 	lblSeparator0 := frmStatus.Label(tk.Txt("   "))
 	tk.Pack(lblSeparator0, tk.Side(tk.LEFT))
+	sf.strLive = "[|]"
 	sf.liveUpdate()
 	return sf
 }

+ 12 - 28
desktop/win_main/win_main.go

@@ -10,18 +10,20 @@ import (
 
 	. "wartank/app/lev0/types"
 	"wartank/desktop/win_add_bot"
+	"wartank/desktop/win_main/frm_bot_param"
 	"wartank/desktop/win_main/frm_status"
 )
 
 // Главное окно приложения
 type WinMain struct {
-	ctx       IKernelCtx
-	winMain   *tk.Window
-	listBot   *tk.ListboxWidget
-	btnBotAdd *tk.ButtonWidget
-	dictBot   map[string]bool
-	chBotAdd  chan ИБот
-	frmStatus *frm_status.FrmStatus
+	ctx         IKernelCtx
+	winMain     *tk.Window
+	listBot     *tk.ListboxWidget
+	btnBotAdd   *tk.ButtonWidget
+	dictBot     map[string]bool
+	chBotAdd    chan ИБот
+	frmStatus   *frm_status.FrmStatus
+	frmBotForce *frm_bot_param.FrmBotParam
 }
 
 var (
@@ -51,9 +53,6 @@ func (sf *WinMain) new() {
 	tk.WmWithdraw(sf.winMain)
 	tk.WmMinSize(sf.winMain, 640, 480)
 	sf.winMain.Configure(tk.Padx(0), tk.Pady(0))
-	{ // Панель статуса
-
-	}
 	{ // Панель списка ботов
 		frmListBot := sf.winMain.Frame(tk.Border(1), tk.Relief(tk.SUNKEN))
 		tk.Pack(frmListBot, tk.Fill(tk.FILL_Y), tk.Side(tk.LEFT))
@@ -70,7 +69,7 @@ func (sf *WinMain) new() {
 		sf.btnBotAdd = frmListBot.Button(tk.Txt("Добавить"), tk.Command(sf.botAdd))
 		tk.Pack(sf.btnBotAdd, tk.Fill(tk.FILL_X))
 	}
-	frmStateBot := sf.winMain.Frame(tk.Border(1), tk.Relief(tk.SUNKEN))
+	frmStateBot := sf.winMain.TFrame(tk.Border(1), tk.Relief(tk.SUNKEN))
 	{ // Панель состояния бота
 		tk.Pack(frmStateBot, tk.Fill(tk.FILL_BOTH), tk.Expand(true))
 		lblStateBot := frmStateBot.Label(tk.Txt("Состояние бота"),
@@ -81,23 +80,8 @@ func (sf *WinMain) new() {
 		tk.Pack(lblStateBot, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
 
 	}
-	{ // Панель силы бота
-		frmBotForce := frmStateBot.Frame(tk.Border(1), tk.Relief(tk.SUNKEN))
-		tk.Pack(frmBotForce, tk.Side(tk.LEFT), tk.Fill(tk.FILL_Y))
-
-		лблПараметрыБота := frmBotForce.Label(tk.Txt("Параметры"),
-			tk.Background("#888"),
-			tk.Border(1),
-			tk.Relief(tk.GROOVE),
-		)
-		tk.Pack(лблПараметрыБота, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
-
-		лблАтака := frmBotForce.Label(tk.Txt("Атака"),
-			tk.Border(1),
-			tk.Relief(tk.GROOVE),
-		)
-		tk.Pack(лблАтака, tk.Side(tk.TOP), tk.Fill(tk.FILL_X))
-	}
+	// Панель силы бота
+	sf.frmBotForce = frm_bot_param.NewFrmBotParam(frmStateBot)
 	tk.WmProtocol(sf.winMain, tk.WM_DELETE_WINDOW, tk.Command(sf.quit))
 	sf.liveUpdate()
 }