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 f1a72cf78..3770447d7 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 @@ -81,6 +81,8 @@ public interface ActivityType { int GOOD_LUCK= 61;//扭转乾坤 int COW_FLY_SKY = 62;//牛气冲天 int LUCKY_GET = 63;//福星高照 + int FIFTEEN_LOGIN = 64;//十五日签到 + int SUB_ACTIVITY = 8000;//易经宝库 int SKIN_RECHARGE_ACTIVITY = 71; int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽限时抽卡 @@ -88,4 +90,5 @@ public interface ActivityType { int DEMON_TREASURE = 36;//降妖夺宝 int NEW_GENERAL_ATTACK = 200;//新将来袭 + } 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 3b93f6841..1e8165a13 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 @@ -67,6 +67,7 @@ public enum ActivityTypeEnum { NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new), GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new), COW_FLY_SKY(ActivityType.COW_FLY_SKY,CowFlySkyActivity::new), + FIFTEEN_LOGIN(ActivityType.FIFTEEN_LOGIN,FifteenActivity::new), LUCKY_GET(ActivityType.LUCKY_GET,LuckyGetActivity::new), ; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FifteenActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FifteenActivity.java new file mode 100644 index 000000000..41c54c2ab --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/FifteenActivity.java @@ -0,0 +1,96 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +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.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.ToolsUtil; +import config.SActivityRewardConfig; +import config.SGlobalActivity; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; +import util.TimeUtils; + +import java.util.*; + +import static config.SGlobalActivity.getsGlobalActivityMapByType; + +public class FifteenActivity extends AbstractActivity { + + public FifteenActivity(int id) { + super(id); + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + User user = UserManager.getUser(session.getUid()); + if(TimeUtils.getOverTimeCount(user.getPlayerInfoManager().getCreateTime(), + System.currentTimeMillis(),0) typeList = SGlobalActivity.getsGlobalActivityMapByType(ActivityType.FIFTEEN_LOGIN); + if(typeList == null){ + return; + } + for(SGlobalActivity globalActivity : typeList){ + ActivityLogic.getInstance().initAllActivityMission(user.getActivityManager().getActivityMissionMap(),globalActivity.getId()); + if(user.getActivityManager().getActivityMissionMap().get(globalActivity.getId()) == null){ + continue; + } + long startTime = ToolsUtil.getTimeLong + (globalActivity.getStartTimeLong(),globalActivity.getEndTimeLong(),globalActivity.getTime(), + user.getPlayerInfoManager().getCreateTime(), 1); + int st = (int)(startTime/1000); + for(Map.Entry entry : user.getActivityManager().getActivityMissionMap(). + get(globalActivity.getId()).getActivityMissionMap().entrySet()){ + SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(entry.getKey()); + entry.getValue().setProgrss((int)((TimeUtils.DAY * (config.getValues()[0][0] - 1))/1000) + st); + } + } + } + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + if(missionId!=-1){ + return super.takeReward(session, missionId); + } + User user = UserManager.getUser(session.getUid()); + List reward = new ArrayList<>(); + getAllMissRewards(user,session,reward); + Map itemMap = new HashMap<>(); + reward.forEach(n-> Arrays.stream(n).forEach(m->itemMap.put(m[0],itemMap.getOrDefault(m[0], 0)+m[1]))); + + int[][] rewardArray = ItemUtil.mapToArray(itemMap); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardArray, BIReason.TAKE_ACTIVITY_REWARD); + + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + + reportTakeActivityReward(user,rewardArray,missionId); + + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + boolean isAll = true; + for(Map.Entry entry:activityMission.getActivityMissionMap().entrySet()){ + if(entry.getValue().getState()==0){ + isAll=false; + break; + } + } + if(isAll){ + activityMission.setV(2); + } + sendActivityProgress(session,activityMission , null); + return true; + + } +} \ No newline at end of file