diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java index e589fe609..5c05b623f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/AdventureManager.java @@ -5,14 +5,16 @@ import com.ljsd.jieling.handler.map.TemporaryItems; import com.ljsd.jieling.logic.dao.root.User; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; public class AdventureManager extends MongoBase { private Map adventureStateInfoMap; - private Map tempDropRatio = new HashMap<>(); + private List tempDropRatio = new ArrayList<>(); public AdventureManager(){ this.setRootCollection(User._COLLECTION_NAME); @@ -25,18 +27,18 @@ public class AdventureManager extends MongoBase { adventureStateInfoMap.put(position,adventureStateInfo); } - public Map getTempDropRation() { + public List getTempDropRatio() { return tempDropRatio; } - public void updateTemp(int dropIds[],float ratio){ - tempDropRatio.put(dropIds,ratio); - updateString("tempDropRatio."+dropIds,ratio); + public void updateTemp(int dropIds[], float ratio){ + tempDropRatio.add(new TempDropInfo(dropIds,ratio)); + updateString("tempDropRatio",tempDropRatio); } public void clearTemp(){ tempDropRatio.clear(); - updateString("tempDropRatio",new HashMap<>()); + updateString("tempDropRatio", new ArrayList<>()); } public Map getAdventureStateInfoMap() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TempDropInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TempDropInfo.java new file mode 100644 index 000000000..a2834b3c6 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TempDropInfo.java @@ -0,0 +1,22 @@ +package com.ljsd.jieling.logic.dao; + +public class TempDropInfo { + private int[] dropGroupIds; + private float dropRatio; + + public TempDropInfo(int[] dropGroupIds, float dropRatio) { + this.dropGroupIds = dropGroupIds; + this.dropRatio = dropRatio; + } + + public TempDropInfo() { + } + + public int[] getDropGroupIds() { + return dropGroupIds; + } + + public float getDropRatio() { + return dropRatio; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index a7e0d1057..5be2cb412 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -147,7 +147,10 @@ public class CombatLogic { } } if(!isOnLine){ - tempDropRation.putAll(adventureManager.getTempDropRation()); + List tempDropRatioList = adventureManager.getTempDropRatio(); + for(TempDropInfo tempDropInfo : tempDropRatioList){ + tempDropRation.put(tempDropInfo.getDropGroupIds(),tempDropInfo.getDropRatio()); + } adventureManager.clearTemp(); } return ItemUtil.drop(user, tempDropRation);