back_recharge
gaojie 2019-03-12 11:10:23 +08:00
commit c5d0813b68
12 changed files with 144 additions and 39 deletions

View File

@ -19,6 +19,7 @@ public class SItem implements BaseConfig {
private int rewardGroup; private int rewardGroup;
private int usePerCount; private int usePerCount;
private boolean isopen; private boolean isopen;
private int isSave;
@Override @Override
public void init() throws Exception { public void init() throws Exception {
@ -68,4 +69,8 @@ public class SItem implements BaseConfig {
public boolean isIsopen() { public boolean isIsopen() {
return isopen; return isopen;
} }
public int getIsSave() {
return isSave;
}
} }

View File

@ -45,9 +45,9 @@ public class EventType {
* id * id
* 16 * 16
* id#num#id * id#num#id
* 17 * 17
* id#id#id#id#id#id#id#id * id#id#id#id#id#id#id#id
* 18 * 18
* id#id * id#id
* 19 * 19
* id#id#id0 * id#id#id0

View File

@ -4,9 +4,7 @@ import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.handler.map.behavior.BaseBehavior; import com.ljsd.jieling.handler.map.behavior.BaseBehavior;
import com.ljsd.jieling.handler.mission.Mission; import com.ljsd.jieling.handler.mission.Mission;
import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
@ -14,10 +12,7 @@ import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto; import com.ljsd.jieling.protocols.FightInfoProto;
import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MapInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.CellUtil; import com.ljsd.jieling.util.*;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MathUtils;
import com.ljsd.jieling.util.MessageUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
@ -111,12 +106,14 @@ public class MapLogic {
for (Map.Entry<Integer, Cell> entry : mapManager.getTypeEight().entrySet()) { for (Map.Entry<Integer, Cell> entry : mapManager.getTypeEight().entrySet()) {
cellToProto(cells, entry); cellToProto(cells, entry);
} }
MapInfoProto.MapEnterResponse mapEnterResponse = MapInfoProto.MapEnterResponse MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder();
.newBuilder() mapEnterResponse.addAllMapList(cells);
.addAllMapList(cells) mapEnterResponse.setLeftStep(mapManager.getTotalStep());
.setCurXY(mapManager.getCurXY()) mapEnterResponse.setCurXY(mapManager.getCurXY());
.build(); if (mapManager.getTemporaryItems() != null) {
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse, true); mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems()));
}
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
} }
private void cellToProto(List<CommonProto.Cell> cells, Map.Entry<Integer, Cell> entry) { private void cellToProto(List<CommonProto.Cell> cells, Map.Entry<Integer, Cell> entry) {
@ -226,6 +223,20 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return; return;
} }
if (mapManager.getTotalStep() <= 0) {
LOGGER.info("updateMap() uid=>{}, no step=>{}", uid, mapManager.getTotalStep());
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
// int leftStep = mapManager.getTotalStep() - cells.size();
// if (leftStep <= 0) {
// resetMapInfo(mapManager);
// LOGGER.info("updateMap() uid=>{}, leftStep=>{}", uid, leftStep);
// MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder().build();
// MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse, true);
// return;
// }
// mapManager.setTotalStep(leftStep);
Cell cell = mapManager.getMapInfo().get(curXY); Cell cell = mapManager.getMapInfo().get(curXY);
if (cell == null) { if (cell == null) {
cell = mapManager.getMapInfo().get(triggerXY); cell = mapManager.getMapInfo().get(triggerXY);
@ -388,7 +399,7 @@ public class MapLogic {
} }
} }
} }
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1); CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1, 1);
List<CommonProto.EventBehaviorValues> eventBehaviorValuesList = new ArrayList<>(); List<CommonProto.EventBehaviorValues> eventBehaviorValuesList = new ArrayList<>();
for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) { for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues
@ -509,12 +520,14 @@ public class MapLogic {
mapManager.setWalkCells(new HashSet<>()); mapManager.setWalkCells(new HashSet<>());
mapManager.setCurXY(0); mapManager.setCurXY(0);
mapManager.setCurMapId(0); mapManager.setCurMapId(0);
TemporaryItems temporaryItems = mapManager.getTemporaryItems();
if (temporaryItems != null) {
Map<Integer, Item> items = temporaryItems.items;
Map<Integer, Equip> equips = temporaryItems.equips;
// ItemUtil.addItem();
}
} }
//在地图吃东西
public void endFight(ISession session, int result, MessageTypeProto.MessageType messageType, int monsterGroupId) throws Exception { public void endFight(ISession session, int result, MessageTypeProto.MessageType messageType, int monsterGroupId) throws Exception {
int uid = session.getUid(); int uid = session.getUid();
User user = UserManager.getUser(uid); User user = UserManager.getUser(uid);
@ -531,7 +544,7 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return; return;
} }
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse
.newBuilder() .newBuilder()
.setDrop(drop) .setDrop(drop)

