Keybinding HUD rework
This commit is contained in:
parent
784dde9caa
commit
b5fe074b3d
|
@ -143,6 +143,7 @@ gui.pressKey=Press Key
|
|||
gui.keybindInstructions1=Use 'new' to bind new keys.
|
||||
gui.keybindInstructions2=Drag and drop modules to bind them to keys.
|
||||
gui.keybindInstructions3=Drop keys on 'trash' to unbind them.
|
||||
gui.keybindInstructions4=Right-click keybinds to add them to the HUD.
|
||||
gui.keybindTaken=Taken!
|
||||
|
||||
gui.tab.tinker=Tinker
|
||||
|
|
|
@ -95,4 +95,6 @@ public class ClickableButton extends Clickable {
|
|||
return this;
|
||||
}
|
||||
|
||||
public String getLabel() { return label; }
|
||||
|
||||
}
|
||||
|
|
|
@ -1,139 +0,0 @@
|
|||
package net.machinemuse.general.gui.clickable;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import net.machinemuse.numina.geometry.Colour;
|
||||
import net.machinemuse.numina.geometry.MusePoint2D;
|
||||
import net.machinemuse.numina.network.PacketSender;
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketToggleRequest;
|
||||
import net.machinemuse.utils.MuseItemUtils;
|
||||
import net.machinemuse.utils.render.MuseRenderer;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class ClickableKeybinding extends ClickableButton {
|
||||
protected List<ClickableModule> boundModules;
|
||||
protected KeyBinding keybind;
|
||||
protected boolean toggleval;
|
||||
protected boolean toggled;
|
||||
protected boolean free;
|
||||
|
||||
public ClickableKeybinding(KeyBinding keybind, MusePoint2D position, boolean free) {
|
||||
super(parseName(keybind), position, true);
|
||||
this.keybind = keybind;
|
||||
this.position = position;
|
||||
this.boundModules = new ArrayList<ClickableModule>();
|
||||
this.enabled = free;
|
||||
}
|
||||
|
||||
public boolean isToggled() {
|
||||
return toggled;
|
||||
}
|
||||
|
||||
public void doToggleTick() {
|
||||
doToggleIf(keybind.getIsKeyPressed());
|
||||
}
|
||||
|
||||
public void doToggleIf(boolean value) {
|
||||
if (value && !toggled) {
|
||||
toggleModules();
|
||||
}
|
||||
toggled = value;
|
||||
}
|
||||
|
||||
public void toggleModules() {
|
||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
for (ClickableModule module : boundModules) {
|
||||
String valstring = toggleval ? " on" : " off";
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
|
||||
player.addChatMessage(new ChatComponentText("Toggled " + module.getModule().getDataName() + valstring));
|
||||
}
|
||||
MuseItemUtils.toggleModuleForPlayer(player, module.getModule().getDataName(), toggleval);
|
||||
MusePacketToggleRequest toggleRequest = new MusePacketToggleRequest(player, module.getModule().getDataName(), toggleval);
|
||||
PacketSender.sendToServer(toggleRequest);
|
||||
}
|
||||
toggleval = !toggleval;
|
||||
}
|
||||
|
||||
public static String parseName(KeyBinding keybind) {
|
||||
if (keybind.getKeyCode() < 0) {
|
||||
return "Mouse" + (keybind.getKeyCode() + 100);
|
||||
} else {
|
||||
return Keyboard.getKeyName(keybind.getKeyCode());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw() {
|
||||
super.draw();
|
||||
for (ClickableModule module : boundModules) {
|
||||
MuseRenderer.drawLineBetween(this, module, Colour.LIGHTBLUE);
|
||||
}
|
||||
}
|
||||
|
||||
public KeyBinding getKeyBinding() {
|
||||
return keybind;
|
||||
}
|
||||
|
||||
public List<ClickableModule> getBoundModules() {
|
||||
return boundModules;
|
||||
}
|
||||
|
||||
public void bindModule(ClickableModule module) {
|
||||
if (!boundModules.contains(module)) {
|
||||
boundModules.add(module);
|
||||
}
|
||||
}
|
||||
|
||||
public void unbindModule(ClickableModule module) {
|
||||
boundModules.remove(module);
|
||||
}
|
||||
|
||||
public void unbindFarModules() {
|
||||
Iterator<ClickableModule> iterator = boundModules.iterator();
|
||||
ClickableModule module;
|
||||
while (iterator.hasNext()) {
|
||||
module = iterator.next();
|
||||
int maxDistance = getTargetDistance() * 2;
|
||||
double distanceSq = module.getPosition().distanceSq(this.getPosition());
|
||||
if (distanceSq > maxDistance * maxDistance) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getTargetDistance() {
|
||||
int targetDistance = 16;
|
||||
if (boundModules.size() > 6) {
|
||||
targetDistance += (boundModules.size() - 6) * 3;
|
||||
}
|
||||
return targetDistance;
|
||||
}
|
||||
|
||||
public void attractBoundModules(IClickable exception) {
|
||||
for (ClickableModule module : boundModules) {
|
||||
if (module != exception) {
|
||||
MusePoint2D euclideanDistance = module.getPosition().minus(this.getPosition());
|
||||
MusePoint2D directionVector = euclideanDistance.normalize();
|
||||
MusePoint2D tangentTarget = directionVector.times(getTargetDistance()).plus(this.getPosition());
|
||||
MusePoint2D midpointTangent = module.getPosition().midpoint(tangentTarget);
|
||||
module.move(midpointTangent.x(), midpointTangent.y());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean equals(ClickableKeybinding other) {
|
||||
return other.keybind.getKeyCode() == this.keybind.getKeyCode();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,146 @@
|
|||
package net.machinemuse.general.gui.clickable
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler
|
||||
import cpw.mods.fml.relauncher.Side
|
||||
import net.machinemuse.numina.geometry.Colour
|
||||
import net.machinemuse.numina.geometry.MusePoint2D
|
||||
import net.machinemuse.numina.network.PacketSender
|
||||
import net.machinemuse.powersuits.common.Config
|
||||
import net.machinemuse.powersuits.control.KeybindManager
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketToggleRequest
|
||||
import net.machinemuse.utils.{MuseStringUtils, MuseItemUtils}
|
||||
import net.machinemuse.utils.MuseStringUtils.FormatCodes
|
||||
import net.machinemuse.utils.render.{GuiIcons, MuseRenderer}
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP
|
||||
import net.minecraft.client.settings.KeyBinding
|
||||
import net.minecraft.util.ChatComponentText
|
||||
import org.lwjgl.input.Keyboard
|
||||
import java.util.ArrayList
|
||||
import java.util.Iterator
|
||||
import java.util.List
|
||||
|
||||
import org.lwjgl.opengl.GL11
|
||||
|
||||
object ClickableKeybinding {
|
||||
def parseName(keybind: KeyBinding): String = {
|
||||
if (keybind.getKeyCode < 0) {
|
||||
return "Mouse" + (keybind.getKeyCode + 100)
|
||||
}
|
||||
else {
|
||||
return Keyboard.getKeyName(keybind.getKeyCode)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ClickableKeybinding(val keybind: KeyBinding, position: MusePoint2D, val free: Boolean, var displayOnHUD: Boolean = false) extends ClickableButton(ClickableKeybinding.parseName(keybind), position, true) {
|
||||
protected var boundModules: List[ClickableModule] = new ArrayList[ClickableModule]
|
||||
var toggleval: Boolean = false
|
||||
var toggled: Boolean = false
|
||||
|
||||
def doToggleTick {
|
||||
doToggleIf(keybind.getIsKeyPressed)
|
||||
}
|
||||
|
||||
def doToggleIf(value: Boolean) {
|
||||
if (value && !toggled) {
|
||||
toggleModules()
|
||||
KeybindManager.writeOutKeybinds()
|
||||
}
|
||||
toggled = value
|
||||
}
|
||||
|
||||
def toggleModules() {
|
||||
val player: EntityClientPlayerMP = Minecraft.getMinecraft.thePlayer
|
||||
if (player == null) {
|
||||
return
|
||||
}
|
||||
import scala.collection.JavaConversions._
|
||||
for (module <- boundModules) {
|
||||
val valstring: String = if (toggleval) " on" else " off"
|
||||
if ((FMLCommonHandler.instance.getEffectiveSide eq Side.CLIENT) && Config.toggleModuleSpam) {
|
||||
player.addChatMessage(new ChatComponentText("Toggled " + module.getModule.getDataName + valstring))
|
||||
}
|
||||
MuseItemUtils.toggleModuleForPlayer(player, module.getModule.getDataName, toggleval)
|
||||
val toggleRequest: MusePacketToggleRequest = new MusePacketToggleRequest(player, module.getModule.getDataName, toggleval)
|
||||
PacketSender.sendToServer(toggleRequest)
|
||||
}
|
||||
toggleval = !toggleval
|
||||
}
|
||||
|
||||
override def draw() {
|
||||
super.draw()
|
||||
import scala.collection.JavaConversions._
|
||||
for (module <- boundModules) {
|
||||
MuseRenderer.drawLineBetween(this, module, Colour.LIGHTBLUE)
|
||||
GL11.glPushMatrix()
|
||||
GL11.glScaled(0.5, 0.5, 0.5)
|
||||
if (displayOnHUD) {
|
||||
MuseRenderer.drawString(MuseStringUtils.wrapFormatTags("HUD", FormatCodes.BrightGreen), this.position.x*2 + 6,this.position.y*2 + 6)
|
||||
} else {
|
||||
MuseRenderer.drawString(MuseStringUtils.wrapFormatTags("x", FormatCodes.Red), this.position.x*2 + 6,this.position.y*2 + 6)
|
||||
}
|
||||
GL11.glPopMatrix()
|
||||
}
|
||||
}
|
||||
|
||||
def getKeyBinding: KeyBinding = {
|
||||
return keybind
|
||||
}
|
||||
|
||||
def getBoundModules: List[ClickableModule] = {
|
||||
return boundModules
|
||||
}
|
||||
|
||||
def bindModule(module: ClickableModule) {
|
||||
if (!boundModules.contains(module)) {
|
||||
boundModules.add(module)
|
||||
}
|
||||
}
|
||||
|
||||
def unbindModule(module: ClickableModule) {
|
||||
boundModules.remove(module)
|
||||
}
|
||||
|
||||
def unbindFarModules {
|
||||
val iterator: Iterator[ClickableModule] = boundModules.iterator
|
||||
var module: ClickableModule = null
|
||||
while (iterator.hasNext) {
|
||||
module = iterator.next
|
||||
val maxDistance: Int = getTargetDistance * 2
|
||||
val distanceSq: Double = module.getPosition.distanceSq(this.getPosition)
|
||||
if (distanceSq > maxDistance * maxDistance) {
|
||||
iterator.remove
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def getTargetDistance: Int = {
|
||||
if (boundModules.size > 6) {
|
||||
16 + (boundModules.size - 6) * 3
|
||||
} else {
|
||||
16
|
||||
}
|
||||
}
|
||||
|
||||
def attractBoundModules(exception: IClickable) {
|
||||
import scala.collection.JavaConversions._
|
||||
for (module <- boundModules) {
|
||||
if (module ne exception) {
|
||||
val euclideanDistance: MusePoint2D = module.getPosition.minus(this.getPosition)
|
||||
val directionVector: MusePoint2D = euclideanDistance.normalize
|
||||
val tangentTarget: MusePoint2D = directionVector.times(getTargetDistance).plus(this.getPosition)
|
||||
val midpointTangent: MusePoint2D = module.getPosition.midpoint(tangentTarget)
|
||||
module.move(midpointTangent.x, midpointTangent.y)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def equals(other: ClickableKeybinding): Boolean = {
|
||||
return other.keybind.getKeyCode == this.keybind.getKeyCode
|
||||
}
|
||||
|
||||
def toggleHUDState {
|
||||
displayOnHUD = !displayOnHUD
|
||||
}
|
||||
}
|
|
@ -76,8 +76,14 @@ public class KeybindConfigFrame implements IGuiFrame {
|
|||
if (newKeybindButton.hitBox(x, y)) {
|
||||
selecting = true;
|
||||
}
|
||||
}
|
||||
if (button > 2) {
|
||||
} else if(button == 1) {
|
||||
for (ClickableKeybinding keybind : KeybindManager.getKeybindings()) {
|
||||
if (keybind.hitBox(x, y)) {
|
||||
keybind.toggleHUDState();
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (button > 2) {
|
||||
int key = button - 100;
|
||||
if (KeyBinding.hash.containsItem(key)) {
|
||||
takenTime = System.currentTimeMillis();
|
||||
|
@ -228,6 +234,7 @@ public class KeybindConfigFrame implements IGuiFrame {
|
|||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions1"), center.x(), center.y() + 40);
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions2"), center.x(), center.y() + 50);
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions3"), center.x(), center.y() + 60);
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions4"), center.x(), center.y() + 70);
|
||||
if (takenTime + 1000 > System.currentTimeMillis()) {
|
||||
MusePoint2D pos = newKeybindButton.getPosition().plus(new MusePoint2D(0, -20));
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindTaken"), pos.x(), pos.y());
|
||||
|
@ -283,7 +290,7 @@ public class KeybindConfigFrame implements IGuiFrame {
|
|||
name = "???";
|
||||
}
|
||||
KeyBinding keybind = new KeyBinding(name, key, KeybindKeyHandler.mps);
|
||||
ClickableKeybinding clickie = new ClickableKeybinding(keybind, newKeybindButton.getPosition().plus(new MusePoint2D(0, -20)), free);
|
||||
ClickableKeybinding clickie = new ClickableKeybinding(keybind, newKeybindButton.getPosition().plus(new MusePoint2D(0, -20)), free, false);
|
||||
KeybindManager.getKeybindings().add(clickie);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import net.machinemuse.api.IPowerModule
|
|||
import net.machinemuse.api.ModuleManager
|
||||
import net.machinemuse.numina.basemod.Numina
|
||||
import net.machinemuse.numina.general.MuseLogger
|
||||
import net.machinemuse.numina.geometry.MusePoint2D
|
||||
import net.machinemuse.powersuits.item.ItemComponent
|
||||
import net.machinemuse.powersuits.powermodule.armor.BasicPlatingModule
|
||||
import net.machinemuse.powersuits.powermodule.armor.DiamondPlatingModule
|
||||
|
@ -47,6 +48,11 @@ import scala.io.Source
|
|||
* @author MachineMuse
|
||||
*/
|
||||
object Config {
|
||||
def keybindHUDon: Boolean = config.get("HUD", "Display HUD", true).getBoolean()
|
||||
def keybindHUDx: Double = config.get("HUD", "x position", 8.0).getDouble()
|
||||
def keybindHUDy: Double = config.get("HUD", "y position", 32.0).getDouble()
|
||||
def toggleModuleSpam: Boolean = config.get("HUD", "Chat message when toggling modules", false).getBoolean()
|
||||
|
||||
def getWeightCapacity(): Double = config.get(Configuration.CATEGORY_GENERAL, "Weight Limit (grams)", 25000.0).getDouble()
|
||||
|
||||
/**
|
||||
|
|
|
@ -51,6 +51,9 @@ object ModularPowersuits {
|
|||
Config.glowMultiplier
|
||||
Config.useShaders
|
||||
Config.getWeightCapacity()
|
||||
Config.keybindHUDon
|
||||
Config.keybindHUDx
|
||||
Config.toggleModuleSpam
|
||||
EntityRegistry.registerModEntity(classOf[EntityPlasmaBolt], "entityPlasmaBolt", 2477, this, 64, 20, true)
|
||||
EntityRegistry.registerModEntity(classOf[EntitySpinningBlade], "entitySpinningBlade", 2478, this, 64, 20, true)
|
||||
EntityRegistry.registerModEntity(classOf[EntityLuxCapacitor], "entityLuxCapacitor", 2479, this, 64, 20, true)
|
||||
|
|
|
@ -40,7 +40,7 @@ public class KeybindManager {
|
|||
public static KeyBinding addKeybinding(String keybindDescription, int keycode, MusePoint2D position) {
|
||||
KeyBinding kb = new KeyBinding(keybindDescription, keycode, KeybindKeyHandler.mps);
|
||||
boolean free = !KeyBinding.hash.containsItem(keycode);
|
||||
getInstance().keybindings.add(new ClickableKeybinding(kb, position, free));
|
||||
getInstance().keybindings.add(new ClickableKeybinding(kb, position, free, false));
|
||||
return kb;
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ public class KeybindManager {
|
|||
writer = new BufferedWriter(new FileWriter(file));
|
||||
List<IPowerModule> modulesToWrite = MuseItemUtils.getPlayerInstalledModules(Minecraft.getMinecraft().thePlayer);
|
||||
for (ClickableKeybinding keybinding : getInstance().keybindings) {
|
||||
writer.write(keybinding.getKeyBinding().getKeyCode() + ":" + keybinding.getPosition().x() + ':' + keybinding.getPosition().y() + '\n');
|
||||
writer.write(keybinding.getKeyBinding().getKeyCode() + ":" + keybinding.getPosition().x() + ':' + keybinding.getPosition().y() + ':' + keybinding.displayOnHUD() + ':' + keybinding.toggleval() + '\n');
|
||||
for (ClickableModule module : keybinding.getBoundModules()) {
|
||||
writer.write(module.getModule().getDataName() + '~' + module.getPosition().x() + '~' + module.getPosition().y() + '\n');
|
||||
}
|
||||
|
@ -95,7 +95,16 @@ public class KeybindManager {
|
|||
if (!KeyBinding.hash.containsItem(id)) {
|
||||
MusePoint2D position = new MusePoint2D(Double.parseDouble(exploded[1]), Double.parseDouble(exploded[2]));
|
||||
boolean free = !KeyBinding.hash.containsItem(id);
|
||||
workingKeybinding = new ClickableKeybinding(new KeyBinding(Keyboard.getKeyName(id), id, KeybindKeyHandler.mps), position, free);
|
||||
boolean displayOnHUD = false;
|
||||
boolean toggleval = false;
|
||||
if(exploded.length > 3) {
|
||||
displayOnHUD = Boolean.parseBoolean(exploded[3]);
|
||||
}
|
||||
if(exploded.length > 4) {
|
||||
toggleval = Boolean.parseBoolean(exploded[4]);
|
||||
}
|
||||
workingKeybinding = new ClickableKeybinding(new KeyBinding(Keyboard.getKeyName(id), id, KeybindKeyHandler.mps), position, free, displayOnHUD);
|
||||
workingKeybinding.toggleval_$eq(toggleval);
|
||||
getInstance().keybindings.add(workingKeybinding);
|
||||
} else {
|
||||
workingKeybinding = null;
|
||||
|
|
|
@ -29,7 +29,7 @@ class ClientTickHandler {
|
|||
if (event.phase == TickEvent.Phase.START) {
|
||||
import scala.collection.JavaConversions._
|
||||
for (kb <- KeybindManager.getKeybindings) {
|
||||
kb.doToggleTick()
|
||||
kb.doToggleTick
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -3,12 +3,20 @@ package net.machinemuse.powersuits.event
|
|||
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.machinemuse.api.ModuleManager
|
||||
import net.machinemuse.general.gui.clickable.{ClickableKeybinding, ClickableModule}
|
||||
import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect}
|
||||
import net.machinemuse.numina.render.{MuseIconUtils, MuseTextureUtils}
|
||||
import net.machinemuse.powersuits.common.Config
|
||||
import net.machinemuse.powersuits.control.KeybindManager
|
||||
import net.machinemuse.powersuits.powermodule.misc.BinocularsModule
|
||||
import net.machinemuse.powersuits.powermodule.movement.{FlightControlModule, GliderModule, JetBootsModule, JetPackModule}
|
||||
import net.machinemuse.utils.MuseItemUtils
|
||||
import net.machinemuse.utils.render.MuseRenderer
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.ScaledResolution
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraftforge.client.event.{FOVUpdateEvent, RenderPlayerEvent, RenderWorldLastEvent, TextureStitchEvent}
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType
|
||||
import net.minecraftforge.client.event._
|
||||
|
||||
object RenderEventHandler {
|
||||
private[event] var ownFly: Boolean = false
|
||||
|
@ -49,4 +57,62 @@ class RenderEventHandler {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent def onPostRenderGameOverlayEvent(e: RenderGameOverlayEvent.Post) {
|
||||
e.`type` match {
|
||||
// case ElementType.ALL =>
|
||||
// case ElementType.HELMET =>
|
||||
// case ElementType.PORTAL =>
|
||||
// case ElementType.CROSSHAIRS =>
|
||||
// case ElementType.BOSSHEALTH =>
|
||||
// case ElementType.ARMOR =>
|
||||
// case ElementType.HEALTH =>
|
||||
// case ElementType.FOOD =>
|
||||
// case ElementType.AIR =>
|
||||
case ElementType.HOTBAR => drawKeybindToggles()
|
||||
// case ElementType.EXPERIENCE =>
|
||||
// case ElementType.TEXT =>
|
||||
// case ElementType.HEALTHMOUNT =>
|
||||
// case ElementType.JUMPBAR =>
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
|
||||
val frame = new DrawableMuseRect(Config.keybindHUDx, Config.keybindHUDy, Config.keybindHUDx + 16, Config.keybindHUDy + 16, true, Colour.DARKGREEN.withAlpha(0.2), Colour.GREEN.withAlpha(0.2))
|
||||
|
||||
def drawKeybindToggles(): Unit = {
|
||||
if(Config.keybindHUDon)
|
||||
for {
|
||||
mc <- Option(Minecraft.getMinecraft)
|
||||
player <- Option(mc.thePlayer)
|
||||
} {
|
||||
val screen = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight)
|
||||
frame.setLeft(Config.keybindHUDx)
|
||||
frame.setTop(Config.keybindHUDy)
|
||||
frame.setBottom(frame.top() + 16)
|
||||
import scala.collection.JavaConverters._
|
||||
for (kb: ClickableKeybinding <- KeybindManager.getKeybindings.asScala) {
|
||||
if (kb.displayOnHUD) {
|
||||
val stringwidth = MuseRenderer.getStringWidth(kb.getLabel)
|
||||
frame.setWidth(stringwidth + kb.getBoundModules.size() * 16)
|
||||
frame.draw()
|
||||
MuseRenderer.drawString(kb.getLabel, frame.left()+1, frame.top()+3, if (kb.toggleval) Colour.RED else Colour.GREEN)
|
||||
var x = frame.left() + stringwidth
|
||||
for (module: ClickableModule <- kb.getBoundModules.asScala) {
|
||||
|
||||
MuseTextureUtils.pushTexture(module.getModule.getStitchedTexture(null))
|
||||
var active = false
|
||||
for (stack <- MuseItemUtils.modularItemsEquipped(player).asScala)
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getModule.getDataName))
|
||||
active = true
|
||||
MuseIconUtils.drawIconAt(x, frame.top, module.getModule.getIcon(null), if (active) Colour.WHITE else Colour.DARKGREY.withAlpha(0.5))
|
||||
MuseTextureUtils.popTexture()
|
||||
x += 16
|
||||
}
|
||||
frame.setTop(frame.top() + 16)
|
||||
frame.setBottom(frame.top() + 16)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package net.machinemuse.powersuits.item
|
||||
|
||||
import com.google.common.collect.Multimap
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.machinemuse.api.{IModularItem, ArmorTraits, ModuleManager}
|
||||
import net.machinemuse.numina.geometry.Colour
|
||||
|
@ -87,6 +88,8 @@ abstract class ItemPowerArmor(renderIndex: Int, armorType: Int)
|
|||
model
|
||||
}
|
||||
|
||||
override def getAttributeModifiers(stack: ItemStack): Multimap[_, _] = super.getAttributeModifiers(stack)
|
||||
|
||||
override def getItemEnchantability: Int = {
|
||||
return 0
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue