Add spell quick access keys
This commit is contained in:
@@ -4,6 +4,7 @@ import electroblob.wizardry.Wizardry;
|
||||
import electroblob.wizardry.client.gui.GuiSpellDisplay;
|
||||
import electroblob.wizardry.item.ISpellCastingItem;
|
||||
import electroblob.wizardry.packet.PacketControlInput;
|
||||
import electroblob.wizardry.packet.PacketSpellQuickAccess;
|
||||
import electroblob.wizardry.packet.WizardryPacketHandler;
|
||||
import electroblob.wizardry.registry.WizardrySounds;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -24,6 +25,7 @@ public class WizardryControlHandler {
|
||||
|
||||
static boolean NkeyPressed = false;
|
||||
static boolean BkeyPressed = false;
|
||||
static boolean[] quickAccessKeyPressed = new boolean[ClientProxy.SPELL_QUICK_ACCESS.length];
|
||||
|
||||
// Changed to a tick event to allow mouse button keybinds
|
||||
// The 'lag' that happened previously was actually because the code only fired when a keyboard key was pressed!
|
||||
@@ -59,6 +61,19 @@ public class WizardryControlHandler {
|
||||
}else{
|
||||
BkeyPressed = false;
|
||||
}
|
||||
|
||||
for(int i = 0; i < ClientProxy.SPELL_QUICK_ACCESS.length; i++){
|
||||
if(ClientProxy.SPELL_QUICK_ACCESS[i].isKeyDown() && Minecraft.getMinecraft().inGameHasFocus){
|
||||
if(!quickAccessKeyPressed[i]){
|
||||
quickAccessKeyPressed[i] = true;
|
||||
// Packet building
|
||||
selectSpell(wand, i);
|
||||
}
|
||||
}else{
|
||||
quickAccessKeyPressed[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,4 +133,17 @@ public class WizardryControlHandler {
|
||||
GuiSpellDisplay.playSpellSwitchAnimation(false);
|
||||
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(WizardrySounds.ITEM_WAND_SWITCH_SPELL, 1));
|
||||
}
|
||||
|
||||
private static void selectSpell(ItemStack wand, int index){
|
||||
// GUI switch animation
|
||||
if(((ISpellCastingItem)wand.getItem()).selectSpell(wand, index)){ // Makes sure the spell is set immediately for the client
|
||||
// Packet building (no point sending it unless the client-side spell selection succeeded
|
||||
IMessage msg = new PacketSpellQuickAccess.Message(index);
|
||||
WizardryPacketHandler.net.sendToServer(msg);
|
||||
|
||||
GuiSpellDisplay.playSpellSwitchAnimation(true); // This will do, it's only an animation
|
||||
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.getMasterRecord(WizardrySounds.ITEM_WAND_SWITCH_SPELL, 1));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user