View File

@ -30,6 +30,8 @@ public class MapManager extends MongoBase {
private int totalStep; private int totalStep;
private TemporaryItems temporaryItems;
private Map<Integer, CrossMapCell> crossMapInfos = new ConcurrentHashMap<>(); private Map<Integer, CrossMapCell> crossMapInfos = new ConcurrentHashMap<>();
public MapManager() { public MapManager() {
@ -145,4 +147,13 @@ public class MapManager extends MongoBase {
updateString( "triggerXY", triggerXY); updateString( "triggerXY", triggerXY);
this.triggerXY = triggerXY; this.triggerXY = triggerXY;
} }
public TemporaryItems getTemporaryItems() {
return temporaryItems;
}
public void setTemporaryItems(TemporaryItems temporaryItems) {
updateString( "temporaryItems", temporaryItems);
this.temporaryItems = temporaryItems;
}
} }

View File

@ -0,0 +1,15 @@
package com.ljsd.jieling.handler.map;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.Item;
import java.util.HashMap;
import java.util.Map;
public class TemporaryItems {
public Map<Integer, Item> items = new HashMap<>();
public Map<Integer, Equip> equips = new HashMap<>();
}

View File

@ -46,14 +46,14 @@ public class BehaviorUtil {
/** /**
* *
* @param user * @param user
* @param behaviorTypeValues * @param groupId
* @param eventUpdateResponse * @param eventUpdateResponse
* @throws Exception * @throws Exception
*/ */
public static void getFightInfo(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { public static void getFightInfo(User user, int groupId, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
MapManager mapManager = user.getMapManager(); MapManager mapManager = user.getMapManager();
String key = RedisKey.getKey(RedisKey.FIGHT, user.getId(), false); String key = RedisKey.getKey(RedisKey.FIGHT, user.getId(), false);
RedisUtil.getInstence().set(key, Integer.toString(behaviorTypeValues[0][0]), RedisKey.EXPIRE_TIME); RedisUtil.getInstence().set(key, Integer.toString(groupId), RedisKey.EXPIRE_TIME);
Set<String> heroes = mapManager.getHeroes(); Set<String> heroes = mapManager.getHeroes();
List<CommonProto.HeroFightInfo> heroFightInfos = new ArrayList<>(heroes.size()); List<CommonProto.HeroFightInfo> heroFightInfos = new ArrayList<>(heroes.size());
for (String heroId : heroes) { for (String heroId : heroes) {
@ -79,7 +79,7 @@ public class BehaviorUtil {
heroFightInfos.add(heroFightInfo); heroFightInfos.add(heroFightInfo);
} }
eventUpdateResponse.addAllHeroFightInfos(heroFightInfos); eventUpdateResponse.addAllHeroFightInfos(heroFightInfos);
List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(behaviorTypeValues[0][0]); List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId);
eventUpdateResponse.addAllMonsterList(monsterByGroup); eventUpdateResponse.addAllMonsterList(monsterByGroup);
} }

View File

@ -14,8 +14,9 @@ public class FightAndDestroyPointBehavior extends BaseBehavior {
@Override @Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.getFightInfo(user, behaviorTypeValues, eventUpdateResponse); BehaviorUtil.updateMission(user, behaviorTypeValues[0][0], eventUpdateResponse);
BehaviorUtil.distoryPoint(user, behaviorTypeValues[0][1]); BehaviorUtil.getFightInfo(user, behaviorTypeValues[0][1], eventUpdateResponse);
BehaviorUtil.distoryPoint(user, behaviorTypeValues[0][2]);
return true; return true;
} }
} }

