back_recharge
jiahuiwen 2019-04-02 14:28:45 +08:00
commit 65cb996af4
4 changed files with 38 additions and 59 deletions

View File

@ -1,32 +0,0 @@
package com.ljsd.jieling.handler.map;
public class FoodBuffer {
private int foodId;
private int remainStep;
public FoodBuffer() {
}
public FoodBuffer(int foodId, int remainStep) {
this.foodId = foodId;
this.remainStep = remainStep;
}
public int getFoodId() {
return foodId;
}
public int getRemainStep() {
return remainStep;
}
public void setFoodId(int foodId) {
this.foodId = foodId;
}
public void setRemainStep(int remainStep) {
this.remainStep = remainStep;
}
}

View File

@ -797,7 +797,7 @@ public class MapLogic {
mapManager.setCurMapId(0); mapManager.setCurMapId(0);
mapManager.setTotalStep(0); mapManager.setTotalStep(0);
mapManager.setTriggerXY(0); mapManager.setTriggerXY(0);
mapManager.setFoodBuffers(new ArrayList<>()); mapManager.setFoodBufferMap(new HashMap<>());
TemporaryItems temporaryItems = mapManager.getTemporaryItems(); TemporaryItems temporaryItems = mapManager.getTemporaryItems();
if (temporaryItems != null) { if (temporaryItems != null) {
ItemUtil.addTemporaryItemToBag(user, temporaryItems, needTemporaryItem); ItemUtil.addTemporaryItemToBag(user, temporaryItems, needTemporaryItem);

View File

@ -37,7 +37,7 @@ public class MapManager extends MongoBase {
private Map<Integer, CrossMapCell> crossMapInfos = new ConcurrentHashMap<>(); private Map<Integer, CrossMapCell> crossMapInfos = new ConcurrentHashMap<>();
private List<FoodBuffer> foodBuffers = new ArrayList(); private Map<Integer,Integer> foodBufferMap = new HashMap<>();
private Map<Integer, MapMission> allMissionProgress = new ConcurrentHashMap<>(); private Map<Integer, MapMission> allMissionProgress = new ConcurrentHashMap<>();
@ -164,33 +164,38 @@ public class MapManager extends MongoBase {
this.temporaryItems = temporaryItems; this.temporaryItems = temporaryItems;
} }
public List<FoodBuffer> getFoodBuffers() {
return foodBuffers;
}
public void eatFood(int foodId,int remainStep){ public void eatFood(int foodId,int remainStep){
this.foodBuffers.add(new FoodBuffer(foodId,remainStep)); int finalRemainStep = remainStep;
updateString( "foodBuffers", foodBuffers); if(this.foodBufferMap.containsKey(foodId)){
finalRemainStep = this.foodBufferMap.get(foodId);
}
this.foodBufferMap.put(foodId,finalRemainStep);
updateString( "foodBuffers."+foodId, this.foodBufferMap.get(foodId));
} }
public void setFoodBuffers(List<FoodBuffer> foodBuffers) {
updateString( "foodBuffers", foodBuffers);
this.foodBuffers = foodBuffers;
}
public void updateFoodBufferByStep(int step){ public void updateFoodBufferByStep(int step){
if(step>0 && !foodBuffers.isEmpty()){ if(step>0 && !foodBufferMap.isEmpty()){
Iterator<FoodBuffer> iterator = foodBuffers.iterator(); Set<Integer> removeFoodIds = new HashSet<>();
while (iterator.hasNext()){ Set<Map.Entry<Integer, Integer>> entries = foodBufferMap.entrySet();
FoodBuffer foodBuffer = iterator.next(); for(Map.Entry<Integer, Integer> item : entries){
int remainStep = foodBuffer.getRemainStep() - step; Integer foodId = item.getKey();
if(foodBuffer.getRemainStep() - step <=0){ Integer remainStep = item.getValue();
iterator.remove(); int finalRemainStep = remainStep - step;
continue; if(finalRemainStep<=0){
removeFoodIds.add(foodId);
continue;
} }
foodBuffer.setRemainStep(remainStep); foodBufferMap.put(foodId,finalRemainStep);
} }
updateString( "foodBuffers", foodBuffers); if(!removeFoodIds.isEmpty()){
for(Integer removeFoodId :removeFoodIds ){
foodBufferMap.remove(removeFoodId);
}
}
updateString( "foodBuffers", foodBufferMap);
} }
} }
@ -234,4 +239,13 @@ public class MapManager extends MongoBase {
public int getLastUpdateEnergyTime() { public int getLastUpdateEnergyTime() {
return lastUpdateEnergyTime; return lastUpdateEnergyTime;
} }
public Map<Integer, Integer> getFoodBufferMap() {
return foodBufferMap;
}
public void setFoodBufferMap(Map<Integer, Integer> foodBufferMap) {
updateString("foodBufferMap", foodBufferMap);
this.foodBufferMap = foodBufferMap;
}
} }

View File

@ -2,11 +2,9 @@ package com.ljsd.jieling.logic.fight;
import com.ljsd.GameApplication; import com.ljsd.GameApplication;
import com.ljsd.common.mogodb.LjsdMongoTemplate;
import com.ljsd.jieling.config.*; import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.handler.map.FoodBuffer;
import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.AdventureSeasonInfo; import com.ljsd.jieling.logic.dao.root.AdventureSeasonInfo;
@ -347,10 +345,9 @@ public class CombatLogic {
public Map<Integer,Integer> attributeByEatFood( User user,int type,int target){ public Map<Integer,Integer> attributeByEatFood( User user,int type,int target){
Map<Integer,Integer> foddAddResult = new HashMap<>(); Map<Integer,Integer> foddAddResult = new HashMap<>();
MapManager mapManager = user.getMapManager(); MapManager mapManager = user.getMapManager();
List<FoodBuffer> foodBuffers = mapManager.getFoodBuffers(); Map<Integer, Integer> foodBufferMap = mapManager.getFoodBufferMap();
for(FoodBuffer foodBuffer : foodBuffers){ for(Map.Entry<Integer,Integer> foodBuffer : foodBufferMap.entrySet()){
int foodId = foodBuffer.getFoodId(); int foodId = foodBuffer.getKey();
SFoodsConfig sFoodsConfig = SFoodsConfig.getsFoodsConfigByFoodId(foodId); SFoodsConfig sFoodsConfig = SFoodsConfig.getsFoodsConfigByFoodId(foodId);
int typeTmp = sFoodsConfig.getType(); int typeTmp = sFoodsConfig.getType();
int targetTmp = sFoodsConfig.getTarget(); int targetTmp = sFoodsConfig.getTarget();