diff --git a/src/main/java/betterquesting/client/gui2/editors/GuiPrerequisiteEditor.java b/src/main/java/betterquesting/client/gui2/editors/GuiPrerequisiteEditor.java index fec4eb03f..6f2eaa99d 100644 --- a/src/main/java/betterquesting/client/gui2/editors/GuiPrerequisiteEditor.java +++ b/src/main/java/betterquesting/client/gui2/editors/GuiPrerequisiteEditor.java @@ -83,7 +83,7 @@ public void initPanel() { PanelTextBox panTxt = new PanelTextBox(new GuiTransform(GuiAlign.TOP_EDGE, new GuiPadding(0, 16, 0, -32), 0), QuestTranslation.translate("betterquesting.title.pre_requisites")).setAlignment(1); panTxt.setColor(PresetColor.TEXT_HEADER.getColor()); cvBackground.addPanel(panTxt); - btnLogic = new PanelButton(new GuiTransform(GuiAlign.TOP_RIGHT, -116, 8, 100, 16, 0), 8, QuestTranslation.translate("betterquesting.btn.logic") + ": " + quest.getProperty(NativeProps.LOGIC_QUEST)); + btnLogic = new PanelButton(new GuiTransform(GuiAlign.TOP_RIGHT, -116, 8, 100, 16, 0), 9, QuestTranslation.translate("betterquesting.btn.logic") + ": " + quest.getProperty(NativeProps.LOGIC_QUEST)); cvBackground.addPanel(btnLogic); cvBackground.addPanel(new PanelButton(new GuiTransform(GuiAlign.BOTTOM_CENTER, -100, -16, 200, 16, 0), 0, QuestTranslation.translate("gui.back"))); @@ -163,11 +163,11 @@ private void refreshReqCanvas() { List> arrReq = QuestDatabase.INSTANCE.bulkLookup(quest.getRequirements()); for (int i = 0; i < arrReq.size(); i++) { - PanelButtonStorage> btnEdit = new PanelButtonStorage<>(new GuiRectangle(0, i * 16, width - 48, 16, 0), 1, + PanelButtonStorage> btnEdit = new PanelButtonStorage<>(new GuiRectangle(8, i * 16, width - 40, 16, 0), 1, QuestTranslation.translate(arrReq.get(i).getValue().getProperty(NativeProps.NAME)), arrReq.get(i)); canvasPreReq.addPanel(btnEdit); - PanelButtonStorage> btnType = new PanelButtonStorage<>(new GuiRectangle(width - 48, i * 16, 16, 16, 0), 6, "", arrReq.get(i)); + PanelButtonStorage> btnType = new PanelButtonStorage<>(new GuiRectangle(width - 32, i * 16, 16, 16, 0), 6, "", arrReq.get(i)); int arrReqID = arrReq.get(i).getID(); btnType.setIcon(quest.getRequirementType(arrReqID).getIcon().getTexture()); if (quest.getRequirementType(arrReqID) == IQuest.RequirementType.NORMAL) @@ -178,11 +178,16 @@ else if (quest.getRequirementType(arrReqID) == IQuest.RequirementType.IMPLICIT) btnType.setTooltip(Collections.singletonList(QuestTranslation.translate("betterquesting.btn.visible_hidden"))); canvasPreReq.addPanel(btnType); - PanelButtonStorage> btnUp = new PanelButtonStorage<>(new GuiRectangle(width - 32, i * 16, 16, 16, 0), 7, "", arrReq.get(i)); + PanelButtonStorage> btnUp = new PanelButtonStorage<>(new GuiRectangle(0, i * 16, 8, 8, 0), 7, "", arrReq.get(i)); btnUp.setIcon(PresetIcon.ICON_UP.getTexture()); btnUp.setActive(arrReq.size() > 1); canvasPreReq.addPanel(btnUp); + PanelButtonStorage> btnDown = new PanelButtonStorage<>(new GuiRectangle(0, i * 16 + 8, 8, 8, 0), 8, "", arrReq.get(i)); + btnDown.setIcon(PresetIcon.ICON_DOWN.getTexture()); + btnDown.setActive(arrReq.size() > 1); + canvasPreReq.addPanel(btnDown); + PanelButtonStorage> btnRem = new PanelButtonStorage<>(new GuiRectangle(width - 16, i * 16, 16, 16, 0), 3, "", arrReq.get(i)); btnRem.setIcon(PresetIcon.ICON_NEGATIVE.getTexture()); canvasPreReq.addPanel(btnRem); @@ -231,11 +236,15 @@ private void onButtonPress(PEventButton event) { DBEntry entry = ((PanelButtonStorage>) btn).getStoredValue(); quest.setRequirementType(entry.getID(), quest.getRequirementType(entry.getID()).next()); SendChanges(); - } else if (btn.getButtonID() == 7) { // Reorder + } else if (btn.getButtonID() == 7) { // Reorder Up + DBEntry entry = ((PanelButtonStorage>) btn).getStoredValue(); + reorderReq(quest, entry.getID(), -1); + SendChanges(); + } else if (btn.getButtonID() == 8) { // Reorder Down DBEntry entry = ((PanelButtonStorage>) btn).getStoredValue(); - reorderReq(quest, entry.getID()); + reorderReq(quest, entry.getID(), 1); SendChanges(); - } else if (btn.getButtonID() == 8) { // Logic + } else if (btn.getButtonID() == 9) { // Logic EnumLogic[] logicList = EnumLogic.values(); EnumLogic logic = quest.getProperty(NativeProps.LOGIC_QUEST); logic = logicList[(logic.ordinal() + 1) % logicList.length]; @@ -253,7 +262,7 @@ private boolean containsReq(IQuest quest, int id) { return false; } - private void reorderReq(IQuest quest, int id) { + private void reorderReq(IQuest quest, int id, int direction) { int[] orig = quest.getRequirements(); int indexToShift = -1; @@ -266,7 +275,7 @@ private void reorderReq(IQuest quest, int id) { if (indexToShift < 0) return; - int indexFrom = (indexToShift - 1 + orig.length) % orig.length; + int indexFrom = (indexToShift + direction + orig.length) % orig.length; int tmp = orig[indexToShift]; orig[indexToShift] = orig[indexFrom]; orig[indexFrom] = tmp; diff --git a/src/main/java/betterquesting/client/gui2/editors/GuiQuestLinesEditor.java b/src/main/java/betterquesting/client/gui2/editors/GuiQuestLinesEditor.java index 254318bb7..3f44fae08 100644 --- a/src/main/java/betterquesting/client/gui2/editors/GuiQuestLinesEditor.java +++ b/src/main/java/betterquesting/client/gui2/editors/GuiQuestLinesEditor.java @@ -170,7 +170,7 @@ public void onButtonClick() { btnDesign.setActive(selected != null); cvRight.addPanel(btnDesign); - btnTextEditor = new PanelButton(new GuiTransform(GuiAlign.TOP_RIGHT, new GuiPadding(-16, 48, 0, -64), 0), 8, "Aa"); + btnTextEditor = new PanelButton(new GuiTransform(GuiAlign.TOP_RIGHT, new GuiPadding(-16, 48, 0, -64), 0), 9, "Aa"); btnTextEditor.setActive(selected != null); cvRight.addPanel(btnTextEditor); @@ -290,8 +290,13 @@ private void onButtonPress(PEventButton event) { { DBEntry entry = ((PanelButtonStorage>) btn).getStoredValue(); int order = QuestLineDatabase.INSTANCE.getOrderIndex(entry.getID()); - if (order > 0) SendReorder(order); - } else if (btn.getButtonID() == 8) // Big Description Editor + if (order > 0) SendReorder(order, -1); + } else if (btn.getButtonID() == 7 && btn instanceof PanelButtonStorage) // Move Down + { + DBEntry entry = ((PanelButtonStorage>) btn).getStoredValue(); + int order = QuestLineDatabase.INSTANCE.getOrderIndex(entry.getID()); + if (order > 0) SendReorder(order, 1); + } else if (btn.getButtonID() == 9) // Big Description Editor { mc.displayGuiScreen(new GuiQuestDescEditor<>(this, selected, QuestTranslation.translate("betterquesting.title.edit_line"), () -> SendChanges(new DBEntry<>(selID, selected)))); } @@ -305,13 +310,16 @@ private void reloadList() { for (DBEntry entry : QuestLineDatabase.INSTANCE.getSortedEntries()) { IQuestLine ql = entry.getValue(); - PanelButtonStorage> tmp = new PanelButtonStorage<>(new GuiRectangle(0, i * 16, w - 32, 16, 0), 5, QuestTranslation.translate(ql.getUnlocalisedName()), entry); + PanelButtonStorage> tmp = new PanelButtonStorage<>(new GuiRectangle(8, i * 16, w - 24, 16, 0), 5, QuestTranslation.translate(ql.getUnlocalisedName()), entry); tmp.setActive(entry.getID() != selID); lineList.addPanel(tmp); - lineList.addPanel(new PanelButtonStorage<>(new GuiRectangle(w - 32, i * 16, 16, 16, 0), 6, "", entry).setIcon(PresetIcon.ICON_TRASH.getTexture())); - PanelButton btnUp = new PanelButtonStorage<>(new GuiRectangle(w - 16, i * 16, 16, 16, 0), 7, "", entry).setIcon(PresetIcon.ICON_UP.getTexture()); + PanelButton btnUp = new PanelButtonStorage<>(new GuiRectangle(0, i * 16, 8, 8, 0), 7, "", entry).setIcon(PresetIcon.ICON_UP.getTexture()); btnUp.setActive(QuestLineDatabase.INSTANCE.getSortedEntries().size() > 1); lineList.addPanel(btnUp); + PanelButton btnDown = new PanelButtonStorage<>(new GuiRectangle(0, i * 16 + 8, 8, 8, 0), 8, "", entry).setIcon(PresetIcon.ICON_DOWN.getTexture()); + btnDown.setActive(QuestLineDatabase.INSTANCE.getSortedEntries().size() > 1); + lineList.addPanel(btnDown); + lineList.addPanel(new PanelButtonStorage<>(new GuiRectangle(w - 16, i * 16, 16, 16, 0), 6, "", entry).setIcon(PresetIcon.ICON_TRASH.getTexture())); i++; } } @@ -328,7 +336,7 @@ private void SendChanges(DBEntry chapter) { NetChapterEdit.sendEdit(payload); } - private void SendReorder(int indexToShift) { + private void SendReorder(int indexToShift, int direction) { if (indexToShift < 0) return; List> entries = QuestLineDatabase.INSTANCE.getSortedEntries(); if (indexToShift >= entries.size()) return; @@ -337,7 +345,7 @@ private void SendReorder(int indexToShift) { chapterIDs[i] = entries.get(i).getID(); } - int indexFrom = (indexToShift - 1 + chapterIDs.length) % chapterIDs.length; + int indexFrom = (indexToShift + direction + chapterIDs.length) % chapterIDs.length; int tmp = chapterIDs[indexToShift]; chapterIDs[indexToShift] = chapterIDs[indexFrom]; chapterIDs[indexFrom] = tmp; diff --git a/src/main/java/betterquesting/client/gui2/editors/GuiRewardEditor.java b/src/main/java/betterquesting/client/gui2/editors/GuiRewardEditor.java index 45a4f986e..b1f155db8 100644 --- a/src/main/java/betterquesting/client/gui2/editors/GuiRewardEditor.java +++ b/src/main/java/betterquesting/client/gui2/editors/GuiRewardEditor.java @@ -22,6 +22,7 @@ import betterquesting.api2.client.gui.panels.lists.CanvasScrolling; import betterquesting.api2.client.gui.panels.lists.CanvasSearch; import betterquesting.api2.client.gui.themes.presets.PresetColor; +import betterquesting.api2.client.gui.themes.presets.PresetIcon; import betterquesting.api2.client.gui.themes.presets.PresetLine; import betterquesting.api2.client.gui.themes.presets.PresetTexture; import betterquesting.api2.registry.IFactoryData; @@ -177,6 +178,14 @@ private void onButtonPress(PEventButton event) { SendChanges(); })); } + } else if (btn.getButtonID() == 4) { // Reorder Up + DBEntry reward = ((PanelButtonStorage>) btn).getStoredValue(); + reorderReq(quest, reward.getID(), -1); + SendChanges(); + } else if (btn.getButtonID() == 5) { // Reorder Down + DBEntry reward = ((PanelButtonStorage>) btn).getStoredValue(); + reorderReq(quest, reward.getID(), 1); + SendChanges(); } } @@ -188,11 +197,33 @@ private void refreshRewards() { for (int i = 0; i < dbRew.size(); i++) { IReward reward = dbRew.get(i).getValue(); - qrList.addPanel(new PanelButtonStorage<>(new GuiRectangle(0, i * 16, w - 16, 16, 0), 3, QuestTranslation.translate(reward.getUnlocalisedName()), reward)); + qrList.addPanel(new PanelButtonStorage<>(new GuiRectangle(8, i * 16, w - 24, 16, 0), 3, QuestTranslation.translate(reward.getUnlocalisedName()), reward)); + PanelButton btnUp = new PanelButtonStorage<>(new GuiRectangle(0, i * 16, 8, 8, 0), 4, "", dbRew.get(i)).setIcon(PresetIcon.ICON_UP.getTexture()); + btnUp.setActive(dbRew.size() > 1); + qrList.addPanel(btnUp); + PanelButton btnDown = new PanelButtonStorage<>(new GuiRectangle(0, i * 16 + 8, 8, 8, 0), 5, "", dbRew.get(i)).setIcon(PresetIcon.ICON_DOWN.getTexture()); + btnDown.setActive(dbRew.size() > 1); + qrList.addPanel(btnDown); qrList.addPanel(new PanelButtonStorage<>(new GuiRectangle(w - 16, i * 16, 16, 16, 0), 2, "" + TextFormatting.RED + TextFormatting.BOLD + "x", reward)); } } + private void reorderReq(IQuest quest, int indexToShift, int direction) { + if (indexToShift < 0) + return; + + var rewards = quest.getRewards(); + + int indexFrom = (indexToShift + direction + rewards.size()) % rewards.size(); + IReward from = rewards.getValue(indexFrom); + IReward to = rewards.getValue(indexToShift); + + rewards.removeID(indexFrom); + rewards.removeID(indexToShift); + rewards.add(indexToShift, from); + rewards.add(indexFrom, to); + } + private void SendChanges() { NBTTagCompound payload = new NBTTagCompound(); NBTTagList dataList = new NBTTagList(); diff --git a/src/main/java/betterquesting/client/gui2/editors/GuiTaskEditor.java b/src/main/java/betterquesting/client/gui2/editors/GuiTaskEditor.java index 8e6f49d1d..f18a2bf06 100644 --- a/src/main/java/betterquesting/client/gui2/editors/GuiTaskEditor.java +++ b/src/main/java/betterquesting/client/gui2/editors/GuiTaskEditor.java @@ -22,6 +22,7 @@ import betterquesting.api2.client.gui.panels.lists.CanvasScrolling; import betterquesting.api2.client.gui.panels.lists.CanvasSearch; import betterquesting.api2.client.gui.themes.presets.PresetColor; +import betterquesting.api2.client.gui.themes.presets.PresetIcon; import betterquesting.api2.client.gui.themes.presets.PresetLine; import betterquesting.api2.client.gui.themes.presets.PresetTexture; import betterquesting.api2.registry.IFactoryData; @@ -177,6 +178,14 @@ private void onButtonPress(PEventButton event) { SendChanges(); })); } + } else if (btn.getButtonID() == 4) { // Reorder Up + DBEntry task = ((PanelButtonStorage>) btn).getStoredValue(); + reorderReq(quest, task.getID(), -1); + SendChanges(); + } else if (btn.getButtonID() == 5) { // Reorder Down + DBEntry task = ((PanelButtonStorage>) btn).getStoredValue(); + reorderReq(quest, task.getID(), 1); + SendChanges(); } } @@ -188,11 +197,33 @@ private void refreshTasks() { for (int i = 0; i < dbTsk.size(); i++) { ITask task = dbTsk.get(i).getValue(); - qtList.addPanel(new PanelButtonStorage<>(new GuiRectangle(0, i * 16, w - 16, 16, 0), 3, QuestTranslation.translate(task.getUnlocalisedName()), task)); + qtList.addPanel(new PanelButtonStorage<>(new GuiRectangle(8, i * 16, w - 24, 16, 0), 3, QuestTranslation.translate(task.getUnlocalisedName()), task)); + PanelButton btnUp = new PanelButtonStorage<>(new GuiRectangle(0, i * 16, 8, 8, 0), 4, "", dbTsk.get(i)).setIcon(PresetIcon.ICON_UP.getTexture()); + btnUp.setActive(dbTsk.size() > 1); + qtList.addPanel(btnUp); + PanelButton btnDown = new PanelButtonStorage<>(new GuiRectangle(0, i * 16 + 8, 8, 8, 0), 5, "", dbTsk.get(i)).setIcon(PresetIcon.ICON_DOWN.getTexture()); + btnDown.setActive(dbTsk.size() > 1); + qtList.addPanel(btnDown); qtList.addPanel(new PanelButtonStorage<>(new GuiRectangle(w - 16, i * 16, 16, 16, 0), 2, "" + TextFormatting.RED + TextFormatting.BOLD + "x", task)); } } + private void reorderReq(IQuest quest, int indexToShift, int direction) { + if (indexToShift < 0) + return; + + var tasks = quest.getTasks(); + + int indexFrom = (indexToShift + direction + tasks.size()) % tasks.size(); + ITask from = tasks.getValue(indexFrom); + ITask to = tasks.getValue(indexToShift); + + tasks.removeID(indexFrom); + tasks.removeID(indexToShift); + tasks.add(indexToShift, from); + tasks.add(indexFrom, to); + } + private void SendChanges() { NBTTagCompound payload = new NBTTagCompound(); NBTTagList dataList = new NBTTagList();