From 4b53c7e5d01ea84bce870eb6b977dcf30a9d180d Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 31 Oct 2020 04:53:56 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/dao/Hero.java | 11 +++++++++++ .../java/com/ljsd/jieling/logic/dao/HeroManager.java | 2 ++ .../main/java/com/ljsd/jieling/util/CBean2Proto.java | 1 + 3 files changed, 14 insertions(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 4288a2fe1..eb84cd423 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -50,6 +50,7 @@ public class Hero extends MongoBase { private int changeId ; private Set jewelInfo = new HashSet<>(); + private int skin; public Hero(){ //绑定关系 this.setRootCollection(User._COLLECTION_NAME); @@ -303,4 +304,14 @@ public class Hero extends MongoBase { public int getChangeId() { return changeId; } + + public int getSkin() { + return skin; + } + + public void setSkin(int skin) { + this.skin = skin; + updateString("skin",skin); + + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index 71e230247..5f246237d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -21,6 +21,8 @@ public class HeroManager extends MongoBase { private Map heroHandBook = new HashMap<>(); + private Map skinInfo = new HashMap<>(); + private int firstTenth; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 4166cab23..e36543ae2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -106,6 +106,7 @@ public class CBean2Proto { .addAllJewels(hero.getJewelInfo()) .setCreatetype(hero.getCreateType()) .setChangeId(hero.getChangeId()) + .setSkinId(hero.getSkin()) .build(); } From aa94e3bc5b7c19196be29565eb596f0110ec6c99 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 31 Oct 2020 09:58:34 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/handler/GetAllHerosHandler.java | 13 +++ .../handler/hero/ChangeHeroSkinHandler.java | 26 ++++++ .../handler/hero/GetAllSkinHandler.java | 26 ++++++ .../ljsd/jieling/logic/dao/HeroManager.java | 9 ++ .../ljsd/jieling/logic/hero/HeroLogic.java | 41 ++++++++ .../ljsd/jieling/logic/item/ItemLogic.java | 35 +++++++ .../src/main/java/config/SHeroSkin.java | 93 +++++++++++++++++++ 7 files changed, 243 insertions(+) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hero/ChangeHeroSkinHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hero/GetAllSkinHandler.java create mode 100644 tablemanager/src/main/java/config/SHeroSkin.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java index 108511e35..da22f030e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllHerosHandler.java @@ -15,6 +15,7 @@ import com.ljsd.jieling.util.MessageUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import util.TimeUtils; import java.util.*; @@ -44,7 +45,19 @@ public class GetAllHerosHandler extends BaseHandler{ User user = UserManager.getUser(userId); HeroManager heroManager = user.getHeroManager(); Map heroMap = heroManager.getHeroMap(); + int nowTime = TimeUtils.nowInt(); for(Hero hero : heroMap.values()){ + //检测皮肤 + if(hero.getSkin()!=0){ + if(!heroManager.getSkinInfo().containsKey(hero.getSkin())){ + hero.setSkin(0); + }else{ + int skin= heroManager.getSkinInfo().get(hero.getSkin()); + if(skin!=-1&&skin { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.HERO_SKIN_CHANGE_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, HeroInfoProto.ChangeSkinRequest proto) throws Exception { + HeroLogic.getInstance().changeSkin(iSession,proto.getHeroId(),proto.getSkinId(), MessageTypeProto.MessageType.HERO_SKIN_CHANGE_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/GetAllSkinHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/GetAllSkinHandler.java new file mode 100644 index 000000000..ce74e37ae --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/GetAllSkinHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.hero; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/10/31 + * @discribe + */ +@Component +public class GetAllSkinHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.HERO_SKIN_GET_ALL_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + HeroLogic.getInstance().getAllSkin(iSession,MessageTypeProto.MessageType.HERO_SKIN_GET_ALL_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index 5f246237d..af089a3ad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -117,4 +117,13 @@ public class HeroManager extends MongoBase { this.mustRandomCount = mustRandomCount; updateString("mustRandomCount",mustRandomCount); } + + public Map getSkinInfo() { + return skinInfo; + } + public void addSkin(int skinId,int time){ + skinInfo.put(skinId,time); + updateString("skinInfo."+skinId,time); + } } + 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 3a31a3e7b..0120441f7 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 @@ -3224,6 +3224,47 @@ public class HeroLogic{ Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid())); + MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); + } + + /** + * 获取所有皮肤信息 + * @param session + * @param messageType + */ + public void getAllSkin(ISession session, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + Map skinInfo = user.getHeroManager().getSkinInfo(); + HeroInfoProto.GetAllSkinResponse.Builder response = HeroInfoProto.GetAllSkinResponse.newBuilder(); + if(!skinInfo.isEmpty()){ + skinInfo.forEach((k,v)->response.addSkinInfo(CommonProto.SkinInfo.newBuilder().setSkinId(k).setOverTime(v).build())); + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } + + /** + * 更换皮肤 + * @param session + * @param messageType + */ + public void changeSkin(ISession session,String heroId,int skinId, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + Map skinInfo = user.getHeroManager().getSkinInfo(); + if(!skinInfo.containsKey(skinId)||(skinInfo.get(skinId)!=-1&&skinInfo.get(skinId) skinInfo = user.getHeroManager().getSkinInfo(); + SHeroSkin sHeroSkin = STableManager.getConfig(SHeroSkin.class).get(item.getItemId()); + if(sHeroSkin==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if(skinInfo.containsKey(item.getItemId())){ + if(skinInfo.get(item.getItemId())==-1||skinInfo.get(item.getItemId())> TimeUtils.nowInt()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } + int time; + if(sHeroSkin.getTime()==0){ + time = -1; + }else{ + time = sHeroSkin.getTime()+TimeUtils.nowInt(); + } + user.getHeroManager().addSkin(sHeroSkin.getType(),time); + HeroInfoProto.GetSkinIndication indication = HeroInfoProto.GetSkinIndication.newBuilder() + .setSkinInfo(CommonProto.SkinInfo.newBuilder().setSkinId(sHeroSkin.getType()).setOverTime(time)) + .build(); + MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.HERO_SKIN_USE_INDICATION_VALUE,indication,true); + + } /** * 使用选择宝箱道具 diff --git a/tablemanager/src/main/java/config/SHeroSkin.java b/tablemanager/src/main/java/config/SHeroSkin.java new file mode 100644 index 000000000..d9147d1fe --- /dev/null +++ b/tablemanager/src/main/java/config/SHeroSkin.java @@ -0,0 +1,93 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name ="HeroSkin") +public class SHeroSkin implements BaseConfig { + + private int id; + + private int type; + + private int heroId; + + private String readingName; + + private int[][] unlockProperty; + + private int[][] monomerProperty; + + private int time; + + private int isDefault; + + private int order; + + private int[] price; + + + public static Map skinMapByType; + + @Override + public void init() throws Exception { + + Map config = STableManager.getConfig(SHeroSkin.class); + + Map skinMapByTypeTemp = new HashMap<>(); + + for(Map.Entry entry:config.entrySet()){ + + skinMapByTypeTemp.put(entry.getValue().getType(),entry.getValue()); + + } + skinMapByType =skinMapByTypeTemp; + } + + + public int getId() { + return id; + } + + public int getType() { + return type; + } + + public int getHeroId() { + return heroId; + } + + public String getReadingName() { + return readingName; + } + + public int[][] getUnlockProperty() { + return unlockProperty; + } + + public int[][] getMonomerProperty() { + return monomerProperty; + } + + public int getTime() { + return time; + } + + + public int getIsDefault() { + return isDefault; + } + + public int getOrder() { + return order; + } + + public int[] getPrice() { + return price; + } + + +} \ No newline at end of file From 7232b8604a1ff9d1b6728af6e37b77116ad19a7a Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 3 Nov 2020 05:25:17 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E7=9A=AE=E8=82=A4=20=E5=A4=B4=E5=83=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 2 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 20 ++++++++++--------- .../ljsd/jieling/logic/item/ItemLogic.java | 13 ++++++------ .../src/main/java/config/SHeroSkin.java | 6 +++++- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 2d7568979..c357991ca 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -156,7 +156,7 @@ public interface BIReason { int SPECIAL_MONSTER_REWARD = 88;//灵兽涅槃获得 int SPECIAL_FREE_PIECE_REWARD = 89;//灵兽放生获得 - + int SKIN_USE_REWARD = 90;//激活皮肤获得头像 int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 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 0120441f7..c1a265879 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 @@ -3250,16 +3250,18 @@ public class HeroLogic{ public void changeSkin(ISession session,String heroId,int skinId, MessageTypeProto.MessageType messageType) throws Exception { User user = UserManager.getUser(session.getUid()); Map skinInfo = user.getHeroManager().getSkinInfo(); - if(!skinInfo.containsKey(skinId)||(skinInfo.get(skinId)!=-1&&skinInfo.get(skinId) skinInfo = user.getHeroManager().getSkinInfo(); SHeroSkin sHeroSkin = STableManager.getConfig(SHeroSkin.class).get(item.getItemId()); if(sHeroSkin==null){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - if(skinInfo.containsKey(item.getItemId())){ - if(skinInfo.get(item.getItemId())==-1||skinInfo.get(item.getItemId())> TimeUtils.nowInt()){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - } +// if(skinInfo.containsKey(sHeroSkin.getType())){ +// if(skinInfo.get(sHeroSkin.getType())==-1||skinInfo.get(sHeroSkin.getType())> TimeUtils.nowInt()){ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } +// } int time; if(sHeroSkin.getTime()==0){ time = -1; @@ -205,6 +205,7 @@ public class ItemLogic { time = sHeroSkin.getTime()+TimeUtils.nowInt(); } user.getHeroManager().addSkin(sHeroSkin.getType(),time); + ItemUtil.drop(user,new int[][]{sHeroSkin.getHeadIcon()},BIReason.SKIN_USE_REWARD); HeroInfoProto.GetSkinIndication indication = HeroInfoProto.GetSkinIndication.newBuilder() .setSkinInfo(CommonProto.SkinInfo.newBuilder().setSkinId(sHeroSkin.getType()).setOverTime(time)) .build(); diff --git a/tablemanager/src/main/java/config/SHeroSkin.java b/tablemanager/src/main/java/config/SHeroSkin.java index d9147d1fe..b2a86873f 100644 --- a/tablemanager/src/main/java/config/SHeroSkin.java +++ b/tablemanager/src/main/java/config/SHeroSkin.java @@ -29,6 +29,8 @@ public class SHeroSkin implements BaseConfig { private int[] price; + private int[] headIcon; + public static Map skinMapByType; @@ -89,5 +91,7 @@ public class SHeroSkin implements BaseConfig { return price; } - + public int[] getHeadIcon() { + return headIcon; + } } \ No newline at end of file From 4105cb1292083a628d2051d9fdbe2e704dbc6530 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sun, 1 Nov 2020 18:50:54 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E6=BF=80=E6=B4=BB=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E6=B6=88=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/globals/BIReason.java | 2 ++ .../src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index c357991ca..cf99531ee 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -290,4 +290,6 @@ public interface BIReason { int SPECIAL_FREE_PIECE_CONSUME = 1072;//灵兽放生碎片消耗 + int SKIN_USE_CONSUME = 1073;//激活皮肤消耗 + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index e198e4f67..c8d44d3ad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -204,6 +204,11 @@ public class ItemLogic { }else{ time = sHeroSkin.getTime()+TimeUtils.nowInt(); } + + boolean use = ItemUtil.itemCost(user,new int[][]{{item.getItemId(),item.getItemNum()}},BIReason.SKIN_USE_CONSUME,1); + if(!use){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } user.getHeroManager().addSkin(sHeroSkin.getType(),time); ItemUtil.drop(user,new int[][]{sHeroSkin.getHeadIcon()},BIReason.SKIN_USE_REWARD); HeroInfoProto.GetSkinIndication indication = HeroInfoProto.GetSkinIndication.newBuilder() From f3af1b0c4b0b03383d6dd35cca49fbd888bf68a2 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 4 Nov 2020 13:50:33 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/hero/HeroLogic.java | 12 +++++++++++- .../main/java/com/ljsd/jieling/util/CBean2Proto.java | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) 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 c1a265879..b549303d2 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 @@ -1461,7 +1461,6 @@ public class HeroLogic{ } combinedAttribute(pokemonAttr,heroAllAttribute); } - //todo 灵兽 //灵兽图鉴加成 Set pokemonBookEnabled = pokemonManager.getPokemonBookEnabled(); if(!pokemonBookEnabled.isEmpty()){ @@ -1471,6 +1470,17 @@ public class HeroLogic{ combinedAttribute(activePara,heroAllAttribute); } } + //英雄皮肤加成 记得判断皮肤过期 + int skin = hero.getSkin(); + if(skin!=0){ + Map skinInfo = user.getHeroManager().getSkinInfo(); + SHeroSkin sHeroSkin = SHeroSkin.skinMapByType.get(skin); + if(sHeroSkin!=null&&sHeroSkin.getMonomerProperty()!=null&&sHeroSkin.getMonomerProperty().length>0){ + if(skinInfo.containsKey(skin)&&skinInfo.get(skin)>TimeUtils.nowInt()){ + combinedAttribute(sHeroSkin.getMonomerProperty(),heroAllAttribute); + } + } + } //装备总战力评分 int equipForce=0; boolean needRemove = false; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index e36543ae2..9b6ff7829 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -553,7 +553,7 @@ public class CBean2Proto { public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByHero(Hero hero,int position){ - return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(hero.getId()).setHeroTid(hero.getTemplateId()).setLevel(hero.getLevel()).setStar(hero.getStar()).setPosition(position).build(); + return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(hero.getId()).setHeroTid(hero.getTemplateId()).setLevel(hero.getLevel()).setStar(hero.getStar()).setPosition(position).setSkinId(hero.getSkin()).build(); } public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByPokeMon(Pokemon pokemon,int position){ return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(pokemon.getId()).setHeroTid(pokemon.getTmpId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setPosition(position).build(); From 841d2aa8a863dd13770edba25cf65bb5afa628e5 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Nov 2020 10:21:12 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/handler/map/MapLogic.java | 4 +++- .../com/ljsd/jieling/handler/map/TrailHero.java | 16 +++++++++++++++- .../handler/map/behavior/BehaviorUtil.java | 2 ++ .../jieling/handler/map/mapType/TowerMap.java | 1 + .../com/ljsd/jieling/logic/dao/HeroManager.java | 4 ++++ .../com/ljsd/jieling/logic/fight/FightUtil.java | 3 +++ .../com/ljsd/jieling/logic/hero/HeroLogic.java | 12 ++++++++++++ .../com/ljsd/jieling/logic/item/ItemLogic.java | 14 ++++++++------ .../com/ljsd/jieling/util/FightDataUtil.java | 1 + 9 files changed, 49 insertions(+), 8 deletions(-) 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 75ff97c98..fc9b2c98d 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 @@ -3218,7 +3218,9 @@ public class MapLogic { for(String id:heroIds){ Hero hero = heroManager.getHero(id); String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,new StringBuilder()).toString(); - TrailHero trailHero = new TrailHero(hero.getTemplateId(),HeroLogic.getInstance().calHeroNotBufferAttribute(user,hero,false,0),hero.getStar(),heroSkill,hero.getLevel()); + int skinTime = heroManager.getSkinInfo().getOrDefault(hero.getSkin(), 0); + + TrailHero trailHero = new TrailHero(hero.getTemplateId(),HeroLogic.getInstance().calHeroNotBufferAttribute(user,hero,false,0),hero.getStar(),heroSkill,hero.getLevel(),hero.getSkin(),skinTime); heroInfo.put(id,trailHero); } mapManager.updateTrailHeroInfo(heroInfo); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java index 3eac62114..ba84683df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java @@ -19,6 +19,10 @@ public class TrailHero { private int level; + private int skinId; + + private int skinTime; + public int getTmpId() { return tmpId; } @@ -43,12 +47,22 @@ public class TrailHero { this.star = star; } - public TrailHero(int tmpId, Map property, int star,String heroSkills,int level) { + public TrailHero(int tmpId, Map property, int star,String heroSkills,int level,int skinId,int skinTime) { this.tmpId = tmpId; this.property = property; this.star = star; this.heroSkills = heroSkills; this.level = level; + this.skinId = skinId; + this.skinTime = skinTime; + } + + public int getSkinId() { + return skinId; + } + + public int getSkinTime() { + return skinTime; } public String getHeroSkills() { 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 61235c050..33e889470 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 @@ -30,6 +30,7 @@ import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MonsterUtil; import config.SArenaRobotConfig; import config.SCHero; +import jdk.nashorn.internal.ir.debug.ObjectSizeCalculator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import util.TimeUtils; @@ -241,6 +242,7 @@ public class BehaviorUtil { .setProperty(property.substring(0, property.length()-1)) .setPosition(teamPosHeroInfo.getPosition()) .setStar(hero.getStar()) + .setSkinId(hero.getSkin()) .build(); heroFightInfos.add(heroFightInfo); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java index c9f23f3c9..a1ebdd1d4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java @@ -105,6 +105,7 @@ public class TowerMap extends AbstractMap { .setHeroHp(calHp) .setStar(trailHero.getStar()) .setLevel(trailHero.getLevel()) + .setSkinId(trailHero.getSkinId()) .build(); mapEnterResponse.addInfos(info); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index af089a3ad..602be14da 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -125,5 +125,9 @@ public class HeroManager extends MongoBase { skinInfo.put(skinId,time); updateString("skinInfo."+skinId,time); } + public void removeSkin(int skinId){ + skinInfo.remove(skinId); + removeString(getMongoKey()+"skinInfo."+skinId); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index 805df3a08..82e6a6126 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -24,6 +24,7 @@ import com.ljsd.jieling.util.MonsterUtil; import config.SArenaRobotConfig; import config.SCHero; import org.luaj.vm2.LuaValue; +import util.TimeUtils; import java.util.ArrayList; import java.util.HashMap; @@ -253,6 +254,7 @@ public class FightUtil { .setProperty(property.substring(0, property.length()-1)) .setPosition(teamPosHeroInfo.getPosition()) .setStar(trailHero.getStar()) + .setSkinId(trailHero.getSkinId()==0?0:(trailHero.getSkinTime()==-1||trailHero.getSkinTime()> TimeUtils.nowInt()?trailHero.getSkinId():0)) .build(); heroFightInfos.add(heroFightInfo); } @@ -327,6 +329,7 @@ public class FightUtil { .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) .setPosition(teamPosHeroInfo.getPosition()) + .setSkinId(hero.getSkin()) .setStar(hero.getStar()) .build(); heroFightInfos.add(heroFightInfo); 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 b549303d2..7df3bddcb 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 @@ -3246,7 +3246,19 @@ public class HeroLogic{ User user = UserManager.getUser(session.getUid()); Map skinInfo = user.getHeroManager().getSkinInfo(); HeroInfoProto.GetAllSkinResponse.Builder response = HeroInfoProto.GetAllSkinResponse.newBuilder(); + Set removeId = new HashSet<>(skinInfo.size()+1); + if(!skinInfo.isEmpty()){ + for(Map.Entry entry:skinInfo.entrySet()){ + if(entry.getValue()!=-1&&entry.getValue()response.addSkinInfo(CommonProto.SkinInfo.newBuilder().setSkinId(k).setOverTime(v).build())); } MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index c8d44d3ad..04944e632 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -193,16 +193,18 @@ public class ItemLogic { if(sHeroSkin==null){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } -// if(skinInfo.containsKey(sHeroSkin.getType())){ -// if(skinInfo.get(sHeroSkin.getType())==-1||skinInfo.get(sHeroSkin.getType())> TimeUtils.nowInt()){ -// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); -// } -// } + if(skinInfo.containsKey(sHeroSkin.getType())){ + if(skinInfo.get(sHeroSkin.getType())==-1||skinInfo.get(sHeroSkin.getType())> TimeUtils.nowInt()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } int time; if(sHeroSkin.getTime()==0){ time = -1; }else{ - time = sHeroSkin.getTime()+TimeUtils.nowInt(); +// time =TimeUtils.nowInt()+120; + time =(int)(sHeroSkin.getTime()*TimeUtils.DAY/1000+TimeUtils.nowInt()); + } boolean use = ItemUtil.itemCost(user,new int[][]{{item.getItemId(),item.getItemNum()}},BIReason.SKIN_USE_CONSUME,1); 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 45ede7b0a..42e456c5b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -317,6 +317,7 @@ public class FightDataUtil { } unitData.set("passivity", getPassivity(skillIds)); unitData.set("property", getProperty(property)); + unitData.set("skinId",data.getSkinId()); return unitData; } From 9ee34bc0025848220ee7bf12203ae9dde5262233 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Nov 2020 10:56:52 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E6=A3=AE=E7=BD=97=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/handler/map/MapLogic.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 9f28c8469..6adbb5884 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 @@ -3221,8 +3221,13 @@ public class MapLogic { Hero hero = heroManager.getHero(id); String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,new StringBuilder()).toString(); int skinTime = heroManager.getSkinInfo().getOrDefault(hero.getSkin(), 0); + int skinId = hero.getSkin(); - TrailHero trailHero = new TrailHero(hero.getTemplateId(),HeroLogic.getInstance().calHeroNotBufferAttribute(user,hero,false,0),hero.getStar(),heroSkill,hero.getLevel(),hero.getSkin(),skinTime); + if(skinTime!=-1&&skinTime Date: Fri, 6 Nov 2020 13:32:43 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=A4=A7=E9=97=B9=E5=A4=A9=E5=AE=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java | 1 + 1 file changed, 1 insertion(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index 7178e17e7..58bce43d6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -673,6 +673,7 @@ public class ExpeditionLogic { builder1.setLevel(familyHeroInfo.getLevel()); builder1.setStar(familyHeroInfo.getStar()); builder1.setRemainHp(heroHP.get(s)); + builder1.setPosition(familyHeroInfo.getPosition()); builders.add(builder1.build()); }); builder.addAllHero(builders); From 298d7995944a60c8fb6c356d2134a3fededd7a57 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Nov 2020 15:11:18 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E6=8A=80=E8=83=BD=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/util/CBean2Proto.java | 1 + .../com/ljsd/jieling/util/FightDataUtil.java | 30 ++++++++++++------- .../src/main/java/config/SMonsterConfig.java | 6 ++++ .../main/java/config/SSkillLogicConfig.java | 4 +-- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 9b6ff7829..1816884d8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -256,6 +256,7 @@ public class CBean2Proto { monsterBuilder.setProperty(monsterPropertyList.toString()); monsterBuilder.setUnitSkillIds(monsterSkillList.toString()); monsterBuilder.setUnitId(String.valueOf(sMonsterConfig.getId())); + monsterBuilder.setSkinId(sMonsterConfig.getSkinId()); return monsterBuilder; } 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 6d7cd84a9..954561721 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -92,17 +92,18 @@ public class FightDataUtil { unitData.set("position",unitInfo.getPosition()); unitData.set("quality", sMonster.getQuality()); unitData.set("element",sMonster.getPropertyName()); + unitData.set("skinId",sMonster.getSkinId()); if (unitSkill.length==1){ - unitData.set("skill", getSkill(unitSkill[0])); + unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId())); unitData.set("superSkill", new LuaTable()); unitData.set("passivity", new LuaTable()); }else if (unitSkill.length==2){ - unitData.set("skill", getSkill(unitSkill[0])); - unitData.set("superSkill", getSkill(unitSkill[1])); + unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId())); + unitData.set("superSkill", getSkill(unitSkill[1],sMonster.getSkinId())); unitData.set("passivity", new LuaTable()); }else { - unitData.set("skill", getSkill(unitSkill[0])); - unitData.set("superSkill", getSkill(unitSkill[1])); + unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId())); + unitData.set("superSkill", getSkill(unitSkill[1],sMonster.getSkinId())); unitData.set("passivity", getPassivity(unitSkill)); } unitData.set("ai", getMonsterAi(sMonster.getMonsterAi())); @@ -269,7 +270,7 @@ public class FightDataUtil { }else{ triggerCondition.rawset(1,LuaValue.valueOf(0)); } - oneSkill.set("effect",getSkill(String.valueOf(skillIDList[j]))); + oneSkill.set("effect",getSkill(String.valueOf(skillIDList[j]),0)); oneSkill.set("triggerCondition",triggerCondition); oneSkill.set("maxCount",sSpiritAnimalSkill.getWarEffectCount()[j]); @@ -310,11 +311,11 @@ public class FightDataUtil { unitData.set("position", data.getPosition()); unitData.set("element", hero.getPropertyName()); - unitData.set("skill", getSkill(skillIds[0])); + unitData.set("skill", getSkill(skillIds[0],data.getSkinId())); if(skillIds.length == 1){ - unitData.set("superSkill", getSkill(null)); + unitData.set("superSkill", getSkill(null,data.getSkinId())); }else { - unitData.set("superSkill", getSkill(skillIds[1])); + unitData.set("superSkill", getSkill(skillIds[1],data.getSkinId())); } unitData.set("passivity", getPassivity(skillIds)); unitData.set("property", getProperty(property)); @@ -331,7 +332,7 @@ public class FightDataUtil { return property; } - private static LuaValue getSkill(String skillId,String...args) { + private static LuaValue getSkill(String skillId,int skinId) { LuaValue skill = new LuaTable(); if (StringUtil.isEmpty(skillId)){ return skill; @@ -343,7 +344,14 @@ public class FightDataUtil { // cd+=Integer.parseInt(args[0]); // } skill.rawset(1, LuaValue.valueOf(skillId)); - int skillDisplay =sSkillLogicVo.getSkillDisplay(); + int[][] display =sSkillLogicVo.getSkillDisplay(); + int skillDisplay = display[0][0]; + for(int[] skillArray:display){ + if(skillArray[0]==skinId){ + skillDisplay = skillArray[1]; + break; + } + } SCombatControl sCombatControl = STableManager.getConfig(SCombatControl.class).get(skillDisplay); int KeyFrame = sCombatControl.getKeyFrame(); int SkillDuration = sCombatControl.getSkillDuration(); diff --git a/tablemanager/src/main/java/config/SMonsterConfig.java b/tablemanager/src/main/java/config/SMonsterConfig.java index 471633dba..b7769b5c0 100644 --- a/tablemanager/src/main/java/config/SMonsterConfig.java +++ b/tablemanager/src/main/java/config/SMonsterConfig.java @@ -58,6 +58,8 @@ public class SMonsterConfig implements BaseConfig { private int[] monsterAi; + private int skinId; + @Override @@ -177,4 +179,8 @@ public class SMonsterConfig implements BaseConfig { public int[] getMonsterAi() { return monsterAi; } + + public int getSkinId() { + return skinId; + } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SSkillLogicConfig.java b/tablemanager/src/main/java/config/SSkillLogicConfig.java index 2d9a3e9d7..7aec64b3d 100644 --- a/tablemanager/src/main/java/config/SSkillLogicConfig.java +++ b/tablemanager/src/main/java/config/SSkillLogicConfig.java @@ -24,7 +24,7 @@ public class SSkillLogicConfig implements BaseConfig { private float cd; - private int skillDisplay; + private int[][] skillDisplay; @Override public void init() throws Exception { @@ -66,7 +66,7 @@ public class SSkillLogicConfig implements BaseConfig { return cd; } - public int getSkillDisplay() { + public int[][] getSkillDisplay() { return skillDisplay; } From c2e5a9ca5a919045563149a886905588af8165ce Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Nov 2020 15:13:06 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tablemanager/src/main/java/config/SSkillLogicVo.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tablemanager/src/main/java/config/SSkillLogicVo.java b/tablemanager/src/main/java/config/SSkillLogicVo.java index 55f610e25..ead153fa5 100644 --- a/tablemanager/src/main/java/config/SSkillLogicVo.java +++ b/tablemanager/src/main/java/config/SSkillLogicVo.java @@ -6,7 +6,7 @@ public class SSkillLogicVo{ private int skillId; - private int skillDisplay; + private int[][] skillDisplay; private List skillTargetVoList; @@ -18,11 +18,11 @@ public class SSkillLogicVo{ this.skillId = skillId; } - public int getSkillDisplay() { + public int[][] getSkillDisplay() { return skillDisplay; } - public void setSkillDisplay(int skillDisplay) { + public void setSkillDisplay(int[][] skillDisplay) { this.skillDisplay = skillDisplay; }