back_recharge
jiahuiwen 2019-03-19 11:15:24 +08:00
commit b3a7c9838f
7 changed files with 172 additions and 41 deletions

View File

@ -1,33 +1,33 @@
Id Contiue Type Effect EffectValue Id Contiue Type Target EffectPara
int int int mut,int#int,1 mut,int#int,1 int int int int mut,int#int,2
9201 15 0 null null 9201 15 0 0 null
9202 15 0 null null 9202 15 0 0 null
9203 15 0 null null 9203 15 0 0 null
9204 15 0 null null 9204 15 0 0 null
9205 15 0 null null 9205 15 0 0 null
9206 15 0 null null 9206 15 0 0 null
9207 15 0 null null 9207 15 0 0 null
9208 15 0 null null 9208 15 0 0 null
9209 15 0 null null 9209 15 0 0 null
9210 15 0 null null 9210 15 0 0 null
9211 15 0 null null 9211 15 0 0 null
9212 15 0 null null 9212 15 0 0 null
9213 15 0 null null 9213 15 0 0 null
9214 15 0 null null 9214 15 0 0 null
9215 15 0 null null 9215 15 0 0 null
9216 15 0 null null 9216 15 0 0 null
9217 15 0 null null 9217 15 0 0 null
9218 15 0 null null 9218 15 0 0 null
9219 15 0 null null 9219 15 0 0 null
9220 15 0 null null 9220 15 0 0 null
9221 15 0 null null 9221 15 0 0 null
9222 15 0 null null 9222 15 0 0 null
9223 15 0 null null 9223 15 0 0 null
9224 15 0 null null 9224 15 0 0 null
9225 15 0 null null 9225 15 0 0 null
9226 15 0 null null 9226 15 0 0 null
9227 15 0 null null 9227 15 0 0 null
9228 15 0 null null 9228 15 0 0 null
9229 15 0 null null 9229 15 0 0 null
9230 15 0 null null 9230 15 0 0 null
9231 15 0 null null 9231 15 0 0 null

View File

@ -14,9 +14,9 @@ public class SFoodsConfig implements BaseConfig {
private int type; private int type;
private int[] effect; private int target;
private int[] effectValue; private int[][] effectPara;
private static Map<Integer,SFoodsConfig> sFoodsConfigMap; private static Map<Integer,SFoodsConfig> sFoodsConfigMap;
@ -38,13 +38,15 @@ public class SFoodsConfig implements BaseConfig {
return contiue; return contiue;
} }
public int[] getEffect() { public int[][] getEffectPara() {
return effect; return effectPara;
} }
public int[] getEffectValue() { public int getType() {
return effectValue; return type;
} }
public int getTarget() {
return target;
}
} }

View File

@ -39,4 +39,20 @@ public interface GlobalsDef {
//redis 过期时间 //redis 过期时间
int REDIS_OVER_TIME =-1; int REDIS_OVER_TIME =-1;
//吃食物相关
int FOOD_ADDITION_BATTLE_TYPE =1;
int FOOD_ADDITION_EXPLORE_TYPE =2;
int FOOD_EAT_AFFECT_PERSON = 1;
int FOOD_EAT_AFFECT_TEAM = 2;
int FOOD_EAT_AFFECT_POKEMON = 3;
//探索类型
int EXPLORE_MAP_SPEED_TYPE =1;
int EXPLORE_MAP_VIEW_TYPE =2;
int EXPLORE_MAP_SETTLE_TIMES_TYPE =3;
int EXPLORE_MAP_DIGGLE_TYPE =4;
int EXPLORE_MAP_ACTION_POWER_RORMULA_TYPE =5;
} }

View File

@ -0,0 +1,32 @@
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

@ -33,6 +33,8 @@ 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();
public MapManager() { public MapManager() {
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
} }
@ -155,4 +157,35 @@ public class MapManager extends MongoBase {
updateString( "temporaryItems", temporaryItems); updateString( "temporaryItems", temporaryItems);
this.temporaryItems = temporaryItems; this.temporaryItems = temporaryItems;
} }
public List<FoodBuffer> getFoodBuffers() {
return foodBuffers;
}
public void eatFood(int foodId,int remainStep){
this.foodBuffers.add(new FoodBuffer(foodId,remainStep));
updateString( "foodBuffers", foodBuffers);
}
public void setFoodBuffers(List<FoodBuffer> foodBuffers) {
updateString( "foodBuffers", foodBuffers);
this.foodBuffers = foodBuffers;
}
public void updateFoodBufferByStep(int step){
if(step>0 && !foodBuffers.isEmpty()){
Iterator<FoodBuffer> iterator = foodBuffers.iterator();
while (iterator.hasNext()){
FoodBuffer foodBuffer = iterator.next();
int remainStep = foodBuffer.getRemainStep() - step;
if(foodBuffer.getRemainStep() - step <=0){
iterator.remove();
continue;
}
foodBuffer.setRemainStep(remainStep);
}
updateString( "foodBuffers", foodBuffers);
}
}
} }

