public static void PassMessagesToParentSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { element.Parent.SystemCallback.Invoke(element.Parent, message, context); }
public static void MainMenuSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { void QueueTransition(string transition) { context.WindowManager.TransitionManager.QueueTransition(null, element.Window, transition); } switch (message.MessageType) { case WndWindowMessageType.SelectedButton: switch (message.Element.Name) { case "MainMenu.wnd:ButtonSinglePlayer": QueueTransition("MainMenuDefaultMenuBack"); QueueTransition("MainMenuSinglePlayerMenu"); break; case "MainMenu.wnd:ButtonSingleBack": QueueTransition("MainMenuSinglePlayerMenuBack"); QueueTransition("MainMenuDefaultMenu"); break; case "MainMenu.wnd:ButtonMultiplayer": QueueTransition("MainMenuDefaultMenuBack"); QueueTransition("MainMenuMultiPlayerMenu"); break; case "MainMenu.wnd:ButtonMultiBack": QueueTransition("MainMenuMultiPlayerMenuReverse"); QueueTransition("MainMenuDefaultMenu"); break; case "MainMenu.wnd:ButtonLoadReplay": QueueTransition("MainMenuDefaultMenuBack"); QueueTransition("MainMenuLoadReplayMenu"); break; case "MainMenu.wnd:ButtonLoadReplayBack": QueueTransition("MainMenuLoadReplayMenuBack"); QueueTransition("MainMenuDefaultMenu"); break; case "MainMenu.wnd:ButtonReplay": context.WindowManager.SetWindow(@"Menus\ReplayMenu.wnd"); break; case "MainMenu.wnd:ButtonOptions": context.WindowManager.PushWindow(@"Menus\OptionsMenu.wnd"); break; case "MainMenu.wnd:ButtonExit": var exitWindow = context.WindowManager.PushWindow(@"Menus\QuitMessageBox.wnd"); exitWindow.Root.FindChild("QuitMessageBox.wnd:StaticTextTitle").Text = "EXIT?"; exitWindow.Root.FindChild("QuitMessageBox.wnd:StaticTextTitle").TextAlignment = TextAlignment.Leading; exitWindow.Root.FindChild("QuitMessageBox.wnd:StaticTextMessage").Text = "Are you sure you want to exit?"; exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonOk").Show(); exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonOk").Text = "YES"; exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonCancel").Show(); exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonCancel").Text = "NO"; break; } break; } }
public static void ReplayMenuSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { switch (message.MessageType) { case WndWindowMessageType.SelectedButton: switch (message.Element.Name) { case "ReplayMenu.wnd:ButtonLoadReplay": // TODO: Handle no selected item. var listBox = (WndWindowListBox)element.Window.Root.FindChild("ReplayMenu.wnd:ListboxReplayFiles"); ReplayFile replayFile; using (var fileSystem = GetReplaysFileSystem(context.Game)) { var replayFileEntry = fileSystem.GetFile((string)listBox.ListBoxItems[listBox.SelectedIndex].DataItem); replayFile = ReplayFile.FromFileSystemEntry(replayFileEntry); } // TODO: This probably isn't right. var mapFilenameParts = replayFile.Header.Metadata.MapFile.Split('/'); var mapFilename = $"Maps\\{mapFilenameParts[1]}\\{mapFilenameParts[1]}.map"; // TODO: Loading screen. context.Game.Scene3D = context.Game.ContentManager.Load <Scene3D>(mapFilename); context.Game.NetworkMessageBuffer = new NetworkMessageBuffer( context.Game, new ReplayConnection(replayFile)); context.Game.Scene2D.WndWindowManager.PopWindow(); break; case "ReplayMenu.wnd:ButtonBack": context.WindowManager.SetWindow(@"Menus\MainMenu.wnd"); // TODO: Go back to Replay sub-menu break; } break; } }
public static void PassSelectedButtonsToParentSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { if (message.MessageType != WndWindowMessageType.SelectedButton) { return; } element.Parent.SystemCallback.Invoke(element.Parent, message, context); }
public static void QuitMessageBoxSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { switch (message.MessageType) { case WndWindowMessageType.SelectedButton: switch (message.Element.Name) { case "QuitMessageBox.wnd:ButtonCancel": context.WindowManager.PopWindow(); break; } break; } }
public static void OptionsMenuSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { switch (message.MessageType) { case WndWindowMessageType.SelectedButton: switch (message.Element.Name) { case "OptionsMenu.wnd:ButtonBack": context.WindowManager.PopWindow(); break; } break; } }
public static void MainMenuInput(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { // Any input at all (mouse, keyboard) will trigger the main menu fade-in. if (!_doneMainMenuFadeIn) { context.WindowManager.TransitionManager.QueueTransition(null, element.Window, "MainMenuFade"); context.WindowManager.TransitionManager.QueueTransition(null, element.Window, "MainMenuDefaultMenu"); element.Window.Root.FindChild("MainMenu.wnd:MainMenuRuler").Show(); _doneMainMenuFadeIn = true; } }
private static void DefaultPushButtonInput(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { // TODO: Capture input on mouse down. // TODO: Only fire click event when mouse was pressed and released inside same button. switch (message.MessageType) { case WndWindowMessageType.MouseEnter: element.CurrentState = WndWindowState.Highlighted; break; case WndWindowMessageType.MouseExit: element.CurrentState = WndWindowState.Enabled; break; case WndWindowMessageType.MouseDown: element.CurrentState = WndWindowState.HighlightedPushed; break; case WndWindowMessageType.MouseUp: element.CurrentState = WndWindowState.Highlighted; element.Parent.SystemCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.SelectedButton, element), context); break; } }
public override InputMessageResult HandleMessage(InputMessage message) { var context = new UIElementCallbackContext(_windowManager, _game); switch (message.MessageType) { case InputMessageType.MouseMove: { var element = _windowManager.FindWindow(message.Value.MousePosition); if (element != _lastHighlightedElement) { if (_lastHighlightedElement != null) { _lastHighlightedElement.InputCallback.Invoke( _lastHighlightedElement, new WndWindowMessage(WndWindowMessageType.MouseExit, _lastHighlightedElement), context); } _lastHighlightedElement = element; if (element != null) { element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseEnter, element), context); } } if (element != null) { var mousePosition = element?.PointToClient(message.Value.MousePosition); element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseMove, element, mousePosition), context); return(InputMessageResult.Handled); } break; } case InputMessageType.MouseLeftButtonDown: { var element = _windowManager.FindWindow(message.Value.MousePosition); if (element != null) { var mousePosition = element.PointToClient(message.Value.MousePosition); element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseDown, element, mousePosition), context); return(InputMessageResult.Handled); } break; } case InputMessageType.MouseLeftButtonUp: { var element = _windowManager.FindWindow(message.Value.MousePosition); if (element != null) { element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseUp, element, message.Value.MousePosition), context); return(InputMessageResult.Handled); } break; } case InputMessageType.KeyDown: { if (message.Value.Key == Key.Escape && _windowManager.OpenWindowCount > 1) { _windowManager.PopWindow(); return(InputMessageResult.Handled); } break; } } return(InputMessageResult.NotHandled); }
public override InputMessageResult HandleMessage(InputMessage message) { var context = new UIElementCallbackContext(_windowManager); switch (message.MessageType) { case InputMessageType.MouseMove: { var element = _windowManager.FindWindow(new Vector2(message.MouseX.Value, message.MouseY.Value)); if (element != _lastHighlightedElement) { if (_lastHighlightedElement != null) { _lastHighlightedElement.InputCallback.Invoke( _lastHighlightedElement, new WndWindowMessage(WndWindowMessageType.MouseExit, _lastHighlightedElement), context); } _lastHighlightedElement = element; if (element != null) { element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseEnter, element), context); } } if (element != null) { element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseMove, element), context); return(InputMessageResult.Handled); } break; } case InputMessageType.MouseDown: { var element = _windowManager.FindWindow(new Vector2(message.MouseX.Value, message.MouseY.Value)); if (element != null) { element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseDown, element), context); return(InputMessageResult.Handled); } break; } case InputMessageType.MouseUp: { var element = _windowManager.FindWindow(new Vector2(message.MouseX.Value, message.MouseY.Value)); if (element != null) { element.InputCallback.Invoke( element, new WndWindowMessage(WndWindowMessageType.MouseUp, element), context); return(InputMessageResult.Handled); } break; } } return(InputMessageResult.NotHandled); }
public static void MainMenuSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context) { switch (message.MessageType) { case WndWindowMessageType.SelectedButton: switch (message.Element.Name) { case "MainMenu.wnd:ButtonOptions": context.WindowManager.PushWindow(@"Menus\OptionsMenu.wnd"); break; case "MainMenu.wnd:ButtonExit": var exitWindow = context.WindowManager.PushWindow(@"Menus\QuitMessageBox.wnd"); exitWindow.Root.FindChild("QuitMessageBox.wnd:StaticTextTitle").Text = "EXIT?"; exitWindow.Root.FindChild("QuitMessageBox.wnd:StaticTextTitle").TextAlignment = TextAlignment.Leading; exitWindow.Root.FindChild("QuitMessageBox.wnd:StaticTextMessage").Text = "Are you sure you want to exit?"; exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonOk").Show(); exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonOk").Text = "YES"; exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonCancel").Show(); exitWindow.Root.FindChild("QuitMessageBox.wnd:ButtonCancel").Text = "NO"; break; } break; } }