コード例 #1
0
ファイル: Game.cs プロジェクト: TominoCZ/OpenGL-Game
        protected override void OnKeyDown(KeyboardKeyEventArgs e)
        {
            var state = Keyboard.GetState();

            if (state.IsKeyDown(Key.Escape))
            {
                if (guiScreen is GuiScreenMainMenu)
                {
                    return;
                }

                if (guiScreen != null)
                {
                    closeGuiScreen();
                }
                else
                {
                    openGuiScreen(new GuiScreenIngameMenu());

                    ThreadPool.RunTask(false, () => { WorldLoader.saveWorld(world); });
                }
            }

            if (guiScreen == null)
            {
                for (int i = 0; i < 9; i++)
                {
                    if (state.IsKeyDown(Key.Number1 + i))
                    {
                        player?.setSelectedSlot(i);

                        break;
                    }
                }
            }

            if (state.IsKeyDown(Key.LAlt | Key.F4))
            {
                Exit();
            }

            if (e.Key == Key.F11)
            {
                if (WindowState != WindowState.Fullscreen)
                {
                    lastWindowState = WindowState;
                    WindowState     = WindowState.Fullscreen;
                }
                else
                {
                    WindowState = lastWindowState;
                }
            }
        }
コード例 #2
0
ファイル: Game.cs プロジェクト: TominoCZ/OpenGL-Game
        protected override void OnClosing(CancelEventArgs e)
        {
            ShaderManager.cleanUp();
            TextureManager.cleanUp();

            GraphicsManager.cleanUp();

            openGuiScreen(new GuiScreen());

            WorldLoader.saveWorld(world);
            SettingsManager.save();
        }
コード例 #3
0
ファイル: Game.cs プロジェクト: TominoCZ/OpenGL-Game
        public void startGame()
        {
            var loadedWorld = WorldLoader.loadWorld();

            if (loadedWorld == null)
            {
                Console.WriteLine("DEBUG: generating world");

                var r = new Random();

                var playerPos = new BlockPos(-100 + (float)r.NextDouble() * 200, 0,
                                             -100 + (float)r.NextDouble() * 200);

                world = new World(0);
                world.generateChunk(playerPos, true);

                player = new EntityPlayerSP(new Vector3(playerPos.x, world.getHeightAtPos(playerPos.x, playerPos.z),
                                                        playerPos.z));

                world.addEntity(player);

                player.setItemStackInHotbar(0, new ItemStack(new ItemBlock(EnumBlock.CRAFTING_TABLE)));
                player.setItemStackInHotbar(1, new ItemStack(new ItemBlock(EnumBlock.FURNACE)));
                player.setItemStackInHotbar(2, new ItemStack(new ItemBlock(EnumBlock.COBBLESTONE)));
                player.setItemStackInHotbar(3, new ItemStack(new ItemBlock(EnumBlock.PLANKS)));
                player.setItemStackInHotbar(4, new ItemStack(new ItemBlock(EnumBlock.GLASS)));
            }
            else
            {
                world = loadedWorld;
            }

            resetMouse();

            var state = OpenTK.Input.Mouse.GetState();

            mouseLast = new Point(state.X, state.Y);

            gameRenderer.setCamera(player.camera);

            runUpdateThreads();

            ShaderManager.updateProjectionMatrix();

            world.setBlock(new BlockPos(player.pos), EnumBlock.RARE, 1, true);
        }