aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyle.java3
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionBreakWithSuperBoom.java4
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/dungeon/data/OffsetPoint.java7
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonBreakableWall.java6
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonDummy.java81
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureActions.java123
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java35
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java17
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java6
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java1
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java1
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java5
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java104
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java2
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java27
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java10
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java1
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java28
19 files changed, 430 insertions, 33 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyle.java b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyle.java
index 44251237..0acde584 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyle.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/types/TCTextStyle.java
@@ -20,6 +20,8 @@ public class TCTextStyle implements TypeConverter<TextStyle> {
textStyle.setBackground(element.getAsJsonObject().has("background") ? TypeConverterRegistry.getTypeConverter("acolor", AColor.class).deserialize(element.getAsJsonObject().get("background"))
: new AColor(0x00777777, true));
textStyle.setGroupName(element.getAsJsonObject().get("group").getAsString());
+ if (element.getAsJsonObject().has("shadow"))
+ textStyle.setShadow(element.getAsJsonObject().get("shadow").getAsBoolean());
return textStyle;
}
@@ -29,6 +31,7 @@ public class TCTextStyle implements TypeConverter<TextStyle> {
jsonObject.add("color", TypeConverterRegistry.getTypeConverter("acolor", AColor.class).serialize(element.getColor()));
jsonObject.add("background", TypeConverterRegistry.getTypeConverter("acolor", AColor.class).serialize(element.getBackground()));
jsonObject.addProperty("group", element.getGroupName());
+ jsonObject.addProperty("shadow", element.isShadow());
return jsonObject;
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionBreakWithSuperBoom.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionBreakWithSuperBoom.java
index 04b839e6..3dcae148 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionBreakWithSuperBoom.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/actions/ActionBreakWithSuperBoom.java
@@ -59,6 +59,8 @@ public class ActionBreakWithSuperBoom extends AbstractAction {
GlStateManager.translate(-x_fix, -y_fix, -z_fix);
GlStateManager.disableLighting();
GlStateManager.enableAlpha();
+ GlStateManager.disableDepth();
+ GlStateManager.depthMask(false);
GlStateManager.enableBlend();
Tessellator tessellator = Tessellator.getInstance();
@@ -74,7 +76,7 @@ public class ActionBreakWithSuperBoom extends AbstractAction {
GlStateManager.enableLighting();
GlStateManager.popMatrix();
- RenderUtils.highlightBlock(blockpos, new Color(0, 255,255,50), partialTicks, false);
+ RenderUtils.highlightBlock(blockpos, new Color(0, 255,255,50), partialTicks, true);
RenderUtils.drawTextAtWorld("Superboom", blockpos.getX() + 0.5f, blockpos.getY() + 0.5f, blockpos.getZ() + 0.5f, 0xFFFFFF00, 0.03f, false, false, partialTicks);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/data/OffsetPoint.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/data/OffsetPoint.java
index 2fdfec96..78ae7ab9 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/data/OffsetPoint.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/data/OffsetPoint.java
@@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import net.minecraft.block.Block;
import net.minecraft.util.BlockPos;
+import net.minecraft.util.Vec3;
import javax.vecmath.Vector2d;
import java.io.Serializable;
@@ -13,6 +14,8 @@ import java.io.Serializable;
@Data
@AllArgsConstructor
public class OffsetPoint implements Cloneable, Serializable {
+ private static final long serialVersionUID = 3102336358774967540L;
+
private int x;
private int y;
private int z;
@@ -20,6 +23,10 @@ public class OffsetPoint implements Cloneable, Serializable {
public OffsetPoint(DungeonRoom dungeonRoom, BlockPos pos) {
setPosInWorld(dungeonRoom, pos);
}
+ public OffsetPoint(DungeonRoom dungeonRoom, Vec3 pos) {
+ setPosInWorld(dungeonRoom, new BlockPos((int)pos.xCoord, (int)pos.yCoord, (int)pos.zCoord));
+ }
+
public void setPosInWorld(DungeonRoom dungeonRoom, BlockPos pos) {
Vector2d vector2d = new Vector2d(pos.getX() - dungeonRoom.getMin().getX(), pos.getZ() - dungeonRoom.getMin().getZ());
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonBreakableWall.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonBreakableWall.java
index 9b32802f..5ba3f21c 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonBreakableWall.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonBreakableWall.java
@@ -46,11 +46,11 @@ public class DungeonBreakableWall implements DungeonMechanic, RouteBlocker {
Set<Action> preRequisites = base = new HashSet<Action>();
{
ActionBreakWithSuperBoom actionClick;
- preRequisites.add(actionClick = new ActionBreakWithSuperBoom(secretPoint.getOffsetPointList().get(0)));
+ preRequisites.add(actionClick = new ActionBreakWithSuperBoom(getRepresentingPoint()));
preRequisites = actionClick.getPreRequisite();
}
{
- ActionMoveNearestAir actionMove = new ActionMoveNearestAir(secretPoint.getOffsetPointList().get(0));
+ ActionMoveNearestAir actionMove = new ActionMoveNearestAir(getRepresentingPoint());
preRequisites.add(actionMove);
preRequisites = actionMove.getPreRequisite();
}
@@ -113,6 +113,6 @@ public class DungeonBreakableWall implements DungeonMechanic, RouteBlocker {
@Override
public OffsetPoint getRepresentingPoint() {
- return secretPoint.getOffsetPointList().size() == 0 ? null : secretPoint.getOffsetPointList().get(0);
+ return secretPoint.getOffsetPointList().size() == 0 ? null : secretPoint.getOffsetPointList().get(secretPoint.getOffsetPointList().size() / 2);
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonDummy.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonDummy.java
new file mode 100755
index 00000000..6cd7238a
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/mechanics/DungeonDummy.java
@@ -0,0 +1,81 @@
+package kr.syeyoung.dungeonsguide.dungeon.mechanics;
+
+import com.google.common.collect.Sets;
+import kr.syeyoung.dungeonsguide.dungeon.actions.Action;
+import kr.syeyoung.dungeonsguide.dungeon.actions.ActionChangeState;
+import kr.syeyoung.dungeonsguide.dungeon.actions.ActionInteract;
+import kr.syeyoung.dungeonsguide.dungeon.actions.ActionMove;
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.predicates.PredicateArmorStand;
+import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
+import lombok.Data;
+import net.minecraft.util.BlockPos;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Data
+public class DungeonDummy implements DungeonMechanic {
+ private OffsetPoint secretPoint = new OffsetPoint(0,0,0);
+ private List<String> preRequisite = new ArrayList<String>();
+
+
+ @Override
+ public Set<Action> getAction(String state, DungeonRoom dungeonRoom) {
+ if (!"navigate".equalsIgnoreCase(state)) throw new IllegalArgumentException(state+" is not valid state for secret");
+ Set<Action> base;
+ Set<Action> preRequisites = base = new HashSet<Action>();
+ {
+ ActionMove actionMove = new ActionMove(secretPoint);
+ preRequisites.add(actionMove);
+ preRequisites = actionMove.getPreRequisite();
+ }
+ {
+ for (String str : preRequisite) {
+ if (str.isEmpty()) continue;
+ ActionChangeState actionChangeState = new ActionChangeState(str.split(":")[0], str.split(":")[1]);
+ preRequisites.add(actionChangeState);
+ }
+ }
+ return base;
+ }
+
+ @Override
+ public void highlight(Color color, String name, DungeonRoom dungeonRoom, float partialTicks) {
+ BlockPos pos = getSecretPoint().getBlockPos(dungeonRoom);
+ RenderUtils.highlightBlock(pos, color,partialTicks);
+ RenderUtils.drawTextAtWorld("D-"+name, pos.getX() +0.5f, pos.getY()+0.375f, pos.getZ()+0.5f, 0xFFFFFFFF, 0.03f, false, true, partialTicks);
+ RenderUtils.drawTextAtWorld(getCurrentState(dungeonRoom), pos.getX() +0.5f, pos.getY()+0f, pos.getZ()+0.5f, 0xFFFFFFFF, 0.03f, false, true, partialTicks);
+ }
+
+
+ public DungeonDummy clone() throws CloneNotSupportedException {
+ DungeonDummy dungeonSecret = new DungeonDummy();
+ dungeonSecret.secretPoint = (OffsetPoint) secretPoint.clone();
+ dungeonSecret.preRequisite = new ArrayList<String>(preRequisite);
+ return dungeonSecret;
+ }
+
+
+ @Override
+ public String getCurrentState(DungeonRoom dungeonRoom) {
+ return "no-state";
+ }
+
+ @Override
+ public Set<String> getPossibleStates(DungeonRoom dungeonRoom) {
+ return Sets.newHashSet("navigate");
+ }
+ @Override
+ public Set<String> getTotalPossibleStates(DungeonRoom dungeonRoom) {
+ return Sets.newHashSet("no-state","navigate");
+ }
+ @Override
+ public OffsetPoint getRepresentingPoint() {
+ return secretPoint;
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
index d34e7eee..b507ba47 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
@@ -9,6 +9,7 @@ import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureCooldownCounter;
import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureDisableMessage;
import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureTooltipDungeonStat;
import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureTooltipPrice;
+import kr.syeyoung.dungeonsguide.features.impl.secret.FeatureActions;
import kr.syeyoung.dungeonsguide.features.impl.secret.FeatureMechanicBrowse;
import lombok.Getter;
@@ -88,5 +89,6 @@ public class FeatureRegistry {
public static final FeatureDungeonMap DUNGEON_MAP = register(new FeatureDungeonMap());
public static final FeatureMechanicBrowse SECRET_BROWSE = register(new FeatureMechanicBrowse());
+ public static final FeatureActions SECRET_ACTIONS = register(new FeatureActions());
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureActions.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureActions.java
new file mode 100644
index 00000000..888f4d8c
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureActions.java
@@ -0,0 +1,123 @@
+package kr.syeyoung.dungeonsguide.features.impl.secret;
+
+import kr.syeyoung.dungeonsguide.SkyblockStatus;
+import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
+import kr.syeyoung.dungeonsguide.dungeon.actions.Action;
+import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
+import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
+import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
+import kr.syeyoung.dungeonsguide.features.text.StyledText;
+import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
+import kr.syeyoung.dungeonsguide.roomprocessor.GeneralRoomProcessor;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.client.network.NetworkPlayerInfo;
+import net.minecraft.scoreboard.ScorePlayerTeam;
+import net.minecraft.util.MathHelper;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class FeatureActions extends TextHUDFeature {
+ public FeatureActions() {
+ super("Secret", "Action Viewer", "View List of actions that needs to be taken", "secret.actionview", false, 200, getFontRenderer().FONT_HEIGHT * 10);
+ }
+
+ SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
+
+ @Override
+ public boolean doesScaleWithHeight() {
+ return false;
+ }
+
+ @Override
+ public boolean isHUDViewable() {
+ if (Minecraft.getMinecraft().currentScreen != null) return false;
+ if (!skyblockStatus.isOnDungeon()) return false;
+ if (skyblockStatus.getContext() == null || !skyblockStatus.getContext().getMapProcessor().isInitialized()) return false;
+ DungeonContext context = skyblockStatus.getContext();
+
+ EntityPlayerSP thePlayer = Minecraft.getMinecraft().thePlayer;
+ Point roomPt = context.getMapProcessor().worldPointToRoomPoint(thePlayer.getPosition());
+ DungeonRoom dungeonRoom = context.getRoomMapper().get(roomPt);
+ if (dungeonRoom == null) return false;
+ if (!(dungeonRoom.getRoomProcessor() instanceof GeneralRoomProcessor)) return false;
+ return true;
+ }
+
+ private static final List<StyledText> dummyText= new ArrayList<StyledText>();
+ static {
+ dummyText.add(new StyledText("Pathfinding ","pathfinding"));
+ dummyText.add(new StyledText("Secret ","mechanic"));
+ dummyText.add(new StyledText("-> ","separator"));
+ dummyText.add(new StyledText("Found\n","state"));
+ dummyText.add(new StyledText("> ","current"));
+ dummyText.add(new StyledText("1","number"));
+ dummyText.add(new StyledText(". ","dot"));
+ dummyText.add(new StyledText("Move ","action"));
+ dummyText.add(new StyledText("OffsetPoint{x=1,y=42,z=1} \n","afterline"));
+ dummyText.add(new StyledText(" ","current"));
+ dummyText.add(new StyledText("2","number"));
+ dummyText.add(new StyledText(". ","dot"));
+ dummyText.add(new StyledText("Click ","action"));
+ dummyText.add(new StyledText("OffsetPoint{x=1,y=42,z=1} \n","afterline"));
+ dummyText.add(new StyledText(" ","current"));
+ dummyText.add(new StyledText("3","number"));
+ dummyText.add(new StyledText(". ","dot"));
+ dummyText.add(new StyledText("Profit ","action"));
+ }
+
+ @Override
+ public List<String> getUsedTextStyle() {
+ return Arrays.asList(new String[] {
+ "pathfinding","mechanic","separator","state","current", "number", "dot", "action", "afterline"
+ });
+ }
+
+ @Override
+ public List<StyledText> getDummyText() {
+ return dummyText;
+ }
+
+
+ @Override
+ public List<StyledText> getText() {
+ List<StyledText> actualBit = new ArrayList<StyledText>();
+
+ DungeonContext context = skyblockStatus.getContext();
+
+ EntityPlayerSP thePlayer = Minecraft.getMinecraft().thePlayer;
+ Point roomPt = context.getMapProcessor().worldPointToRoomPoint(thePlayer.getPosition());
+ DungeonRoom dungeonRoom = context.getRoomMapper().get(roomPt);
+
+ ActionRoute path = ((GeneralRoomProcessor)dungeonRoom.getRoomProcessor()).getPath();
+
+ if (path != null) {
+ actualBit.add(new StyledText("Pathfinding ","pathfinding"));
+ actualBit.add(new StyledText(path.getMechanic()+" ","mechanic"));
+ actualBit.add(new StyledText("-> ","separator"));
+ actualBit.add(new StyledText(path.getState()+"\n","state"));
+
+ for (int i = 0; i < path.getActions().size(); i++) {
+ actualBit.add(new StyledText((i == path.getCurrent() ? ">" : " ") +" ","current"));
+ actualBit.add(new StyledText(i+"","number"));
+ actualBit.add(new StyledText(". ","dot"));
+ Action action = path.getActions().get(i);
+ String[] str = action.toString().split(" ");
+ actualBit.add(new StyledText(str[0] + " ","action"));
+ for (int i1 = 1; i1 < str.length; i1++) {
+ actualBit.add(new StyledText(str[i1]+" ","afterline"));
+ }
+ actualBit.add(new StyledText("\n","afterline"));
+ }
+ }
+ return actualBit;
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java
index 95ac96e2..6436d0e0 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java
@@ -39,7 +39,7 @@ import java.util.Set;
public class FeatureMechanicBrowse extends GuiFeature implements GuiPostRenderListener, GuiClickListener, WorldRenderListener {
public FeatureMechanicBrowse() {
- super("secret","Mechanic(Secret) Browser", "Browse and Pathfind secrets and mechanics in the current room", "secret.mechanicbrowse", false, 100, 300);
+ super("Secret","Mechanic(Secret) Browser", "Browse and Pathfind secrets and mechanics in the current room", "secret.mechanicbrowse", false, 100, 300);
}
SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
@@ -124,11 +124,11 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPostRenderLi
ActionRoute route = grp.getPath();
fr.drawString(route.getMechanic()+" -> "+route.getState(), fr.getStringWidth("Selected: ") + 2,2, 0xFFFFFF00);
}
- clip(new ScaledResolution(Minecraft.getMinecraft()), feature.x, feature.y + fr.FONT_HEIGHT + 4, feature.width , fr.FONT_HEIGHT * 10 + 4);
- GL11.glEnable(GL11.GL_SCISSOR_TEST);
GlStateManager.translate(0, fr.FONT_HEIGHT + 4, 0);
- Gui.drawRect(0, 0, feature.width, fr.FONT_HEIGHT * 9 + 4, 0xFF444444);
- Gui.drawRect(1, 1, feature.width - 1, fr.FONT_HEIGHT * 9 + 3, 0xFF262626);
+ Gui.drawRect(0, 0, feature.width, feature.height - fr.FONT_HEIGHT - 4, 0xFF444444);
+ Gui.drawRect(1, 1, feature.width - 1,feature.height - fr.FONT_HEIGHT - 5, 0xFF262626);
+ clip(new ScaledResolution(Minecraft.getMinecraft()), feature.x, feature.y + fr.FONT_HEIGHT + 5, feature.width , feature.height - fr.FONT_HEIGHT - 6);
+ GL11.glEnable(GL11.GL_SCISSOR_TEST);
GlStateManager.translate(0, -dy, 0);
GlStateManager.pushMatrix();
@@ -155,11 +155,11 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPostRenderLi
}
GlStateManager.popMatrix();;
- clip(new ScaledResolution(Minecraft.getMinecraft()), feature.x + feature.width, feature.y + fr.FONT_HEIGHT + 4, feature.width, fr.FONT_HEIGHT * 10 + 4);
if (selected != -1) {
GlStateManager.translate(feature.width, selected * fr.FONT_HEIGHT, 0);
Gui.drawRect(0, 0, feature.width, fr.FONT_HEIGHT * possibleStates.size() + 4, 0xFF444444);
Gui.drawRect(-1, 1, feature.width - 1, fr.FONT_HEIGHT * possibleStates.size() + 3, 0xFF262626);
+ clip(new ScaledResolution(Minecraft.getMinecraft()), feature.x + feature.width, feature.y + fr.FONT_HEIGHT + 5, feature.width , feature.height - fr.FONT_HEIGHT - 6);
GlStateManager.translate(2,2, 0);
Point popupStart = new Point(feature.x + feature.width, (selected + 1) * fr.FONT_HEIGHT +6 + feature.y - dy + 2);
@@ -248,6 +248,18 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPostRenderLi
}
found = false;
for (Map.Entry<String, DungeonMechanic> value : ((GeneralRoomProcessor) dungeonRoom.getRoomProcessor()).getDungeonRoom().getDungeonRoomInfo().getMechanics().entrySet()) {
+ if (value.getValue() instanceof DungeonJournal) {
+ if (!found) {
+ sortedMechanics.add("Journals");
+ sortedMechanicsName.add("");
+ found = true;
+ }
+ sortedMechanics.add(value.getValue());
+ sortedMechanicsName.add(value.getKey());
+ }
+ }
+ found = false;
+ for (Map.Entry<String, DungeonMechanic> value : ((GeneralRoomProcessor) dungeonRoom.getRoomProcessor()).getDungeonRoom().getDungeonRoomInfo().getMechanics().entrySet()) {
if (value.getValue() instanceof DungeonDoor || value.getValue() instanceof DungeonBreakableWall || value.getValue() instanceof DungeonLever
|| value.getValue() instanceof DungeonOnewayDoor || value.getValue() instanceof DungeonOnewayLever || value.getValue() instanceof DungeonPressurePlate) {
if (!found) {
@@ -263,6 +275,14 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPostRenderLi
@Override
public void onMouseInput(GuiScreenEvent.MouseInputEvent.Pre mouseInputEvent) {
+ if (Minecraft.getMinecraft().currentScreen instanceof GuiGuiLocationConfig
+ || Minecraft.getMinecraft().currentScreen instanceof GuiConfig
+ || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonRoomEdit
+ || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonAddSet
+ || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonParameterEdit
+ || Minecraft.getMinecraft().currentScreen instanceof GuiDungeonValueEdit) return;
+
+
if (!skyblockStatus.isOnDungeon()) return;
if (skyblockStatus.getContext() == null || !skyblockStatus.getContext().getMapProcessor().isInitialized()) return;
DungeonContext context = skyblockStatus.getContext();
@@ -319,6 +339,9 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPostRenderLi
if (preSelectedState == selectedState && preSelectedState != -1) {
((GeneralRoomProcessor) dungeonRoom.getRoomProcessor()).pathfind(sortedMechanicsName.get(selected),
possibleStates.get(selectedState));
+ selected = -1;
+ selectedState = -1;
+ possibleStates.clear();
}
selectedState = preSelectedState;
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java
index 06ac0fca..3a87075c 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java
@@ -13,6 +13,7 @@ import kr.syeyoung.dungeonsguide.gui.MPanel;
import kr.syeyoung.dungeonsguide.gui.elements.MButton;
import kr.syeyoung.dungeonsguide.gui.elements.MColor;
import kr.syeyoung.dungeonsguide.gui.elements.MEditableAColor;
+import kr.syeyoung.dungeonsguide.gui.elements.MToggleButton;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
@@ -35,6 +36,7 @@ public class PanelTextParameterConfig extends MPanel {
private MEditableAColor currentColor;
private MEditableAColor backgroundColor;
+ private MToggleButton shadow;
@Override
public void onBoundsUpdate() {
@@ -77,6 +79,17 @@ public class PanelTextParameterConfig extends MPanel {
}
});
add(backgroundColor);
+ shadow = new MToggleButton();
+ shadow.setSize(new Dimension(20, 10));
+ shadow.setBounds(new Rectangle(275 , 30, 20, 10));
+ shadow.setOnToggle(new Runnable() {
+ @Override
+ public void run() {
+ for (String se:selected)
+ feature.getStylesMap().get(se).setShadow(shadow.isEnabled());
+ }
+ });
+ add(shadow);
}
@@ -132,6 +145,7 @@ public class PanelTextParameterConfig extends MPanel {
GlStateManager.popMatrix();
fr.drawString("Text Color: ", 0, 10, 0xFFFFFFFF);
fr.drawString("Background Color: ", 100, 10, 0xFFFFFFFF);
+ fr.drawString("Shadow: ", 0, 26, 0xFFFFFFFF);
GlStateManager.popMatrix();
}
@@ -177,15 +191,18 @@ public class PanelTextParameterConfig extends MPanel {
if (selected.size() != 0) {
currentColor.setColor(styles.get(selected.iterator().next()).getColor());
backgroundColor.setColor(styles.get(selected.iterator().next()).getBackground());
+ shadow.setEnabled(styles.get(selected.iterator().next()).isShadow());
} else {
currentColor.setColor(new AColor(0xff555555, true));
backgroundColor.setColor(new AColor(0xff555555, true));
+ shadow.setEnabled(false);
}
}
if (selected.size() == 1) {
currentColor.setColor(styles.get(selected.iterator().next()).getColor());
backgroundColor.setColor(styles.get(selected.iterator().next()).getBackground());
+ shadow.setEnabled(styles.get(selected.iterator().next()).isShadow());
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
index 4ab41379..c0e521f0 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
@@ -90,7 +90,7 @@ public abstract class TextHUDFeature extends GuiFeature {
}
for (String str : getUsedTextStyle()) {
if (!res.containsKey(str))
- res.put(str, new TextStyle(str, new AColor(0xffffffff, true), new AColor(0x00777777, true)));
+ res.put(str, new TextStyle(str, new AColor(0xffffffff, true), new AColor(0x00777777, true), false));
}
stylesMap = res;
}
@@ -175,13 +175,13 @@ public abstract class TextHUDFeature extends GuiFeature {
Gui.drawRect(x,y, x+fr.getStringWidth(content), y + fr.FONT_HEIGHT, RenderUtils.getColorAt(x,y, style.getBackground()));
if (!style.getColor().isChroma()) {
- fr.drawString(content, x, y, style.getColor().getRGB());
+ fr.drawString(content, x, y, style.getColor().getRGB(), style.isShadow());
return new Dimension(fr.getStringWidth(content), fr.FONT_HEIGHT);
}else {
char[] charArr = content.toCharArray();
int width = 0;
for (int i = 0; i < charArr.length; i++) {
- fr.drawString(String.valueOf(charArr[i]), x + width, y, RenderUtils.getColorAt(x + width, y, style.getColor()));
+ fr.drawString(String.valueOf(charArr[i]), x + width, y, RenderUtils.getColorAt(x + width, y, style.getColor()), style.isShadow());
width += fr.getCharWidth(charArr[i]);
}
return new Dimension(width, fr.FONT_HEIGHT);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java
index 0df4c9a5..74ee297b 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextStyle.java
@@ -14,4 +14,5 @@ public class TextStyle {
private String groupName;
private AColor color;
private AColor background;
+ private boolean shadow = false;
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java
index 35f020a1..ac4521c8 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/EditingContext.java
@@ -37,6 +37,7 @@ public class EditingContext {
@Getter
private DungeonRoom room;
+ @Getter
private Stack<GuiScreen> guiStack = new Stack<GuiScreen>();
public boolean isEditingSecrets() {
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java
index d37e7c53..34d7f740 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonRoomEdit.java
@@ -4,6 +4,7 @@ import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.gui.MPanel;
import kr.syeyoung.dungeonsguide.gui.elements.MTabbedPane;
import kr.syeyoung.dungeonsguide.roomedit.panes.*;
+import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
@@ -21,6 +22,8 @@ public class GuiDungeonRoomEdit extends GuiScreen {
private DungeonRoom room;
private MTabbedPane tabbedPane;
+ @Getter
+ private SecretEditPane sep;
public GuiDungeonRoomEdit(DungeonRoom room) {
this.room = room;
@@ -32,7 +35,7 @@ public class GuiDungeonRoomEdit extends GuiScreen {
tabbedPane.addTab("General", new GeneralEditPane(room));
tabbedPane.addTab("Match", new RoomDataDisplayPane(room));
- tabbedPane.addTab("Secrets", new SecretEditPane(room));
+ tabbedPane.addTab("Secrets", sep = new SecretEditPane(room));
tabbedPane.addTab("Actions", new ActionDisplayPane(room));
tabbedPane.addTab("Test", new RoommatchingPane(room));
tabbedPane.addTab("Proc.Params", new ProcessorParameterEditPane(room));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java
new file mode 100755
index 00000000..73c3df8b
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java
@@ -0,0 +1,104 @@
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonDummy;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonNPC;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditDummy extends MPanel implements ValueEdit<DungeonDummy> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private DungeonDummy dungeonSecret;
+
+ private MLabel label;
+ private MValue<OffsetPoint> value;
+ private MTextField preRequisite;
+ private MLabelAndElement preRequisite2;
+
+ public ValueEditDummy(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonSecret = (DungeonDummy) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Dummy Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonSecret.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonSecret.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonSecret.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonSecret.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditDummy> {
+
+ @Override
+ public ValueEditDummy createValueEdit(Parameter parameter) {
+ return new ValueEditDummy(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonDummy();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonDummy)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java
index 322bfad5..49f45932 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java
@@ -38,7 +38,7 @@ public class ValueEditNPC extends MPanel implements ValueEdit<DungeonNPC> {
label = new MLabel();
- label.setText("FairySoul Point");
+ label.setText("NPC Point");
label.setAlignment(MLabel.Alignment.LEFT);
add(label);
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java
index 11e1982c..fc2584d6 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java
@@ -27,6 +27,7 @@ public class GeneralEditPane extends MPanel {
private MLabelAndElement uuid;
private MLabelAndElement name;
+ private MLabelAndElement secrets;
private MLabelAndElement shape;
private MLabelAndElement rotation;
@@ -59,12 +60,24 @@ public class GeneralEditPane extends MPanel {
name.setBounds(new Rectangle(0,20,getBounds().width, 20));
add(name);
}
+ {
+ final MIntegerSelectionButton la = new MIntegerSelectionButton(dungeonRoom.getDungeonRoomInfo().getTotalSecrets());
+ la.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ dungeonRoom.getDungeonRoomInfo().setTotalSecrets(la.getData());
+ }
+ });
+ secrets = new MLabelAndElement("Room Secrets: ", la);
+ secrets.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ add(secrets);
+ }
{
MLabel la;
shape = new MLabelAndElement("Room Shape: ", la = new MLabel());
la.setText(dungeonRoom.getDungeonRoomInfo().getShape()+"");
- shape.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ shape.setBounds(new Rectangle(0,60,getBounds().width, 20));
add(shape);
}
@@ -72,20 +85,20 @@ public class GeneralEditPane extends MPanel {
MLabel la;
rotation = new MLabelAndElement("Found Room Rotation: ", la = new MLabel());
la.setText(dungeonRoom.getRoomMatcher().getRotation()+"");
- rotation.setBounds(new Rectangle(0,60,getBounds().width, 20));
+ rotation.setBounds(new Rectangle(0,80,getBounds().width, 20));
add(rotation);
}
{
MLabel la;
shape2 = new MLabelAndElement("Found Room Shape: ", la = new MLabel());
la.setText(dungeonRoom.getShape()+"");
- shape2.setBounds(new Rectangle(0,80,getBounds().width, 20));
+ shape2.setBounds(new Rectangle(0,100,getBounds().width, 20));
add(shape2);
}
{
final MStringSelectionButton mStringSelectionButton = new MStringSelectionButton(new ArrayList<String>(ProcessorFactory.getProcessors()), dungeonRoom.getDungeonRoomInfo().getProcessorId());
roomProcessor = new MLabelAndElement("Room Processor: ", mStringSelectionButton);
- roomProcessor.setBounds(new Rectangle(0,100,getBounds().width, 20));
+ roomProcessor.setBounds(new Rectangle(0,120,getBounds().width, 20));
add(roomProcessor);
mStringSelectionButton.setOnUpdate(new Runnable() {
@@ -106,7 +119,7 @@ public class GeneralEditPane extends MPanel {
}
});
end.setBackgroundColor(Color.green);
- end.setBounds(new Rectangle(0,120,getBounds().width, 20));
+ end.setBounds(new Rectangle(0,140,getBounds().width, 20));
add(end);
}
{
@@ -132,7 +145,7 @@ public class GeneralEditPane extends MPanel {
}
});
schematic.setBackgroundColor(Color.orange);
- schematic.setBounds(new Rectangle(0,160,getBounds().width, 20));
+ schematic.setBounds(new Rectangle(0,180,getBounds().width, 20));
add(schematic);
}
{
@@ -147,7 +160,7 @@ public class GeneralEditPane extends MPanel {
}
});
save.setBackgroundColor(Color.green);
- save.setBounds(new Rectangle(0,140,getBounds().width, 20));
+ save.setBounds(new Rectangle(0,10,getBounds().width, 20));
add(save);
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java
index 10a40013..6225f133 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java
@@ -36,6 +36,12 @@ public class SecretEditPane extends MPanel implements DynamicEditor {
}
}
+ public void createNewMechanic(String uid, DungeonMechanic data) {
+ MParameter parameter;
+ parameters.add(parameter = new MParameter(new Parameter(uid, data, data), SecretEditPane.this));
+ parameter.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ }
+
public void buildElements() {
{
create = new MButton();
@@ -45,9 +51,7 @@ public class SecretEditPane extends MPanel implements DynamicEditor {
create.setOnActionPerformed(new Runnable() {
@Override
public void run() {
- MParameter parameter;
- parameters.add(parameter = new MParameter(new Parameter(UUID.randomUUID().toString(), null, null), SecretEditPane.this));
- parameter.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ createNewMechanic(UUID.randomUUID().toString(), null);
}
});
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
index 3186facd..4437088e 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
@@ -41,6 +41,7 @@ public class ValueEditRegistry {
valueEditMap.put(DungeonTomb.class.getName(), new ValueEditTomb.Generator());
valueEditMap.put(DungeonBreakableWall.class.getName(), new ValueEditBreakableWall.Generator());
valueEditMap.put(DungeonJournal.class.getName(), new ValueEditJournal.Generator());
+ valueEditMap.put(DungeonDummy.class.getName(), new ValueEditDummy.Generator());
valueEditMap.put(DungeonPressurePlate.class.getName(), new ValueEditPressurePlate.Generator());
valueEditMap.put(DungeonOnewayLever.class.getName(), new ValueEditOnewayLever.Generator());
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
index 04490a1c..71c6fbc0 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java
@@ -5,7 +5,9 @@ import kr.syeyoung.dungeonsguide.config.Config;
import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.dungeon.EntitySpawnManager;
import kr.syeyoung.dungeonsguide.dungeon.actions.tree.ActionRoute;
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonSecret;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.e;
import kr.syeyoung.dungeonsguide.events.PlayerInteractEntityEvent;
@@ -16,9 +18,11 @@ import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.entity.passive.EntityBat;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IChatComponent;
@@ -31,6 +35,7 @@ import net.minecraftforge.fml.common.gameevent.InputEvent;
import java.awt.*;
import java.util.Map;
+import java.util.UUID;
public class GeneralRoomProcessor implements RoomProcessor {
@@ -51,14 +56,6 @@ public class GeneralRoomProcessor implements RoomProcessor {
if (path != null) path.onRenderScreen(partialTicks);
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
- if (path != null) {
- fr.drawString("Pathfinding " + path.getMechanic() + ":" + path.getState(), 5, 5, 0xffffffff);
- for (int i = 0; i < path.getActions().size(); i++) {
- fr.drawString((i == path.getCurrent() ? ">" : " ") + " " + i + ". " + path.getActions().get(i),
- 5, i * 8 + 13, 0xFF00FF00);
- }
- }
-
Entity en = Minecraft.getMinecraft().objectMouseOver.entityHit;
if (en == null) return;;
@@ -170,6 +167,21 @@ public class GeneralRoomProcessor implements RoomProcessor {
@Override
public void onEntityDeath(LivingDeathEvent deathEvent) {
if (path != null) path.onLivingDeath(deathEvent);
+ if (EditingContext.getEditingContext() != null && EditingContext.getEditingContext().getRoom() == getDungeonRoom()) {
+ if (deathEvent.entity instanceof EntityBat) {
+ for (GuiScreen screen : EditingContext.getEditingContext().getGuiStack()) {
+ if (screen instanceof GuiDungeonRoomEdit) {
+ DungeonSecret secret = new DungeonSecret();
+ secret.setSecretType(DungeonSecret.SecretType.BAT);
+ secret.setSecretPoint(new OffsetPoint(dungeonRoom,
+ EntitySpawnManager.getSpawnLocation().get(deathEvent.entity.getEntityId())
+ ));
+ ((GuiDungeonRoomEdit) screen).getSep().createNewMechanic("BAT-"+UUID.randomUUID().toString(),
+ new DungeonSecret());
+ }
+ }
+ }
+ }
}
public static class Generator implements RoomProcessorGenerator<GeneralRoomProcessor> {