View File

@ -14,7 +14,7 @@ public class FightBehavior extends BaseBehavior {
@Override @Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.getFightInfo(user, behaviorTypeValues, eventUpdateResponse); BehaviorUtil.getFightInfo(user, behaviorTypeValues[0][0], eventUpdateResponse);
return true; return true;
} }
} }

View File

@ -138,7 +138,7 @@ public class MissionLogic {
user.getMissionManager().addTakeRewardMissions(missionId); user.getMissionManager().addTakeRewardMissions(missionId);
SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(missionId); SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(missionId);
int[] reward = {sMissionEventsConfig.getReward()}; int[] reward = {sMissionEventsConfig.getReward()};
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1); CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1, 0);
MissionInfoProto.TakeMissionResponse takeMissionResponse = MissionInfoProto.TakeMissionResponse takeMissionResponse =
MissionInfoProto.TakeMissionResponse MissionInfoProto.TakeMissionResponse
.newBuilder() .newBuilder()

View File

@ -320,7 +320,10 @@ public class HeroLogic {
} }
if(scHeroRankUpConfigByTypeStar!=null){ if(scHeroRankUpConfigByTypeStar!=null){
SCHeroRankUpConfig scHeroRankUpConfigStar = scHeroRankUpConfigByTypeStar.get(hero.getStar()); SCHeroRankUpConfig scHeroRankUpConfigStar = scHeroRankUpConfigByTypeStar.get(hero.getStar());
if(hero.getLevel()+1 > scHeroRankUpConfigStar.getLimitLevel() && hero.getStar() < scHeroRankUpConfigStar.getOpenStar()){ if(scHeroRankUpConfigStar == null){
scHeroRankUpConfigStar = scHeroRankUpConfigByTypeStar.get(hero.getStar() -1);
}
if(scHeroRankUpConfigStar == null || (hero.getLevel()+1 > scHeroRankUpConfigStar.getLimitLevel() && hero.getStar() < scHeroRankUpConfigStar.getOpenStar())){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_LEVEL_RESPONSE_VALUE,"max level"); MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_LEVEL_RESPONSE_VALUE,"max level");
return; return;
} }

View File

