啊啊啊
parent
0e42332a4b
commit
dae6b91053
|
@ -13,7 +13,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
@Table(name ="MonsterConfig")
|
@Table(name ="MonsterConfig")
|
||||||
public class SMonsterConfig implements BaseConfig {
|
public class SMonsterConfig implements BaseConfig {
|
||||||
private static Map<Integer,SMonsterConfig> sMonsterConfigMap;
|
private static Map<Integer,SMonsterConfig> sMonsterConfigMap;
|
||||||
private static Map<Integer, CommonProto.Monster> monsterMap;
|
private static Map<Integer, CommonProto.FightUnitInfo> monsterMap;
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
private int monsterId;
|
private int monsterId;
|
||||||
|
@ -56,14 +56,14 @@ public class SMonsterConfig implements BaseConfig {
|
||||||
return sMonsterConfigMap;
|
return sMonsterConfigMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<Integer, CommonProto.Monster> getMonsterMap() {
|
public static Map<Integer, CommonProto.FightUnitInfo> getMonsterMap() {
|
||||||
return monsterMap;
|
return monsterMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() throws Exception {
|
||||||
sMonsterConfigMap = STableManager.getConfig(SMonsterConfig.class);
|
sMonsterConfigMap = STableManager.getConfig(SMonsterConfig.class);
|
||||||
Map<Integer, CommonProto.Monster> monsterMapVo = new ConcurrentHashMap<>();
|
Map<Integer, CommonProto.FightUnitInfo> monsterMapVo = new ConcurrentHashMap<>();
|
||||||
for (Map.Entry<Integer,SMonsterConfig> entry :sMonsterConfigMap.entrySet()){
|
for (Map.Entry<Integer,SMonsterConfig> entry :sMonsterConfigMap.entrySet()){
|
||||||
SMonsterConfig sMonsterConfig = entry.getValue();
|
SMonsterConfig sMonsterConfig = entry.getValue();
|
||||||
if (!monsterMapVo.containsKey(sMonsterConfig.getId())){
|
if (!monsterMapVo.containsKey(sMonsterConfig.getId())){
|
||||||
|
|
|
@ -21,9 +21,28 @@ public class RedisKey {
|
||||||
public static final String FIGHT = "FIGHT";
|
public static final String FIGHT = "FIGHT";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 战斗种子
|
* 战斗缓存
|
||||||
|
* sub_key
|
||||||
*/
|
*/
|
||||||
public static final String FIGHT_SEED = "FIGHT_SEED";
|
public static final String FIGHT_HEROES = "HEROES";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 战斗缓存
|
||||||
|
* sub_key
|
||||||
|
*/
|
||||||
|
public static final String FIGHT_MONSTERS = "MONSTERS";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 战斗缓存
|
||||||
|
* sub_key
|
||||||
|
*/
|
||||||
|
public static final String FIGHT_SEED = "SEED";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 战斗缓存
|
||||||
|
* sub_key
|
||||||
|
*/
|
||||||
|
public static final String FIGHT_GROUPID = "GROUPID";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 过期事件
|
* 过期事件
|
||||||
|
|
|
@ -19,6 +19,7 @@ public class FightEndRequestHandler extends BaseHandler {
|
||||||
byte[] message = netData.parseClientProtoNetData();
|
byte[] message = netData.parseClientProtoNetData();
|
||||||
FightInfoProto.FightEndRequest fightEndRequest = FightInfoProto.FightEndRequest.parseFrom(message);
|
FightInfoProto.FightEndRequest fightEndRequest = FightInfoProto.FightEndRequest.parseFrom(message);
|
||||||
int monsterGroupId = fightEndRequest.getMonsterGroupId();
|
int monsterGroupId = fightEndRequest.getMonsterGroupId();
|
||||||
MapLogic.getInstance().endFight(iSession, monsterGroupId, MessageTypeProto.MessageType.FIGHT_END_RESPONSE, monsterGroupId);
|
String frames = fightEndRequest.getFrames();
|
||||||
|
MapLogic.getInstance().endFight(iSession, frames, MessageTypeProto.MessageType.FIGHT_END_RESPONSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -620,30 +620,21 @@ public class MapLogic {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void endFight(ISession session, int result, MessageTypeProto.MessageType messageType, int monsterGroupId) throws Exception {
|
public void endFight(ISession session, String frames, MessageTypeProto.MessageType messageType) throws Exception {
|
||||||
int uid = session.getUid();
|
int uid = session.getUid();
|
||||||
User user = UserManager.getUser(uid);
|
User user = UserManager.getUser(uid);
|
||||||
|
|
||||||
// String key = RedisKey.getKey(RedisKey.FIGHT, user.getId() , false);
|
String key = RedisKey.getKey(RedisKey.FIGHT, user.getId() , false);
|
||||||
// String value = (String) RedisUtil.getInstence().get(key);
|
Map<Object , Object> valueMap = RedisUtil.getInstence().hmget(key);
|
||||||
// if (value == null || value.isEmpty()) {
|
if (valueMap == null || valueMap.isEmpty()) {
|
||||||
// LOGGER.info("endFight() uid=>{} not start fight", uid);
|
LOGGER.info("endFight() uid=>{} not start fight", uid);
|
||||||
// MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
|
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
int seed = (int)valueMap.get(RedisKey.FIGHT_SEED);
|
||||||
List<Integer> pokemonSkill = new ArrayList<>();
|
int monsterGroupId = (int)valueMap.get(RedisKey.FIGHT_GROUPID);
|
||||||
List<String> heroList = new ArrayList<>();
|
CommonProto.FightTeamInfo fightTeamInfo = (CommonProto.FightTeamInfo)valueMap.get(RedisKey.FIGHT_HEROES);
|
||||||
List<String> monsterIdList = new ArrayList<>();
|
List<CommonProto.FightTeamInfo> monsterTeamList = (List<CommonProto.FightTeamInfo>)valueMap.get(RedisKey.FIGHT_MONSTERS);
|
||||||
|
|
||||||
String key = RedisKey.getKey(RedisKey.FIGHT_SEED, user.getId() , false);
|
|
||||||
int seed = (Integer) RedisUtil.getInstence().getAndDelete(key);
|
|
||||||
|
|
||||||
String optionData = "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(heroList,pokemonSkill,monsterIdList);
|
|
||||||
LuaValue getOptionData = FightDataUtil.getOptionData(optionData);
|
|
||||||
int[] checkResult = CheckFight.getInstance().checkFight(seed, getFightData, getOptionData);
|
|
||||||
|
|
||||||
|
|
||||||
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(monsterGroupId);
|
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(monsterGroupId);
|
||||||
if (sMonsterGroup == null) {
|
if (sMonsterGroup == null) {
|
||||||
|
@ -651,11 +642,12 @@ public class MapLogic {
|
||||||
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
|
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int teamId = user.getMapManager().getTeamId();
|
|
||||||
// List<Integer> pokemonSkill = HeroLogic.getInstance().getPokenmonSkills(user, teamId);
|
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";
|
||||||
// TODO from redis
|
LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo,monsterTeamList);
|
||||||
// List<String> heroFightInfos = user.getMapManager().getHeroFightInfos();
|
LuaValue getOptionData = FightDataUtil.getOptionData(frames);
|
||||||
// List<String> monserIds =
|
int[] checkResult = CheckFight.getInstance().checkFight(seed, getFightData, getOptionData);
|
||||||
|
|
||||||
|
|
||||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
|
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
|
||||||
FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse
|
FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse
|
||||||
|
|
|
@ -12,6 +12,7 @@ import com.ljsd.jieling.handler.mission.CheckMissionReturn;
|
||||||
import com.ljsd.jieling.handler.mission.Mission;
|
import com.ljsd.jieling.handler.mission.Mission;
|
||||||
import com.ljsd.jieling.handler.mission.MissionLogic;
|
import com.ljsd.jieling.handler.mission.MissionLogic;
|
||||||
import com.ljsd.jieling.logic.dao.Hero;
|
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.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
|
@ -76,39 +77,56 @@ public class BehaviorUtil {
|
||||||
*/
|
*/
|
||||||
public static void getFightInfo(User user, int groupId, 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);
|
|
||||||
RedisUtil.getInstence().set(key, Integer.toString(groupId), RedisKey.EXPIRE_TIME);
|
|
||||||
|
|
||||||
String seed_key = RedisKey.getKey(RedisKey.FIGHT_SEED, user.getId(), false);
|
int teamId = mapManager.getTeamId();
|
||||||
RedisUtil.getInstence().set(seed_key, Integer.toString((int)(System.currentTimeMillis()/1000)), RedisKey.EXPIRE_TIME);
|
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
|
||||||
|
List<CommonProto.FightUnitInfo> heroFightInfos = new ArrayList<>();
|
||||||
Set<String> heroes = mapManager.getHeroes();
|
for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) {
|
||||||
List<CommonProto.HeroFightInfo> heroFightInfos = new ArrayList<>(heroes.size());
|
Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId());
|
||||||
for (String heroId : heroes) {
|
|
||||||
Hero hero = user.getHeroManager().getHero(heroId);
|
|
||||||
if (hero == null || hero.getCurHp() == 0) {
|
if (hero == null || hero.getCurHp() == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
float attack = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.ATTACK_TYPE);
|
StringBuilder skillSb = new StringBuilder();
|
||||||
float physicalDefence = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.PHYSICAL_DEFENCE_TYPE);
|
StringBuilder propertySb = new StringBuilder();
|
||||||
float magicDefence = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.MAGIC_DEFENCE_TYPE);
|
CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo
|
||||||
float hp = hero.getCurHp();
|
|
||||||
float speed = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.SPEED_TYPE);
|
|
||||||
CommonProto.Hero heroProto = CBean2Proto.getHero(hero);
|
|
||||||
CommonProto.HeroFightInfo heroFightInfo = CommonProto.HeroFightInfo
|
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.setAttack(attack)
|
.setUnitId(Integer.toString(hero.getTemplateId()))
|
||||||
.setPhysicalDefence(physicalDefence)
|
.setUnitSkillIds(HeroLogic.getInstance().getHeroSkills(hero,skillSb).toString())
|
||||||
.setMagicDefence(magicDefence)
|
.setProperty(HeroLogic.getInstance().getHeroProperty(user,hero,propertySb).toString())
|
||||||
.setHp(hp)
|
|
||||||
.setSpeed(speed)
|
|
||||||
.setHero(heroProto)
|
|
||||||
.build();
|
.build();
|
||||||
heroFightInfos.add(heroFightInfo);
|
heroFightInfos.add(heroFightInfo);
|
||||||
}
|
}
|
||||||
eventUpdateResponse.addAllHeroFightInfos(heroFightInfos);
|
CommonProto.FightTeamInfo fightTeamInfo = CommonProto.FightTeamInfo.
|
||||||
List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId);
|
newBuilder()
|
||||||
eventUpdateResponse.addAllMonsterList(monsterByGroup);
|
.addAllFightUnitList(heroFightInfos)
|
||||||
|
.setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId))
|
||||||
|
.build();
|
||||||
|
eventUpdateResponse.setHeroFightInfos(fightTeamInfo);
|
||||||
|
|
||||||
|
//monster
|
||||||
|
List<CommonProto.FightUnitInfo> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId);
|
||||||
|
String monsterTeamSkill = MonsterUtil.getMonsterTeamSkillByGroup(groupId);
|
||||||
|
List<CommonProto.FightTeamInfo> monsterGroupList = new ArrayList<>();
|
||||||
|
CommonProto.FightTeamInfo monsterTeamInfo = CommonProto.FightTeamInfo
|
||||||
|
.newBuilder()
|
||||||
|
.addAllFightUnitList(monsterByGroup)
|
||||||
|
.setTeamSkillList(monsterTeamSkill)
|
||||||
|
.build();
|
||||||
|
monsterGroupList.add(monsterTeamInfo);
|
||||||
|
eventUpdateResponse.addAllMonsterList(monsterGroupList);
|
||||||
|
|
||||||
|
//设置战斗随机种子
|
||||||
|
int seed = (int)(System.currentTimeMillis()/1000);
|
||||||
|
eventUpdateResponse.setFightSeed(seed);
|
||||||
|
|
||||||
|
String key = RedisKey.getKey(RedisKey.FIGHT, user.getId(), false);
|
||||||
|
Map<String,Object> 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);
|
||||||
|
RedisUtil.getInstence().hmset(key, fightInfo, RedisKey.EXPIRE_TIME);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -650,25 +650,44 @@ public class HeroLogic {
|
||||||
for(TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList){
|
for(TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList){
|
||||||
String heroId = teamPosHeroInfo.getHeroId();
|
String heroId = teamPosHeroInfo.getHeroId();
|
||||||
Hero hero = heroMap.get(heroId);
|
Hero hero = heroMap.get(heroId);
|
||||||
Map<Integer, Integer> heroAttributeMap = calHeroFinalAttribute(user, hero);
|
|
||||||
StringBuilder sb = new StringBuilder(hero.getTemplateId()).append(DIVISION);
|
StringBuilder sb = new StringBuilder(hero.getTemplateId()).append(DIVISION);
|
||||||
for (Integer skillId : hero.getSkillList()) {
|
getHeroSkills(hero,sb);
|
||||||
sb.append(skillId).append(DIVISION);
|
getHeroProperty(user,hero,sb);
|
||||||
}
|
|
||||||
for(Integer templatePropetyId:transTemplate){
|
|
||||||
Integer propertyValue = heroAttributeMap.get(templatePropetyId);
|
|
||||||
if(propertyValue == null){
|
|
||||||
propertyValue =0;
|
|
||||||
}
|
|
||||||
sb.append(propertyValue).append(DIVISION);
|
|
||||||
}
|
|
||||||
result.add(sb.toString());
|
result.add(sb.toString());
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Integer> getPokenmonSkills(User user,int teamId){
|
public StringBuilder getHeroSkills(Hero hero, StringBuilder sb){
|
||||||
List<Integer> pokenSkillResult = new ArrayList<>(3);
|
for (Integer skillId : hero.getSkillList()) {
|
||||||
|
sb.append(skillId).append(DIVISION);
|
||||||
|
}
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StringBuilder getHeroProperty(User user, Hero hero, StringBuilder sb){
|
||||||
|
Map<Integer, Integer> heroAttributeMap = calHeroFinalAttribute(user, hero);
|
||||||
|
sb.append(hero.getLevel()).append(DIVISION);
|
||||||
|
for(Integer templatePropetyId:transTemplate){
|
||||||
|
Integer propertyValue = heroAttributeMap.get(templatePropetyId);
|
||||||
|
if(propertyValue == null){
|
||||||
|
propertyValue =0;
|
||||||
|
}
|
||||||
|
sb.append(propertyValue).append(DIVISION);
|
||||||
|
}
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getOneHeroFightInfo(User user, Hero hero){
|
||||||
|
StringBuilder sb = new StringBuilder(hero.getTemplateId()).append(DIVISION);
|
||||||
|
getHeroSkills(hero,sb);
|
||||||
|
getHeroProperty(user,hero,sb);
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPokenmonSkills(User user,int teamId){
|
||||||
|
StringBuilder pokenSkillResult = new StringBuilder();
|
||||||
List<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId);
|
List<TeamPosForPokenInfo> teamPosForPokenInfos = user.getTeamPosManager().getTeamPosForPoken().get(teamId);
|
||||||
Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
|
Map<Integer, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
|
||||||
Collections.sort(teamPosForPokenInfos);
|
Collections.sort(teamPosForPokenInfos);
|
||||||
|
@ -676,9 +695,9 @@ public class HeroLogic {
|
||||||
int pokemonId = teamPosForPokenInfo.getPokenId();
|
int pokemonId = teamPosForPokenInfo.getPokenId();
|
||||||
Pokemon pokemon = pokemonMap.get(pokemonId);
|
Pokemon pokemon = pokemonMap.get(pokemonId);
|
||||||
SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage());
|
SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage());
|
||||||
pokenSkillResult.add(sDifferDemonsStageConfig.getSkillId());
|
pokenSkillResult.append(sDifferDemonsStageConfig.getSkillId()).append("#");
|
||||||
}
|
}
|
||||||
return pokenSkillResult;
|
return pokenSkillResult.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import com.ljsd.jieling.logic.dao.*;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
@ -138,41 +139,48 @@ public class CBean2Proto {
|
||||||
.addAllPokemoncomonpent(pokemoncomonpentList)
|
.addAllPokemoncomonpent(pokemoncomonpentList)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
public static CommonProto.Monster getMonster(SMonsterConfig sMonsterConfig) {
|
|
||||||
List<Integer> monsterPropertyList = new CopyOnWriteArrayList<>();
|
public static CommonProto.FightUnitInfo getMonster(SMonsterConfig sMonsterConfig) {
|
||||||
List<Integer> monsterSkillList = new CopyOnWriteArrayList<>(); //火风水地光暗
|
StringBuilder monsterPropertyList = new StringBuilder();
|
||||||
|
StringBuilder monsterSkillList = new StringBuilder(); //火风水地光暗
|
||||||
int[] damageBonusFactor = sMonsterConfig.getDamageBonusFactor();
|
int[] damageBonusFactor = sMonsterConfig.getDamageBonusFactor();
|
||||||
int[] damageReduceFactor = sMonsterConfig.getDamageReduceFactor();
|
int[] damageReduceFactor = sMonsterConfig.getDamageReduceFactor();
|
||||||
monsterPropertyList.add(sMonsterConfig.getLevel()); //等级
|
monsterPropertyList.append(sMonsterConfig.getLevel()).append("#"); //等级
|
||||||
monsterPropertyList.add(sMonsterConfig.getHp()); //生命
|
monsterPropertyList.append(sMonsterConfig.getHp()).append("#"); //生命
|
||||||
monsterPropertyList.add(0); //最大生命
|
monsterPropertyList.append(sMonsterConfig.getHp()).append("#"); //最大生命
|
||||||
monsterPropertyList.add(sMonsterConfig.getAttack());//攻击力
|
monsterPropertyList.append(sMonsterConfig.getAttack()).append("#");//攻击力
|
||||||
monsterPropertyList.add(sMonsterConfig.getPhysicalDefence()); //护甲
|
monsterPropertyList.append(sMonsterConfig.getPhysicalDefence()).append("#"); //护甲
|
||||||
monsterPropertyList.add(sMonsterConfig.getMagicDefence()); //魔抗
|
monsterPropertyList.append(sMonsterConfig.getMagicDefence()).append("#"); //魔抗
|
||||||
monsterPropertyList.add(sMonsterConfig.getSpeed()); //速度
|
monsterPropertyList.append(sMonsterConfig.getSpeed()).append("#"); //速度
|
||||||
monsterPropertyList.add(0); //伤害加成系数
|
monsterPropertyList.append(0).append("#"); //伤害加成系数
|
||||||
monsterPropertyList.add(0); //伤害减免系数
|
monsterPropertyList.append(0).append("#"); //伤害减免系数
|
||||||
monsterPropertyList.add((int)(sMonsterConfig.getHit() * 10000)); //命中率
|
monsterPropertyList.append((int)(sMonsterConfig.getHit() * 10000)).append("#"); //命中率
|
||||||
monsterPropertyList.add((int)(sMonsterConfig.getDodge() * 10000)); //闪避率
|
monsterPropertyList.append((int)(sMonsterConfig.getDodge() * 10000)).append("#"); //闪避率
|
||||||
monsterPropertyList.add((int)(sMonsterConfig.getCritDamageFactor() * 10000)); //暴击伤害系数
|
monsterPropertyList.append((int)(sMonsterConfig.getCritDamageFactor() * 10000)).append("#"); //暴击伤害系数
|
||||||
monsterPropertyList.add(-1); //治疗加成系数
|
monsterPropertyList.append(-1).append("#"); //治疗加成系数
|
||||||
monsterPropertyList.add(damageBonusFactor[0]); //火系伤害加成系数
|
monsterPropertyList.append(damageBonusFactor[0]).append("#"); //火系伤害加成系数
|
||||||
monsterPropertyList.add(damageReduceFactor[0]); //火系伤害减免系数
|
monsterPropertyList.append(damageReduceFactor[0]).append("#"); //火系伤害减免系数
|
||||||
monsterPropertyList.add(damageBonusFactor[2]); //冰系伤害加成系数
|
monsterPropertyList.append(damageBonusFactor[1]).append("#"); //冰系伤害加成系数
|
||||||
monsterPropertyList.add(damageReduceFactor[2]); //冰系伤害减免系数
|
monsterPropertyList.append(damageReduceFactor[1]).append("#"); //冰系伤害减免系数
|
||||||
monsterPropertyList.add(damageBonusFactor[4]); //雷系伤害加成系数
|
monsterPropertyList.append(damageBonusFactor[2]).append("#"); //雷系伤害加成系数
|
||||||
monsterPropertyList.add(damageReduceFactor[4]); //雷系伤害减免系数
|
monsterPropertyList.append(damageReduceFactor[2]).append("#"); //雷系伤害减免系数
|
||||||
monsterPropertyList.add(damageBonusFactor[1]); //风系伤害加成系数
|
monsterPropertyList.append(damageBonusFactor[3]).append("#"); //风系伤害加成系数
|
||||||
monsterPropertyList.add(damageReduceFactor[1]); //风系伤害减免系数
|
monsterPropertyList.append(damageReduceFactor[3]).append("#"); //风系伤害减免系数
|
||||||
monsterPropertyList.add(damageBonusFactor[3]); //地系伤害加成系数
|
monsterPropertyList.append(damageBonusFactor[4]).append("#"); //地系伤害加成系数
|
||||||
monsterPropertyList.add(damageReduceFactor[3]); //地系伤害减免系数
|
monsterPropertyList.append(damageReduceFactor[4]).append("#"); //地系伤害减免系数
|
||||||
monsterPropertyList.add(damageBonusFactor[5]); //暗系伤害加成系数
|
monsterPropertyList.append(damageBonusFactor[5]).append("#"); //暗系伤害加成系数
|
||||||
monsterPropertyList.add(damageReduceFactor[5]); //暗系伤害减免系数
|
monsterPropertyList.append(damageReduceFactor[5]); //暗系伤害减免系数
|
||||||
|
|
||||||
CommonProto.Monster.Builder monsterBuilder = CommonProto.Monster.newBuilder();
|
if (sMonsterConfig.getSkillList()!=null){
|
||||||
monsterBuilder.addAllMonsterProperty(monsterPropertyList);
|
for (Integer i : sMonsterConfig.getSkillList()){
|
||||||
monsterBuilder.addAllMonsterSkill(monsterSkillList);
|
monsterSkillList.append(i);
|
||||||
monsterBuilder.setMonsterId(String.valueOf(sMonsterConfig.getId()));
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CommonProto.FightUnitInfo.Builder monsterBuilder = CommonProto.FightUnitInfo.newBuilder();
|
||||||
|
monsterBuilder.setProperty(monsterPropertyList.toString());
|
||||||
|
monsterBuilder.setUnitSkillIds(monsterSkillList.toString());
|
||||||
|
monsterBuilder.setUnitId(String.valueOf(sMonsterConfig.getId()));
|
||||||
return monsterBuilder.build();
|
return monsterBuilder.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.ljsd.jieling.config.*;
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
import com.ljsd.jieling.logic.STableManager;
|
import com.ljsd.jieling.logic.STableManager;
|
||||||
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
import org.luaj.vm2.LuaTable;
|
import org.luaj.vm2.LuaTable;
|
||||||
import org.luaj.vm2.LuaValue;
|
import org.luaj.vm2.LuaValue;
|
||||||
|
|
||||||
|
@ -34,16 +35,16 @@ public class FightDataUtil {
|
||||||
return tableA;
|
return tableA;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LuaValue getFinalFightData(List<String> heroList, List<Integer> pokemonSkill, List<String> monsterIdList) {
|
public static LuaValue getFinalFightData(CommonProto.FightTeamInfo heroTeam, List<CommonProto.FightTeamInfo> monsterTeamList) {
|
||||||
|
|
||||||
LuaValue LuaTable = new LuaTable();
|
LuaValue LuaTable = new LuaTable();
|
||||||
LuaTable.set("playerData", getPlayerData(heroList, pokemonSkill));
|
LuaTable.set("playerData", getPlayerData(heroTeam));
|
||||||
LuaTable.set("enemyData", getEnemyData(monsterIdList));
|
LuaTable.set("enemyData", getEnemyData(monsterTeamList));
|
||||||
return LuaTable;
|
return LuaTable;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LuaValue getEnemyData(List<String> enemyDataList) {
|
public static LuaValue getEnemyData(List<CommonProto.FightTeamInfo> enemyDataList) {
|
||||||
LuaValue enemyData = new LuaTable();
|
LuaValue enemyData = new LuaTable();
|
||||||
for (int i = 0; i < enemyDataList.size(); i++) {
|
for (int i = 0; i < enemyDataList.size(); i++) {
|
||||||
enemyData.rawset(i + 1, getMonsterFightUnit(enemyDataList.get(i)));
|
enemyData.rawset(i + 1, getMonsterFightUnit(enemyDataList.get(i)));
|
||||||
|
@ -51,22 +52,34 @@ public class FightDataUtil {
|
||||||
return enemyData;
|
return enemyData;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static LuaValue getMonsterFightUnit(String id) {
|
private static LuaValue getMonsterFightUnit(CommonProto.FightTeamInfo data) {
|
||||||
|
|
||||||
SMonsterConfig sMonster = SMonsterConfig.getsMonsterConfigMap().get(Integer.parseInt(id));
|
LuaValue enemyData = new LuaTable();
|
||||||
|
for (int i = 0; i < data.getFightUnitListCount(); i++) {
|
||||||
|
|
||||||
LuaValue unitData = new LuaTable();
|
CommonProto.FightUnitInfo unitInfo = data.getFightUnitList(i);
|
||||||
unitData.set("roleId", sMonster.getId());
|
|
||||||
unitData.set("professionId", sMonster.getProfession());
|
|
||||||
unitData.set("camp", 1);
|
|
||||||
unitData.set("type", sMonster.getType());
|
|
||||||
unitData.set("quality", sMonster.getQuality());
|
|
||||||
|
|
||||||
unitData.set("skill", getSkill(Integer.toString(sMonster.getSkillList()[0])));
|
String[] unitSkill = data.getTeamSkillList().trim().split("#");
|
||||||
unitData.set("superSkill", new LuaTable());
|
|
||||||
unitData.set("passivity", new LuaTable());
|
SMonsterConfig sMonster = SMonsterConfig.getsMonsterConfigMap().get(Integer.parseInt(unitInfo.getUnitId()));
|
||||||
unitData.set("property", getMonsterProperty(sMonster));
|
|
||||||
return unitData;
|
LuaValue unitData = new LuaTable();
|
||||||
|
unitData.set("roleId", sMonster.getId());
|
||||||
|
unitData.set("professionId", sMonster.getProfession());
|
||||||
|
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]));
|
||||||
|
unitData.set("passivity", new LuaTable());
|
||||||
|
unitData.set("property", getMonsterProperty(sMonster));
|
||||||
|
|
||||||
|
enemyData.rawset(i+1, unitData);
|
||||||
|
}
|
||||||
|
enemyData.rawset("teamSkill", getTeamSkill(data.getTeamSkillList().trim()));
|
||||||
|
|
||||||
|
return enemyData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -139,28 +152,31 @@ public class FightDataUtil {
|
||||||
return playerDataMap;
|
return playerDataMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LuaValue getPlayerData(List<String> heroList, List<Integer> pokemonSkill) {
|
public static LuaValue getPlayerData(CommonProto.FightTeamInfo heroTeam) {
|
||||||
LuaValue playerData = new LuaTable();
|
LuaValue playerData = new LuaTable();
|
||||||
for (int i = 1; i <= heroList.size(); i++) {
|
for (int i = 1; i <= heroTeam.getFightUnitListCount(); i++) {
|
||||||
playerData.rawset(i, getHeroFightUnit(heroList.get(i - 1)));
|
playerData.rawset(i, getHeroFightUnit(heroTeam.getFightUnitList(i - 1)));
|
||||||
}
|
}
|
||||||
playerData.rawset("teamSkill", getTeamSkill(pokemonSkill));
|
playerData.rawset("teamSkill", getTeamSkill(heroTeam.getTeamSkillList()));
|
||||||
return playerData;
|
return playerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static LuaValue getTeamSkill(List<Integer> pokemonSkill) {
|
private static LuaValue getTeamSkill(String pokemonSkill) {
|
||||||
LuaValue teamSkill = new LuaTable();
|
LuaValue teamSkill = new LuaTable();
|
||||||
for (int i = 0; i < pokemonSkill.size(); i++) {
|
String[] skills = pokemonSkill.trim().split("#");
|
||||||
|
for (int i = 0; i < skills.length; i++) {
|
||||||
|
|
||||||
teamSkill.rawset(i + 1, getSkill(Integer.toString(pokemonSkill.get(i))));
|
teamSkill.rawset(i + 1, getSkill(skills[i]));
|
||||||
}
|
}
|
||||||
return teamSkill;
|
return teamSkill;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static LuaValue getHeroFightUnit(String data) {
|
private static LuaValue getHeroFightUnit(CommonProto.FightUnitInfo data) {
|
||||||
String[] dataList = data.split("#");
|
String unitId = data.getUnitId();
|
||||||
SCHero hero = SCHero.getsCHero().get(dataList[0]);
|
String[] skillIds = data.getUnitSkillIds().trim().split("#");
|
||||||
|
String property = data.getProperty();
|
||||||
|
SCHero hero = SCHero.getsCHero().get(Integer.parseInt(unitId));
|
||||||
LuaValue unitData = new LuaTable();
|
LuaValue unitData = new LuaTable();
|
||||||
unitData.set("roleId", hero.getId());
|
unitData.set("roleId", hero.getId());
|
||||||
unitData.set("professionId", hero.getProfession());
|
unitData.set("professionId", hero.getProfession());
|
||||||
|
@ -168,17 +184,18 @@ public class FightDataUtil {
|
||||||
unitData.set("type", 1);
|
unitData.set("type", 1);
|
||||||
unitData.set("quality", 1);
|
unitData.set("quality", 1);
|
||||||
|
|
||||||
unitData.set("skill", getSkill(dataList[1]));
|
unitData.set("skill", getSkill(skillIds[0]));
|
||||||
unitData.set("superSkill", getSkill(dataList[2]));
|
unitData.set("superSkill", getSkill(skillIds[1]));
|
||||||
unitData.set("passivity", getTestSkill(false));
|
unitData.set("passivity", getTestSkill(false));
|
||||||
unitData.set("property", getProperty(dataList));
|
unitData.set("property", getProperty(property));
|
||||||
return unitData;
|
return unitData;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static LuaValue getProperty(String[] dataList) {
|
private static LuaValue getProperty(String dataList) {
|
||||||
|
String[] propertyArr = dataList.trim().split("#");
|
||||||
LuaValue property = new LuaTable();
|
LuaValue property = new LuaTable();
|
||||||
for (int i = 3; i <= dataList.length - 1; i++) {
|
for (int i = 3; i <= propertyArr.length - 1; i++) {
|
||||||
property.rawset(i, LuaValue.valueOf(propertyHero[i]));
|
property.rawset(i, LuaValue.valueOf(propertyArr[i]));
|
||||||
}
|
}
|
||||||
return property;
|
return property;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,11 +11,11 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
public class MonsterUtil {
|
public class MonsterUtil {
|
||||||
|
|
||||||
public static List<CommonProto.Monster> getMonsterByGroup(int groupId){
|
public static List<CommonProto.FightUnitInfo> getMonsterByGroup(int groupId){
|
||||||
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(groupId);
|
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(groupId);
|
||||||
int[][] groupIds = sMonsterGroup.getContents();
|
int[][] groupIds = sMonsterGroup.getContents();
|
||||||
List<CommonProto.Monster> monsterList = new CopyOnWriteArrayList<>();
|
List<CommonProto.FightUnitInfo> monsterList = new CopyOnWriteArrayList<>();
|
||||||
Map<Integer, CommonProto.Monster> monsterMap = SMonsterConfig.getMonsterMap();
|
Map<Integer, CommonProto.FightUnitInfo> monsterMap = SMonsterConfig.getMonsterMap();
|
||||||
for (int[] monsterIds : groupIds){
|
for (int[] monsterIds : groupIds){
|
||||||
for (int monsterId: monsterIds){
|
for (int monsterId: monsterIds){
|
||||||
monsterList.add(monsterMap.get(monsterId));
|
monsterList.add(monsterMap.get(monsterId));
|
||||||
|
@ -24,13 +24,17 @@ public class MonsterUtil {
|
||||||
return monsterList;
|
return monsterList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> getMonsterSkillById(int monsterId){
|
public static String getMonsterSkillById(int monsterId){
|
||||||
CommonProto.Monster monster = SMonsterConfig.getMonsterMap().get(monsterId);
|
CommonProto.FightUnitInfo monster = SMonsterConfig.getMonsterMap().get(monsterId);
|
||||||
return monster.getMonsterSkillList();
|
return monster.getUnitSkillIds();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Integer> getMonsterPropertyById(int monsterId){
|
public static String getMonsterPropertyById(int monsterId){
|
||||||
CommonProto.Monster monster = SMonsterConfig.getMonsterMap().get(monsterId);
|
CommonProto.FightUnitInfo monster = SMonsterConfig.getMonsterMap().get(monsterId);
|
||||||
return monster.getMonsterPropertyList();
|
return monster.getProperty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMonsterTeamSkillByGroup(int groupId) {
|
||||||
|
return SMonsterGroup.getsMonsterGroupMap().get(groupId).getSkill();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue