皮肤逻辑提交

back_recharge
lvxinran 2020-11-06 10:21:12 +08:00
parent f3af1b0c4b
commit 841d2aa8a8
9 changed files with 49 additions and 8 deletions

View File

@ -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);

View File

@ -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<Integer, Integer> property, int star,String heroSkills,int level) {
public TrailHero(int tmpId, Map<Integer, Integer> 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() {

View File

@ -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);
}

View File

@ -105,6 +105,7 @@ public class TowerMap extends AbstractMap {
.setHeroHp(calHp)
.setStar(trailHero.getStar())
.setLevel(trailHero.getLevel())
.setSkinId(trailHero.getSkinId())
.build();
mapEnterResponse.addInfos(info);
}

View File

@ -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);
}
}

View File

@ -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);

View File

@ -3246,7 +3246,19 @@ public class HeroLogic{
User user = UserManager.getUser(session.getUid());
Map<Integer, Integer> skinInfo = user.getHeroManager().getSkinInfo();
HeroInfoProto.GetAllSkinResponse.Builder response = HeroInfoProto.GetAllSkinResponse.newBuilder();
Set<Integer> removeId = new HashSet<>(skinInfo.size()+1);
if(!skinInfo.isEmpty()){
for(Map.Entry<Integer,Integer> entry:skinInfo.entrySet()){
if(entry.getValue()!=-1&&entry.getValue()<TimeUtils.nowInt()){
removeId.add(entry.getKey());
}
}
if(!removeId.isEmpty()){
for(int remove :removeId){
user.getHeroManager().removeSkin(remove);
}
}
skinInfo.forEach((k,v)->response.addSkinInfo(CommonProto.SkinInfo.newBuilder().setSkinId(k).setOverTime(v).build()));
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);

View File

@ -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);

View File

@ -317,6 +317,7 @@ public class FightDataUtil {
}
unitData.set("passivity", getPassivity(skillIds));
unitData.set("property", getProperty(property));
unitData.set("skinId",data.getSkinId());
return unitData;
}