@ -1,18 +1,15 @@
package com.ljsd.jieling.util; package com.ljsd.jieling.util;
import com.ljsd.jieling.config.SCHero;
import com.ljsd.jieling.config.SGameSetting; import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.config.SMonsterConfig; import com.ljsd.jieling.config.SMonsterConfig;
import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.handler.map.TemporaryItems;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.sun.org.apache.regexp.internal.RE;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Queue;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
public class CBean2Proto { public class CBean2Proto {
@ -118,6 +115,18 @@ public class CBean2Proto {
return equipProto; return equipProto;
} }
public static CommonProto.Drop getDrop(TemporaryItems temporaryItems) {
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
for (Item item : temporaryItems.items.values()) {
drop.addItemlist(getItem(item));
}
for (Equip equip : temporaryItems.equips.values()) {
drop.addEquipId(getEquipProto(equip));
}
return drop.build();
}
private static List<CommonProto.SpecialEffects> parseFromMap(Map<Integer,Integer> propertyValueByIdMap){ private static List<CommonProto.SpecialEffects> parseFromMap(Map<Integer,Integer> propertyValueByIdMap){
List<CommonProto.SpecialEffects> result = new ArrayList<>(); List<CommonProto.SpecialEffects> result = new ArrayList<>();
for(Map.Entry<Integer,Integer> item:propertyValueByIdMap.entrySet()){ for(Map.Entry<Integer,Integer> item:propertyValueByIdMap.entrySet()){

View File

@ -4,6 +4,8 @@ import com.ljsd.jieling.config.SRewardItem;
import com.ljsd.jieling.config.SItem; import com.ljsd.jieling.config.SItem;
import com.ljsd.jieling.config.SRewardGroup; import com.ljsd.jieling.config.SRewardGroup;
import com.ljsd.jieling.globals.GlobalItemType; import com.ljsd.jieling.globals.GlobalItemType;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.TemporaryItems;
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.protocols.CommonProto; import com.ljsd.jieling.protocols.CommonProto;
@ -56,13 +58,21 @@ public class ItemUtil {
for (Map.Entry<int [],Float> entry :dropGroupAndRatioMap.entrySet()){ for (Map.Entry<int [],Float> entry :dropGroupAndRatioMap.entrySet()){
int[] dropGroupIds = entry.getKey(); int[] dropGroupIds = entry.getKey();
float dropRatio = entry.getValue(); float dropRatio = entry.getValue();
dropBuilder = drop(user, dropGroupIds, dropRatio); dropBuilder = drop(user, dropGroupIds, dropRatio, 0);
} }
return dropBuilder; return dropBuilder;
} }
//掉落 /**
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio) throws Exception { *
* @param user
* @param dropGroupIds
* @param dropRatio
* @param isMapping 1
* @return
* @throws Exception
*/
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio, int isMapping) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder(); CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer, Integer> itemMap = new HashMap<>(); Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>(); Map<Integer, Integer> cardMap = new HashMap<>();
@ -76,7 +86,11 @@ public class ItemUtil {
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio); selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
} }
useRandomItem(user,randomMap); useRandomItem(user,randomMap);
addItem(user,itemMap,dropBuilder); if (isMapping == 1) {
addItemToTemporaryBag(user,itemMap,dropBuilder);
} else {
addItem(user,itemMap,dropBuilder);
}
addCard(user,cardMap,dropBuilder); addCard(user,cardMap,dropBuilder);
addEquip(user,equipMap,dropBuilder); addEquip(user,equipMap,dropBuilder);
return dropBuilder; return dropBuilder;
@ -241,6 +255,40 @@ public class ItemUtil {
// UserManager.ljsdMongoTemplate.lastUpdate(); // UserManager.ljsdMongoTemplate.lastUpdate();
} }
/**
*
* @param user
* @param itemMap
* @throws Exception
*/
public static void addItemToTemporaryBag(User user, Map<Integer, Integer> itemMap,CommonProto.Drop.Builder dropBuilder) throws Exception {
List<CommonProto.Item> itemProtoList = new CopyOnWriteArrayList<>();
MapManager mapManager = user.getMapManager();
if (mapManager.getTemporaryItems() == null) {
TemporaryItems temporaryItems = new TemporaryItems();
mapManager.setTemporaryItems(temporaryItems);
}
Map<Integer, Item> items = mapManager.getTemporaryItems().items;
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) {
SItem sItem = SItem.getsItemMap().get (entry.getKey());
if (sItem == null){
continue;
}
Item item = items.get(entry.getKey());
if (item == null) {
item = new Item(entry.getKey(), entry.getValue());
items.put(entry.getKey(), item);
} else {
item.setItemNum(item.getItemNum() + entry.getValue());
}
itemProtoList.add(CBean2Proto.getItem(item));
}
if (dropBuilder != null) {
dropBuilder.addAllItemlist(itemProtoList);
}
}
public static void useItem(User user,Map<Integer,Integer> useItemMap) throws Exception{ public static void useItem(User user,Map<Integer,Integer> useItemMap) throws Exception{
if(useItemMap.isEmpty()){ if(useItemMap.isEmpty()){
return; return;
@ -420,7 +468,7 @@ public class ItemUtil {
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder(); CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
if (!dropIds.toString().isEmpty()){ if (!dropIds.toString().isEmpty()){
int[] ints = StringUtil.parseFiledInt(dropIds.toString()); int[] ints = StringUtil.parseFiledInt(dropIds.toString());
drop = ItemUtil.drop(user, ints, 1); drop = ItemUtil.drop(user, ints, 1, 0);
} }
return drop; return drop;
} }