1.0.0-SNAPSHOT-U160

+ Continued the implementation of the GiveRewardMainEditPanel
This commit is contained in:
Charles 2019-01-01 15:59:46 +08:00
parent dfd6fd49a2
commit 6f64e31251
5 changed files with 54 additions and 5 deletions

View File

@ -1,14 +1,22 @@
package com.songoda.epicbosses.panel.droptables.types.give;
import com.songoda.epicbosses.CustomBosses;
import com.songoda.epicbosses.api.BossAPI;
import com.songoda.epicbosses.droptable.DropTable;
import com.songoda.epicbosses.droptable.elements.GiveTableSubElement;
import com.songoda.epicbosses.managers.BossPanelManager;
import com.songoda.epicbosses.panel.droptables.types.give.handlers.GiveRewardEditHandler;
import com.songoda.epicbosses.utils.NumberUtils;
import com.songoda.epicbosses.utils.ObjectUtils;
import com.songoda.epicbosses.utils.panel.Panel;
import com.songoda.epicbosses.utils.panel.base.handlers.SubVariablePanelHandler;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilder;
import com.songoda.epicbosses.utils.panel.builder.PanelBuilderCounter;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
/**
* @author Charles Cullen
* @version 1.0.0
@ -21,8 +29,37 @@ public class GiveRewardMainEditPanel extends SubVariablePanelHandler<DropTable,
}
@Override
public void initializePanel(PanelBuilder panelBuilder) {
public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) {
PanelBuilder panelBuilder = getPanelBuilder().cloneBuilder();
Map<String, String> replaceMap = new HashMap<>();
GiveTableSubElement giveTableSubElement = giveRewardEditHandler.getGiveTableSubElement();
Integer itemDrops = giveTableSubElement.getItems().size();
Integer commandDrops = giveTableSubElement.getCommands().size();
Double requiredPercentage = ObjectUtils.getValue(giveTableSubElement.getRequiredPercentage(), 0.0);
Integer maxDrops = ObjectUtils.getValue(giveTableSubElement.getMaxDrops(), 3);
Integer maxCommands = ObjectUtils.getValue(giveTableSubElement.getMaxCommands(), 3);
Boolean randomDrops = ObjectUtils.getValue(giveTableSubElement.getRandomDrops(), false);
Boolean randomCommands = ObjectUtils.getValue(giveTableSubElement.getRandomCommands(), false);
replaceMap.put("{name}", BossAPI.getDropTableName(dropTable));
replaceMap.put("{position}", giveRewardEditHandler.getDamagePosition());
replaceMap.put("{randomDrops}", ""+randomDrops);
replaceMap.put("{maxDrops}", NumberUtils.get().formatDouble(maxDrops));
replaceMap.put("{drops}", NumberUtils.get().formatDouble(itemDrops));
replaceMap.put("{requiredPercentage}", NumberUtils.get().formatDouble(requiredPercentage));
replaceMap.put("{commands}", NumberUtils.get().formatDouble(commandDrops));
replaceMap.put("{maxCommands}", NumberUtils.get().formatDouble(maxCommands));
replaceMap.put("{randomCommands}", ""+randomCommands);
panelBuilder.addReplaceData(replaceMap);
PanelBuilderCounter panelBuilderCounter = panelBuilder.getPanelBuilderCounter();
Panel panel = panelBuilder.getPanel()
.setParentPanelHandler(this.bossPanelManager.getGiveRewardRewardsListMenu(), dropTable, giveRewardEditHandler.getGiveTableElement(), giveRewardEditHandler.getDamagePosition());
//handle buttons
panel.openFor(player);
}
@Override
@ -31,7 +68,7 @@ public class GiveRewardMainEditPanel extends SubVariablePanelHandler<DropTable,
}
@Override
public void openFor(Player player, DropTable dropTable, GiveRewardEditHandler giveRewardEditHandler) {
public void initializePanel(PanelBuilder panelBuilder) {
}
}

View File

@ -125,7 +125,7 @@ public class GiveRewardRewardsListPanel extends SubSubVariablePanelHandler<DropT
giveTableElement.setGiveRewards(rewardSections);
saveDropTable((Player) event.getWhoClicked(), dropTable, giveTableElement, key);
} else {
GiveRewardEditHandler giveRewardEditHandler = new GiveRewardEditHandler(key, rewardSectionPosition, dropTable, giveTableElement);
GiveRewardEditHandler giveRewardEditHandler = new GiveRewardEditHandler(key, rewardSectionPosition, dropTable, giveTableElement, giveTableSubElement);
this.bossPanelManager.getGiveRewardMainEditMenu().openFor((Player) event.getWhoClicked(), dropTable, giveRewardEditHandler);
}

View File

@ -2,6 +2,7 @@ package com.songoda.epicbosses.panel.droptables.types.give.handlers;
import com.songoda.epicbosses.droptable.DropTable;
import com.songoda.epicbosses.droptable.elements.GiveTableElement;
import com.songoda.epicbosses.droptable.elements.GiveTableSubElement;
import lombok.Getter;
/**
@ -11,15 +12,17 @@ import lombok.Getter;
*/
public class GiveRewardEditHandler {
@Getter private final GiveTableSubElement giveTableSubElement;
@Getter private final String damagePosition, dropSection;
@Getter private final GiveTableElement giveTableElement;
@Getter private final DropTable dropTable;
public GiveRewardEditHandler(String damagePosition, String dropSection, DropTable dropTable, GiveTableElement giveTableElement) {
public GiveRewardEditHandler(String damagePosition, String dropSection, DropTable dropTable, GiveTableElement giveTableElement, GiveTableSubElement giveTableSubElement) {
this.damagePosition = damagePosition;
this.dropSection = dropSection;
this.dropTable = dropTable;
this.giveTableElement = giveTableElement;
this.giveTableSubElement = giveTableSubElement;
}
}

View File

@ -411,6 +411,15 @@ public class Panel implements Listener, ICloneable<Panel> {
return this;
}
public <T, Y, Z> Panel setParentPanelHandler(ISubSubVariablePanelHandler<T,Y,Z> panelHandler, T variable, Y subVariable, Z subSubVariable) {
if(!this.panelBuilderSettings.isBackButton()) return this;
int slot = this.panelBuilderSettings.getBackButtonSlot() - 1;
setOnClick(slot, event -> panelHandler.openFor((Player) event.getWhoClicked(), variable, subVariable, subSubVariable));
return this;
}
/**
* Updates the panel with setting the panel
* exit button to the specified slot if set

View File

@ -20,7 +20,7 @@
<properties>
<!--<plugin.version>maven-version-number-SNAPSHOT-U90</plugin.version>-->
<plugin.version>1.0.0-U159</plugin.version>
<plugin.version>1.0.0-U160</plugin.version>
<plugin.name>EpicBosses</plugin.name>
<plugin.main>com.songoda.epicbosses.CustomBosses</plugin.main>
<plugin.author>AMinecraftDev</plugin.author>