示例#1
0
 public static void PassMessagesToParentSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context)
 {
     element.Parent.SystemCallback.Invoke(element.Parent, message, context);
 }
示例#2
0
        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;
            }
        }
示例#3
0
        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;
            }
        }
示例#4
0
        public static void PassSelectedButtonsToParentSystem(WndWindow element, WndWindowMessage message, UIElementCallbackContext context)
        {
            if (message.MessageType != WndWindowMessageType.SelectedButton)
            {
                return;
            }

            element.Parent.SystemCallback.Invoke(element.Parent, message, context);
        }
示例#5
0
 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;
     }
 }
示例#6
0
 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;
     }
 }
示例#7
0
 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);
        }
示例#10
0
        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);
        }
示例#11
0
        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;
            }
        }