View File

@ -4,6 +4,8 @@ package com.ljsd.jieling.logic.fight;
import com.ljsd.jieling.config.SAdventureConfig; import com.ljsd.jieling.config.SAdventureConfig;
import com.ljsd.jieling.config.SAdventureSetting; import com.ljsd.jieling.config.SAdventureSetting;
import com.ljsd.jieling.config.SFoodsConfig; import com.ljsd.jieling.config.SFoodsConfig;
import com.ljsd.jieling.core.GlobalsDef;
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.User; import com.ljsd.jieling.logic.dao.root.User;
@ -176,7 +178,7 @@ public class CombatLogic {
//在地图吃东西 //在地图吃东西
public void outMap(ISession session, int foodId) throws Exception { public void eatFood(ISession session, int foodId) throws Exception {
int uid = session.getUid(); int uid = session.getUid();
User user = UserManager.getUser(uid); User user = UserManager.getUser(uid);
MapManager mapManager = user.getMapManager(); MapManager mapManager = user.getMapManager();
@ -189,7 +191,49 @@ public class CombatLogic {
return; return;
} }
SFoodsConfig sFoodsConfig = SFoodsConfig.getsFoodsConfigByFoodId(foodId); SFoodsConfig sFoodsConfig = SFoodsConfig.getsFoodsConfigByFoodId(foodId);
int contiue = sFoodsConfig.getContiue();
if(contiue==0){
int type = sFoodsConfig.getType();
int target = sFoodsConfig.getTarget();
int[][] effectParas = sFoodsConfig.getEffectPara();
if(type == GlobalsDef.FOOD_ADDITION_EXPLORE_TYPE && target == GlobalsDef.FOOD_EAT_AFFECT_PERSON){
for(int[] effectPara : effectParas){
if(effectPara[0] == GlobalsDef.EXPLORE_MAP_ACTION_POWER_RORMULA_TYPE){
mapManager.setTotalStep(mapManager.getTotalStep() + effectPara[1]);
}
}
}
}else{
mapManager.eatFood(foodId,sFoodsConfig.getContiue());
}
}
public Map<Integer,Integer> attributeByEatFood( User user,int type,int target){
Map<Integer,Integer> foddAddResult = new HashMap<>();
MapManager mapManager = user.getMapManager();
List<FoodBuffer> foodBuffers = mapManager.getFoodBuffers();
for(FoodBuffer foodBuffer : foodBuffers){
int foodId = foodBuffer.getFoodId();
SFoodsConfig sFoodsConfig = SFoodsConfig.getsFoodsConfigByFoodId(foodId);
int typeTmp = sFoodsConfig.getType();
int targetTmp = sFoodsConfig.getTarget();
if( typeTmp==type && targetTmp==target ){
int[][] effectParas = sFoodsConfig.getEffectPara();
for(int[] effectPara : effectParas){
int effectId = effectPara[0];
int effectValue = effectPara[1];
if(!foddAddResult.containsKey(effectId)){
foddAddResult.put(effectId,effectValue);
continue;
}
foddAddResult.put( effectId,foddAddResult.get(effectId) + effectValue );
}
}
}
return foddAddResult;
} }

View File

@ -8,6 +8,7 @@ import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.HeroInfoProto; import com.ljsd.jieling.protocols.HeroInfoProto;
@ -708,6 +709,9 @@ public class HeroLogic {
combinedAttribute(propertyValueByIdMap,heroAllAttribute); combinedAttribute(propertyValueByIdMap,heroAllAttribute);
combinedAttribute(secondValueByIdMap,heroAllAttribute); combinedAttribute(secondValueByIdMap,heroAllAttribute);
} }
//食物buffer加成
Map<Integer, Integer> foodAddMap = CombatLogic.getInstance().attributeByEatFood(user,GlobalsDef.FOOD_ADDITION_EXPLORE_TYPE, GlobalsDef.FOOD_EAT_AFFECT_TEAM);
combinedAttribute(foodAddMap,heroAllAttribute);
return heroAllAttribute; return heroAllAttribute;
} }