Finished XML reader in Java. Builds and runs again.
This commit is contained in:
parent
f1ad3f02d8
commit
e7392b29d2
|
@ -53,21 +53,23 @@ public class CosmeticGui extends MuseGui {
|
|||
Colour.DARKBLUE.withAlpha(0.8F));
|
||||
frames.add(renderframe);
|
||||
|
||||
ColourPickerFrame colourpicker = new ColourPickerFrame(
|
||||
new MuseRect(absX(0.18f), absY(-0.95f),
|
||||
absX(0.95f), absY(-0.025f)),
|
||||
Colour.LIGHTBLUE.withAlpha(0.8F),
|
||||
Colour.DARKBLUE.withAlpha(0.8F),
|
||||
itemSelect);
|
||||
frames.add(colourpicker);
|
||||
//FIXME!!!!
|
||||
|
||||
PartManipContainer partframe = new PartManipContainer(
|
||||
itemSelect, colourpicker,
|
||||
new MusePoint2D(absX(-0.95F), absY(0.025f)),
|
||||
new MusePoint2D(absX(+0.95F), absY(0.95f)),
|
||||
Colour.LIGHTBLUE.withAlpha(0.8F),
|
||||
Colour.DARKBLUE.withAlpha(0.8F));
|
||||
frames.add(partframe);
|
||||
// ColourPickerFrame colourpicker = new ColourPickerFrame(
|
||||
// new MuseRect(absX(0.18f), absY(-0.95f),
|
||||
// absX(0.95f), absY(-0.025f)),
|
||||
// Colour.LIGHTBLUE.withAlpha(0.8F),
|
||||
// Colour.DARKBLUE.withAlpha(0.8F),
|
||||
// itemSelect);
|
||||
// frames.add(colourpicker);
|
||||
//
|
||||
// PartManipContainer partframe = new PartManipContainer(
|
||||
// itemSelect, colourpicker,
|
||||
// new MusePoint2D(absX(-0.95F), absY(0.025f)),
|
||||
// new MusePoint2D(absX(+0.95F), absY(0.95f)),
|
||||
// Colour.LIGHTBLUE.withAlpha(0.8F),
|
||||
// Colour.DARKBLUE.withAlpha(0.8F));
|
||||
// frames.add(partframe);
|
||||
|
||||
TabSelectFrame tabFrame = new TabSelectFrame(
|
||||
player,
|
||||
|
|
|
@ -32,15 +32,15 @@ public class RenderPart extends ModelRenderer {
|
|||
NBTTagCompound renderSpec = ((IArmorModel)(ArmorModelInstance.getInstance())).getRenderSpec();
|
||||
int[] colours = renderSpec.getIntArray("colours");
|
||||
for (NBTTagCompound nbt : NBTTagAccessor.getValues(renderSpec)) {
|
||||
Option<ModelPartSpec> part = ModelRegistry.getPart(nbt);
|
||||
ModelPartSpec part = ModelRegistry.getInstance().getPart(nbt);
|
||||
/* checks for None TODO: Null check for Java port.*/
|
||||
if (part.isDefined()) {
|
||||
if (part.get().slot() == ((IArmorModel)(ArmorModelInstance.getInstance())).getVisibleSection() && part.get().morph().apply(ArmorModelInstance.getInstance()) == parent) {
|
||||
if (part !=null) {
|
||||
if (part.slot == ((IArmorModel)(ArmorModelInstance.getInstance())).getVisibleSection() && part.morph.apply(ArmorModelInstance.getInstance()) == parent) {
|
||||
float prevBrightX = OpenGlHelper.lastBrightnessX;
|
||||
float prevBrightY = OpenGlHelper.lastBrightnessY;
|
||||
|
||||
// GLOW stuff on
|
||||
if (part.get().getGlow(nbt)) {
|
||||
if (part.getGlow(nbt)) {
|
||||
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);
|
||||
|
@ -48,20 +48,20 @@ public class RenderPart extends ModelRenderer {
|
|||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
MuseTextureUtils.bindTexture(part.get().getTexture(nbt));
|
||||
MuseTextureUtils.bindTexture(part.getTexture(nbt));
|
||||
applyTransform();
|
||||
|
||||
int ix = part.get().getColourIndex(nbt);
|
||||
int ix = part.getColourIndex(nbt);
|
||||
if (ix < colours.length && ix >= 0) {
|
||||
Colour.doGLByInt(colours[ix]);
|
||||
}
|
||||
part.get().modelSpec().applyOffsetAndRotation(); // not yet implemented
|
||||
part.get().modelSpec().model().renderPart(part.get().partName());
|
||||
part.modelSpec.applyOffsetAndRotation(); // not yet implemented
|
||||
part.modelSpec.model.renderPart(part.partName);
|
||||
Colour.WHITE.doGL();
|
||||
GL11.glPopMatrix();
|
||||
|
||||
// GLOW stuff off
|
||||
if (part.get().getGlow(nbt)) {
|
||||
if (part.getGlow(nbt)) {
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevBrightX, prevBrightY);
|
||||
GL11.glPopAttrib();
|
||||
}
|
||||
|
|
|
@ -1,38 +1,33 @@
|
|||
//package net.machinemuse.general.gui.frame;
|
||||
//
|
||||
//import com.google.common.collect.Sets;
|
||||
//import net.minecraft.util.StatCollector;
|
||||
//import net.machinemuse.numina.geometry.MusePoint2D;
|
||||
//import net.machinemuse.numina.general.MuseLogger;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.Arrays;
|
||||
//import java.util.List;
|
||||
//import net.machinemuse.utils.render.GuiIcons;
|
||||
//import org.apache.commons.lang3.ArrayUtils;
|
||||
//import scala.Predef$;
|
||||
//import scala.collection.mutable.Buffer$;
|
||||
//import scala.collection.mutable.Buffer;
|
||||
//import net.minecraft.nbt.NBTBase;
|
||||
//import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
//import net.minecraft.item.Item;
|
||||
//import net.minecraft.nbt.NBTTagCompound;
|
||||
//import net.machinemuse.numina.network.MusePacket;
|
||||
//import net.machinemuse.numina.network.PacketSender;
|
||||
//import net.minecraft.entity.player.EntityPlayer;
|
||||
//import net.machinemuse.powersuits.network.packets.MusePacketColourInfo;
|
||||
//import net.minecraft.client.Minecraft;
|
||||
//import scala.reflect.ClassTag$;
|
||||
//import scala.Array$;
|
||||
//import scala.runtime.BoxedUnit;
|
||||
//import net.machinemuse.powersuits.item.ItemPowerArmor;
|
||||
//import scala.Some;
|
||||
//import net.machinemuse.utils.MuseItemUtils;
|
||||
//import scala.None$;
|
||||
//import net.minecraft.nbt.NBTTagIntArray;
|
||||
//import scala.Function0;
|
||||
//import scala.Function1;
|
||||
//import scala.Option;
|
||||
//import net.machinemuse.general.gui.clickable.ClickableSlider;
|
||||
//import net.machinemuse.numina.geometry.DrawableMuseRect;
|
||||
//import net.machinemuse.numina.geometry.Colour;
|
||||
//import net.machinemuse.numina.geometry.MuseRect;
|
||||
//import scala.reflect.ScalaSignature;
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
|
@ -51,8 +46,8 @@
|
|||
// private final ClickableSlider gslider;
|
||||
// private final ClickableSlider bslider;
|
||||
// private ClickableSlider selectedSlider;
|
||||
// private int selectedColour;
|
||||
// private int decrAbove;
|
||||
// public int selectedColour;
|
||||
// public int decrAbove;
|
||||
//
|
||||
// public ColourPickerFrame(final MuseRect borderRef, final Colour insideColour, final Colour borderColour, final ItemSelectionFrame itemSelector) {
|
||||
// this.borderRef = borderRef;
|
||||
|
@ -60,93 +55,91 @@
|
|||
// this.borderColour = borderColour;
|
||||
// this.itemSelector = itemSelector;
|
||||
// this.border = new DrawableMuseRect(borderRef, insideColour, borderColour);
|
||||
// this.rslider = new ClickableSlider(new MusePoint2D(this.border().centerx(), this.border().top() + 8), this.border().width() - 10, StatCollector.translateToLocal("gui.red"));
|
||||
// this.gslider = new ClickableSlider(new MusePoint2D(this.border().centerx(), this.border().top() + 24), this.border().width() - 10, StatCollector.translateToLocal("gui.green"));
|
||||
// this.bslider = new ClickableSlider(new MusePoint2D(this.border().centerx(), this.border().top() + 40), this.border().width() - 10, StatCollector.translateToLocal("gui.blue"));
|
||||
// this.rslider = new ClickableSlider(new MusePoint2D(this.border.centerx(), this.border.top() + 8), this.border.width() - 10, StatCollector.translateToLocal("gui.red"));
|
||||
// this.gslider = new ClickableSlider(new MusePoint2D(this.border.centerx(), this.border.top() + 24), this.border.width() - 10, StatCollector.translateToLocal("gui.green"));
|
||||
// this.bslider = new ClickableSlider(new MusePoint2D(this.border.centerx(), this.border.top() + 40), this.border.width() - 10, StatCollector.translateToLocal("gui.blue"));
|
||||
// this.selectedSlider = null;
|
||||
// this.selectedColour = 0;
|
||||
// this.decrAbove = -1;
|
||||
// }
|
||||
//
|
||||
// public Colour borderColour() {
|
||||
// return this.borderColour;
|
||||
// }
|
||||
//// public Colour borderColour() {
|
||||
//// return this.borderColour;
|
||||
//// }
|
||||
////
|
||||
//// public ItemSelectionFrame itemSelector() {
|
||||
//// return this.itemSelector;
|
||||
//// }
|
||||
////
|
||||
//// public DrawableMuseRect border() {
|
||||
//// return this.border;
|
||||
//// }
|
||||
////
|
||||
//// public ClickableSlider rslider() {
|
||||
//// return this.rslider;
|
||||
//// }
|
||||
////
|
||||
//// public ClickableSlider gslider() {
|
||||
//// return this.gslider;
|
||||
//// }
|
||||
////
|
||||
//// public ClickableSlider bslider() {
|
||||
//// return this.bslider;
|
||||
//// }
|
||||
//
|
||||
// public ItemSelectionFrame itemSelector() {
|
||||
// return this.itemSelector;
|
||||
// }
|
||||
//
|
||||
// public DrawableMuseRect border() {
|
||||
// return this.border;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider rslider() {
|
||||
// return this.rslider;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider gslider() {
|
||||
// return this.gslider;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider bslider() {
|
||||
// return this.bslider;
|
||||
// }
|
||||
//
|
||||
// public int selectedColour() {
|
||||
// return this.selectedColour;
|
||||
// }
|
||||
//// public int selectedColour() {
|
||||
//// return this.selectedColour;
|
||||
//// }
|
||||
//
|
||||
// public int[] colours() {
|
||||
// return (getOrCreateColourTag() != null) ? getOrCreateColourTag().func_150302_c() /*getIntArray()*/ : new int[0];
|
||||
// }
|
||||
//
|
||||
// public NBTTagIntArray getOrCreateColourTag() {
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// if (this.itemSelector.getSelectedItem() == null) {
|
||||
// return null;
|
||||
// }
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector.getSelectedItem().getItem());
|
||||
// Some some;
|
||||
// if (renderSpec.hasKey("colours") && renderSpec.getTag("colours") instanceof NBTTagIntArray) {
|
||||
// some = new Some((Object)renderSpec.getTag("colours"));
|
||||
// return (NBTTagIntArray) renderSpec.getTag("colours");
|
||||
// }
|
||||
// else {
|
||||
// final Item item = this.itemSelector().getSelectedItem().getItem().getItem();
|
||||
// final Item item = this.itemSelector.getSelectedItem().getItem().getItem();
|
||||
// if (item instanceof ItemPowerArmor) {
|
||||
// final ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
|
||||
// final int[] intArray = { itemPowerArmor.getColorFromItemStack(this.itemSelector().getSelectedItem().getItem()).getInt(), itemPowerArmor.getGlowFromItemStack(this.itemSelector().getSelectedItem().getItem()).getInt() };
|
||||
// ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
|
||||
// int[] intArray = { itemPowerArmor.getColorFromItemStack(this.itemSelector.getSelectedItem().getItem()).getInt(),
|
||||
// itemPowerArmor.getGlowFromItemStack(this.itemSelector.getSelectedItem().getItem()).getInt() };
|
||||
// renderSpec.setIntArray("colours", intArray);
|
||||
// final BoxedUnit unit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// else {
|
||||
// final int[] intArray2 = (int[])Array$.MODULE$.empty(ClassTag$.MODULE$.Int());
|
||||
// int[] intArray2 = new int[0];
|
||||
// renderSpec.setIntArray("colours", intArray2);
|
||||
// final BoxedUnit unit2 = BoxedUnit.UNIT;
|
||||
// }
|
||||
// final EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector.getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// some = new Some((Object)renderSpec.getTag("colours"));
|
||||
// return (NBTTagIntArray) renderSpec.getTag("colours");
|
||||
// }
|
||||
// return (Option<NBTTagIntArray>)some;
|
||||
// }
|
||||
//
|
||||
// public Option<NBTTagIntArray> setColourTagMaybe(final int[] newarray) {
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// return (Option<NBTTagIntArray>)None$.MODULE$;
|
||||
// public NBTTagIntArray setColourTagMaybe(final int[] newarray) {
|
||||
// if (this.itemSelector.getSelectedItem() == null) {
|
||||
// return null;
|
||||
// }
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector.getSelectedItem().getItem());
|
||||
// renderSpec.setTag("colours", (NBTBase)new NBTTagIntArray(newarray));
|
||||
// final EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector.getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// return (Option<NBTTagIntArray>)new Some((Object)renderSpec.getTag("colours"));
|
||||
// return (NBTTagIntArray) renderSpec.getTag("colours");
|
||||
// }
|
||||
//
|
||||
// public Buffer<Object> importColours() {
|
||||
// final Buffer colours = (Buffer)Buffer$.MODULE$.empty();
|
||||
// return (Buffer<Object>)colours;
|
||||
// public ArrayList<Integer> importColours() {
|
||||
// return new ArrayList<Integer>();
|
||||
// }
|
||||
//
|
||||
// public void refreshColours() {
|
||||
|
@ -162,7 +155,7 @@
|
|||
// if (this.selectedSlider != null) {
|
||||
// this.selectedSlider.setValueByX(mousex);
|
||||
// if (colours().length > selectedColour) {
|
||||
// colours(selectedColour) = Colour.getInt(rslider.value(), gslider.value(), bslider.value(), 1.0);
|
||||
// colours()[selectedColour] = Colour.getInt(rslider.value(), gslider.value(), bslider.value(), 1.0);
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem().inventorySlot, colours()));
|
||||
|
@ -170,32 +163,19 @@
|
|||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// // def update(mousex: Double, mousey: Double) {
|
||||
//// selectedSlider.foreach(s => {
|
||||
//// s.setValueByX(mousex)
|
||||
//// if (colours.size > selectedColour) {
|
||||
//// colours(selectedColour) = Colour.getInt(rslider.value, gslider.value, bslider.value, 1.0)
|
||||
//// val player = Minecraft.getMinecraft.thePlayer
|
||||
//// if (player.worldObj.isRemote)
|
||||
//// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
//// }
|
||||
//// })
|
||||
//// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void draw() {
|
||||
// this.border().draw();
|
||||
// this.rslider().draw();
|
||||
// this.gslider().draw();
|
||||
// this.bslider().draw();
|
||||
// Predef$.MODULE$.intArrayOps(this.colours()).indices().foreach((Function1)new ColourPickerFrame$$anonfun$draw.ColourPickerFrame$$anonfun$draw$1(this));
|
||||
// new GuiIcons.ArmourColourPatch(this.border().left() + 8 + Predef$.MODULE$.intArrayOps(this.colours()).size() * 8, this.border().bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.SelectedArmorOverlay(this.border().left() + 8 + this.selectedColour() * 8, this.border().bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.MinusSign(this.border().left() + 8 + this.selectedColour() * 8, this.border().bottom() - 24, Colour.RED, null, null, null, null);
|
||||
// new GuiIcons.PlusSign(this.border().left() + 8 + Predef$.MODULE$.intArrayOps(this.colours()).size() * 8, this.border().bottom() - 16, Colour.GREEN, null, null, null, null);
|
||||
// this.border.draw();
|
||||
// this.rslider.draw();
|
||||
// this.gslider.draw();
|
||||
// this.bslider.draw();
|
||||
// for (int i : colours()) {
|
||||
// new GuiIcons.ArmourColourPatch(border.left() + 8 + i * 8, border.bottom() - 16, new Colour(colours()[i]), null, null, null, null);
|
||||
// }
|
||||
// new GuiIcons.ArmourColourPatch(this.border.left() + 8 + Predef$.MODULE$.intArrayOps(this.colours()).size() * 8, this.border.bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.SelectedArmorOverlay(this.border.left() + 8 + this.selectedColour * 8, this.border.bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.MinusSign(this.border.left() + 8 + this.selectedColour * 8, this.border.bottom() - 24, Colour.RED, null, null, null, null);
|
||||
// new GuiIcons.PlusSign(this.border.left() + 8 + this.colours().length * 8, this.border.bottom() - 16, Colour.GREEN, null, null, null, null);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
|
@ -205,45 +185,48 @@
|
|||
//
|
||||
// public void onSelectColour(final int i) {
|
||||
// final Colour c = new Colour(this.colours()[i]);
|
||||
// this.rslider().setValue(c.r);
|
||||
// this.gslider().setValue(c.g);
|
||||
// this.bslider().setValue(c.b);
|
||||
// this.selectedColour_$eq(i);
|
||||
// this.rslider.setValue(c.r);
|
||||
// this.gslider.setValue(c.g);
|
||||
// this.bslider.setValue(c.b);
|
||||
// this.selectedColour = i;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseDown(final double x, final double y, final int button) {
|
||||
// if (this.rslider().hitBox(x, y)) {
|
||||
// this.selectedSlider = this.rslider();
|
||||
// }
|
||||
// else if (this.gslider().hitBox(x, y)) {
|
||||
// this.selectedSlider = this.gslider();
|
||||
// }
|
||||
// else if (this.bslider().hitBox(x, y)) {
|
||||
// this.selectedSlider = this.bslider();
|
||||
// }
|
||||
// else {
|
||||
// if (this.rslider.hitBox(x, y))
|
||||
// this.selectedSlider = this.rslider;
|
||||
// else if (this.gslider.hitBox(x, y))
|
||||
// this.selectedSlider = this.gslider;
|
||||
// else if (this.bslider.hitBox(x, y))
|
||||
// this.selectedSlider = this.bslider;
|
||||
// else
|
||||
// this.selectedSlider = null;
|
||||
// }
|
||||
// if (y > this.border().bottom() - 16 && y < this.border().bottom() - 8) {
|
||||
// final int colourCol = (int)(x - this.border().left() - 8.0) / 8;
|
||||
// if (colourCol >= 0 && colourCol < Predef$.MODULE$.intArrayOps(this.colours()).size()) {
|
||||
//
|
||||
// // add
|
||||
// if (y > this.border.bottom() - 16 && y < this.border.bottom() - 8) {
|
||||
// int colourCol = (int)(x - this.border.left() - 8.0) / 8;
|
||||
// if (colourCol >= 0 && colourCol < colours().length) {
|
||||
// this.onSelectColour(colourCol);
|
||||
// final BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// else if (colourCol == Predef$.MODULE$.intArrayOps(this.colours()).size()) {
|
||||
// } else if (colourCol == this.colours().length) {
|
||||
// MuseLogger.logDebug("Adding");
|
||||
// this.getOrCreateColourTag().map((Function1)new ColourPickerFrame$$anonfun$onMouseDown.ColourPickerFrame$$anonfun$onMouseDown$1(this));
|
||||
// }
|
||||
// else {
|
||||
// final BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// setColourTagMaybe(ArrayUtils.add(getIntArray(getOrCreateColourTag()), Colour.WHITE.getInt()));
|
||||
// }
|
||||
// }
|
||||
// else {
|
||||
// final BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// if (y > this.border().bottom() - 24 && y < this.border().bottom() - 16 && x > this.border().left() + 8 + this.selectedColour() * 8 && x < this.border().left() + 16 + this.selectedColour() * 8) {
|
||||
// this.getOrCreateColourTag().foreach((Function1)new ColourPickerFrame$$anonfun$onMouseDown.ColourPickerFrame$$anonfun$onMouseDown$2(this));
|
||||
//
|
||||
// // remove
|
||||
// if (y > border.bottom() - 24 && y < border.bottom() - 16 && x > border.left() + 8 + selectedColour * 8 && x < border.left() + 16 + selectedColour * 8) {
|
||||
//
|
||||
// NBTTagIntArray nbtTagIntArray = getOrCreateColourTag();
|
||||
// if (getIntArray(nbtTagIntArray).length > 1) {
|
||||
// setColourTagMaybe( getIntArray(nbtTagIntArray) diff ArrayUtils.add(getIntArray(nbtTagIntArray),(selectedColour)));
|
||||
// decrAbove = selectedColour;
|
||||
// if (selectedColour == getIntArray(nbtTagIntArray).length) {
|
||||
// selectedColour = selectedColour - 1;
|
||||
// }
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem().inventorySlot, nbtTagIntArray.func_150302_c()));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
|
|
@ -1,159 +1,169 @@
|
|||
package net.machinemuse.general.gui.frame
|
||||
|
||||
import java.util
|
||||
|
||||
import net.machinemuse.general.gui.clickable.ClickableSlider
|
||||
import net.machinemuse.numina.general.MuseLogger
|
||||
import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect, MusePoint2D, MuseRect}
|
||||
import net.machinemuse.numina.network.PacketSender
|
||||
import net.machinemuse.powersuits.item.ItemPowerArmor
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketColourInfo
|
||||
import net.machinemuse.utils.MuseItemUtils
|
||||
import net.machinemuse.utils.render.GuiIcons._
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.nbt.NBTTagIntArray
|
||||
import net.minecraft.util.StatCollector
|
||||
|
||||
import scala.collection.mutable
|
||||
|
||||
/**
|
||||
* Author: MachineMuse (Claire Semple)
|
||||
* Created: 4:19 AM, 03/05/13
|
||||
*/
|
||||
class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val borderColour: Colour, val itemSelector: ItemSelectionFrame) extends IGuiFrame {
|
||||
val border = new DrawableMuseRect(borderRef, insideColour, borderColour)
|
||||
val rslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 8), border.width - 10, StatCollector.translateToLocal("gui.red"))
|
||||
val gslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 24), border.width - 10, StatCollector.translateToLocal("gui.green"))
|
||||
val bslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 40), border.width - 10, StatCollector.translateToLocal("gui.blue"))
|
||||
|
||||
def colours: Array[Int] = getOrCreateColourTag.map(e => e.func_150302_c /*getIntArray()*/ ).getOrElse(Array.empty)
|
||||
|
||||
var selectedSlider: Option[ClickableSlider] = None
|
||||
var selectedColour: Int = 0
|
||||
var decrAbove: Int = -1
|
||||
|
||||
def getOrCreateColourTag: Option[NBTTagIntArray] = {
|
||||
if (itemSelector.getSelectedItem == null) return None
|
||||
val renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem.getItem)
|
||||
if (renderSpec.hasKey("colours") && renderSpec.getTag("colours").isInstanceOf[NBTTagIntArray]) Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
|
||||
else {
|
||||
itemSelector.getSelectedItem.getItem.getItem match {
|
||||
case itembase: ItemPowerArmor =>
|
||||
val intArray: Array[Int] = Array(itembase.getColorFromItemStack(itemSelector.getSelectedItem.getItem).getInt, itembase.getGlowFromItemStack(itemSelector.getSelectedItem.getItem).getInt)
|
||||
renderSpec.setIntArray("colours", intArray)
|
||||
case _ =>
|
||||
val intArray: Array[Int] = Array.empty
|
||||
renderSpec.setIntArray("colours", intArray)
|
||||
}
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
if (player.worldObj.isRemote) {
|
||||
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
}
|
||||
Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
|
||||
}
|
||||
}
|
||||
|
||||
def setColourTagMaybe(newarray: Array[Int]): Option[NBTTagIntArray] = {
|
||||
if (itemSelector.getSelectedItem == null) return None
|
||||
val renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem.getItem)
|
||||
renderSpec.setTag("colours", new NBTTagIntArray(newarray))
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
if (player.worldObj.isRemote)
|
||||
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
|
||||
}
|
||||
|
||||
def importColours = {
|
||||
val colours = mutable.Buffer.empty[Int]
|
||||
colours
|
||||
}
|
||||
|
||||
def refreshColours() {
|
||||
// getOrCreateColourTag.map(coloursTag => {
|
||||
// val colourints: Array[Int] = coloursTag.intArray
|
||||
// val colourset: HashSet[Int] = HashSet.empty ++ colours ++ colourints
|
||||
// val colourarray = colourset.toArray
|
||||
// coloursTag.intArray = colourarray
|
||||
// })
|
||||
}
|
||||
|
||||
def onMouseUp(x: Double, y: Double, button: Int) {
|
||||
selectedSlider = None
|
||||
}
|
||||
|
||||
def update(mousex: Double, mousey: Double) {
|
||||
selectedSlider.foreach(s => {
|
||||
s.setValueByX(mousex)
|
||||
if (colours.size > selectedColour) {
|
||||
colours(selectedColour) = Colour.getInt(rslider.value, gslider.value, bslider.value, 1.0)
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
if (player.worldObj.isRemote)
|
||||
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
def draw() {
|
||||
border.draw()
|
||||
rslider.draw()
|
||||
gslider.draw()
|
||||
bslider.draw()
|
||||
for (i <- colours.indices) {
|
||||
new ArmourColourPatch(border.left + 8 + i * 8, border.bottom - 16, new Colour(colours(i)), null, null, null, null)
|
||||
}
|
||||
new ArmourColourPatch(border.left + 8 + colours.size * 8, border.bottom - 16, Colour.WHITE, null, null, null, null)
|
||||
new SelectedArmorOverlay(border.left + 8 + selectedColour * 8, border.bottom - 16, Colour.WHITE, null, null, null, null)
|
||||
new MinusSign(border.left + 8 + selectedColour * 8, border.bottom - 24, Colour.RED, null, null, null, null)
|
||||
new PlusSign(border.left + 8 + colours.size * 8, border.bottom - 16, Colour.GREEN, null, null, null, null)
|
||||
}
|
||||
|
||||
def getToolTip(x: Int, y: Int): util.List[String] = null
|
||||
|
||||
def onSelectColour(i: Int) {
|
||||
val c: Colour = new Colour(colours(i))
|
||||
rslider.setValue(c.r)
|
||||
gslider.setValue(c.g)
|
||||
bslider.setValue(c.b)
|
||||
selectedColour = i
|
||||
}
|
||||
|
||||
def onMouseDown(x: Double, y: Double, button: Int) {
|
||||
if (rslider.hitBox(x, y)) {
|
||||
selectedSlider = Some(rslider)
|
||||
} else if (gslider.hitBox(x, y)) {
|
||||
selectedSlider = Some(gslider)
|
||||
} else if (bslider.hitBox(x, y)) {
|
||||
selectedSlider = Some(bslider)
|
||||
} else {
|
||||
selectedSlider = None
|
||||
}
|
||||
// add
|
||||
if (y > border.bottom - 16 && y < border.bottom - 8) {
|
||||
val colourCol: Int = (x - border.left - 8.0).toInt / 8
|
||||
if (colourCol >= 0 && colourCol < colours.size) {
|
||||
onSelectColour(colourCol.toInt)
|
||||
} else if (colourCol == colours.size) {
|
||||
MuseLogger.logDebug("Adding")
|
||||
getOrCreateColourTag.map(e => {setColourTagMaybe(getIntArray(e) :+ Colour.WHITE.getInt)}) // append White
|
||||
|
||||
}
|
||||
}
|
||||
// remove
|
||||
if (y > border.bottom - 24 && y < border.bottom - 16 && x > border.left + 8 + selectedColour * 8 && x < border.left + 16 + selectedColour * 8) {
|
||||
getOrCreateColourTag.foreach(e => {
|
||||
if (getIntArray(e).size > 1) {
|
||||
setColourTagMaybe( getIntArray(e) diff Array(getIntArray(e)(selectedColour)))
|
||||
decrAbove = selectedColour
|
||||
if (selectedColour == getIntArray(e).size) {
|
||||
selectedColour = selectedColour - 1
|
||||
}
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
if (player.worldObj.isRemote)
|
||||
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, e.func_150302_c))
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
def getIntArray(e:NBTTagIntArray) = e.func_150302_c()
|
||||
}
|
||||
//package net.machinemuse.general.gui.frame
|
||||
//
|
||||
//import java.util
|
||||
//
|
||||
//import net.machinemuse.general.gui.clickable.ClickableSlider
|
||||
//import net.machinemuse.numina.general.MuseLogger
|
||||
//import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect, MusePoint2D, MuseRect}
|
||||
//import net.machinemuse.numina.network.PacketSender
|
||||
//import net.machinemuse.powersuits.item.ItemPowerArmor
|
||||
//import net.machinemuse.powersuits.network.packets.MusePacketColourInfo
|
||||
//import net.machinemuse.utils.MuseItemUtils
|
||||
//import net.machinemuse.utils.render.GuiIcons._
|
||||
//import net.minecraft.client.Minecraft
|
||||
//import net.minecraft.nbt.NBTTagIntArray
|
||||
//import net.minecraft.util.StatCollector
|
||||
//
|
||||
//import scala.collection.mutable
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 4:19 AM, 03/05/13
|
||||
// */
|
||||
//class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val borderColour: Colour, val itemSelector: ItemSelectionFrame) extends IGuiFrame {
|
||||
// val border = new DrawableMuseRect(borderRef, insideColour, borderColour)
|
||||
// val rslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 8), border.width - 10, StatCollector.translateToLocal("gui.red"))
|
||||
// val gslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 24), border.width - 10, StatCollector.translateToLocal("gui.green"))
|
||||
// val bslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 40), border.width - 10, StatCollector.translateToLocal("gui.blue"))
|
||||
//
|
||||
// def colours: Array[Int] = getOrCreateColourTag.map(e => e.func_150302_c /*getIntArray()*/ ).getOrElse(Array.empty)
|
||||
//
|
||||
// var selectedSlider: Option[ClickableSlider] = None
|
||||
// var selectedColour: Int = 0
|
||||
// var decrAbove: Int = -1
|
||||
//
|
||||
// def getOrCreateColourTag: Option[NBTTagIntArray] = {
|
||||
// if (itemSelector.getSelectedItem == null) return None
|
||||
// val renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem.getItem)
|
||||
// if (renderSpec.hasKey("colours") && renderSpec.getTag("colours").isInstanceOf[NBTTagIntArray]) Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
|
||||
// else {
|
||||
// itemSelector.getSelectedItem.getItem.getItem match {
|
||||
// case itembase: ItemPowerArmor =>
|
||||
// val intArray: Array[Int] = Array(itembase.getColorFromItemStack(itemSelector.getSelectedItem.getItem).getInt, itembase.getGlowFromItemStack(itemSelector.getSelectedItem.getItem).getInt)
|
||||
// renderSpec.setIntArray("colours", intArray)
|
||||
// case _ =>
|
||||
// val intArray: Array[Int] = Array.empty
|
||||
// renderSpec.setIntArray("colours", intArray)
|
||||
// }
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
// }
|
||||
// Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def setColourTagMaybe(newarray: Array[Int]): Option[NBTTagIntArray] = {
|
||||
// if (itemSelector.getSelectedItem == null) return None
|
||||
// val renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem.getItem)
|
||||
// renderSpec.setTag("colours", new NBTTagIntArray(newarray))
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
// Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
|
||||
// }
|
||||
//
|
||||
// def importColours = {
|
||||
// val colours = mutable.Buffer.empty[Int]
|
||||
// colours
|
||||
// }
|
||||
//
|
||||
// def refreshColours() {
|
||||
// // getOrCreateColourTag.map(coloursTag => {
|
||||
// // val colourints: Array[Int] = coloursTag.intArray
|
||||
// // val colourset: HashSet[Int] = HashSet.empty ++ colours ++ colourints
|
||||
// // val colourarray = colourset.toArray
|
||||
// // coloursTag.intArray = colourarray
|
||||
// // })
|
||||
// }
|
||||
//
|
||||
// def onMouseUp(x: Double, y: Double, button: Int) {
|
||||
// selectedSlider = None
|
||||
// }
|
||||
//
|
||||
// def update(mousex: Double, mousey: Double) {
|
||||
// selectedSlider.foreach(s => {
|
||||
// s.setValueByX(mousex)
|
||||
// if (colours.size > selectedColour) {
|
||||
// colours(selectedColour) = Colour.getInt(rslider.value, gslider.value, bslider.value, 1.0)
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
//
|
||||
// def draw() {
|
||||
// border.draw()
|
||||
// rslider.draw()
|
||||
// gslider.draw()
|
||||
// bslider.draw()
|
||||
// for (i <- colours.indices) {
|
||||
// new ArmourColourPatch(border.left + 8 + i * 8, border.bottom - 16, new Colour(colours(i)), null, null, null, null)
|
||||
// }
|
||||
// new ArmourColourPatch(border.left + 8 + colours.size * 8, border.bottom - 16, Colour.WHITE, null, null, null, null)
|
||||
// new SelectedArmorOverlay(border.left + 8 + selectedColour * 8, border.bottom - 16, Colour.WHITE, null, null, null, null)
|
||||
// new MinusSign(border.left + 8 + selectedColour * 8, border.bottom - 24, Colour.RED, null, null, null, null)
|
||||
// new PlusSign(border.left + 8 + colours.size * 8, border.bottom - 16, Colour.GREEN, null, null, null, null)
|
||||
// }
|
||||
//
|
||||
// def getToolTip(x: Int, y: Int): util.List[String] = null
|
||||
//
|
||||
// def onSelectColour(i: Int) {
|
||||
// val c: Colour = new Colour(colours(i))
|
||||
// rslider.setValue(c.r)
|
||||
// gslider.setValue(c.g)
|
||||
// bslider.setValue(c.b)
|
||||
// selectedColour = i
|
||||
// }
|
||||
//
|
||||
// def onMouseDown(x: Double, y: Double, button: Int) {
|
||||
// if (rslider.hitBox(x, y)) {
|
||||
// selectedSlider = Some(rslider)
|
||||
// } else if (gslider.hitBox(x, y)) {
|
||||
// selectedSlider = Some(gslider)
|
||||
// } else if (bslider.hitBox(x, y)) {
|
||||
// selectedSlider = Some(bslider)
|
||||
// } else {
|
||||
// selectedSlider = None
|
||||
// }
|
||||
// // add
|
||||
// if (y > border.bottom - 16 && y < border.bottom - 8) {
|
||||
// val colourCol: Int = (x - border.left - 8.0).toInt / 8
|
||||
// if (colourCol >= 0 && colourCol < colours.size) {
|
||||
// onSelectColour(colourCol.toInt)
|
||||
// } else if (colourCol == colours.size) {
|
||||
// MuseLogger.logDebug("Adding")
|
||||
// getOrCreateColourTag.map(e => {setColourTagMaybe(getIntArray(e) :+ Colour.WHITE.getInt)}) // append White
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// // remove
|
||||
// if (y > border.bottom - 24 && y < border.bottom - 16 && x > border.left + 8 + selectedColour * 8 && x < border.left + 16 + selectedColour * 8) {
|
||||
// getOrCreateColourTag.foreach(e => {
|
||||
// if (getIntArray(e).size > 1) {
|
||||
// setColourTagMaybe( getIntArray(e) diff Array(getIntArray(e)(selectedColour)))
|
||||
// decrAbove = selectedColour
|
||||
// if (selectedColour == getIntArray(e).size) {
|
||||
// selectedColour = selectedColour - 1
|
||||
// }
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, e.func_150302_c))
|
||||
// }
|
||||
// })
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// def getIntArray(e:NBTTagIntArray) = e.func_150302_c()
|
||||
//}
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
|
|
@ -0,0 +1,234 @@
|
|||
//package net.machinemuse.general.gui.frame;
|
||||
//
|
||||
//import net.machinemuse.numina.geometry.Colour;
|
||||
//import net.machinemuse.numina.geometry.MusePoint2D;
|
||||
//import net.machinemuse.numina.geometry.MuseRect;
|
||||
//import net.machinemuse.numina.geometry.MuseRelativeRect;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelRegistry;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelSpec;
|
||||
//import org.lwjgl.opengl.GL11;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 6:39 PM, 29/04/13
|
||||
// *
|
||||
// * Ported to Java by lehjr on 11/9/16.
|
||||
// */
|
||||
//public class PartManipContainer extends ScrollableFrame
|
||||
//{
|
||||
// private ItemSelectionFrame itemSelect;
|
||||
// private ColourPickerFrame colourSelect;
|
||||
// private MusePoint2D topleft;
|
||||
// private MusePoint2D bottomright;
|
||||
// private Integer lastItemSlot;
|
||||
// private int lastColour;
|
||||
// private int lastColourIndex;
|
||||
// private List<PartManipSubFrame> modelframes = new ArrayList<>();
|
||||
//
|
||||
// public PartManipContainer(ItemSelectionFrame itemSelect,
|
||||
// ColourPickerFrame colourSelect,
|
||||
// MusePoint2D topleft,
|
||||
// MusePoint2D bottomright,
|
||||
// Colour borderColour,
|
||||
// Colour insideColour) {
|
||||
// super(topleft, bottomright, borderColour, insideColour);
|
||||
//
|
||||
// this.itemSelect = itemSelect;
|
||||
// this.colourSelect = colourSelect;
|
||||
// this.lastItemSlot = null;
|
||||
// this.lastColour = this.getColour();
|
||||
// this.lastColourIndex = this.getColourIndex();
|
||||
// this.modelframes =
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// (Seq<PartManipSubFrame>)((Tuple2)ModelRegistry$.MODULE$.apply().values().$div$colon((Object)new Tuple2((Object)Seq$.MODULE$.empty(), (Object)None$.MODULE$), (Function2)new Serializable() {
|
||||
// public Tuple2<Seq<PartManipSubFrame>, Option<PartManipSubFrame>> apply(Tuple2<Seq<PartManipSubFrame>, Option<PartManipSubFrame>> x0$1, ModelSpec x1$1) {
|
||||
// Tuple2 tuple2 = new Tuple2((Object)x0$1, (Object)x1$1);
|
||||
// if (tuple2 != null) {
|
||||
// Tuple2 tuple3 = (Tuple2)tuple2._1();
|
||||
// ModelSpec modelspec = (ModelSpec)tuple2._2();
|
||||
// if (tuple3 != null) {
|
||||
// Seq frameseq = (Seq)tuple3._1();
|
||||
// Option prev = (Option)tuple3._2();
|
||||
// if (modelspec != null) {
|
||||
// PartManipSubFrame newframe = PartManipContainer.this.createNewFrame(modelspec, (Option<PartManipSubFrame>)prev);
|
||||
// return (Tuple2<Seq<PartManipSubFrame>, Option<PartManipSubFrame>>)new Tuple2(frameseq.$colon$plus((Object)newframe, Seq$.MODULE$.canBuildFrom()), (Object)new Some((Object)newframe));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// throw new MatchError((Object)tuple2);
|
||||
// }
|
||||
// }))._1();
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// public ItemSelectionFrame itemSelect() {
|
||||
// return this.itemSelect;
|
||||
// }
|
||||
//
|
||||
// public ColourPickerFrame colourSelect() {
|
||||
// return this.colourSelect;
|
||||
// }
|
||||
//
|
||||
// public Option<ItemStack> getItem() {
|
||||
// return (Option<ItemStack>)Option$.MODULE$.apply((Object)this.itemSelect().getSelectedItem()).map((Function1)new PartManipContainer$$anonfun$getItem.PartManipContainer$$anonfun$getItem$1(this));
|
||||
// }
|
||||
//
|
||||
// public int getItemSlot() {
|
||||
// return (Option<Object>)Option$.MODULE$.apply((Object)this.itemSelect().getSelectedItem()).map((Function1)new PartManipContainer$$anonfun$getItemSlot.PartManipContainer$$anonfun$getItemSlot$1(this));
|
||||
// }
|
||||
//
|
||||
// public Option<Object> lastItemSlot() {
|
||||
// return this.lastItemSlot;
|
||||
// }
|
||||
//
|
||||
// public void lastItemSlot_$eq(Option<Object> x$1) {
|
||||
// this.lastItemSlot = x$1;
|
||||
// }
|
||||
//
|
||||
// public int getColour() {
|
||||
// Option<ItemStack> item = this.getItem();
|
||||
// None$ module$ = None$.MODULE$;
|
||||
// if (item == null) {
|
||||
// if (module$ == null) {
|
||||
// return Colour.WHITE.getInt();
|
||||
// }
|
||||
// }
|
||||
// else if (item.equals(module$)) {
|
||||
// return Colour.WHITE.getInt();
|
||||
// }
|
||||
// if (this.colourSelect().selectedColour() < Predef$.MODULE$.intArrayOps(this.colourSelect().colours()).size() && this.colourSelect().selectedColour() >= 0) {
|
||||
// return this.colourSelect().colours()[this.colourSelect().selectedColour()];
|
||||
// }
|
||||
// return Colour.WHITE.getInt();
|
||||
// }
|
||||
//
|
||||
// public int lastColour() {
|
||||
// return this.lastColour;
|
||||
// }
|
||||
//
|
||||
// public void lastColour_$eq(int x$1) {
|
||||
// this.lastColour = x$1;
|
||||
// }
|
||||
//
|
||||
// public int getColourIndex() {
|
||||
// return this.colourSelect().selectedColour();
|
||||
// }
|
||||
//
|
||||
// public int lastColourIndex() {
|
||||
// return this.lastColourIndex;
|
||||
// }
|
||||
//
|
||||
// public void lastColourIndex_$eq(int x$1) {
|
||||
// this.lastColourIndex = x$1;
|
||||
// }
|
||||
//
|
||||
// public List<PartManipSubFrame> modelframes() {
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// return this.modelframes;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// val modelframes: Seq[PartManipSubFrame] =
|
||||
// ((Seq.empty[PartManipSubFrame], None: Option[PartManipSubFrame]) /: ModelRegistry.getInstance().apply.values) {
|
||||
// case ((frameseq, prev), modelspec: ModelSpec) => {
|
||||
// val newframe = createNewFrame(modelspec, prev)
|
||||
// (frameseq :+ newframe, Some(newframe))
|
||||
// }
|
||||
//}._1
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// public PartManipSubFrame createNewFrame(ModelSpec modelspec, PartManipSubFrame prev) {
|
||||
// MuseRelativeRect newborder = new MuseRelativeRect(this.topleft.x() + 4, this.topleft.y() + 4, this.bottomright.x(), this.topleft.y() + 10);
|
||||
// newborder.setBelow(prev.border());
|
||||
// return new PartManipSubFrame(modelspec, this.colourSelect(), this.itemSelect(), newborder);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseDown(double x, double y, int button) {
|
||||
// if (button == 0) {
|
||||
// for (PartManipSubFrame frame : modelframes) {
|
||||
// frame.tryMouseClick(x, y + currentscrollpixels);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void update(double mousex, double mousey) {
|
||||
// super.update(mousex, mousey);
|
||||
// if (lastItemSlot != getItemSlot()) {
|
||||
// lastItemSlot = getItemSlot();
|
||||
// colourSelect.refreshColours();
|
||||
//
|
||||
// double x = 0;
|
||||
// for (PartManipSubFrame subframe : modelframes) {
|
||||
// subframe.updateItems();
|
||||
// x += subframe.border().bottom();
|
||||
// }
|
||||
// this.totalsize = (int) x;
|
||||
// }
|
||||
// if (colourSelect.decrAbove() > -1) {
|
||||
// decrAbove(colourSelect.decrAbove());
|
||||
//// colourSelect.decrAbove() = -1;
|
||||
// this.colourSelect().decrAbove_$eq(-1);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// public void decrAbove(int index) {
|
||||
// for(PartManipSubFrame frame : modelframes) frame.decrAbove(index);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void draw() {
|
||||
// super.preDraw();
|
||||
// GL11.glPushMatrix();
|
||||
// GL11.glTranslated(0.0, (double)(-this.currentscrollpixels), 0.0);
|
||||
// for (PartManipSubFrame f : modelframes)
|
||||
// f.drawPartial(currentscrollpixels + 4 + border.top(), this.currentscrollpixels + border.bottom() - 4);
|
||||
// GL11.glPopMatrix();
|
||||
// super.postDraw();
|
||||
// }
|
||||
//}
|
||||
////class PartManipContainer(val itemSelect: ItemSelectionFrame, val colourSelect: ColourPickerFrame, topleft: MusePoint2D, bottomright: MusePoint2D, borderColour: Colour, insideColour: Colour)
|
||||
//// extends ScrollableFrame(topleft, bottomright, borderColour, insideColour) {
|
||||
////
|
||||
////
|
||||
//// def getItem = Option(itemSelect.getSelectedItem).map(e => e.getItem)
|
||||
////
|
||||
//// def getItemSlot = Option(itemSelect.getSelectedItem).map(e => e.inventorySlot)
|
||||
//// var lastItemSlot: Option[Int] = None
|
||||
////
|
||||
//// def getColour = if(getItem != None && colourSelect.selectedColour < colourSelect.colours.size && colourSelect.selectedColour >= 0)
|
||||
//// colourSelect.colours(colourSelect.selectedColour)
|
||||
//// else
|
||||
//// Colour.WHITE.getInt
|
||||
//// var lastColour = getColour
|
||||
////
|
||||
//// def getColourIndex = colourSelect.selectedColour
|
||||
//// var lastColourIndex = getColourIndex
|
||||
////
|
||||
////
|
||||
//
|
||||
//
|
|
@ -1,80 +1,80 @@
|
|||
package net.machinemuse.general.gui.frame
|
||||
|
||||
import net.machinemuse.numina.geometry.{Colour, MusePoint2D, MuseRelativeRect}
|
||||
import net.machinemuse.powersuits.client.render.modelspec.{ModelRegistry, ModelSpec}
|
||||
import org.lwjgl.opengl.GL11._
|
||||
|
||||
/**
|
||||
* Author: MachineMuse (Claire Semple)
|
||||
* Created: 6:39 PM, 29/04/13
|
||||
*/
|
||||
class PartManipContainer(val itemSelect: ItemSelectionFrame, val colourSelect: ColourPickerFrame, topleft: MusePoint2D, bottomright: MusePoint2D, borderColour: Colour, insideColour: Colour)
|
||||
extends ScrollableFrame(topleft, bottomright, borderColour, insideColour) {
|
||||
|
||||
|
||||
def getItem = Option(itemSelect.getSelectedItem).map(e => e.getItem)
|
||||
|
||||
def getItemSlot = Option(itemSelect.getSelectedItem).map(e => e.inventorySlot)
|
||||
var lastItemSlot: Option[Int] = None
|
||||
|
||||
def getColour = if(getItem != None && colourSelect.selectedColour < colourSelect.colours.size && colourSelect.selectedColour >= 0)
|
||||
colourSelect.colours(colourSelect.selectedColour)
|
||||
else
|
||||
Colour.WHITE.getInt
|
||||
var lastColour = getColour
|
||||
|
||||
def getColourIndex = colourSelect.selectedColour
|
||||
var lastColourIndex = getColourIndex
|
||||
|
||||
|
||||
val modelframes: Seq[PartManipSubFrame] =
|
||||
((Seq.empty[PartManipSubFrame], None: Option[PartManipSubFrame]) /: ModelRegistry.apply.values) {
|
||||
case ((frameseq, prev), modelspec: ModelSpec) => {
|
||||
val newframe = createNewFrame(modelspec, prev)
|
||||
(frameseq :+ newframe, Some(newframe))
|
||||
}
|
||||
}._1
|
||||
|
||||
def createNewFrame(modelspec: ModelSpec, prev: Option[PartManipSubFrame]) = {
|
||||
val newborder = new MuseRelativeRect(topleft.x + 4, topleft.y + 4, bottomright.x, topleft.y + 10)
|
||||
newborder.setBelow(prev.map(e => e.border) getOrElse null)
|
||||
new PartManipSubFrame(modelspec, colourSelect, itemSelect, newborder)
|
||||
}
|
||||
|
||||
override def onMouseDown(x: Double, y: Double, button: Int) {
|
||||
if (button == 0) {
|
||||
for (frame <- modelframes) {
|
||||
frame.tryMouseClick(x, y + currentscrollpixels)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override def update(mousex: Double, mousey: Double) {
|
||||
super.update(mousex, mousey)
|
||||
if (lastItemSlot != getItemSlot) {
|
||||
lastItemSlot = getItemSlot
|
||||
colourSelect.refreshColours()
|
||||
this.totalsize = (0.0 /: modelframes) {
|
||||
(acc, subframe) => subframe.updateItems(); subframe.border.bottom()
|
||||
}.toInt
|
||||
}
|
||||
if(colourSelect.decrAbove > -1) {
|
||||
decrAbove(colourSelect.decrAbove)
|
||||
colourSelect.decrAbove = -1
|
||||
}
|
||||
}
|
||||
|
||||
def decrAbove(index:Int) {for(frame<-modelframes) frame.decrAbove(index)}
|
||||
|
||||
|
||||
override def draw() {
|
||||
super.preDraw()
|
||||
glPushMatrix()
|
||||
glTranslated(0, -currentscrollpixels, 0)
|
||||
for (f <- modelframes) {
|
||||
f.drawPartial(currentscrollpixels + 4 + border.top, this.currentscrollpixels + border.bottom - 4)
|
||||
}
|
||||
glPopMatrix()
|
||||
super.postDraw()
|
||||
}
|
||||
}
|
||||
//package net.machinemuse.general.gui.frame
|
||||
//
|
||||
//import net.machinemuse.numina.geometry.{Colour, MusePoint2D, MuseRelativeRect}
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.{ModelRegistry, ModelSpec}
|
||||
//import org.lwjgl.opengl.GL11._
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 6:39 PM, 29/04/13
|
||||
// */
|
||||
//class PartManipContainer(val itemSelect: ItemSelectionFrame, val colourSelect: ColourPickerFrame, topleft: MusePoint2D, bottomright: MusePoint2D, borderColour: Colour, insideColour: Colour)
|
||||
// extends ScrollableFrame(topleft, bottomright, borderColour, insideColour) {
|
||||
//
|
||||
//
|
||||
// def getItem = Option(itemSelect.getSelectedItem).map(e => e.getItem)
|
||||
//
|
||||
// def getItemSlot = Option(itemSelect.getSelectedItem).map(e => e.inventorySlot)
|
||||
// var lastItemSlot: Option[Int] = None
|
||||
//
|
||||
// def getColour = if(getItem != None && colourSelect.selectedColour < colourSelect.colours.size && colourSelect.selectedColour >= 0)
|
||||
// colourSelect.colours(colourSelect.selectedColour)
|
||||
// else
|
||||
// Colour.WHITE.getInt
|
||||
// var lastColour = getColour
|
||||
//
|
||||
// def getColourIndex = colourSelect.selectedColour
|
||||
// var lastColourIndex = getColourIndex
|
||||
//
|
||||
//
|
||||
// val modelframes: Seq[PartManipSubFrame] =
|
||||
// ((Seq.empty[PartManipSubFrame], None: Option[PartManipSubFrame]) /: ModelRegistry.getInstance().apply.values) {
|
||||
// case ((frameseq, prev), modelspec: ModelSpec) => {
|
||||
// val newframe = createNewFrame(modelspec, prev)
|
||||
// (frameseq :+ newframe, Some(newframe))
|
||||
// }
|
||||
// }._1
|
||||
//
|
||||
// def createNewFrame(modelspec: ModelSpec, prev: Option[PartManipSubFrame]) = {
|
||||
// val newborder = new MuseRelativeRect(topleft.x + 4, topleft.y + 4, bottomright.x, topleft.y + 10)
|
||||
// newborder.setBelow(prev.map(e => e.border) getOrElse null)
|
||||
// new PartManipSubFrame(modelspec, colourSelect, itemSelect, newborder)
|
||||
// }
|
||||
//
|
||||
// override def onMouseDown(x: Double, y: Double, button: Int) {
|
||||
// if (button == 0) {
|
||||
// for (frame <- modelframes) {
|
||||
// frame.tryMouseClick(x, y + currentscrollpixels)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override def update(mousex: Double, mousey: Double) {
|
||||
// super.update(mousex, mousey)
|
||||
// if (lastItemSlot != getItemSlot) {
|
||||
// lastItemSlot = getItemSlot
|
||||
// colourSelect.refreshColours()
|
||||
// this.totalsize = (0.0 /: modelframes) {
|
||||
// (acc, subframe) => subframe.updateItems(); subframe.border.bottom()
|
||||
// }.toInt
|
||||
// }
|
||||
// if(colourSelect.decrAbove > -1) {
|
||||
// decrAbove(colourSelect.decrAbove)
|
||||
// colourSelect.decrAbove = -1
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def decrAbove(index:Int) {for(frame<-modelframes) frame.decrAbove(index)}
|
||||
//
|
||||
//
|
||||
// override def draw() {
|
||||
// super.preDraw()
|
||||
// glPushMatrix()
|
||||
// glTranslated(0, -currentscrollpixels, 0)
|
||||
// for (f <- modelframes) {
|
||||
// f.drawPartial(currentscrollpixels + 4 + border.top, this.currentscrollpixels + border.bottom - 4)
|
||||
// }
|
||||
// glPopMatrix()
|
||||
// super.postDraw()
|
||||
// }
|
||||
//}
|
||||
|
|
|
@ -380,48 +380,38 @@
|
|||
//
|
||||
//package net.machinemuse.general.gui.frame;
|
||||
//
|
||||
//import net.machinemuse.numina.scala.MuseBiMap;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelRegistry;
|
||||
//import scala.collection.Iterator;
|
||||
//import scala.runtime.AbstractFunction1;
|
||||
//import scala.Serializable;
|
||||
//import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
//import net.machinemuse.numina.network.PacketSender;
|
||||
//import net.minecraft.entity.player.EntityPlayer;
|
||||
//import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo;
|
||||
//import net.machinemuse.numina.general.MuseLogger;
|
||||
//import scala.collection.mutable.StringBuilder;
|
||||
//import net.machinemuse.numina.geometry.MuseRect;
|
||||
//import net.machinemuse.numina.general.MuseMathUtils;
|
||||
//import org.lwjgl.opengl.GL11;
|
||||
//import net.machinemuse.numina.render.RenderState;
|
||||
//import net.machinemuse.utils.render.MuseRenderer;
|
||||
//import scala.runtime.BoxedUnit;
|
||||
//import net.machinemuse.numina.geometry.Colour;
|
||||
//import net.machinemuse.utils.render.GuiIcons;
|
||||
//import scala.Function2;
|
||||
//import scala.runtime.BoxesRunTime;
|
||||
//import scala.Predef$;
|
||||
//import scala.reflect.ClassTag$;
|
||||
//import scala.Function1;
|
||||
//import scala.collection.TraversableOnce;
|
||||
//import net.minecraft.nbt.NBTBase;
|
||||
//import scala.None$;
|
||||
//import scala.Some;
|
||||
//import scala.Option;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelRegistry$;
|
||||
//import net.minecraft.entity.Entity;
|
||||
//import net.minecraft.client.Minecraft;
|
||||
//import net.machinemuse.utils.MuseItemUtils;
|
||||
//import net.minecraft.nbt.NBTTagCompound;
|
||||
//import net.machinemuse.general.gui.clickable.ClickableItem;
|
||||
//import net.minecraft.item.ItemArmor;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelPartSpec;
|
||||
//import net.machinemuse.numina.general.MuseLogger;
|
||||
//import net.machinemuse.numina.general.MuseMathUtils;
|
||||
//import net.machinemuse.numina.geometry.Colour;
|
||||
//import net.machinemuse.numina.geometry.MuseRect;
|
||||
//import net.machinemuse.numina.geometry.MuseRelativeRect;
|
||||
//import net.machinemuse.numina.network.PacketSender;
|
||||
//import net.machinemuse.numina.render.RenderState;
|
||||
//import net.machinemuse.numina.scala.MuseBiMap;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelPartSpec;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelRegistry;
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.ModelSpec;
|
||||
//import scala.reflect.ScalaSignature;
|
||||
//import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo;
|
||||
//import net.machinemuse.utils.MuseItemUtils;
|
||||
//import net.machinemuse.utils.render.GuiIcons;
|
||||
//import net.machinemuse.utils.render.MuseRenderer;
|
||||
//import net.minecraft.client.Minecraft;
|
||||
//import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
//import net.minecraft.entity.Entity;
|
||||
//import net.minecraft.entity.player.EntityPlayer;
|
||||
//import net.minecraft.item.ItemArmor;
|
||||
//import net.minecraft.nbt.NBTBase;
|
||||
//import net.minecraft.nbt.NBTTagCompound;
|
||||
//import org.lwjgl.opengl.GL11;
|
||||
//import scala.Function1;
|
||||
//import scala.Function2;
|
||||
//import scala.Predef$;
|
||||
//import scala.runtime.BoxedUnit;
|
||||
//import scala.runtime.BoxesRunTime;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.Iterator;
|
||||
//import java.util.List;
|
||||
//
|
||||
//
|
||||
|
@ -460,7 +450,7 @@
|
|||
// ModelPartSpec spec;
|
||||
// while (specIt.hasNext()) {
|
||||
// spec = specIt.next();
|
||||
// if (isValidArmor(getSelectedItem(), spec.slot()))
|
||||
// if (isValidArmor(getSelectedItem(), spec.slot))
|
||||
// specsArray.add(spec);
|
||||
// }
|
||||
// return (ModelPartSpec[]) specsArray.toArray();
|
||||
|
@ -490,10 +480,6 @@
|
|||
// this.specs = x$1;
|
||||
// }
|
||||
//
|
||||
// public boolean open() {
|
||||
// return this.open;
|
||||
// }
|
||||
//
|
||||
// public void open_$eq(final boolean x$1) {
|
||||
// this.open = x$1;
|
||||
// }
|
||||
|
@ -535,23 +521,23 @@
|
|||
// }
|
||||
//
|
||||
// public NBTTagCompound getSpecTag(final ModelPartSpec spec) {
|
||||
// return this.getRenderTag().getCompoundTag(ModelRegistry$.MODULE$.makeName(spec));
|
||||
// return this.getRenderTag().getCompoundTag(ModelRegistry.getInstance().makeName(spec));
|
||||
// }
|
||||
//
|
||||
// public NBTTagCompound getOrDontGetSpecTag(final ModelPartSpec spec) {
|
||||
// final String name = ModelRegistry$.MODULE$.makeName(spec);
|
||||
// final String name = ModelRegistry.getInstance().makeName(spec);
|
||||
// return this.getRenderTag().hasKey(name) ? this.getRenderTag().getCompoundTag(name) : null;
|
||||
// }
|
||||
//
|
||||
// public NBTTagCompound getOrMakeSpecTag(final ModelPartSpec spec) {
|
||||
// final String name = ModelRegistry$.MODULE$.makeName(spec);
|
||||
// final String name = ModelRegistry.getInstance().makeName(spec);
|
||||
// NBTTagCompound compoundTag;
|
||||
// if (this.getRenderTag().hasKey(name)) {
|
||||
// compoundTag = this.getRenderTag().getCompoundTag(name);
|
||||
// }
|
||||
// else {
|
||||
// final NBTTagCompound k = new NBTTagCompound();
|
||||
// spec.multiSet(k, null, None$.MODULE$, None$.MODULE$); // FIXME!! null will probably fail
|
||||
// spec.multiSet(k, null, null, null);
|
||||
// this.getRenderTag().setTag(name, (NBTBase)k);
|
||||
// compoundTag = k;
|
||||
// }
|
||||
|
@ -563,19 +549,43 @@
|
|||
// this.border.setHeight((specs.length > 0) ? (specs.length * 8 + 10) : 0);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public void drawPartial(final double min, final double max) {
|
||||
// if (Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() > 0) {
|
||||
// ((MuseBiMap<Object, T>)ModelRegistry$.MODULE$).getName((T)this.model()).foreach((Function1)new PartManipSubFrame$$anonfun$drawPartial.PartManipSubFrame$$anonfun$drawPartial$1(this));
|
||||
// this.drawOpenArrow(min, max);
|
||||
// if (this.open()) {
|
||||
// Predef$.MODULE$.refArrayOps((Object[])this.specs()).$div$colon((Object)BoxesRunTime.boxToDouble(this.border().top() + 8), (Function2)new PartManipSubFrame$$anonfun$drawPartial.PartManipSubFrame$$anonfun$drawPartial$2(this, min, max));
|
||||
// }
|
||||
// if (specs.length > 0) {
|
||||
// MuseRenderer.drawString(ModelRegistry.getInstance().getName(model), border.left() + 8, border.top());
|
||||
// drawOpenArrow(min, max);
|
||||
// // FIXME!!!!
|
||||
//// if (open) {
|
||||
//// // private ModelPartSpec[] specs;
|
||||
////
|
||||
//// ((border.top() + 8) /: specs) {
|
||||
//// case (y, spec) => {
|
||||
//// drawSpecPartial(border.left(), y, spec, min, max);
|
||||
//// y + 8
|
||||
//// }
|
||||
//// }
|
||||
//// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//// if (Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() > 0) {
|
||||
//// ((MuseBiMap<Object, T>)ModelRegistry.getInstance()).getName((T)this.model()).foreach((Function1)new PartManipSubFrame$$anonfun$drawPartial.PartManipSubFrame$$anonfun$drawPartial$1(this));
|
||||
//// this.drawOpenArrow(min, max);
|
||||
//// if (this.open()) {
|
||||
//// Predef$.MODULE$.refArrayOps((Object[])this.specs()).$div$colon((Object)BoxesRunTime.boxToDouble(this.border().top() + 8), (Function2)new PartManipSubFrame$$anonfun$drawPartial.PartManipSubFrame$$anonfun$drawPartial$2(this, min, max));
|
||||
//// }
|
||||
//// }
|
||||
//
|
||||
//
|
||||
// public void decrAbove(int index) {
|
||||
// for (ModelPartSpec spec : specs) {
|
||||
// String tagname = ModelRegistry.makeName(spec);
|
||||
// String tagname = ModelRegistry.getInstance().makeName(spec);
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// NBTTagCompound tagdata = getOrDontGetSpecTag(spec);
|
||||
//
|
||||
|
@ -594,25 +604,39 @@
|
|||
// final NBTTagCompound tag = this.getSpecTag(spec);
|
||||
// final int selcomp = tag.hasNoTags() ? 0 : (spec.getGlow(tag) ? 2 : 1);
|
||||
// final int selcolour = spec.getColourIndex(tag);
|
||||
// new GuiIcons.TransparentArmor(x, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo));
|
||||
// new GuiIcons.NormalArmor(x + 8, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo));
|
||||
// new GuiIcons.GlowArmor(x + 16, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo));
|
||||
// new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo));
|
||||
// final double textstartx = BoxesRunTime.unboxToDouble(Predef$.MODULE$.intArrayOps(this.colourframe().colours()).$div$colon((Object)BoxesRunTime.boxToDouble(x + 28), (Function2)new PartManipSubFrame$$anonfun.PartManipSubFrame$$anonfun$1(this, y, ymino, ymaxo)));
|
||||
// new GuiIcons.TransparentArmor(x, y, null, null, ymino, null, ymaxo);
|
||||
// new GuiIcons.NormalArmor(x + 8, y, null, null, ymino, null, ymaxo);
|
||||
// new GuiIcons.GlowArmor(x + 16, y, null, null, ymino, null, ymaxo);
|
||||
// new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, ymino, null, ymaxo);
|
||||
// final double textstartx = 0; //FIXME: see below for scala definition
|
||||
//
|
||||
//
|
||||
// /*
|
||||
// val textstartx = ((x + 28) /: colourframe.colours) {
|
||||
// case (acc, colour) =>
|
||||
// new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo)
|
||||
// acc + 8
|
||||
// }
|
||||
//
|
||||
// */
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// if (selcomp > 0) {
|
||||
// new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo));
|
||||
// new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, ymino, null, ymaxo);
|
||||
// }
|
||||
// else {
|
||||
// final BoxedUnit unit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// MuseRenderer.drawString(spec.displayName(), textstartx + 4, y);
|
||||
// MuseRenderer.drawString(spec.displayName, textstartx + 4, y);
|
||||
// }
|
||||
//
|
||||
// public void drawOpenArrow(final double min, final double max) {
|
||||
// RenderState.texturelessOn();
|
||||
// Colour.LIGHTBLUE.doGL();
|
||||
// GL11.glBegin(4);
|
||||
// if (this.open()) {
|
||||
// if (this.open) {
|
||||
// GL11.glVertex2d(this.border().left() + 3, MuseMathUtils.clampDouble(this.border().top() + 3, min, max));
|
||||
// GL11.glVertex2d(this.border().left() + 5, MuseMathUtils.clampDouble(this.border().top() + 7, min, max));
|
||||
// GL11.glVertex2d(this.border().left() + 7, MuseMathUtils.clampDouble(this.border().top() + 3, min, max));
|
||||
|
@ -628,13 +652,13 @@
|
|||
// }
|
||||
//
|
||||
// public MuseRect getBorder() {
|
||||
// if (this.open()) {
|
||||
// this.border().setHeight(9 + 9 * Predef$.MODULE$.refArrayOps((Object[])this.specs()).size());
|
||||
// if (this.open) {
|
||||
// border.setHeight(9 + 9 * specs.length);
|
||||
// }
|
||||
// else {
|
||||
// this.border().setHeight(9.0);
|
||||
// this.border.setHeight(9.0);
|
||||
// }
|
||||
// return this.border();
|
||||
// return this.border;
|
||||
// }
|
||||
//
|
||||
// public boolean tryMouseClick(final double x, final double y) {
|
||||
|
@ -643,7 +667,7 @@
|
|||
// b = false;
|
||||
// }
|
||||
// else if (x > this.border().left() + 2 && x < this.border().left() + 8 && y > this.border().top() + 2 && y < this.border().top() + 8) {
|
||||
// this.open_$eq(!this.open());
|
||||
// this.open_$eq(!this.open);
|
||||
// this.getBorder();
|
||||
// b = true;
|
||||
// }
|
||||
|
@ -651,14 +675,14 @@
|
|||
// final int lineNumber = (int)((y - this.border().top() - 8) / 8);
|
||||
// final int columnNumber = (int)((x - this.border().left()) / 8);
|
||||
// final ModelPartSpec spec = specs[Math.max(Math.min(lineNumber, specs.length - 1), 0)];
|
||||
// MuseLogger.logDebug(new StringBuilder().append((Object)"Line ").append((Object)BoxesRunTime.boxToInteger(lineNumber)).append((Object)" Column ").append((Object)BoxesRunTime.boxToInteger(columnNumber)).toString());
|
||||
// MuseLogger.logDebug("Line " + lineNumber + " Column " + columnNumber);
|
||||
// switch (columnNumber) {
|
||||
// default: {
|
||||
// b = false;
|
||||
// break;
|
||||
// }
|
||||
// case 2: {
|
||||
// final String tagname = ModelRegistry$.MODULE$.makeName(spec);
|
||||
// final String tagname = ModelRegistry.getInstance().makeName(spec);
|
||||
// final EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// final NBTTagCompound tagdata = this.getOrMakeSpecTag(spec);
|
||||
// spec.setGlow(tagdata, true);
|
||||
|
@ -670,7 +694,7 @@
|
|||
// break;
|
||||
// }
|
||||
// case 1: {
|
||||
// final String tagname2 = ModelRegistry$.MODULE$.makeName(spec);
|
||||
// final String tagname2 = ModelRegistry.getInstance().makeName(spec);
|
||||
// final EntityClientPlayerMP player2 = Minecraft.getMinecraft().thePlayer;
|
||||
// final NBTTagCompound tagdata2 = this.getOrMakeSpecTag(spec);
|
||||
// spec.setGlow(tagdata2, false);
|
||||
|
@ -683,9 +707,9 @@
|
|||
// }
|
||||
// case 0: {
|
||||
// final NBTTagCompound renderTag = this.getRenderTag();
|
||||
// final String tagname3 = ModelRegistry$.MODULE$.makeName(spec);
|
||||
// final String tagname3 = ModelRegistry.getInstance().makeName(spec);
|
||||
// final EntityClientPlayerMP player3 = Minecraft.getMinecraft().thePlayer;
|
||||
// renderTag.removeTag(ModelRegistry$.MODULE$.makeName(spec));
|
||||
// renderTag.removeTag(ModelRegistry.getInstance().makeName(spec));
|
||||
// if (player3.worldObj.isRemote) {
|
||||
// PacketSender.sendToServer(new MusePacketCosmeticInfo((EntityPlayer)player3, this.getSelectedItem().inventorySlot, tagname3, new NBTTagCompound()).getPacket131());
|
||||
// }
|
||||
|
@ -699,7 +723,7 @@
|
|||
// final int lineNumber2 = (int)((y - this.border().top() - 8) / 8);
|
||||
// final int columnNumber2 = (int)((x - this.border().left() - 28) / 8);
|
||||
// final ModelPartSpec spec2 = specs[Math.max(Math.min(lineNumber2, specs.length - 1), 0)];
|
||||
// final String tagname4 = ModelRegistry$.MODULE$.makeName(spec2);
|
||||
// final String tagname4 = ModelRegistry.getInstance().makeName(spec2);
|
||||
// final EntityClientPlayerMP player4 = Minecraft.getMinecraft().thePlayer;
|
||||
// final NBTTagCompound tagdata3 = this.getOrMakeSpecTag(spec2);
|
||||
// spec2.setColourIndex(tagdata3, columnNumber2);
|
||||
|
|
|
@ -1,206 +1,211 @@
|
|||
package net.machinemuse.general.gui.frame
|
||||
|
||||
import net.machinemuse.general.gui.clickable.ClickableItem
|
||||
import net.machinemuse.numina.general.MuseLogger
|
||||
import net.machinemuse.numina.geometry.{Colour, MuseRect, MuseRelativeRect}
|
||||
import net.machinemuse.numina.network.PacketSender
|
||||
import net.machinemuse.numina.render.RenderState
|
||||
import net.machinemuse.powersuits.client.render.modelspec.{ModelPartSpec, ModelRegistry, ModelSpec}
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo
|
||||
import net.machinemuse.utils.MuseItemUtils
|
||||
import net.machinemuse.utils.render.{GuiIcons, MuseRenderer}
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.item.ItemArmor
|
||||
import net.minecraft.nbt.NBTTagCompound
|
||||
import org.lwjgl.opengl.GL11._
|
||||
|
||||
/**
|
||||
* Author: MachineMuse (Claire Semple)
|
||||
* Created: 1:46 AM, 30/04/13
|
||||
*/
|
||||
class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame, val itemSelector: ItemSelectionFrame, val border: MuseRelativeRect) {
|
||||
var specs: Array[ModelPartSpec] = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray
|
||||
var open: Boolean = true
|
||||
var mousex: Double = 0
|
||||
var mousey: Double = 0
|
||||
|
||||
|
||||
def getArmorSlot = getSelectedItem.getItem.getItem.asInstanceOf[ItemArmor].armorType
|
||||
|
||||
def getSelectedItem = itemSelector.getSelectedItem
|
||||
|
||||
def getRenderTag: NBTTagCompound = MuseItemUtils.getMuseRenderTag(getSelectedItem.getItem, getArmorSlot)
|
||||
|
||||
def getItemTag = MuseItemUtils.getMuseItemTag(getSelectedItem.getItem)
|
||||
|
||||
def isValidArmor(clickie: ClickableItem, slot: Int): Boolean = if (clickie == null) false else clickie.getItem.getItem.isValidArmor(clickie.getItem, slot, Minecraft.getMinecraft.thePlayer)
|
||||
|
||||
def getSpecTag(spec: ModelPartSpec) = getRenderTag.getCompoundTag(ModelRegistry.makeName(spec))
|
||||
|
||||
def getOrDontGetSpecTag(spec: ModelPartSpec): Option[NBTTagCompound] = {
|
||||
val name = ModelRegistry.makeName(spec)
|
||||
if (!getRenderTag.hasKey(name)) None
|
||||
else Some(getRenderTag.getCompoundTag(name))
|
||||
}
|
||||
|
||||
def getOrMakeSpecTag(spec: ModelPartSpec): NBTTagCompound = {
|
||||
val name = ModelRegistry.makeName(spec)
|
||||
if (!getRenderTag.hasKey(name)) {
|
||||
val k = new NBTTagCompound()
|
||||
spec.multiSet(k, None, None, None)
|
||||
getRenderTag.setTag(name, k)
|
||||
k
|
||||
} else {
|
||||
getRenderTag.getCompoundTag(name)
|
||||
}
|
||||
}
|
||||
|
||||
def updateItems() {
|
||||
specs = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray
|
||||
border.setHeight(if (specs.size > 0) specs.size * 8 + 10 else 0)
|
||||
}
|
||||
|
||||
def drawPartial(min: Double, max: Double) {
|
||||
if (specs.size > 0) {
|
||||
ModelRegistry.getName(model).foreach(s => MuseRenderer.drawString(s, border.left + 8, border.top))
|
||||
drawOpenArrow(min, max)
|
||||
if (open) {
|
||||
((border.top + 8) /: specs) {
|
||||
case (y, spec) => {
|
||||
drawSpecPartial(border.left, y, spec, min, max)
|
||||
y + 8
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def decrAbove(index: Int) {
|
||||
for (spec <- specs) {
|
||||
val tagname = ModelRegistry.makeName(spec)
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
val tagdata = getOrDontGetSpecTag(spec)
|
||||
tagdata.foreach(e => {
|
||||
val oldindex = spec.getColourIndex(e)
|
||||
if (oldindex >= index && oldindex > 0) {
|
||||
spec.setColourIndex(e, oldindex - 1)
|
||||
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, e).getPacket131)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
def drawSpecPartial(x: Double, y: Double, spec: ModelPartSpec, ymino: Double, ymaxo: Double) = {
|
||||
val tag = getSpecTag(spec)
|
||||
val selcomp = if (tag.hasNoTags) 0 else if (spec.getGlow(tag)) 2 else 1
|
||||
val selcolour = spec.getColourIndex(tag)
|
||||
new GuiIcons.TransparentArmor(x, y, null, null, ymino, null, ymaxo)
|
||||
new GuiIcons.NormalArmor(x + 8, y, null, null, ymino, null, ymaxo)
|
||||
new GuiIcons.GlowArmor(x + 16, y, null, null, ymino, null, ymaxo)
|
||||
new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, ymino, null, ymaxo)
|
||||
val textstartx = ((x + 28) /: colourframe.colours) {
|
||||
case (acc, colour) =>
|
||||
new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo)
|
||||
acc + 8
|
||||
}
|
||||
|
||||
/*
|
||||
val textstartx = ((x + 28) /: colourframe.colours) {
|
||||
case (acc, colour) =>
|
||||
new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo)
|
||||
acc + 8
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
if (selcomp > 0) {
|
||||
new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, ymino, null, ymaxo)
|
||||
}
|
||||
|
||||
|
||||
MuseRenderer.drawString(spec.displayName, textstartx + 4, y)
|
||||
}
|
||||
|
||||
def drawOpenArrow(min: Double, max: Double) {
|
||||
RenderState.texturelessOn()
|
||||
Colour.LIGHTBLUE.doGL()
|
||||
glBegin(GL_TRIANGLES)
|
||||
import net.machinemuse.numina.general.MuseMathUtils._
|
||||
if (open) {
|
||||
glVertex2d(border.left + 3, clampDouble(border.top + 3, min, max))
|
||||
glVertex2d(border.left + 5, clampDouble(border.top + 7, min, max))
|
||||
glVertex2d(border.left + 7, clampDouble(border.top + 3, min, max))
|
||||
} else {
|
||||
glVertex2d(border.left + 3, clampDouble(border.top + 3, min, max))
|
||||
glVertex2d(border.left + 3, clampDouble(border.top + 7, min, max))
|
||||
glVertex2d(border.left + 7, clampDouble(border.top + 5, min, max))
|
||||
}
|
||||
glEnd()
|
||||
Colour.WHITE.doGL()
|
||||
RenderState.texturelessOff()
|
||||
}
|
||||
|
||||
def getBorder: MuseRect = {
|
||||
if (open) border.setHeight(9 + 9 * specs.size)
|
||||
else border.setHeight(9)
|
||||
border
|
||||
}
|
||||
|
||||
def tryMouseClick(x: Double, y: Double): Boolean = {
|
||||
if (x < border.left || x > border.right || y < border.top || y > border.bottom) false
|
||||
else if (x > border.left + 2 && x < border.left + 8 && y > border.top + 2 && y < border.top + 8) {
|
||||
open = !open
|
||||
getBorder
|
||||
true
|
||||
} else if (x < border.left + 24 && y > border.top + 8) {
|
||||
val lineNumber = ((y - border.top - 8) / 8).toInt
|
||||
val columnNumber = ((x - border.left) / 8).toInt
|
||||
val spec = specs(lineNumber.min(specs.size - 1).max(0))
|
||||
MuseLogger.logDebug("Line " + lineNumber + " Column " + columnNumber)
|
||||
columnNumber match {
|
||||
case 0 => {
|
||||
val renderTag = getRenderTag
|
||||
val tagname = ModelRegistry.makeName(spec)
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
renderTag.removeTag(ModelRegistry.makeName(spec))
|
||||
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, new NBTTagCompound()).getPacket131)
|
||||
updateItems()
|
||||
true
|
||||
}
|
||||
case 1 => {
|
||||
val tagname = ModelRegistry.makeName(spec)
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
val tagdata = getOrMakeSpecTag(spec)
|
||||
spec.setGlow(tagdata, false)
|
||||
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
|
||||
updateItems()
|
||||
true
|
||||
}
|
||||
case 2 => {
|
||||
val tagname = ModelRegistry.makeName(spec)
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
val tagdata = getOrMakeSpecTag(spec)
|
||||
spec.setGlow(tagdata, true)
|
||||
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
|
||||
updateItems()
|
||||
true
|
||||
}
|
||||
case _ => false
|
||||
}
|
||||
} else if (x > border.left + 28 && x < border.left + 28 + colourframe.colours.size * 8) {
|
||||
val lineNumber = ((y - border.top - 8) / 8).toInt
|
||||
val columnNumber = ((x - border.left - 28) / 8).toInt
|
||||
val spec = specs(lineNumber.min(specs.size - 1).max(0))
|
||||
val tagname = ModelRegistry.makeName(spec)
|
||||
val player = Minecraft.getMinecraft.thePlayer
|
||||
val tagdata = getOrMakeSpecTag(spec)
|
||||
spec.setColourIndex(tagdata, columnNumber)
|
||||
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
|
||||
true
|
||||
}
|
||||
else false
|
||||
}
|
||||
|
||||
}
|
||||
//package net.machinemuse.general.gui.frame
|
||||
//
|
||||
//import net.machinemuse.general.gui.clickable.ClickableItem
|
||||
//import net.machinemuse.numina.general.MuseLogger
|
||||
//import net.machinemuse.numina.geometry.{Colour, MuseRect, MuseRelativeRect}
|
||||
//import net.machinemuse.numina.network.PacketSender
|
||||
//import net.machinemuse.numina.render.RenderState
|
||||
//import net.machinemuse.powersuits.client.render.modelspec.{ModelPartSpec, ModelRegistry, ModelSpec}
|
||||
//import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo
|
||||
//import net.machinemuse.utils.MuseItemUtils
|
||||
//import net.machinemuse.utils.render.{GuiIcons, MuseRenderer}
|
||||
//import net.minecraft.client.Minecraft
|
||||
//import net.minecraft.item.ItemArmor
|
||||
//import net.minecraft.nbt.NBTTagCompound
|
||||
//import org.lwjgl.opengl.GL11._
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 1:46 AM, 30/04/13
|
||||
// */
|
||||
//class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame, val itemSelector: ItemSelectionFrame, val border: MuseRelativeRect) {
|
||||
//
|
||||
// // see the java filter function in the recipes for an example on how to implement a filter in Java
|
||||
//
|
||||
//
|
||||
//
|
||||
// var specs: Array[ModelPartSpec] = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray
|
||||
// var open: Boolean = true
|
||||
// var mousex: Double = 0
|
||||
// var mousey: Double = 0
|
||||
//
|
||||
//
|
||||
// def getArmorSlot = getSelectedItem.getItem.getItem.asInstanceOf[ItemArmor].armorType
|
||||
//
|
||||
// def getSelectedItem = itemSelector.getSelectedItem
|
||||
//
|
||||
// def getRenderTag: NBTTagCompound = MuseItemUtils.getMuseRenderTag(getSelectedItem.getItem, getArmorSlot)
|
||||
//
|
||||
// def getItemTag = MuseItemUtils.getMuseItemTag(getSelectedItem.getItem)
|
||||
//
|
||||
// def isValidArmor(clickie: ClickableItem, slot: Int): Boolean = if (clickie == null) false else clickie.getItem.getItem.isValidArmor(clickie.getItem, slot, Minecraft.getMinecraft.thePlayer)
|
||||
//
|
||||
// def getSpecTag(spec: ModelPartSpec) = getRenderTag.getCompoundTag(ModelRegistry.getInstance().makeName(spec))
|
||||
//
|
||||
// def getOrDontGetSpecTag(spec: ModelPartSpec): Option[NBTTagCompound] = {
|
||||
// val name = ModelRegistry.getInstance().makeName(spec)
|
||||
// if (!getRenderTag.hasKey(name)) None
|
||||
// else Some(getRenderTag.getCompoundTag(name))
|
||||
// }
|
||||
//
|
||||
// def getOrMakeSpecTag(spec: ModelPartSpec): NBTTagCompound = {
|
||||
// val name = ModelRegistry.getInstance().makeName(spec)
|
||||
// if (!getRenderTag.hasKey(name)) {
|
||||
// val k = new NBTTagCompound()
|
||||
// spec.multiSet(k, None, None, None)
|
||||
// getRenderTag.setTag(name, k)
|
||||
// k
|
||||
// } else {
|
||||
// getRenderTag.getCompoundTag(name)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def updateItems() {
|
||||
// specs = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray
|
||||
// border.setHeight(if (specs.size > 0) specs.size * 8 + 10 else 0)
|
||||
// }
|
||||
//
|
||||
// def drawPartial(min: Double, max: Double) {
|
||||
// if (specs.size > 0) {
|
||||
// ModelRegistry.getInstance().getName(model).foreach(s => MuseRenderer.drawString(s, border.left + 8, border.top))
|
||||
// drawOpenArrow(min, max)
|
||||
// if (open) {
|
||||
// ((border.top + 8) /: specs) {
|
||||
// case (y, spec) => {
|
||||
// drawSpecPartial(border.left, y, spec, min, max)
|
||||
// y + 8
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def decrAbove(index: Int) {
|
||||
// for (spec <- specs) {
|
||||
// val tagname = ModelRegistry.getInstance().makeName(spec)
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// val tagdata = getOrDontGetSpecTag(spec)
|
||||
// tagdata.foreach(e => {
|
||||
// val oldindex = spec.getColourIndex(e)
|
||||
// if (oldindex >= index && oldindex > 0) {
|
||||
// spec.setColourIndex(e, oldindex - 1)
|
||||
// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, e).getPacket131)
|
||||
// }
|
||||
// })
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def drawSpecPartial(x: Double, y: Double, spec: ModelPartSpec, ymino: Double, ymaxo: Double) = {
|
||||
// val tag = getSpecTag(spec)
|
||||
// val selcomp = if (tag.hasNoTags) 0 else if (spec.getGlow(tag)) 2 else 1
|
||||
// val selcolour = spec.getColourIndex(tag)
|
||||
// new GuiIcons.TransparentArmor(x, y, null, null, ymino, null, ymaxo)
|
||||
// new GuiIcons.NormalArmor(x + 8, y, null, null, ymino, null, ymaxo)
|
||||
// new GuiIcons.GlowArmor(x + 16, y, null, null, ymino, null, ymaxo)
|
||||
// new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, ymino, null, ymaxo)
|
||||
// val textstartx: Double = ((x + 28) /: colourframe.colours) {
|
||||
// case (acc, colour) =>
|
||||
// new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo)
|
||||
// acc + 8
|
||||
// }
|
||||
//
|
||||
// /*
|
||||
// val textstartx = ((x + 28) /: colourframe.colours) {
|
||||
// case (acc, colour) =>
|
||||
// new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo)
|
||||
// acc + 8
|
||||
// }
|
||||
//
|
||||
// */
|
||||
//
|
||||
//
|
||||
// if (selcomp > 0) {
|
||||
// new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, ymino, null, ymaxo)
|
||||
// }
|
||||
//
|
||||
//
|
||||
// MuseRenderer.drawString(spec.displayName, textstartx + 4, y)
|
||||
// }
|
||||
//
|
||||
// def drawOpenArrow(min: Double, max: Double) {
|
||||
// RenderState.texturelessOn()
|
||||
// Colour.LIGHTBLUE.doGL()
|
||||
// glBegin(GL_TRIANGLES)
|
||||
// import net.machinemuse.numina.general.MuseMathUtils._
|
||||
// if (open) {
|
||||
// glVertex2d(border.left + 3, clampDouble(border.top + 3, min, max))
|
||||
// glVertex2d(border.left + 5, clampDouble(border.top + 7, min, max))
|
||||
// glVertex2d(border.left + 7, clampDouble(border.top + 3, min, max))
|
||||
// } else {
|
||||
// glVertex2d(border.left + 3, clampDouble(border.top + 3, min, max))
|
||||
// glVertex2d(border.left + 3, clampDouble(border.top + 7, min, max))
|
||||
// glVertex2d(border.left + 7, clampDouble(border.top + 5, min, max))
|
||||
// }
|
||||
// glEnd()
|
||||
// Colour.WHITE.doGL()
|
||||
// RenderState.texturelessOff()
|
||||
// }
|
||||
//
|
||||
// def getBorder: MuseRect = {
|
||||
// if (open) border.setHeight(9 + 9 * specs.size)
|
||||
// else border.setHeight(9)
|
||||
// border
|
||||
// }
|
||||
//
|
||||
// def tryMouseClick(x: Double, y: Double): Boolean = {
|
||||
// if (x < border.left || x > border.right || y < border.top || y > border.bottom) false
|
||||
// else if (x > border.left + 2 && x < border.left + 8 && y > border.top + 2 && y < border.top + 8) {
|
||||
// open = !open
|
||||
// getBorder
|
||||
// true
|
||||
// } else if (x < border.left + 24 && y > border.top + 8) {
|
||||
// val lineNumber = ((y - border.top - 8) / 8).toInt
|
||||
// val columnNumber = ((x - border.left) / 8).toInt
|
||||
// val spec = specs(lineNumber.min(specs.size - 1).max(0))
|
||||
// MuseLogger.logDebug("Line " + lineNumber + " Column " + columnNumber)
|
||||
// columnNumber match {
|
||||
// case 0 => {
|
||||
// val renderTag = getRenderTag
|
||||
// val tagname = ModelRegistry.getInstance().makeName(spec)
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// renderTag.removeTag(ModelRegistry.getInstance().makeName(spec))
|
||||
// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, new NBTTagCompound()).getPacket131)
|
||||
// updateItems()
|
||||
// true
|
||||
// }
|
||||
// case 1 => {
|
||||
// val tagname = ModelRegistry.getInstance().makeName(spec)
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// val tagdata = getOrMakeSpecTag(spec)
|
||||
// spec.setGlow(tagdata, false)
|
||||
// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
|
||||
// updateItems()
|
||||
// true
|
||||
// }
|
||||
// case 2 => {
|
||||
// val tagname = ModelRegistry.getInstance().makeName(spec)
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// val tagdata = getOrMakeSpecTag(spec)
|
||||
// spec.setGlow(tagdata, true)
|
||||
// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
|
||||
// updateItems()
|
||||
// true
|
||||
// }
|
||||
// case _ => false
|
||||
// }
|
||||
// } else if (x > border.left + 28 && x < border.left + 28 + colourframe.colours.size * 8) {
|
||||
// val lineNumber = ((y - border.top - 8) / 8).toInt
|
||||
// val columnNumber = ((x - border.left - 28) / 8).toInt
|
||||
// val spec = specs(lineNumber.min(specs.size - 1).max(0))
|
||||
// val tagname = ModelRegistry.getInstance().makeName(spec)
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// val tagdata = getOrMakeSpecTag(spec)
|
||||
// spec.setColourIndex(tagdata, columnNumber)
|
||||
// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
|
||||
// true
|
||||
// }
|
||||
// else false
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
|
|
@ -8,12 +8,12 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||
public class ModelPartSpec
|
||||
{
|
||||
public ModelSpec modelSpec;
|
||||
private MorphTarget morph;
|
||||
public MorphTarget morph;
|
||||
public String partName;
|
||||
private int slot;
|
||||
private int defaultcolourindex;
|
||||
private boolean defaultglow;
|
||||
private String displayName;
|
||||
public int slot;
|
||||
public int defaultcolourindex;
|
||||
public boolean defaultglow;
|
||||
public String displayName;
|
||||
|
||||
public ModelPartSpec(ModelSpec modelSpec, MorphTarget morph, String partName, int slot, Integer defaultcolourindex, Boolean defaultglow, String displayName) {
|
||||
this.modelSpec = modelSpec;
|
||||
|
|
|
@ -56,7 +56,7 @@ public class ModelRegistry extends MuseRegistry<ModelSpec> {
|
|||
|
||||
public ModelPartSpec getPart(NBTTagCompound nbt) {
|
||||
return getPart(nbt, getModel(nbt));
|
||||
//getModel(nbt).flatMap(m => m.get(nbt getString "part"))
|
||||
// getModel(nbt).flatMap(m => m.get(nbt getString "part"))
|
||||
// FIXME: not sure if this is right
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ public class ModelSpec extends MuseRegistry<ModelPartSpec>
|
|||
public String[] textures;
|
||||
public Vec3 offset;
|
||||
public Vec3 rotation;
|
||||
public String filename;
|
||||
public static String filename;
|
||||
|
||||
public ModelSpec(WavefrontObject model, String[] textures, Vec3 offset, Vec3 rotation, String filename) {
|
||||
this.model = model;
|
||||
|
|
|
@ -12,7 +12,7 @@ object ModelSpecJSONWriter {
|
|||
def writeRegistry(file: String) {
|
||||
val gson = new Gson()
|
||||
import scala.collection.JavaConverters._
|
||||
val registry = ModelRegistry.apply.asJava
|
||||
val registry = ModelRegistry.getInstance()
|
||||
val jsonwrite = gson.toJson(registry)
|
||||
val w = new PrintWriter(new FileOutputStream(new File(file)))
|
||||
w.print(jsonwrite)
|
||||
|
|
|
@ -1,12 +1,23 @@
|
|||
package net.machinemuse.powersuits.client.render.modelspec;
|
||||
|
||||
import net.machinemuse.numina.general.MuseLogger;
|
||||
import net.machinemuse.numina.geometry.Colour;
|
||||
import net.machinemuse.utils.MuseStringUtils;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraftforge.client.model.obj.GroupObject;
|
||||
import scala.xml.NodeSeq;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.awt.*;
|
||||
import java.net.URL;
|
||||
import java.util.Iterator;
|
||||
|
||||
import static net.machinemuse.powersuits.client.render.modelspec.MorphTarget.*;
|
||||
|
@ -18,74 +29,97 @@ import static net.machinemuse.powersuits.client.render.modelspec.MorphTarget.*;
|
|||
* Ported to Java by lehjr on 11/8/16.
|
||||
*/
|
||||
public class ModelSpecXMLReader {
|
||||
private ModelSpecXMLReader() {
|
||||
}
|
||||
|
||||
private static ModelSpecXMLReader INSTANCE;
|
||||
|
||||
public static ModelSpecXMLReader getINSTANCE() {
|
||||
if (INSTANCE == null)
|
||||
INSTANCE = new ModelSpecXMLReader();
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
public void parseFile(URL file) {
|
||||
try {
|
||||
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
|
||||
Document xml = dBuilder.parse(new InputSource(file.openStream()));
|
||||
xml.getDocumentElement().normalize();
|
||||
|
||||
NodeList modelNodeList = xml.getElementsByTagName("model");
|
||||
for (int temp = 0; temp < modelNodeList.getLength(); temp++) {
|
||||
Node modelNode = modelNodeList.item(temp);
|
||||
|
||||
//package net.machinemuse.powersuits.client.render.modelspec
|
||||
//
|
||||
//import java.awt.Color
|
||||
//import java.net.URL
|
||||
//
|
||||
//import net.machinemuse.numina.general.MuseLogger
|
||||
//import net.machinemuse.numina.geometry.Colour
|
||||
//import net.machinemuse.utils.MuseStringUtils
|
||||
//import net.minecraft.util.{ResourceLocation, Vec3}
|
||||
//
|
||||
//import scala.xml.{NodeSeq, XML}
|
||||
//
|
||||
//
|
||||
if (modelNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
parseModel(modelNode);
|
||||
Element eElement = (Element) modelNode;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
//object ModelSpecXMLReader {
|
||||
// def parseFile(file: URL) = {
|
||||
// val xml = XML.load(file)
|
||||
// (xml \\ "model") foreach {
|
||||
// modelnode => parseModel(modelnode)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def parseModel(modelnode: NodeSeq) = {
|
||||
// val file = (modelnode \ "@file").text
|
||||
// val textures = (modelnode \ "@textures").text.split(",")
|
||||
// val offset = parseVector((modelnode \ "@offset").text)
|
||||
// val rotation = parseVector((modelnode \ "@rotation").text)
|
||||
//
|
||||
// ModelRegistry.loadModel(new ResourceLocation(file)) match {
|
||||
// case Some(m) => {
|
||||
// val modelspec = new ModelSpec(m, textures, offset, rotation, file)
|
||||
// val existingspec = ModelRegistry.put(MuseStringUtils.extractName(file), modelspec)
|
||||
// (modelnode \ "binding").foreach {
|
||||
// bindingnode => parseBinding(bindingnode, existingspec)
|
||||
// }
|
||||
// }
|
||||
// case None => MuseLogger logError "Model file " + file + " not found! D:"
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
def parseBinding(bindingnode: NodeSeq, modelspec: ModelSpec) = {
|
||||
val slot = parseInt((bindingnode \ "@slot").text)
|
||||
val target = parseTarget((bindingnode \ "@target").text)
|
||||
slot.foreach(slot => {
|
||||
target.foreach(target =>
|
||||
(bindingnode \ "part").foreach {
|
||||
partnode =>
|
||||
parseParts(partnode, modelspec, slot, target)
|
||||
})
|
||||
})
|
||||
}
|
||||
public void parseModel(Node modelnode) {
|
||||
String file;
|
||||
String[] textures;
|
||||
Vec3 offset;
|
||||
Vec3 rotation;
|
||||
|
||||
public void parseParts(NodeSeq partNode, ModelSpec modelspec, int slot, MorphTarget target) {
|
||||
val defaultcolor = parseColour((partNode \ "@defaultcolor").text)
|
||||
val defaultglow = parseBool((partNode \ "@defaultglow").text)
|
||||
val name = (partNode \ "@name").text
|
||||
val polygroup = validatePolygroup((partNode \ "@polygroup").text, modelspec)
|
||||
polygroup.map(polygroup => {
|
||||
val partspec = new ModelPartSpec(modelspec, target, polygroup, slot, 0, defaultglow.getOrElse(false), name)
|
||||
modelspec.put(polygroup, partspec)
|
||||
})
|
||||
}
|
||||
if (modelnode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eElement = (Element) modelnode;
|
||||
|
||||
file = eElement.getAttribute("file");
|
||||
textures = eElement.getAttribute("textures").split(",");
|
||||
offset = parseVector(eElement.getAttribute("offset"));
|
||||
rotation = parseVector(eElement.getAttribute("rotation"));
|
||||
|
||||
WavefrontObject model = ModelRegistry.getInstance().loadModel(new ResourceLocation(file));
|
||||
if (model != null) {
|
||||
ModelSpec modelspec = new ModelSpec(model, textures, offset, rotation, file);
|
||||
ModelSpec existingspec = ModelRegistry.getInstance().put(MuseStringUtils.extractName(file), modelspec);
|
||||
|
||||
NodeList bindingNodeList = eElement.getElementsByTagName("model");
|
||||
for (int temp = 0; temp < bindingNodeList.getLength(); temp++) {
|
||||
Node bindingnode = bindingNodeList.item(temp);
|
||||
parseBinding(bindingnode, existingspec);
|
||||
}
|
||||
} else {
|
||||
MuseLogger.logError("Model file " + file + " not found! D:");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void parseBinding(Node bindingnode, ModelSpec modelspec) {
|
||||
if (bindingnode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eElement = (Element) bindingnode;
|
||||
int slot = parseInt(eElement.getAttribute("slot"));
|
||||
MorphTarget target = parseTarget(eElement.getAttribute("target"));
|
||||
|
||||
NodeList partNodeList = eElement.getElementsByTagName("part");
|
||||
for (int temp = 0; temp < partNodeList.getLength(); temp++) {
|
||||
Node partnode = partNodeList.item(temp);
|
||||
parseParts(partnode, modelspec, slot, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void parseParts(Node partNode, ModelSpec modelspec, int slot, MorphTarget target) {
|
||||
if (partNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eElement = (Element) partNode;
|
||||
Colour defaultcolor = parseColour(eElement.getAttribute("defaultcolor"));
|
||||
Boolean defaultglow = parseBool(eElement.getAttribute("defaultglow"));
|
||||
String name = eElement.getAttribute("name");
|
||||
|
||||
String polygroup = validatePolygroup(eElement.getAttribute("name"), modelspec);
|
||||
|
||||
if (polygroup != null) {
|
||||
ModelPartSpec partspec = new ModelPartSpec(modelspec, target, polygroup, slot, 0, (defaultglow != null) ? defaultglow :false, name);
|
||||
modelspec.put(polygroup, partspec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String validatePolygroup(String s, ModelSpec m) {
|
||||
|
@ -109,7 +143,7 @@ public class ModelSpecXMLReader {
|
|||
public Colour parseColour(String s) {
|
||||
try {
|
||||
Color c = Color.decode(s);
|
||||
return new Colour(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha())
|
||||
return new Colour(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha());
|
||||
} catch (Exception e){
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
//package net.machinemuse.powersuits.client.render.modelspec;
|
||||
//
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 9:10 AM, 29/04/13
|
||||
// *
|
||||
// * Ported to Java by lehjr on 11/10/16.
|
||||
// */
|
||||
//public class ModelSpecXMLWriter {
|
||||
// private ModelSpecXMLWriter() {
|
||||
// }
|
||||
//
|
||||
// private static ModelSpecXMLWriter INSTANCE;
|
||||
// public static ModelSpecXMLWriter getINSTANCE() {
|
||||
// if (INSTANCE == null)
|
||||
// INSTANCE = new ModelSpecXMLWriter();
|
||||
// return INSTANCE;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// public void writeRegistry(final String file) {
|
||||
//// final String s = null;
|
||||
//// final String s2 = "models";
|
||||
//// final Null$ module$ = Null$.MODULE$;
|
||||
//// final TopScope$ module$2 = TopScope$.MODULE$;
|
||||
//// final boolean b = false;
|
||||
//// final NodeBuffer $buf = new NodeBuffer();
|
||||
//// $buf.$amp$plus((Object)new Text("\n "));
|
||||
//// $buf.$amp$plus(ModelRegistry$.MODULE$.apply().withFilter((Function1)new ModelSpecXMLWriter$$anonfun.ModelSpecXMLWriter$$anonfun$1()).map((Function1)new ModelSpecXMLWriter$$anonfun.ModelSpecXMLWriter$$anonfun$2(), Iterable$.MODULE$.canBuildFrom()));
|
||||
//// $buf.$amp$plus((Object)new Text("\n "));
|
||||
//// final Elem xmlwrite = new Elem(s, s2, (MetaData)module$, (NamespaceBinding)module$2, b, (Seq)$buf);
|
||||
//// XML$.MODULE$.save(file, (Node)xmlwrite, XML$.MODULE$.save$default$3(), XML$.MODULE$.save$default$4(), XML$.MODULE$.save$default$5());
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// public String concatList(final List<String> list) {
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// return ModelSpecXMLWriter$.MODULE$.concatList(list);
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//// package net.machinemuse.powersuits.client.render.modelspec
|
||||
////
|
||||
////import java.io.{File, FileOutputStream, PrintWriter}
|
||||
////
|
||||
////import com.google.gson.Gson
|
||||
//
|
||||
//
|
||||
//// /**
|
||||
//// * Author: MachineMuse (Claire Semple)
|
||||
//// * Created: 9:10 AM, 29/04/13
|
||||
//// */
|
||||
//// object ModelSpecXMLWriter {
|
||||
//// def writeRegistry(file: String) {
|
||||
//// val xmlwrite =
|
||||
//// <models>
|
||||
//// {for ((modelname, modelspec) <- ModelRegistry.getInstance()) yield
|
||||
//// <model file={modelspec.filename} textures={concatList(modelspec.textures)}>
|
||||
//// {for ((partname, partspec) <- modelspec) yield
|
||||
//// <binding slot={partspec.slot.toString} target={partspec.morph.name}>
|
||||
//// <part defaultcolor={partspec.defaultcolourindex.toString} defaultglow={partspec.defaultglow.toString} polygroup={partspec.partName} name={partspec.displayName}/>
|
||||
//// </binding>}
|
||||
//// </model>}
|
||||
//// </models>
|
||||
////
|
||||
//// scala.xml.XML.save(file, xmlwrite)
|
||||
//// }
|
||||
////
|
||||
//// def concatList(list: Seq[String]): String = list mkString ","
|
||||
//// }
|
||||
//
|
||||
//}
|
|
@ -11,18 +11,18 @@ import com.google.gson.Gson
|
|||
*/
|
||||
object ModelSpecXMLWriter {
|
||||
def writeRegistry(file: String) {
|
||||
val xmlwrite =
|
||||
<models>
|
||||
{for ((modelname, modelspec) <- ModelRegistry.apply) yield
|
||||
<model file={modelspec.filename} textures={concatList(modelspec.textures)}>
|
||||
{for ((partname, partspec) <- modelspec.apply) yield
|
||||
<binding slot={partspec.slot.toString} target={partspec.morph.name}>
|
||||
<part defaultcolor={partspec.defaultcolourindex.toString} defaultglow={partspec.defaultglow.toString} polygroup={partspec.partName} name={partspec.displayName}/>
|
||||
</binding>}
|
||||
</model>}
|
||||
</models>
|
||||
|
||||
scala.xml.XML.save(file, xmlwrite)
|
||||
// val xmlwrite =
|
||||
// <models>
|
||||
// {for ((modelname, modelspec) <- ModelRegistry.getInstance()) yield
|
||||
// <model file={modelspec.filename} textures={concatList(modelspec.textures)}>
|
||||
// {for ((partname, partspec) <- modelspec) yield
|
||||
// <binding slot={partspec.slot.toString} target={partspec.morph.name}>
|
||||
// <part defaultcolor={partspec.defaultcolourindex.toString} defaultglow={partspec.defaultglow.toString} polygroup={partspec.partName} name={partspec.displayName}/>
|
||||
// </binding>}
|
||||
// </model>}
|
||||
// </models>
|
||||
//
|
||||
// scala.xml.XML.save(file, xmlwrite)
|
||||
}
|
||||
|
||||
def concatList(list: Seq[String]): String = list mkString ","
|
||||
|
|
|
@ -22,12 +22,40 @@ public enum MorphTarget {
|
|||
ModelRenderer apply(ModelBiped m);
|
||||
}
|
||||
|
||||
public ModelRenderer apply(ModelBiped m) {
|
||||
switch(this) {
|
||||
case Cloak:
|
||||
return Cloak.apply(m);
|
||||
|
||||
case Head:
|
||||
return Head.apply(m);
|
||||
|
||||
case Body:
|
||||
return Body.apply(m);
|
||||
|
||||
case RightArm:
|
||||
return RightArm.apply(m);
|
||||
|
||||
case LeftArm:
|
||||
return LeftArm.apply(m);
|
||||
|
||||
case RightLeg:
|
||||
return RightLeg.apply(m);
|
||||
|
||||
case LeftLeg:
|
||||
return LeftLeg.apply(m);
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class Cloak implements iMorphTarget {
|
||||
String name = "Cloak";
|
||||
|
||||
@Override
|
||||
public ModelRenderer apply(ModelBiped m) {
|
||||
return null;
|
||||
return m.bipedCloak;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,9 +65,9 @@ class ClientProxy extends CommonProxy {
|
|||
RenderingRegistry.registerEntityRenderingHandler(classOf[EntityLuxCapacitor], new RenderLuxCapacitorEntity)
|
||||
MinecraftForge.EVENT_BUS.register(new RenderEventHandler)
|
||||
val resource: URL = classOf[ClientProxy].getResource("/assets/powersuits/models/modelspec.xml")
|
||||
ModelSpecXMLReader.parseFile(resource)
|
||||
ModelSpecXMLReader.getINSTANCE.parseFile(resource)
|
||||
val otherResource: URL = classOf[ClientProxy].getResource("/assets/powersuits/models/armor2.xml")
|
||||
ModelSpecXMLReader.parseFile(otherResource)
|
||||
ModelSpecXMLReader.getINSTANCE.parseFile(otherResource)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,108 +0,0 @@
|
|||
//package net.machinemuse.utils.render
|
||||
//
|
||||
//import net.minecraft.client.renderer.{GLAllocation, OpenGlHelper, RenderHelper}
|
||||
//import org.lwjgl.opengl.GL11
|
||||
//
|
||||
///**
|
||||
// * Library for working with rendering.
|
||||
// *
|
||||
// * (c) 2013 Byron Shelden
|
||||
// * Edited by Claire Semple
|
||||
// */
|
||||
//trait Render[A] {
|
||||
// def run(): A
|
||||
//
|
||||
// import Render._
|
||||
//
|
||||
// def compile(): Render[A] = Render.compile(this)
|
||||
//
|
||||
// def map[B](f: A => B) = mk {
|
||||
// f(run())
|
||||
// }
|
||||
//
|
||||
// def flatMap[B](f: A => Render[B]) = mk {
|
||||
// f(run()).run()
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//object Render {
|
||||
// private def mk[A](act: => A): Render[A] = new Render[A] {
|
||||
// def run() = act
|
||||
// }
|
||||
//
|
||||
// def apply[A](act: => A): Render[A] = mk(act)
|
||||
//
|
||||
// def liftIO[A](act: => A): Render[A] = mk(act)
|
||||
//
|
||||
// def pure[A](a: => A): Render[A] = mk(a)
|
||||
//
|
||||
// def withPushedMatrix[A](r: Render[A]): Render[A] = mk {
|
||||
// GL11.glPushMatrix()
|
||||
// val a = r.run()
|
||||
// GL11.glPopMatrix()
|
||||
// a
|
||||
// }
|
||||
//
|
||||
// def fromBuffer[A](buf: TextureBuffer)(r: Render[A]): Render[A] = mk {
|
||||
// buf.bindRead()
|
||||
// // MuseLogger.logDebug("Bound buffer for reading")
|
||||
// val a = r.run()
|
||||
// // MuseLogger.logDebug("Unbound buffer for reading")
|
||||
// buf.unbindRead()
|
||||
// a
|
||||
// }
|
||||
//
|
||||
// def toBuffer[A](buf: TextureBuffer)(r: Render[A]): Render[A] = mk {
|
||||
// buf.bindWrite()
|
||||
// // MuseLogger.logDebug("Bound buffer for writing")
|
||||
// val a = r.run()
|
||||
// // MuseLogger.logDebug("Unbound buffer for writing")
|
||||
// buf.unbindWrite()
|
||||
// a
|
||||
// }
|
||||
//
|
||||
// def withPushedAttrib[A](mask: Int)(r: Render[A]): Render[A] = mk {
|
||||
// GL11.glPushAttrib(mask)
|
||||
// val a = r.run()
|
||||
// GL11.glPopAttrib()
|
||||
// a
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Compiles the given render into a display list.
|
||||
// *
|
||||
// * Note that the yield from the compiled render is captured and used as the yield of the call action.
|
||||
// *
|
||||
// * @return a render action that invokes the compiled display list.
|
||||
// */
|
||||
// def compile[A](r: Render[A]): Render[A] = {
|
||||
// val listIndex = GLAllocation.generateDisplayLists(1)
|
||||
// GL11.glNewList(listIndex, GL11.GL_COMPILE)
|
||||
// val a = r.run()
|
||||
// GL11.glEndList()
|
||||
//
|
||||
// mk {
|
||||
// GL11.glCallList(listIndex)
|
||||
// a
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def withGlow[A](r: Render[A]): Render[A] = {
|
||||
// for {
|
||||
// saved <- Render.liftIO {
|
||||
// (OpenGlHelper.lastBrightnessX, OpenGlHelper.lastBrightnessY)
|
||||
// }
|
||||
// _ <- Render {
|
||||
// GL11.glPushAttrib(GL11.GL_LIGHTING_BIT)
|
||||
// RenderHelper.disableStandardItemLighting()
|
||||
// OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F)
|
||||
// }
|
||||
// a <- r
|
||||
// _ <- Render {
|
||||
// OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, saved._1, saved._2)
|
||||
// GL11.glPopAttrib()
|
||||
// }
|
||||
// } yield (a)
|
||||
// }
|
||||
//}
|
Loading…
Reference in a new issue