diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SSevenDaysScore.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SSevenDaysScore.java new file mode 100644 index 000000000..7cdc10c67 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSevenDaysScore.java @@ -0,0 +1,56 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name ="SevenDaysScore") +public class SSevenDaysScore implements BaseConfig { + + private int id; + + private int activityId; + + private int taskValue; + + private int[][] reward; + + public static Map> SSevenDaysScoreByActivityIdAndScoreMap ; + + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SSevenDaysScore.class); + Map> SSevenDaysScoreByActivityIdAndScoreMapTmp= new HashMap<>(); + for(SSevenDaysScore sSevenDaysScore:config.values()){ + int activityId = sSevenDaysScore.getActivityId(); + int taskValue = sSevenDaysScore.getTaskValue(); + if(!SSevenDaysScoreByActivityIdAndScoreMapTmp.containsKey(activityId)){ + SSevenDaysScoreByActivityIdAndScoreMapTmp.put(activityId,new HashMap<>()); + } + SSevenDaysScoreByActivityIdAndScoreMapTmp.get(activityId).put(taskValue,sSevenDaysScore); + } + SSevenDaysScoreByActivityIdAndScoreMap = SSevenDaysScoreByActivityIdAndScoreMapTmp; + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int getTaskValue() { + return taskValue; + } + + public int[][] getReward() { + return reward; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java index 1647f8a8b..1f414ac8b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.config; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.Table; +import com.ljsd.jieling.logic.mission.MissionType; import java.util.ArrayList; import java.util.HashMap; @@ -30,6 +31,7 @@ public class STreasureTaskConfig implements BaseConfig { public static Map> sTreasureTaskConfigListByActivityMap; public static Map> sTreasureTaskConfigListByTypeMap; public static Map sTreasureTaskConfigMap; + public static Map sTreasureSevenTaskConfigByActivityMap; @Override @@ -37,6 +39,7 @@ public class STreasureTaskConfig implements BaseConfig { Map config = STableManager.getConfig(STreasureTaskConfig.class); Map> treasureTaskConfigByActivityMap = new HashMap<>(); Map> sTreasureTaskConfigListByTypeMapTmp = new HashMap<>(); + Map sTreasureSevenTaskConfigByActivityMapTmp = new HashMap<>(); for(STreasureTaskConfig sTreasureTaskConfig : config.values()){ int activityId = sTreasureTaskConfig.getActivityId(); if(!treasureTaskConfigByActivityMap.containsKey(activityId)){ @@ -47,10 +50,14 @@ public class STreasureTaskConfig implements BaseConfig { } treasureTaskConfigByActivityMap.get(activityId).add(sTreasureTaskConfig); sTreasureTaskConfigListByTypeMapTmp.get(sTreasureTaskConfig.getTaskType()).add(sTreasureTaskConfig); + if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ + + } } sTreasureTaskConfigListByActivityMap = treasureTaskConfigByActivityMap; sTreasureTaskConfigListByTypeMap = sTreasureTaskConfigListByTypeMapTmp; sTreasureTaskConfigMap = config; + sTreasureSevenTaskConfigByActivityMap=sTreasureSevenTaskConfigByActivityMapTmp; } 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 70b048e33..80df0bf52 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -64,6 +64,8 @@ public interface BIReason { int MONTH_CARD_REWARD = 38; int BLESS_REWARD = 39; + int SEVEN_SCORE_REWARD = 40; + //道具消耗原因 1000开头 int ADVENTURE_UPLEVEL_CONSUME = 1000; //秘境升级 int SECRETBOX_CONSUME = 1001; //秘盒抽卡 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 6f8808f9d..1edf060fd 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 @@ -460,7 +460,7 @@ public class MapLogic { public void updateMap(ISession session, int curXY, int triggerXY, List cells, MessageTypeProto.MessageType messageType) throws Exception { -// LOGGER.info("updateMap() curXY=>{},triggerXY=>{}", curXY, triggerXY); + LOGGER.info("updateMap() curXY=>{},triggerXY=>{}", curXY, triggerXY); if (updateMapByOnlyConsumeActionPower(session, curXY, triggerXY, cells, messageType)) { return; } @@ -556,6 +556,11 @@ public class MapLogic { // LOGGER.info("updateMap() uid=>{} mapId =>{} eventId=>{}", uid, mapManager.getCurMapId(), cell.getEventId()); mapManager.updateFoodBufferByStep(cells.size()); + int lastXY = cells.get(0); + if(cells.size() >2){ + lastXY = cells.get(cells.size()-2); + } + mapManager.setLastXY(lastXY); MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse.build(), true); } @@ -1168,7 +1173,9 @@ public class MapLogic { .setEnventDrop(dropBuilder) .addAllRemainHpList(remainHp) .setEssenceValue(mapManager.getEssenceValue()) + .setLastXY(mapManager.getLastXY()) .build(); + mapManager.setCurXY(mapManager.getLastXY()); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse, true); return; } @@ -1393,6 +1400,8 @@ public class MapLogic { fightEndResponse.setResult(resultCode); fightEndResponse.setEnventDrop(dropBuilder); fightEndResponse.addAllRemainHpList(remainHp); + fightEndResponse.setLastXY(mapManager.getLastXY()); + mapManager.setCurXY(mapManager.getLastXY()); if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==2){ fightEndResponse.setLastTowerTime((int)(mapManager.getCurrTowerTime()/1000)); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index 299e46c64..83f2beafd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -114,6 +114,8 @@ public class MapManager extends MongoBase { //无尽副本信息 private EndlessMapInfo endlessMapInfo; + private int lastXY; // 上一步坐标点 + public MapManager() { this.setRootCollection(User._COLLECTION_NAME); } @@ -734,7 +736,15 @@ public class MapManager extends MongoBase { public void updateEndlessConsumeExecution(int count){ endlessMapInfo.setConsumeExecution(count); updateString("endlessMapInfo.consumeExecution",endlessMapInfo.getConsumeExecution()); + } + public int getLastXY() { + return lastXY; + } + + public void setLastXY(int lastXY) { + updateString("lastXY",lastXY); + this.lastXY = lastXY; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/player/TakeSevenScoreHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/player/TakeSevenScoreHandler.java new file mode 100644 index 000000000..eb4f29ca2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/player/TakeSevenScoreHandler.java @@ -0,0 +1,21 @@ +package com.ljsd.jieling.handler.player; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.player.PlayerLogic; +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; + +@Component +public class TakeSevenScoreHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.TAKE_SEVEN_HAPPY_REWARD_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + PlayerLogic.getInstance().takeSevenScoreReward(iSession); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java index 9a795b6f1..5cf53aa07 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/DefaultEmptyActivity.java @@ -18,8 +18,11 @@ public class DefaultEmptyActivity extends AbstractActivity{ ActivityMission mission = new ActivityMission(); mission.initOtherMission(new ArrayList<>(0)); user.getActivityManager().addActivity(id, mission); - if(SGlobalActivity.getsGlobalActivityMap().get(id).getType() == ActivityType.SERVERHAPPY){ + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + if(sGlobalActivity.getType() == ActivityType.SERVERHAPPY){ user.getUserMissionManager().onGameEvent(user, GameEvent.SERVENHAPPY_REFRESH,id); + long endTime = sGlobalActivity.getTimeLong(user.getPlayerInfoManager().getCreateTime(), 2) - 24 * 3600 * 1000; + user.getActivityManager().setSenvenTime(endTime); } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityManager.java index 65ff1384c..25ec1969d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ActivityManager.java @@ -10,6 +10,7 @@ import java.util.concurrent.ConcurrentHashMap; public class ActivityManager extends MongoBase { private Map activityMissionMap = new HashMap<>(); private long trsendTime; // 孙龙结束时间 + private long senvenTime; //七日狂欢结束时间 public boolean initAllActivityMission(int activityId){ @@ -39,6 +40,16 @@ public class ActivityManager extends MongoBase { removeString(getMongoKey() + ".activityMissionMap." + activityId); } + + public long getSenvenTime() { + return senvenTime; + } + + public void setSenvenTime(long senvenTime) { + updateString("senvenTime" ,trsendTime); + this.senvenTime = senvenTime; + } + public long getTrsendTime() { return trsendTime; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 2bf4b354a..1b4364a7b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -182,7 +182,7 @@ public class UserMissionManager extends MongoBase { if(!sevenHappyMissionType.getDoingMissionIds().isEmpty() ){ List sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByTypeMap.get(missionType.getMissionTypeValue()); - if(sTreasureTaskConfigs!=null){ + if(sTreasureTaskConfigs!=null && user.getActivityManager().getSenvenTime()>System.currentTimeMillis()){ CumulationData.Result result = sevenHappyCumulationData.updateData(missionType, parm); if(result!=null){ sevenHappyMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.SEVENMISSION),sevenHappyCumulationData); @@ -205,6 +205,11 @@ public class UserMissionManager extends MongoBase { this.vipMissionIdsType = vipMissionIdsType; } + public void setSevenHappyMissionType(TreasureMissionType sevenHappyMissionType) { + updateString("sevenHappyMissionType",sevenHappyMissionType); + this.sevenHappyMissionType = sevenHappyMissionType; + } + public VipMissionIdsType getVipMissionIdsType() { return vipMissionIdsType; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 45d28193b..dabe1f791 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -119,6 +119,13 @@ public class MissionLoigc { }else{ takeTimes = takeTimesMap.get(missionId); } + if(state!=2 && sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ + if(System.currentTimeMillis()>user.getActivityManager().getSenvenTime()){ + state=0; + }else { + state = 1; + } + } missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(treasuremissionType).setProgress(sendProgress).setTakeTimes(takeTimes).build()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 89562d8c3..0225e30c2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -15,6 +15,7 @@ import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.MissionLoigc; +import com.ljsd.jieling.logic.mission.main.TreasureMissionType; import com.ljsd.jieling.logic.store.GiftGoodsType; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -277,6 +278,7 @@ public class PlayerLogic { ItemManager itemManager = user.getItemManager(); if(itemManager.getItem(frameId)==null||itemManager.getItem(frameId).getItemNum()<1){ MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"无此头像框"); + return; } user.getPlayerInfoManager().setHeadFrame(frameId); MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); @@ -376,4 +378,36 @@ public class PlayerLogic { MessageUtil.sendMessage(session,1,messageType.getNumber(),playerTeamInfo.build(),true); } + + public void takeSevenScoreReward(ISession iSession) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + int msgId = MessageTypeProto.MessageType.TAKE_SEVEN_HAPPY_REWARD_RESPONSE_VALUE; + long senvenTime = user.getActivityManager().getSenvenTime(); + if(senvenTime == 0 || senvenTime> System.currentTimeMillis()){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"时间未到"); + return; + } + Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); + int treasureActivityId = 0; + for(Integer activityId : activityMissionMap.keySet()){ + if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.SERVERHAPPY){ + treasureActivityId = activityId; + } + } + if(treasureActivityId == 0){ + MessageUtil.sendErrorResponse(iSession,0,msgId,"活动已过期"); + return; + } + STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureSevenTaskConfigByActivityMap.get(treasureActivityId); + int senvenScores = user.getUserMissionManager().getSevenHappyCumulationData().senvenScores; + TreasureMissionType sevenHappyMissionType = user.getUserMissionManager().getSevenHappyMissionType(); + sevenHappyMissionType.getDoingMissionIds().remove(sTreasureTaskConfig.getId()); + sevenHappyMissionType.getFinishMissionIds().remove(sTreasureTaskConfig.getId()); + sevenHappyMissionType.getRewardedMissionIds().set(sTreasureTaskConfig.getId()); + user.getUserMissionManager().setSevenHappyMissionType(sevenHappyMissionType); + SSevenDaysScore sSevenDaysScore = SSevenDaysScore.SSevenDaysScoreByActivityIdAndScoreMap.get(treasureActivityId).get(senvenScores); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sSevenDaysScore.getReward(), BIReason.SEVEN_SCORE_REWARD); + PlayerInfoProto.TakeSenvenScoreRewardResponse build = PlayerInfoProto.TakeSenvenScoreRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(iSession,1,msgId,build,true); + } }