func newSlider(x, y, w, h float64) *slider { btn := ui.NewButton(x, y, w, h) btn.SetDisabled(true) sl := ui.NewButton(0, 0, 20, h).Attach(ui.Left, ui.Top) sl.AttachTo(btn) return &slider{ back: btn, slider: sl, } }
func newButtonText(str string, x, y, w, h float64) (*ui.Button, *ui.Text) { btn := ui.NewButton(x, y, w, h) text := ui.NewText(str, 0, 0, 255, 255, 255).Attach(ui.Middle, ui.Center) text.AttachTo(btn) btn.AddHover(func(over bool) { if over && !btn.Disabled() { text.SetB(160) } else { text.SetB(255) } }) return btn, text }
func newServerList() screen { sl := &serverList{ scene: scene.New(true), } sl.logo.init(sl.scene) uiFooter(sl.scene) sl.redraw() refresh, txt := newButtonText("Refresh", 300, -50-15, 100, 30) sl.scene.AddDrawable(refresh.Attach(ui.Center, ui.Middle)) sl.scene.AddDrawable(txt) refresh.AddClick(sl.redraw) add, txt := newButtonText("Add", 200, -50-15, 100, 30) sl.scene.AddDrawable(add.Attach(ui.Center, ui.Middle)) sl.scene.AddDrawable(txt) add.AddClick(func() { setScreen(newEditServer(-1)) }) options := ui.NewButton(5, 25, 40, 40) sl.scene.AddDrawable(options.Attach(ui.Bottom, ui.Right)) cog := ui.NewImage(render.GetTexture("steven:gui/cog"), 0, 0, 40, 40, 0, 0, 1, 1, 255, 255, 255) cog.AttachTo(options) sl.scene.AddDrawable(cog.Attach(ui.Center, ui.Middle)) options.AddClick(func() { setScreen(newOptionMenu(newServerList)) }) if disconnectReason.Value != nil { disMsg := ui.NewText("Disconnected", 0, 32, 255, 0, 0).Attach(ui.Top, ui.Center) dis := ui.NewFormattedWidth(disconnectReason, 0, 48, 600) disB := ui.NewImage(render.GetTexture("solid"), 0, 30, math.Max(dis.Width, disMsg.Width)+4, dis.Height+4+16, 0, 0, 1, 1, 0, 0, 0) disB.SetA(100) sl.scene.AddDrawable(disB.Attach(ui.Top, ui.Center)) sl.scene.AddDrawable(dis.Attach(ui.Top, ui.Center)) sl.scene.AddDrawable(disMsg) } return sl }