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; } } }
protected override void OnClosing(CancelEventArgs e) { ShaderManager.cleanUp(); TextureManager.cleanUp(); GraphicsManager.cleanUp(); openGuiScreen(new GuiScreen()); WorldLoader.saveWorld(world); SettingsManager.save(); }
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); }