diff --git a/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java b/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java index d4fb54b11..58e6fce4d 100644 --- a/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java +++ b/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java @@ -35,7 +35,7 @@ public class LogLinkedList extends WrapList { } private void upString(E value){ - mongoBase.updateString(name,value); + mongoBase.updateString(name,getWrapped()); } } diff --git a/jieling-dbgen/Ldb.xml b/jieling-dbgen/Ldb.xml index 3f86350a2..f65e4ef41 100644 --- a/jieling-dbgen/Ldb.xml +++ b/jieling-dbgen/Ldb.xml @@ -18,15 +18,22 @@ - + - + + + 挖矿奖池 + 挖矿奖池层 + + 七日狂欢开始时间 幸运探宝奖池 高级幸运探宝奖池 + 挖矿奖池 + diff --git a/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java b/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java index 719023fc4..f95594b0c 100644 --- a/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java +++ b/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java @@ -119,6 +119,8 @@ public class ClassDeclare implements Visitor { public void visitWrop(com.dbgen.Type type, PrintStream ps, String prefix) { + ps.print(prefix+ "@Transient"); + ps.println(); ps.print(prefix+ "private " + "Log"+TypeName.getName(type) + " "+ getVarname()+ "Log ;"); } } 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..43dc86a92 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 SUB_ACTIVITY_CONSUME = 1073;//易经宝库 + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java new file mode 100644 index 000000000..a67f77d63 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java @@ -0,0 +1,92 @@ +package com.ljsd.jieling.handler.activity; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.AbstractActivity; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; +import com.ljsd.jieling.logic.activity.SubActivity; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.ActivityProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import config.SBlessingConfigNew; +import config.SBlessingRewardPoolNew; +import manager.STableManager; + +import java.util.HashSet; + +/** + * Description: des + * Author: zsx + * CreateDate: 2020/11/7 9:47 + */ +public class SeletSubRewardPoolRequestHandler extends BaseHandler{ + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, ActivityProto.SeletSubRewardPoolRequest proto) throws Exception { + int selectId = proto.getSelectId(); + int activityId = proto.getActivityId(); + + //check activity + User user = UserManager.getUser(uid); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(proto.getActivityId()); + if (null == abstractActivity) { + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(proto.getActivityId()); + if(activityMission==null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + + + //check conf + SBlessingConfigNew sBlessingConfigNew =SBlessingConfigNew.getsBlessingConfigNewHashMap().get(activityId); + int finalPoolId = sBlessingConfigNew.getFinalPoolId(); + + SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(selectId); + if(sBlessingRewardPoolNew.getPoolId()!=finalPoolId){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + + //check leve + + if(sBlessingRewardPoolNew.getLevelLimit()>user.getPlayerInfoManager().getLevel()){ + throw new ErrorCodeException(ErrorCode.PLAYER_LEVE_NOT); + } + //check floor + ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(SubActivity.LAY_INDEX); + if(activityProgressInfo!=null&&sBlessingRewardPoolNew.getFloorLimit()>activityProgressInfo.getProgrss()){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + +// //check had select + if(activityMission.getV()!=0){ + ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + activityMission.getV()); + if(activityProgressInfo1!=null&&activityProgressInfo1.getProgrss()!=0){ + activityProgressInfo1.setProgrss(activityProgressInfo1.getProgrss()-1); + } + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size()-1); + } + activityMission.setV(selectId); + ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + selectId); + if(activityProgressInfo1!=null){ + activityProgressInfo1.setProgrss(activityProgressInfo1.getProgrss()+1); + } + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add(selectId); + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + abstractActivity.sendActivityProgress(sessionByUid, activityMission, null); + return ActivityProto.SeletSubRewardPoolResponse.newBuilder().build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java index 2cb662b93..03bd79868 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java @@ -17,6 +17,7 @@ public final class ActivityManager extends MongoBase { private long senvenStartTime; // 七日狂欢开始时间 private com.ljsd.jieling.jbean.LuckWheelMission luckWheel; // 幸运探宝奖池 private com.ljsd.jieling.jbean.LuckWheelMission luckWheelAdvance; // 高级幸运探宝奖池 + private com.ljsd.jieling.jbean.SubRewardPoolInfo subRewardPoolInfo; // 挖矿奖池 public ActivityManager() { } @@ -28,6 +29,7 @@ public final class ActivityManager extends MongoBase { this.senvenStartTime = _o_.senvenStartTime; this.luckWheel = new LuckWheelMission(_o_.luckWheel); this.luckWheelAdvance = new LuckWheelMission(_o_.luckWheelAdvance); + this.subRewardPoolInfo = new SubRewardPoolInfo(_o_.subRewardPoolInfo); } public Map getActivityMissionMap() { @@ -48,6 +50,10 @@ public final class ActivityManager extends MongoBase { return this.luckWheelAdvance; } + public com.ljsd.jieling.jbean.SubRewardPoolInfo getSubRewardPoolInfo() { // 挖矿奖池 + return this.subRewardPoolInfo; + } + public void setSenvenStartTime(long senvenstarttime) { // 七日狂欢开始时间 updateString("senvenStartTime",senvenstarttime); this.senvenStartTime = senvenstarttime; @@ -65,6 +71,12 @@ public final class ActivityManager extends MongoBase { this.luckWheelAdvance = luckwheeladvance; } + public void setSubRewardPoolInfo(SubRewardPoolInfo subrewardpoolinfo) { // 挖矿奖池 + updateString("subRewardPoolInfo",subrewardpoolinfo); + subrewardpoolinfo.init(getRootId(),getMongoKey()+ ".subRewardPoolInfo"); + this.subRewardPoolInfo = subrewardpoolinfo; + } + @Override public String toString() { @@ -74,6 +86,7 @@ public final class ActivityManager extends MongoBase { _sb_.append(this.senvenStartTime).append(","); _sb_.append(this.luckWheel).append(","); _sb_.append(this.luckWheelAdvance).append(","); + _sb_.append(this.subRewardPoolInfo).append(","); _sb_.append(")"); return _sb_.toString(); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java new file mode 100644 index 000000000..a057a4a4e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java @@ -0,0 +1,55 @@ +package com.ljsd.jieling.jbean; + +import com.ljsd.common.mogodb.MongoBase; +import java.util.Map; +import java.util.HashMap; +import java.util.Set; +import java.util.HashSet; +import java.util.List; +import java.util.LinkedList; +import org.springframework.data.annotation.Transient; +import com.ljsd.common.mogodb.dblog.*; + +public final class SubRewardPoolInfo extends MongoBase { + private LinkedList subRewardPool = new LinkedList(); // 挖矿奖池 + @Transient + private LogLinkedList subRewardPoolLog ; + private int lay; // 挖矿奖池层 + + public SubRewardPoolInfo() { + } + + + public SubRewardPoolInfo(SubRewardPoolInfo _o_ ) { + this.subRewardPool = new LinkedList(); + _o_.subRewardPool.forEach(_v_ -> this.subRewardPool.add(_v_)); + this.lay = _o_.lay; + } + + public List getSubRewardPool() { // 挖矿奖池 + if( null == subRewardPoolLog && subRewardPool != null) + subRewardPoolLog = new LogLinkedList( this,"subRewardPool",subRewardPool); + return this.subRewardPoolLog; + } + + public int getLay() { // 挖矿奖池层 + return this.lay; + } + + public void setLay(int lay) { // 挖矿奖池层 + updateString("lay",lay); + this.lay = lay; + } + + + @Override + public String toString() { + StringBuilder _sb_ = new StringBuilder(super.toString()); + _sb_.append("=("); + _sb_.append(this.subRewardPool).append(","); + _sb_.append(this.lay).append(","); + _sb_.append(")"); + return _sb_.toString(); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java new file mode 100644 index 000000000..4f2a6b9e7 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.kefu; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.network.server.SessionManager; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; + +public class Cmd_kickuser extends GmRoleAbstract { + + @Override + public boolean exec(String[] args) throws Exception { + + SessionManager instance = SessionManager.getInstance(); + ISession session= OnlineUserManager.getSessionByUid(getUser().getId()); + if (session != null) { + MessageUtil.sendErrorCode(session, ErrorCode.kickUserCode, "您已被踢下线!"); + Thread.sleep(100); + instance.kickOldUser(getUser().getId(), "", ErrorCode.kickUserCode, "LOSE HEART PACKET!!!!", 0); + } + return true; + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java new file mode 100644 index 000000000..5bbc1a697 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java @@ -0,0 +1,150 @@ +package com.ljsd.jieling.kefu; + + +import com.ljsd.fight.CheckFight; +import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; +import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.logic.championship.ChampionshipLogic; +import com.ljsd.jieling.logic.dao.ArenaRecord; +import com.ljsd.jieling.logic.dao.FamilyFightInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.fight.*; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.util.FightDataUtil; +import config.SArenaRobotConfig; +import manager.STableManager; +import org.luaj.vm2.LuaValue; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * Description: 查看巅峰赛 战斗 + * Author: zsx + * CreateDate: 2019/9/26 11:48 + */ +public class Cmd_review_gm extends GmAbstract { + @Override + public boolean exec(String[] args) throws Exception { + +// for (int i = 0; i <150 ; i++) { +// String key = RedisKey.getKey(RedisKey.FORCE_RANK, "", false); +// RedisUtil.getInstence().zsetAddOne(key, String.valueOf(10000+i), 10000+i); +// } + if (args.length != 1) { + return false; + } + String fightID = args[0]; + ArenaRecord arenaRecord = RedisUtil.getInstence().getMapEntry(RedisKey.CHAMPION_ARENA_RECORD,"", fightID, ArenaRecord.class); + + if(arenaRecord == null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("arena_rrecord null")); + } + byte[] fightData = arenaRecord.getFightData(); + CommonProto.FightData fightDataProto = CommonProto.FightData.parseFrom(fightData); + LuaValue getFightData; + int snapTeamId = GlobalsDef.CHAMPION_ATTACK_TEAM; + RedisUtil.getInstence().del(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_FIGHT, "")); + int warTime = STableManager.getFigureConfig(CommonStaticConfig.class).getsChampionshipSetting().getWarTime(); + Map memberInfoMap = RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_JOIN, "", Integer.class, ChampionshipLogic.MemberInfo.class); + int attackId = arenaRecord.getAttackId(); + int defUid = arenaRecord.getDefUid(); + ChampionshipLogic.snapOneFightInfo(attackId, memberInfoMap); + ChampionshipLogic.snapOneFightInfo(defUid, memberInfoMap); + + long id = FightDispatcher.getFIghtId(); + EndFightProcessor endFightProcessor = new AreFightPro(); + ((AreFightPro) endFightProcessor).setArenaRecord(arenaRecord); + FightDispatcher.getMap().put(id, endFightProcessor); + Map gameFightTypeMap = new HashMap<>(); + + gameFightTypeMap.put(0, GameFightType.TOPArenaPersonFight); + gameFightTypeMap.put(1, GameFightType.TOPArenaRobotFight); + gameFightTypeMap.put(2, GameFightType.TOPArena2RobotFight); + PVPFightEvent pvpFightEvent = new PVPFightEvent(attackId, snapTeamId, warTime, "", gameFightTypeMap.get(arenaRecord.getType()), defUid, snapTeamId); + + ChampionshipLogic.MemberInfo attackMemberInfo = memberInfoMap.get(attackId); + ChampionshipLogic.MemberInfo defMemberInfo = memberInfoMap.get(defUid); + int minForce = 0; + int defForce = 0; + + if (defMemberInfo.getType() == 0) { + FamilyFightInfo fightInfo = defMemberInfo.getFightInfo(); + pvpFightEvent.setDefFightSnapData(new DefFightSnapData(fightInfo.getHeroAttribute(), fightInfo.getHeroSkills(), fightInfo.getPokenmonSkills(), fightInfo.getPassiveSkills())); + defForce = fightInfo.getForce(); + } else { + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(defUid); + if (sArenaRobotConfig != null) { + defForce = sArenaRobotConfig.getTotalForce(); + } + } + if (attackMemberInfo.getType() == 0) { + FamilyFightInfo fightInfo = attackMemberInfo.getFightInfo(); + pvpFightEvent.setAttackFightSnapData(new DefFightSnapData(fightInfo.getHeroAttribute(), fightInfo.getHeroSkills(), fightInfo.getPokenmonSkills(), fightInfo.getPassiveSkills())); + minForce = fightInfo.getForce(); + } else { + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(attackId); + if (sArenaRobotConfig != null) { + minForce = sArenaRobotConfig.getTotalForce(); + } + } + if (minForce > defForce) { + if (arenaRecord.getTurn() == 2) { + pvpFightEvent.setRever(true); + } + } else { + if (arenaRecord.getTurn() == 1 || arenaRecord.getTurn() == 3) { + pvpFightEvent.setRever(true); + } + } + + CommonProto.FightTeamInfo fightTeamInfo = null; + CommonProto.FightTeamInfo deffightTeamInfo = null; + if(pvpFightEvent.getAttackFightSnapData()!=null){ + fightTeamInfo = FightUtil.makeFightWithSnapData(pvpFightEvent.getAttackFightSnapData()); + } + if(pvpFightEvent.getDefFightSnapData()!=null){ + deffightTeamInfo = FightUtil.makeFightWithSnapData(pvpFightEvent.getDefFightSnapData()); + } else{ + if(pvpFightEvent.getFightType() == GameFightType.ArenaPersonFight ||pvpFightEvent.getFightType() == GameFightType.CarPersonChallenge ){ + User defInMem = UserManager.getUserInMem(pvpFightEvent.getDefUid()); + deffightTeamInfo = FightUtil.makePersonFightData(defInMem, pvpFightEvent.getDefTeamId(),null,null); + }else{ + deffightTeamInfo = FightUtil. makeRobotFightData(pvpFightEvent.getDefUid()); + } + + } + if(fightTeamInfo==null){ + if( pvpFightEvent.getFightType()!= GameFightType.TOPArena2RobotFight){ + if( SArenaRobotConfig.getsArenaRobotConfigById(pvpFightEvent.getAttackUid()) !=null){ + fightTeamInfo = FightUtil. makeRobotFightData(pvpFightEvent.getAttackUid()); + }else{ + User userInMem = UserManager.getUserInMem(pvpFightEvent.getAttackUid()); + fightTeamInfo = FightUtil.makePersonFightData(userInMem, pvpFightEvent.getTeamId(),pvpFightEvent.getAttackBloodMap(),null); + } + }else{ + fightTeamInfo = FightUtil.makeRobotFightData(pvpFightEvent.getAttackUid()); + } + } + + if (pvpFightEvent.isRever()) { + deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build(); + getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo, true);//对方先手 + } else { + getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo); + } + LuaValue getOptionData = FightDataUtil.getOptionData(pvpFightEvent.getAttackUid() + ""); + int[] fightResult = CheckFight.getInstance().checkFight(fightDataProto.getFightSeed(), pvpFightEvent.getMostTime(), getFightData, getOptionData, pvpFightEvent.getFightType().getFightType()); + String string = Arrays.toString(fightResult); + LOGGER.error("__________________________"+fightResult[0]+":::"+string); + System.out.println("string = " + string); + + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index b3ea961b3..f75b915aa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -78,4 +78,6 @@ public interface ActivityType { int ITEMS_STORE= 6000;//百宝商会 int TRIAL_EXPERT = 70;//幻境达人 int SHEJI_ACTIVITY = 60;//社稷大典 + int SUB_ACTIVITY = 8000;//易经宝库 + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index 0cdc70d58..4a8c8d6d2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -59,6 +59,7 @@ public enum ActivityTypeEnum { ITEMS_STORE(ActivityType.ITEMS_STORE, DefaultEmptyActivity::new), TRIAL_EXPERT(ActivityType.TRIAL_EXPERT,TrialExpectRankActivity::new), SHEJI_ACTIVITY(ActivityType.SHEJI_ACTIVITY,SheJiActivity::new), + SUB_ACTIVITY(ActivityType.SUB_ACTIVITY, SubActivity::new), ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java new file mode 100644 index 000000000..28bc7fde8 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java @@ -0,0 +1,204 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.*; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.*; +import manager.STableManager; +import util.MathUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: 易经宝库 + * Author: zsx + * CreateDate: 2020/11/6 22:26 + */ +public class SubActivity extends AbstractActivity { + + public static final int LAY_INDEX = 100; + public static final int POOL_INDEX = 1000; + public SubActivity(int id) { + super(id); + } + + + @Override + public void initActivity(User user)throws Exception{ + //重置奖励 + randomReward(user,true); + } + + @Override + public void onResume(User user) throws Exception { + // super.onResume(user); + //重置奖励 + randomReward(user,false); + } + + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + User user = UserManager.getUser(session.getUid()); + +// //checkAndUpdate state + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); + } + //check had select + if(activityMission.getV()==0){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + + + SBlessingConfigNew sBlessingConfigNew =SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); + //check cost + int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.EXPEDITION_REBORN); + if(integerValue==0){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int[][] cost = new int[1][2]; + cost[0]=sBlessingConfigNew.getCost(); + boolean b = ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME, 1); + if(!b){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + int size = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size(); + if(size==0){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + + //get reward + long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count(); + Integer rewardId = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get((int) count); + SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(rewardId); + + + int[] reward = sBlessingRewardPoolNew.getReward(); + int[][] rewards = new int[1][]; + rewards[0]=reward; + CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards, BIReason.TAKE_ACTIVITY_REWARD); + //up miss + activityProgressInfo.setProgrss(rewardId); + activityProgressInfo.setState( ActivityType.HAD_TAKED); + int curLay = user.getActivityManager().getSubRewardPoolInfo().getLay(); + if(curLay!=sBlessingConfigNew.getFloorCount()&&count==(size-1)){ + ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY); + sendActivityProgress(session, activityManager.getActivityMissionMap().get(id), null); + }else { + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + } + reportTakeActivityReward(user,rewards,missionId); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + + return true; + } + + + @Override + public void onEvent(IEvent event) throws Exception { + super.onEvent(event); + } + + /** + * 重置奖励 + */ + private void randomReward(User user,boolean start) throws Exception{ + + //init lay + SubRewardPoolInfo subRewardPoolInfo = user.getActivityManager().getSubRewardPoolInfo(); + if(subRewardPoolInfo==null){ + subRewardPoolInfo = new SubRewardPoolInfo(); + user.getActivityManager().setSubRewardPoolInfo(subRewardPoolInfo); + } + int lay = user.getActivityManager().getSubRewardPoolInfo().getLay(); + int curLay=lay+1; + user.getActivityManager().getSubRewardPoolInfo().setLay(curLay); + HashMap> integerHashSetHashMap = SBlessingRewardPoolNew.getsBlessingRewardPoolNewHashMap(); + //init Activity + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + activityProgressInfo.setProgrss(curLay); + activityProgressInfo.setState(0); + activityMission.getActivityMissionMap().put(LAY_INDEX, activityProgressInfo); + activityMission.setOpenType(1); + activityMission.setActivityState(ActivityType.OPEN_STATE); + activityMission.setV(0); + + + //init reward + + SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); + if(null== sBlessingConfigNew){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int[] basicPoolId = sBlessingConfigNew.getBasicPoolId(); + if(basicPoolId.length sBlessingRewardPoolNews = integerHashSetHashMap.get(poolID); + if(null == sBlessingRewardPoolNews){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + List ints = new LinkedList<>(); + for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews) { + for (int i = 0; i list2 = Arrays.stream(fixResult).boxed().collect(Collectors.toList()); + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().clear(); + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().addAll(list2); + + for (int i = 0; i <=list2.size() ; i++) { + ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo(); + activityProgressInfo1.setProgrss(0); + activityProgressInfo1.setState(0); + activityMission.getActivityMissionMap().put(i+1, activityProgressInfo1); + } + + //init finalRewards + if(start){ + int finalPoolId = sBlessingConfigNew.getFinalPoolId(); + HashSet sBlessingRewardPoolNews1 = integerHashSetHashMap.get(finalPoolId); + for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews1) { + ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo(); + activityProgressInfo1.setProgrss(0); + activityProgressInfo1.setState(0); + activityMission.getActivityMissionMap().put(POOL_INDEX+sBlessingRewardPoolNew.getId(), activityProgressInfo1); + } + + } + + + } +} 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); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 517a65dc2..d1b81650d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -803,7 +803,7 @@ public class BuyGoodsLogic { if(sRechargeCommodityConfig.getDailyUpdate()>=1){ if(!refreshBagMap.containsKey(sRechargeCommodityConfig.getId())){ Gson gson = new Gson(); - LOGGER.error(sRechargeCommodityConfig.getId()+"Exception= " + gson.toJson(refreshBagMap.keySet())); + // LOGGER.error(sRechargeCommodityConfig.getId()+"Exception= " + gson.toJson(refreshBagMap.keySet())); return new RechargeResult(); } endTime = refreshBagMap.get(sRechargeCommodityConfig.getId()); @@ -966,6 +966,15 @@ public class BuyGoodsLogic { } } + if (sRechargeCommodityConfig.getTime() == 6) { + if (rechargeInfo.getDyGoodsCanBuyTimes().containsKey(sRechargeCommodityConfig.getId())&&rechargeInfo.getRefreshBagMap().containsKey(sRechargeCommodityConfig.getId())) { + long endTime = rechargeInfo.getRefreshBagMap().get(sRechargeCommodityConfig.getId()); + if (now > endTime || rechargeInfo.getDyGoodsCanBuyTimes().get(sRechargeCommodityConfig.getId()) <= 0) { + continue; + } + } + } + } long startTime=0; diff --git a/tablemanager/src/main/java/config/SBlessingConfigNew.java b/tablemanager/src/main/java/config/SBlessingConfigNew.java new file mode 100644 index 000000000..b619155aa --- /dev/null +++ b/tablemanager/src/main/java/config/SBlessingConfigNew.java @@ -0,0 +1,64 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name = "BlessingConfigNew") +public class SBlessingConfigNew implements BaseConfig { + + private int id; + + private int activityId; + + private int[] cost; + + private int floorCount; + + private int[] basicPoolId; + + private int finalPoolId; + + private static HashMap sBlessingConfigNewHashMap = new HashMap<>(); + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SBlessingConfigNew.class); + config.forEach((integer, sBlessingConfigNew) -> sBlessingConfigNewHashMap.put(sBlessingConfigNew.getActivityId(),sBlessingConfigNew)); + + } + + + public static HashMap getsBlessingConfigNewHashMap() { + return sBlessingConfigNewHashMap; + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int[] getCost() { + return cost; + } + + public int getFloorCount() { + return floorCount; + } + + public int[] getBasicPoolId() { + return basicPoolId; + } + + public int getFinalPoolId() { + return finalPoolId; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SBlessingRewardPoolNew.java b/tablemanager/src/main/java/config/SBlessingRewardPoolNew.java new file mode 100644 index 000000000..28903ebf7 --- /dev/null +++ b/tablemanager/src/main/java/config/SBlessingRewardPoolNew.java @@ -0,0 +1,79 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; + +@Table(name = "BlessingRewardPoolNew") +public class SBlessingRewardPoolNew implements BaseConfig { + + private int id; + + private int poolId; + + private int[] reward; + + private int initializeNum; + + private int extractWeight; + + private int floorLimit; + + private int levelLimit; + + private static HashMap> sBlessingRewardPoolNewHashMap = new HashMap<>(); + + @Override + public void init() throws Exception { + + Map configs = STableManager.getConfig(SBlessingRewardPoolNew.class); + for (SBlessingRewardPoolNew sBlessingRewardPoolNew : configs.values()) { + HashSet orDefault = sBlessingRewardPoolNewHashMap.getOrDefault(sBlessingRewardPoolNew.getPoolId(), new HashSet<>()); + orDefault.add(sBlessingRewardPoolNew); + sBlessingRewardPoolNewHashMap.put(sBlessingRewardPoolNew.getPoolId(),orDefault); + } + + } + + + public static HashMap> getsBlessingRewardPoolNewHashMap() { + return sBlessingRewardPoolNewHashMap; + } + + public static void setsBlessingRewardPoolNewHashMap(HashMap> sBlessingRewardPoolNewHashMap) { + SBlessingRewardPoolNew.sBlessingRewardPoolNewHashMap = sBlessingRewardPoolNewHashMap; + } + + public int getId() { + return id; + } + + public int getPoolId() { + return poolId; + } + + public int[] getReward() { + return reward; + } + + public int getInitializeNum() { + return initializeNum; + } + + public int getExtractWeight() { + return extractWeight; + } + + public int getFloorLimit() { + return floorLimit; + } + + public int getLevelLimit() { + return levelLimit; + } + + +} \ No newline at end of file