IWidget SetupUi() { var styleSystem = uiManager.UIStyle; var mapX = new TextField(styleSystem); mapX.Anchor = AnchoredRect.CreateCentered(100); mapX.Content.Document.DocumentModified += (_, _) => navModel.MapXText = mapX.Text; var mapY = new TextField(styleSystem); mapY.Anchor = AnchoredRect.CreateCentered(100); mapY.Content.Document.DocumentModified += (_, _) => navModel.MapYText = mapY.Text; var button = new Button(styleSystem, "Go!"); button.ActionPerformed += (_, _) => navModel.TryNavigate(GameRendering); navModel.PropertyChanged += (_, _) => button.Enabled = navModel.Valid; var rotateLeftButton = new Button(styleSystem, "Left"); rotateLeftButton.ActionPerformed += (_, _) => GameRendering.RotationSteps = (GameRendering.RotationSteps + 1) % 4; var rotateRightButton = new Button(styleSystem, "Right"); rotateRightButton.ActionPerformed += (_, _) => GameRendering.RotationSteps = (GameRendering.RotationSteps - 1) % 4; var hbox = new BoxGroup(styleSystem, Orientation.Horizontal, 5); hbox.Anchor = AnchoredRect.CreateBottomLeftAnchored(); hbox.AddStyleClass("opaque-root"); hbox.Add(new Label(styleSystem, "Move to: X: ")); hbox.Add(mapX); hbox.Add(new Label(styleSystem, "Y: ")); hbox.Add(mapY); hbox.Add(button); hbox.Add(rotateLeftButton); hbox.Add(rotateRightButton); group = new Group(styleSystem); group.Add(hbox); group.Focusable = true; group.MouseDragged += OnMouseDragged; group.MouseDown += OnMouseDragStarted; group.MouseUp += OnMouseDragFinished; group.KeyReleased += Root_KeyReleased; group.MouseMoved += OnMouseMoved; group.Focused = true; group.Anchor = AnchoredRect.Full; return(group); }