Skip to content

Commit

Permalink
Keybinds (#70)
Browse files Browse the repository at this point in the history
* unbind keybinds by default

* remove redundant static class reference

* remove [GC] at the start of keybind names in the menu

* slightly less cursed keybind handler
  • Loading branch information
Alexdoru authored Feb 4, 2023
1 parent 219385b commit 850f558
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 119 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStatsClient;
import micdoodle8.mods.galacticraft.core.network.PacketSimple;
import micdoodle8.mods.galacticraft.core.network.PacketSimple.EnumSimplePacket;
import micdoodle8.mods.galacticraft.core.util.ConfigManagerCore;
import micdoodle8.mods.galacticraft.core.util.GCCoreUtil;
import micdoodle8.mods.galacticraft.core.util.PlayerUtil;

Expand All @@ -22,31 +21,26 @@

import org.lwjgl.input.Keyboard;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.InputEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Type;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class KeyHandlerClient extends KeyHandler {

public static KeyBinding galaxyMap;
public static KeyBinding openFuelGui;
public static KeyBinding toggleAdvGoggles;

static {
galaxyMap = new KeyBinding(
GCCoreUtil.translate("keybind.map.name"),
ConfigManagerCore.keyOverrideMapI == 0 ? Keyboard.KEY_M : ConfigManagerCore.keyOverrideMapI,
Constants.MOD_NAME_SIMPLE);
openFuelGui = new KeyBinding(
GCCoreUtil.translate("keybind.spaceshipinv.name"),
ConfigManagerCore.keyOverrideFuelLevelI == 0 ? Keyboard.KEY_F : ConfigManagerCore.keyOverrideFuelLevelI,
Constants.MOD_NAME_SIMPLE);
toggleAdvGoggles = new KeyBinding(
GCCoreUtil.translate("keybind.sensortoggle.name"),
ConfigManagerCore.keyOverrideToggleAdvGogglesI == 0 ? Keyboard.KEY_K
: ConfigManagerCore.keyOverrideToggleAdvGogglesI,
Constants.MOD_NAME_SIMPLE);
// See ConfigManagerCore.class for actual defaults. These do nothing
}

public static KeyBinding galaxyMap = new KeyBinding(
GCCoreUtil.translate("keybind.map.name"),
Keyboard.KEY_NONE,
Constants.MOD_NAME_SIMPLE);
public static KeyBinding openFuelGui = new KeyBinding(
GCCoreUtil.translate("keybind.spaceshipinv.name"),
Keyboard.KEY_NONE,
Constants.MOD_NAME_SIMPLE);
public static KeyBinding toggleAdvGoggles = new KeyBinding(
GCCoreUtil.translate("keybind.sensortoggle.name"),
Keyboard.KEY_NONE,
Constants.MOD_NAME_SIMPLE);
public static KeyBinding accelerateKey;
public static KeyBinding decelerateKey;
public static KeyBinding leftKey;
Expand All @@ -59,113 +53,117 @@ public class KeyHandlerClient extends KeyHandler {

public KeyHandlerClient() {
super(
new KeyBinding[] { KeyHandlerClient.galaxyMap, KeyHandlerClient.openFuelGui,
KeyHandlerClient.toggleAdvGoggles },
new KeyBinding[] { galaxyMap, openFuelGui, toggleAdvGoggles },
new boolean[] { false, false, false },
KeyHandlerClient.getVanillaKeyBindings(),
getVanillaKeyBindings(),
new boolean[] { false, true, true, true, true, true, true });
}

private static KeyBinding[] getVanillaKeyBindings() {
final KeyBinding invKey = KeyHandlerClient.mc.gameSettings.keyBindInventory;
KeyHandlerClient.accelerateKey = KeyHandlerClient.mc.gameSettings.keyBindForward;
KeyHandlerClient.decelerateKey = KeyHandlerClient.mc.gameSettings.keyBindBack;
KeyHandlerClient.leftKey = KeyHandlerClient.mc.gameSettings.keyBindLeft;
KeyHandlerClient.rightKey = KeyHandlerClient.mc.gameSettings.keyBindRight;
KeyHandlerClient.upKey = KeyHandlerClient.mc.gameSettings.keyBindForward;
KeyHandlerClient.downKey = KeyHandlerClient.mc.gameSettings.keyBindBack;
KeyHandlerClient.spaceKey = KeyHandlerClient.mc.gameSettings.keyBindJump;
KeyHandlerClient.leftShiftKey = KeyHandlerClient.mc.gameSettings.keyBindSneak;
return new KeyBinding[] { invKey, KeyHandlerClient.accelerateKey, KeyHandlerClient.decelerateKey,
KeyHandlerClient.leftKey, KeyHandlerClient.rightKey, KeyHandlerClient.spaceKey,
KeyHandlerClient.leftShiftKey };
final KeyBinding invKey = mc.gameSettings.keyBindInventory;
accelerateKey = mc.gameSettings.keyBindForward;
decelerateKey = mc.gameSettings.keyBindBack;
leftKey = mc.gameSettings.keyBindLeft;
rightKey = mc.gameSettings.keyBindRight;
upKey = mc.gameSettings.keyBindForward;
downKey = mc.gameSettings.keyBindBack;
spaceKey = mc.gameSettings.keyBindJump;
leftShiftKey = mc.gameSettings.keyBindSneak;
return new KeyBinding[] { invKey, accelerateKey, decelerateKey, leftKey, rightKey, spaceKey, leftShiftKey };
}

@Override
public void keyDown(Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {
if (KeyHandlerClient.mc.thePlayer != null && tickEnd) {
final EntityClientPlayerMP playerBase = PlayerUtil
.getPlayerBaseClientFromPlayer(KeyHandlerClient.mc.thePlayer, false);

@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onKeyPressed(InputEvent.KeyInputEvent event) {
if (mc.thePlayer == null) {
return;
}
if (galaxyMap.isPressed()) {
if (mc.currentScreen == null) {
mc.thePlayer.openGui(
GalacticraftCore.instance,
GuiIdsCore.GALAXY_MAP,
mc.theWorld,
(int) mc.thePlayer.posX,
(int) mc.thePlayer.posY,
(int) mc.thePlayer.posZ);
}
} else if (openFuelGui.isPressed()) {
final EntityClientPlayerMP playerBase = PlayerUtil.getPlayerBaseClientFromPlayer(mc.thePlayer, false);
if (playerBase == null) {
return;
}

final GCPlayerStatsClient stats = GCPlayerStatsClient.get(playerBase);

if (kb.getKeyCode() == KeyHandlerClient.galaxyMap.getKeyCode()) {
if (KeyHandlerClient.mc.currentScreen == null) {
KeyHandlerClient.mc.thePlayer.openGui(
GalacticraftCore.instance,
GuiIdsCore.GALAXY_MAP,
KeyHandlerClient.mc.theWorld,
(int) KeyHandlerClient.mc.thePlayer.posX,
(int) KeyHandlerClient.mc.thePlayer.posY,
(int) KeyHandlerClient.mc.thePlayer.posZ);
}
} else if (kb.getKeyCode() == KeyHandlerClient.openFuelGui.getKeyCode()) {
if (playerBase.ridingEntity instanceof EntitySpaceshipBase
|| playerBase.ridingEntity instanceof EntityBuggy) {
GalacticraftCore.packetPipeline.sendToServer(
new PacketSimple(
EnumSimplePacket.S_OPEN_FUEL_GUI,
new Object[] { playerBase.getGameProfile().getName() }));
}
} else if (kb.getKeyCode() == KeyHandlerClient.toggleAdvGoggles.getKeyCode()) {
if (playerBase != null) {
stats.usingAdvancedGoggles = !stats.usingAdvancedGoggles;
}
if (playerBase.ridingEntity instanceof EntitySpaceshipBase
|| playerBase.ridingEntity instanceof EntityBuggy) {
GalacticraftCore.packetPipeline.sendToServer(
new PacketSimple(
EnumSimplePacket.S_OPEN_FUEL_GUI,
new Object[] { playerBase.getGameProfile().getName() }));
}
} else if (toggleAdvGoggles.isPressed()) {
final EntityClientPlayerMP playerBase = PlayerUtil.getPlayerBaseClientFromPlayer(mc.thePlayer, false);
if (playerBase == null) {
return;
}
final GCPlayerStatsClient stats = GCPlayerStatsClient.get(playerBase);
stats.usingAdvancedGoggles = !stats.usingAdvancedGoggles;
}
}

@Override // TODO code something else to control buggys to avoid ontick checks
public void keyDown(Type types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {

if (KeyHandlerClient.mc.thePlayer != null && KeyHandlerClient.mc.currentScreen == null) {
if (mc.thePlayer != null && mc.currentScreen == null && mc.thePlayer.ridingEntity != null) {
int keyNum = -1;

if (kb == KeyHandlerClient.accelerateKey) {
if (kb == accelerateKey) {
keyNum = 0;
} else if (kb == KeyHandlerClient.decelerateKey) {
} else if (kb == decelerateKey) {
keyNum = 1;
} else if (kb == KeyHandlerClient.leftKey) {
} else if (kb == leftKey) {
keyNum = 2;
} else if (kb == KeyHandlerClient.rightKey) {
} else if (kb == rightKey) {
keyNum = 3;
} else if (kb == KeyHandlerClient.spaceKey) {
} else if (kb == spaceKey) {
keyNum = 4;
} else if (kb == KeyHandlerClient.leftShiftKey) {
} else if (kb == leftShiftKey) {
keyNum = 5;
}

final Entity entityTest = KeyHandlerClient.mc.thePlayer.ridingEntity;
if (entityTest != null && entityTest instanceof IControllableEntity && keyNum != -1) {
final IControllableEntity entity = (IControllableEntity) entityTest;
final Entity entityTest = mc.thePlayer.ridingEntity;

if (kb.getKeyCode() == KeyHandlerClient.mc.gameSettings.keyBindInventory.getKeyCode()) {
KeyBinding.setKeyBindState(KeyHandlerClient.mc.gameSettings.keyBindInventory.getKeyCode(), false);
}
if (entityTest instanceof IControllableEntity && keyNum != -1) {

final IControllableEntity entity = (IControllableEntity) entityTest;
if (kb.getKeyCode() == mc.gameSettings.keyBindInventory.getKeyCode()) {
KeyBinding.setKeyBindState(mc.gameSettings.keyBindInventory.getKeyCode(), false);
}
entity.pressKey(keyNum);
} else if (entityTest != null && entityTest instanceof EntityAutoRocket) {
final EntityAutoRocket autoRocket = (EntityAutoRocket) entityTest;

} else if (entityTest instanceof EntityAutoRocket) {

final EntityAutoRocket autoRocket = (EntityAutoRocket) entityTest;
if (autoRocket.landing) {
if (kb == KeyHandlerClient.leftShiftKey) {
if (kb == leftShiftKey) {
autoRocket.motionY -= 0.02D;
GalacticraftCore.packetPipeline.sendToServer(
new PacketSimple(
EnumSimplePacket.S_UPDATE_SHIP_MOTION_Y,
new Object[] { autoRocket.getEntityId(), false }));
}

if (kb == KeyHandlerClient.spaceKey) {
if (kb == spaceKey) {
autoRocket.motionY += 0.02D;
GalacticraftCore.packetPipeline.sendToServer(
new PacketSimple(
EnumSimplePacket.S_UPDATE_SHIP_MOTION_Y,
new Object[] { autoRocket.getEntityId(), true }));
}
}

}

}

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,6 @@ public class ConfigManagerCore {
public static boolean useOldFuelFluidID;

// KEYBOARD AND MOUSE
public static String keyOverrideMap;
public static String keyOverrideFuelLevel;
public static String keyOverrideToggleAdvGoggles;
public static int keyOverrideMapI;
public static int keyOverrideFuelLevelI;
public static int keyOverrideToggleAdvGogglesI;
public static float mapMouseScrollSensitivity;
public static boolean invertMapMouseScroll;

Expand Down Expand Up @@ -571,27 +565,6 @@ public static void syncConfig(boolean load) {
allowSSatUnreachable = prop.getBoolean();
propOrder.add(prop.getName());

prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Open Galaxy Map", "KEY_M");
prop.comment = "Leave 'KEY_' value, adding the intended keyboard character to replace the letter. Values 0-9 and A-Z are accepted";
prop.setLanguageKey("gc.configgui.overrideMap").setRequiresMcRestart(true);
keyOverrideMap = prop.getString();
keyOverrideMapI = parseKeyValue(keyOverrideMap);
propOrder.add(prop.getName());

prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Open Fuel GUI", "KEY_F");
prop.comment = "Leave 'KEY_' value, adding the intended keyboard character to replace the letter. Values 0-9 and A-Z are accepted";
prop.setLanguageKey("gc.configgui.keyOverrideFuelLevel").setRequiresMcRestart(true);
keyOverrideFuelLevel = prop.getString();
keyOverrideFuelLevelI = parseKeyValue(keyOverrideFuelLevel);
propOrder.add(prop.getName());

prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Toggle Advanced Goggles", "KEY_K");
prop.comment = "Leave 'KEY_' value, adding the intended keyboard character to replace the letter. Values 0-9 and A-Z are accepted";
prop.setLanguageKey("gc.configgui.keyOverrideToggleAdvGoggles").setRequiresMcRestart(true);
keyOverrideToggleAdvGoggles = prop.getString();
keyOverrideToggleAdvGogglesI = parseKeyValue(keyOverrideToggleAdvGoggles);
propOrder.add(prop.getName());

prop = config.get(Constants.CONFIG_CATEGORY_GENERAL, "Rocket fuel factor", 1);
prop.comment = "The normal factor is 1. Increase this to 2 - 5 if other mods with a lot of oil (e.g. BuildCraft) are installed to increase GC rocket fuel requirement.";
prop.setLanguageKey("gc.configgui.rocketFuelFactor");
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/assets/galacticraftcore/lang/en_GB.lang
Original file line number Diff line number Diff line change
Expand Up @@ -256,9 +256,9 @@ newversion.failed.name=Galacticraft update check failed! Trying again in 15 seco
newversion.success.name=Galacticraft remote version found:

# KEYBINDINGS
keybind.map.name=[GC] Galaxy Map
keybind.spaceshipinv.name=[GC] Open Spaceship Inventory
keybind.sensortoggle.name=[GC] Toggle Sensor Goggles Mode
keybind.map.name=Open Galaxy Map
keybind.spaceshipinv.name=Open Spaceship Inventory
keybind.sensortoggle.name=Toggle Sensor Goggles Mode
keybind.vehicleforward.name=[GC] Vehicle Forward Key
keybind.vehiclebackward.name=[GC] Vehicle Backward Key
keybind.vehicleleft.name=[GC] Vehicle Left Key
Expand Down
6 changes: 3 additions & 3 deletions src/main/resources/assets/galacticraftcore/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,9 @@ tooltip.rocket_fuel_tier=Can be used as rocket fuel up to tier %s
tooltip.rocket_fuel_tier_max=Can be used as rocket fuel for all tiers

# KEYBINDINGS
keybind.map.name=[GC] Galaxy Map
keybind.spaceshipinv.name=[GC] Open Spaceship Inventory
keybind.sensortoggle.name=[GC] Toggle Sensor Goggles Mode
keybind.map.name=Open Galaxy Map
keybind.spaceshipinv.name=Open Spaceship Inventory
keybind.sensortoggle.name=Toggle Sensor Goggles Mode
keybind.vehicleforward.name=[GC] Vehicle Forward Key
keybind.vehiclebackward.name=[GC] Vehicle Backward Key
keybind.vehicleleft.name=[GC] Vehicle Left Key
Expand Down

0 comments on commit 850f558

Please sign in to comment.