Merge branch 'master' of http://60.1.1.230/backend/jieling_server
commit
c5d0813b68
|
@ -19,6 +19,7 @@ public class SItem implements BaseConfig {
|
|||
private int rewardGroup;
|
||||
private int usePerCount;
|
||||
private boolean isopen;
|
||||
private int isSave;
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
@ -68,4 +69,8 @@ public class SItem implements BaseConfig {
|
|||
public boolean isIsopen() {
|
||||
return isopen;
|
||||
}
|
||||
|
||||
public int getIsSave() {
|
||||
return isSave;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,9 +45,9 @@ public class EventType {
|
|||
* 行为参数:事件点id
|
||||
* 16 消耗道具并销毁事件点
|
||||
* 行为参数:道具id#num#事件点id
|
||||
* 17 完成任务往下推一步,摧毁指定事件点,开启新的事件点,完成所有事件点再推一步任务
|
||||
* 17 完成任务往下推一步,摧毁指定事件点,开启新的事件点
|
||||
* 行为参数:任务id#事件点id#地图id#坐标id#事件点id#地图id#坐标id#摧毁事件点id
|
||||
* 18 战斗并销毁指定事件点
|
||||
* 18 完成任务往下推一步,战斗并销毁指定地图点
|
||||
* 行为参数:怪物组id#事件点id
|
||||
* 19 完成任务往下推一步,行动到某张地图某坐标点,不摧毁事件点
|
||||
* 行为参数:任务id#地图id#坐标(不输入地图id和坐标而输入0代表回主城)
|
||||
|
|
|
@ -4,9 +4,7 @@ import com.ljsd.jieling.config.*;
|
|||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.handler.map.behavior.BaseBehavior;
|
||||
import com.ljsd.jieling.handler.mission.Mission;
|
||||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
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.MapInfoProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.util.CellUtil;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MathUtils;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
|
@ -111,12 +106,14 @@ public class MapLogic {
|
|||
for (Map.Entry<Integer, Cell> entry : mapManager.getTypeEight().entrySet()) {
|
||||
cellToProto(cells, entry);
|
||||
}
|
||||
MapInfoProto.MapEnterResponse mapEnterResponse = MapInfoProto.MapEnterResponse
|
||||
.newBuilder()
|
||||
.addAllMapList(cells)
|
||||
.setCurXY(mapManager.getCurXY())
|
||||
.build();
|
||||
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse, true);
|
||||
MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder();
|
||||
mapEnterResponse.addAllMapList(cells);
|
||||
mapEnterResponse.setLeftStep(mapManager.getTotalStep());
|
||||
mapEnterResponse.setCurXY(mapManager.getCurXY());
|
||||
if (mapManager.getTemporaryItems() != null) {
|
||||
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) {
|
||||
|
@ -226,6 +223,20 @@ public class MapLogic {
|
|||
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
|
||||
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);
|
||||
if (cell == null) {
|
||||
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<>();
|
||||
for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
|
||||
CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues
|
||||
|
@ -509,12 +520,14 @@ public class MapLogic {
|
|||
mapManager.setWalkCells(new HashSet<>());
|
||||
mapManager.setCurXY(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 {
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
|
@ -531,7 +544,7 @@ public class MapLogic {
|
|||
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
|
||||
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
|
||||
.newBuilder()
|
||||
.setDrop(drop)
|
||||
|
|
|
@ -30,6 +30,8 @@ public class MapManager extends MongoBase {
|
|||
|
||||
private int totalStep;
|
||||
|
||||
private TemporaryItems temporaryItems;
|
||||
|
||||
private Map<Integer, CrossMapCell> crossMapInfos = new ConcurrentHashMap<>();
|
||||
|
||||
public MapManager() {
|
||||
|
@ -145,4 +147,13 @@ public class MapManager extends MongoBase {
|
|||
updateString( "triggerXY", triggerXY);
|
||||
this.triggerXY = triggerXY;
|
||||
}
|
||||
|
||||
public TemporaryItems getTemporaryItems() {
|
||||
return temporaryItems;
|
||||
}
|
||||
|
||||
public void setTemporaryItems(TemporaryItems temporaryItems) {
|
||||
updateString( "temporaryItems", temporaryItems);
|
||||
this.temporaryItems = temporaryItems;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<>();
|
||||
|
||||
}
|
|
@ -46,14 +46,14 @@ public class BehaviorUtil {
|
|||
/**
|
||||
* 获取战斗数据
|
||||
* @param user
|
||||
* @param behaviorTypeValues
|
||||
* @param groupId
|
||||
* @param eventUpdateResponse
|
||||
* @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();
|
||||
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();
|
||||
List<CommonProto.HeroFightInfo> heroFightInfos = new ArrayList<>(heroes.size());
|
||||
for (String heroId : heroes) {
|
||||
|
@ -79,7 +79,7 @@ public class BehaviorUtil {
|
|||
heroFightInfos.add(heroFightInfo);
|
||||
}
|
||||
eventUpdateResponse.addAllHeroFightInfos(heroFightInfos);
|
||||
List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(behaviorTypeValues[0][0]);
|
||||
List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId);
|
||||
eventUpdateResponse.addAllMonsterList(monsterByGroup);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,8 +14,9 @@ public class FightAndDestroyPointBehavior extends BaseBehavior {
|
|||
|
||||
@Override
|
||||
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
|
||||
BehaviorUtil.getFightInfo(user, behaviorTypeValues, eventUpdateResponse);
|
||||
BehaviorUtil.distoryPoint(user, behaviorTypeValues[0][1]);
|
||||
BehaviorUtil.updateMission(user, behaviorTypeValues[0][0], eventUpdateResponse);
|
||||
BehaviorUtil.getFightInfo(user, behaviorTypeValues[0][1], eventUpdateResponse);
|
||||
BehaviorUtil.distoryPoint(user, behaviorTypeValues[0][2]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ public class FightBehavior extends BaseBehavior {
|
|||
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@ public class MissionLogic {
|
|||
user.getMissionManager().addTakeRewardMissions(missionId);
|
||||
SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(missionId);
|
||||
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
|
||||
.newBuilder()
|
||||
|
|
|
@ -320,7 +320,10 @@ public class HeroLogic {
|
|||
}
|
||||
if(scHeroRankUpConfigByTypeStar!=null){
|
||||
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");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
package com.ljsd.jieling.util;
|
||||
|
||||
import com.ljsd.jieling.config.SCHero;
|
||||
import com.ljsd.jieling.config.SGameSetting;
|
||||
import com.ljsd.jieling.config.SMonsterConfig;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.handler.map.TemporaryItems;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
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.List;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class CBean2Proto {
|
||||
|
@ -118,6 +115,18 @@ public class CBean2Proto {
|
|||
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){
|
||||
List<CommonProto.SpecialEffects> result = new ArrayList<>();
|
||||
for(Map.Entry<Integer,Integer> item:propertyValueByIdMap.entrySet()){
|
||||
|
|
|
@ -4,6 +4,8 @@ import com.ljsd.jieling.config.SRewardItem;
|
|||
import com.ljsd.jieling.config.SItem;
|
||||
import com.ljsd.jieling.config.SRewardGroup;
|
||||
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.root.User;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
|
@ -56,13 +58,21 @@ public class ItemUtil {
|
|||
for (Map.Entry<int [],Float> entry :dropGroupAndRatioMap.entrySet()){
|
||||
int[] dropGroupIds = entry.getKey();
|
||||
float dropRatio = entry.getValue();
|
||||
dropBuilder = drop(user, dropGroupIds, dropRatio);
|
||||
dropBuilder = drop(user, dropGroupIds, dropRatio, 0);
|
||||
}
|
||||
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();
|
||||
Map<Integer, Integer> itemMap = new HashMap<>();
|
||||
Map<Integer, Integer> cardMap = new HashMap<>();
|
||||
|
@ -76,7 +86,11 @@ public class ItemUtil {
|
|||
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
|
||||
}
|
||||
useRandomItem(user,randomMap);
|
||||
addItem(user,itemMap,dropBuilder);
|
||||
if (isMapping == 1) {
|
||||
addItemToTemporaryBag(user,itemMap,dropBuilder);
|
||||
} else {
|
||||
addItem(user,itemMap,dropBuilder);
|
||||
}
|
||||
addCard(user,cardMap,dropBuilder);
|
||||
addEquip(user,equipMap,dropBuilder);
|
||||
return dropBuilder;
|
||||
|
@ -241,6 +255,40 @@ public class ItemUtil {
|
|||
// 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{
|
||||
if(useItemMap.isEmpty()){
|
||||
return;
|
||||
|
@ -420,7 +468,7 @@ public class ItemUtil {
|
|||
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
|
||||
if (!dropIds.toString().isEmpty()){
|
||||
int[] ints = StringUtil.parseFiledInt(dropIds.toString());
|
||||
drop = ItemUtil.drop(user, ints, 1);
|
||||
drop = ItemUtil.drop(user, ints, 1, 0);
|
||||
}
|
||||
return drop;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue