internal void KeyUp(int eKey) { keyboardStateRaw[eKey] = false; for (int i = 0; i < clientmodsCount; i++) { KeyEventArgs args_ = new KeyEventArgs(); args_.SetKeyCode(eKey); clientmods[i].OnKeyUp(this, args_); if (args_.GetHandled()) { return; } } keyboardState[eKey] = false; if (eKey == GetKey(GlKeys.ShiftLeft) || eKey == GetKey(GlKeys.ShiftRight)) { IsShiftPressed = false; } }
internal void KeyDown(int eKey) { keyboardStateRaw[eKey] = true; if (guistate != GuiState.MapLoading) { // only handle keys once game has been loaded for (int i = 0; i < clientmodsCount; i++) { KeyEventArgs args_ = new KeyEventArgs(); args_.SetKeyCode(eKey); clientmods[i].OnKeyDown(this, args_); if (args_.GetHandled()) { return; } } } keyboardState[eKey] = true; InvalidVersionAllow(); if (eKey == GetKey(GlKeys.F6)) { float lagSeconds = one * (platform.TimeMillisecondsFromStart() - LastReceivedMilliseconds) / 1000; if ((lagSeconds >= DISCONNECTED_ICON_AFTER_SECONDS) || guistate == GuiState.MapLoading) { Reconnect(); } } if (eKey == GetKey(GlKeys.ShiftLeft) || eKey == GetKey(GlKeys.ShiftRight)) { IsShiftPressed = true; } if (guistate == GuiState.Normal) { string strFreemoveNotAllowed = "You are not allowed to enable freemove."; if (eKey == GetKey(GlKeys.F1)) { if (!this.AllowFreemove) { Log(strFreemoveNotAllowed); return; } movespeed = basemovespeed * 1; Log("Move speed: 1x."); } if (eKey == GetKey(GlKeys.F2)) { if (!this.AllowFreemove) { Log(strFreemoveNotAllowed); return; } movespeed = basemovespeed * 10; Log(platform.StringFormat(language.MoveSpeed(), platform.IntToString(10))); } if (eKey == GetKey(GlKeys.F3)) { if (!this.AllowFreemove) { Log(strFreemoveNotAllowed); return; } stopPlayerMove = true; if (!controls.freemove) { controls.freemove = true; Log(language.MoveFree()); } else if (controls.freemove && (!controls.noclip)) { controls.noclip = true; Log(language.MoveFreeNoclip()); } else if (controls.freemove && controls.noclip) { controls.freemove = false; controls.noclip = false; Log(language.MoveNormal()); } } if (eKey == GetKey(GlKeys.I)) { drawblockinfo = !drawblockinfo; } int playerx = platform.FloatToInt(player.position.x); int playery = platform.FloatToInt(player.position.z); if ((playerx >= 0 && playerx < map.MapSizeX) && (playery >= 0 && playery < map.MapSizeY)) { performanceinfo.Set("height", platform.StringFormat("height:{0}", platform.IntToString(d_Heightmap.GetBlock(playerx, playery)))); } if (eKey == GetKey(GlKeys.F5)) { CameraChange(); } if (eKey == GetKey(GlKeys.Plus) || eKey == GetKey(GlKeys.KeypadPlus)) { if (cameratype == CameraType.Overhead) { overheadcameradistance -= 1; } else if (cameratype == CameraType.Tpp) { tppcameradistance -= 1; } } if (eKey == GetKey(GlKeys.Minus) || eKey == GetKey(GlKeys.KeypadMinus)) { if (cameratype == CameraType.Overhead) { overheadcameradistance += 1; } else if (cameratype == CameraType.Tpp) { tppcameradistance += 1; } } if (overheadcameradistance < TPP_CAMERA_DISTANCE_MIN) { overheadcameradistance = TPP_CAMERA_DISTANCE_MIN; } if (overheadcameradistance > TPP_CAMERA_DISTANCE_MAX) { overheadcameradistance = TPP_CAMERA_DISTANCE_MAX; } if (tppcameradistance < TPP_CAMERA_DISTANCE_MIN) { tppcameradistance = TPP_CAMERA_DISTANCE_MIN; } if (tppcameradistance > TPP_CAMERA_DISTANCE_MAX) { tppcameradistance = TPP_CAMERA_DISTANCE_MAX; } if (eKey == GetKey(GlKeys.F6)) { RedrawAllBlocks(); } if (eKey == GlKeys.F8) { ToggleVsync(); if (ENABLE_LAG == 0) { Log(language.FrameRateVsync()); } if (ENABLE_LAG == 1) { Log(language.FrameRateUnlimited()); } if (ENABLE_LAG == 2) { Log(language.FrameRateLagSimulation()); } } if (eKey == GetKey(GlKeys.Tab)) { SendPacketClient(ClientPackets.SpecialKeyTabPlayerList()); } if (eKey == GetKey(GlKeys.E)) { if (currentAttackedBlock != null) { int posX = currentAttackedBlock.X; int posY = currentAttackedBlock.Y; int posZ = currentAttackedBlock.Z; int blocktype = map.GetBlock(currentAttackedBlock.X, currentAttackedBlock.Y, currentAttackedBlock.Z); if (IsUsableBlock(blocktype)) { if (d_Data.IsRailTile(blocktype)) { player.position.x = posX + (one / 2); player.position.y = posZ + 1; player.position.z = posY + (one / 2); controls.freemove = false; } else { SendSetBlock(posX, posY, posZ, Packet_BlockSetModeEnum.Use, 0, ActiveMaterial); } } } if (currentlyAttackedEntity != -1) { if (entities[currentlyAttackedEntity].usable) { for (int i = 0; i < clientmodsCount; i++) { if (clientmods[i] == null) { continue; } OnUseEntityArgs args = new OnUseEntityArgs(); args.entityId = currentlyAttackedEntity; clientmods[i].OnUseEntity(this, args); } SendPacketClient(ClientPackets.UseEntity(currentlyAttackedEntity)); } } } if (eKey == GetKey(GlKeys.O)) { Respawn(); } if (eKey == GetKey(GlKeys.L)) { SendPacketClient(ClientPackets.SpecialKeySelectTeam()); } if (eKey == GetKey(GlKeys.P)) { SendPacketClient(ClientPackets.SpecialKeySetSpawn()); playerPositionSpawnX = player.position.x; playerPositionSpawnY = player.position.y; playerPositionSpawnZ = player.position.z; player.position.x = platform.FloatToInt(player.position.x) + one / 2; //player.playerposition.Y = player.playerposition.Y; player.position.z = platform.FloatToInt(player.position.z) + one / 2; } if (eKey == GetKey(GlKeys.F)) { ToggleFog(); Log(platform.StringFormat(language.FogDistance(), platform.IntToString(platform.FloatToInt(d_Config3d.viewdistance)))); OnResize(); } if (eKey == GetKey(GlKeys.B)) { ShowInventory(); return; } HandleMaterialKeys(eKey); } if (guistate == GuiState.Inventory) { if (eKey == GetKey(GlKeys.B) || eKey == GetKey(GlKeys.Escape)) { GuiStateBackToGame(); } return; } if (guistate == GuiState.MapLoading) { //Return to main menu when ESC key is pressed while loading if (eKey == GetKey(GlKeys.Escape)) { ExitToMainMenu_(); } } if (guistate == GuiState.CraftingRecipes) { if (eKey == GetKey(GlKeys.Escape)) { GuiStateBackToGame(); } } if (guistate == GuiState.Normal) { if (eKey == GetKey(GlKeys.Escape)) { EscapeMenuStart(); return; } } }