From ab67577ff694637f56b489b4d7ce2c6989201446 Mon Sep 17 00:00:00 2001 From: mashiyu Date: Wed, 20 Mar 2019 18:36:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/config/SSkillLogicConfig.java | 2 +- .../ljsd/jieling/handler/map/MapLogic.java | 21 ++++++++++++++----- .../handler/map/behavior/BehaviorUtil.java | 20 +++++++++++++----- .../ljsd/jieling/logic/hero/HeroLogic.java | 3 +++ .../com/ljsd/jieling/util/FightDataUtil.java | 19 ++++++++++++++--- 5 files changed, 51 insertions(+), 14 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java index da8bf5355..652391539 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSkillLogicConfig.java @@ -10,7 +10,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -//@Table(name ="SkillLogicConfig") +@Table(name ="SkillLogicConfig") public class SSkillLogicConfig implements BaseConfig { public static Map sSkillLogicConfigMap; public static Map sSkillLogicVoMap; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 99928aec8..e65fb542d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.handler.map; +import com.google.gson.Gson; +import com.googlecode.protobuf.format.JsonFormat; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; @@ -631,10 +633,17 @@ public class MapLogic { MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - int seed = (int)valueMap.get(RedisKey.FIGHT_SEED); - int monsterGroupId = (int)valueMap.get(RedisKey.FIGHT_GROUPID); - CommonProto.FightTeamInfo fightTeamInfo = (CommonProto.FightTeamInfo)valueMap.get(RedisKey.FIGHT_HEROES); - List monsterTeamList = (List)valueMap.get(RedisKey.FIGHT_MONSTERS); + + int seed = Integer.parseInt((String)valueMap.get(RedisKey.FIGHT_SEED)); + int monsterGroupId = Integer.parseInt((String)valueMap.get(RedisKey.FIGHT_GROUPID)); + CommonProto.FightTeamInfo.Builder builder = CommonProto.FightTeamInfo.newBuilder(); + JsonFormat.merge((String)valueMap.get(RedisKey.FIGHT_HEROES), builder); + CommonProto.FightTeamInfo fightTeamInfo = builder.build(); + CommonProto.FightTeamInfo.Builder monsterBuilder = CommonProto.FightTeamInfo.newBuilder(); + JsonFormat.merge((String)valueMap.get(RedisKey.FIGHT_MONSTERS), monsterBuilder); + CommonProto.FightTeamInfo monsterTeam = monsterBuilder.build(); + List monsterTeamList = new ArrayList<>(); + monsterTeamList.add(monsterTeam); SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(monsterGroupId); if (sMonsterGroup == null) { @@ -646,7 +655,7 @@ public class MapLogic { frames = "14#1#0|132#2#3|152#2#5|178#3#2|219#2#4|260#3#1|287#2#2|312#3#5|467#1#1"; LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo,monsterTeamList); LuaValue getOptionData = FightDataUtil.getOptionData(frames); - int[] checkResult = CheckFight.getInstance().checkFight(seed, getFightData, getOptionData); +// int[] checkResult = CheckFight.getInstance().checkFight(seed, getFightData, getOptionData); CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1); @@ -655,6 +664,8 @@ public class MapLogic { .setDrop(drop) .build(); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse, true); + + RedisUtil.getInstence().del(key); } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java index 731d987b1..a90181f1e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.handler.map.behavior; +import com.google.gson.Gson; +import com.googlecode.protobuf.format.JsonFormat; import com.ljsd.jieling.config.MapPointConfig; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; @@ -11,14 +13,18 @@ import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.mission.CheckMissionReturn; import com.ljsd.jieling.handler.mission.Mission; import com.ljsd.jieling.handler.mission.MissionLogic; +import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.CBean2Proto; import com.ljsd.jieling.util.MonsterUtil; +import org.json.JSONArray; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -118,15 +124,19 @@ public class BehaviorUtil { //设置战斗随机种子 int seed = (int)(System.currentTimeMillis()/1000); eventUpdateResponse.setFightSeed(seed); - String key = RedisKey.getKey(RedisKey.FIGHT, user.getId(), false); Map fightInfo = new HashMap<>(); - fightInfo.put(RedisKey.FIGHT_HEROES,fightTeamInfo); - fightInfo.put(RedisKey.FIGHT_MONSTERS,monsterGroupList); - fightInfo.put(RedisKey.FIGHT_SEED,seed); - fightInfo.put(RedisKey.FIGHT_GROUPID,groupId); + + fightInfo.put(RedisKey.FIGHT_HEROES, JsonFormat.printToString(fightTeamInfo)); + fightInfo.put(RedisKey.FIGHT_MONSTERS, JsonFormat.printToString(monsterGroupList.get(0)));//暂时没考虑多拨怪 + fightInfo.put(RedisKey.FIGHT_SEED,Integer.toString(seed)); + fightInfo.put(RedisKey.FIGHT_GROUPID, Integer.toString(groupId)); RedisUtil.getInstence().hmset(key, fightInfo, RedisKey.EXPIRE_TIME); + + ISession session = OnlineUserManager.getSessionByUid(Integer.parseInt(user.getId())); + MapLogic.getInstance().endFight(session,"", MessageTypeProto.MessageType.FIGHT_END_RESPONSE); + } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 3797d24c7..6065ed160 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -689,6 +689,9 @@ public class HeroLogic { public String getPokenmonSkills(User user,int teamId){ StringBuilder pokenSkillResult = new StringBuilder(); List teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId); + if (teamPosForPokenInfos==null){ + return ""; + } Map pokemonMap = user.getPokemonManager().getPokemonMap(); Collections.sort(teamPosForPokenInfos); for(TeamPosForPokenInfo teamPosForPokenInfo:teamPosForPokenInfos){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java index 5e791411d..2a0695c29 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -69,9 +69,16 @@ public class FightDataUtil { unitData.set("camp", 1); unitData.set("type", sMonster.getType()); unitData.set("quality", sMonster.getQuality()); - - unitData.set("skill", getSkill(unitSkill[0])); - unitData.set("superSkill", getSkill(unitSkill[1])); + if (unitSkill.length==1){ + unitData.set("skill", getSkill(unitSkill[0])); + unitData.set("superSkill", new LuaTable()); + }else if (unitSkill.length==2){ + unitData.set("skill", getSkill(unitSkill[0])); + unitData.set("superSkill", getSkill(unitSkill[1])); + }else { + unitData.set("skill", new LuaTable()); + unitData.set("superSkill", new LuaTable()); + } unitData.set("passivity", new LuaTable()); unitData.set("property", getMonsterProperty(sMonster)); @@ -163,6 +170,9 @@ public class FightDataUtil { private static LuaValue getTeamSkill(String pokemonSkill) { LuaValue teamSkill = new LuaTable(); + if (pokemonSkill.equals("") || pokemonSkill==null){ + return teamSkill; + } String[] skills = pokemonSkill.trim().split("#"); for (int i = 0; i < skills.length; i++) { @@ -202,6 +212,9 @@ public class FightDataUtil { private static LuaValue getSkill(String skillId) { LuaValue skill = new LuaTable(); + if (skillId.equals("") || skillId==null){ + return skill; + } SSkillLogicVo sSkillLogicVo = SSkillLogicConfig.getsSkillLogicVo(Integer.valueOf(skillId)); if (sSkillLogicVo != null) { skill.rawset(1, LuaValue.valueOf(sSkillLogicVo.getCd()));