Пример #1
0
        protected override void OnKeyDown(KeyboardKeyEventArgs e)
        {
            base.OnKeyDown(e);

            switch (e.Key)
            {
            case Key.Escape:
                if (GuiScreen is GuiScreenMainMenu || KeyboardState.IsKeyDown(Key.Escape))
                {
                    return;
                }

                if (GuiScreen != null)
                {
                    CloseGuiScreen();
                }
                else
                {
                    OpenGuiScreen(new GuiScreenIngameMenu());
                }
                break;

            case Key.E:
                if (KeyboardState.IsKeyDown(Key.E))
                {
                    return;
                }

                if (GuiScreen is GuiScreenInventory)
                {
                    CloseGuiScreen();
                    return;
                }

                if (GuiScreen == null)
                {
                    OpenGuiScreen(new GuiScreenInventory());
                }
                break;

            case Key.Up:

                if (KeyboardState.IsKeyDown(Key.Up))
                {
                    return;
                }

                break;

            case Key.Down:

                if (KeyboardState.IsKeyDown(Key.Down))
                {
                    return;
                }

                break;

            case Key.Enter:
                if (KeyboardState.IsKeyDown(Key.Enter))
                {
                    return;
                }

                if (GuiScreen is GuiChat gc)
                {
                    gc.SendMessage();
                    Instance.CloseGuiScreen();
                }
                else
                {
                    OpenGuiScreen(new GuiChat());
                }

                break;

            case Key.F2:
                _takeScreenshot = true;
                break;

            case Key.F11:
                if (WindowState != WindowState.Fullscreen)
                {
                    _lastWindowState = WindowState;
                    WindowState      = WindowState.Fullscreen;
                }
                else
                {
                    WindowState = _lastWindowState;
                }

                break;
            }

            if (AllowIngameInput())
            {
                switch (e.Key)
                {
                case Key.Q:
                    if (KeyboardState.IsKeyDown(Key.Q))
                    {
                        return;
                    }

                    if (e.Control)
                    {
                        Player.DropHeldStack();
                    }
                    else
                    {
                        Player?.DropHeldItem();
                    }
                    break;

                case Key.R:
                    if (!e.Control || KeyboardState.IsKeyDown(Key.R))
                    {
                        return;
                    }

                    Shader.ReloadAll();
                    SettingsManager.Load();
                    TextureManager.Reload();
                    SoundEngine.Reload();
                    LangUtil.Reload();

                    Camera.SetTargetFov(SettingsManager.GetFloat("fov"));

                    WorldRenderer.RenderDistance = SettingsManager.GetInt("renderdistance");
                    _sensitivity = SettingsManager.GetFloat("sensitivity");

                    if (e.Shift)
                    {
                        JsonModelLoader.Reload();
                        //TODO - World?.DestroyChunkModels();
                    }

                    break;
                }

                if (GuiScreen == null)
                {
                    for (int i = 0; i < 9; i++)
                    {
                        if (e.Key == Key.Number1 + i)
                        {
                            Player?.SetSelectedSlot(i);

                            break;
                        }
                    }
                }
            }

            if (e.Alt && e.Key == Key.F4)
            {
                Exit();
            }

            KeyboardState = e.Keyboard;
        }