From 841d2aa8a863dd13770edba25cf65bb5afa628e5 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Nov 2020 10:21:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E9=80=BB=E8=BE=91=E6=8F=90?= =?UTF-8?q?=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; }