【优化】限时招募,乾坤宝盒,灵兽宝阁整体包装
parent
188bf0bf25
commit
9c45649824
|
@ -7,11 +7,12 @@ import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
import com.ljsd.jieling.globals.Global;
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.handler.map.MapManager;
|
import com.ljsd.jieling.handler.map.MapManager;
|
||||||
|
import com.ljsd.jieling.jbean.ActivityMission;
|
||||||
import com.ljsd.jieling.ktbeans.ReportEventEnum;
|
import com.ljsd.jieling.ktbeans.ReportEventEnum;
|
||||||
import com.ljsd.jieling.ktbeans.ReportUtil;
|
import com.ljsd.jieling.ktbeans.ReportUtil;
|
||||||
import com.ljsd.jieling.logic.GlobalDataManaager;
|
import com.ljsd.jieling.logic.GlobalDataManaager;
|
||||||
import com.ljsd.jieling.logic.GlobleSystemLogic;
|
import com.ljsd.jieling.logic.GlobleSystemLogic;
|
||||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
import com.ljsd.jieling.logic.activity.*;
|
||||||
import com.ljsd.jieling.logic.activity.event.*;
|
import com.ljsd.jieling.logic.activity.event.*;
|
||||||
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
|
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
|
||||||
import com.ljsd.jieling.logic.dao.*;
|
import com.ljsd.jieling.logic.dao.*;
|
||||||
|
@ -253,6 +254,8 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
||||||
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.fund_old_user));
|
Poster.getPoster().dispatchEvent(new SuperBoxEvent(user.getId(),SuperBoxEvent.fund_old_user));
|
||||||
// 登峰造极孙悟空
|
// 登峰造极孙悟空
|
||||||
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0));
|
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0));
|
||||||
|
// 常驻活动重置
|
||||||
|
finalActivityReset(user);
|
||||||
// 无尽秘宝处理
|
// 无尽秘宝处理
|
||||||
endLessTreasureHandler(user);
|
endLessTreasureHandler(user);
|
||||||
expeditionTreasureHandler(user);
|
expeditionTreasureHandler(user);
|
||||||
|
@ -270,6 +273,26 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 常驻活动重置
|
||||||
|
* @param user
|
||||||
|
*/
|
||||||
|
private void finalActivityReset(User user){
|
||||||
|
Map<Integer, ActivityMission> missionMap = user.getActivityManager().getActivityMissionMap();
|
||||||
|
// 限时招募
|
||||||
|
ActivityMission mission = missionMap.get(20012);
|
||||||
|
if (mission != null){
|
||||||
|
ChoiceDrawCardActivity activity = (ChoiceDrawCardActivity)ActivityTypeEnum.getActicityType(20012);
|
||||||
|
activity.checkResetProgress(user,mission);
|
||||||
|
}
|
||||||
|
// 灵兽招募
|
||||||
|
ActivityMission mission2 = missionMap.get(14501);
|
||||||
|
if (mission2 != null){
|
||||||
|
LimitRandomSpecialMonsterActivityNew activity = (LimitRandomSpecialMonsterActivityNew)ActivityTypeEnum.getActicityType(14501);
|
||||||
|
activity.checkResetProgress(user,mission2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 无尽秘宝刷新
|
* 无尽秘宝刷新
|
||||||
* @param user
|
* @param user
|
||||||
|
|
|
@ -420,10 +420,10 @@ public class GlobalDataManaager implements IManager {
|
||||||
// 需要隔天刷新的字段统一在这里处理
|
// 需要隔天刷新的字段统一在这里处理
|
||||||
if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) {
|
if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) {
|
||||||
// 周一零点执行逻辑,跨周执行
|
// 周一零点执行逻辑,跨周执行
|
||||||
if (!TimeUtils.isSameWeek7(user.getPlayerInfoManager().getLoginTime())){
|
// if (!TimeUtils.isSameWeek7(user.getPlayerInfoManager().getLoginTime())){
|
||||||
// 灵兽限时抽卡重置
|
// // 灵兽限时抽卡重置
|
||||||
ActivityLogic.getInstance().zeroResetSpecialMonsterActivity(session);
|
// ActivityLogic.getInstance().zeroResetSpecialMonsterActivity(session);
|
||||||
}
|
// }
|
||||||
//活动刷新
|
//活动刷新
|
||||||
ActivityLogic.getInstance().flushEveryDay(user,fBuilder);
|
ActivityLogic.getInstance().flushEveryDay(user,fBuilder);
|
||||||
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
|
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
|
||||||
|
|
|
@ -144,6 +144,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 领奖默认方法 走统一奖励配置表
|
* 领奖默认方法 走统一奖励配置表
|
||||||
|
* 有独立逻辑的领取重写此方法,不要在这里加if
|
||||||
* 重写此类 记得重写onActivityEndOnMySelf 否者活动结束走默认配置表发邮件奖
|
* 重写此类 记得重写onActivityEndOnMySelf 否者活动结束走默认配置表发邮件奖
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -176,15 +177,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
||||||
|
|
||||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||||
//up miss
|
//up miss
|
||||||
int[][] reward = new int[1][2];
|
int[][] reward = sActivityRewardConfig.getReward();
|
||||||
if(sGlobalActivity.getType() == ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY) {
|
|
||||||
int summonId=activityMission.getActivityMissionMap().get(0).getProgrss();
|
|
||||||
if (summonId>0){
|
|
||||||
SSpiritAnimalSummon summonConfig=STableManager.getConfig(SSpiritAnimalSummon.class).get(summonId);
|
|
||||||
reward[0][0]=summonConfig.getOriginalItem();
|
|
||||||
reward[0][1]=sActivityRewardConfig.getReward()[0][1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
|
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
|
||||||
checkAndSetProgress(activityMission, activityProgressInfo, missionId);
|
checkAndSetProgress(activityMission, activityProgressInfo, missionId);
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ public enum ActivityTypeEnum {
|
||||||
LUCK_WHEEL(ActivityType.LUCK_WHEEL, LuckWheelNormalActivity::new),
|
LUCK_WHEEL(ActivityType.LUCK_WHEEL, LuckWheelNormalActivity::new),
|
||||||
LUCK_WHEEL_ADVANCE(ActivityType.LUCK_WHEEL_ADVANCE, LuckWheelAdvancedActivity::new),
|
LUCK_WHEEL_ADVANCE(ActivityType.LUCK_WHEEL_ADVANCE, LuckWheelAdvancedActivity::new),
|
||||||
NEW_WELFARE(ActivityType.NEW_WELFARE, NewWelfareActivity::new),
|
NEW_WELFARE(ActivityType.NEW_WELFARE, NewWelfareActivity::new),
|
||||||
LIMIT_RANDOM_CARD(ActivityType.LIMIT_RANDOM_CARD,LimitRandomCardActivity::new),
|
// LIMIT_RANDOM_CARD(ActivityType.LIMIT_RANDOM_CARD,LimitRandomCardActivity::new),
|
||||||
LIMIT_UP_CARD(ActivityType.LIMIT_UP_CARD,LimitUpCardActivity::new),
|
LIMIT_UP_CARD(ActivityType.LIMIT_UP_CARD,LimitUpCardActivity::new),
|
||||||
MISSIONSEARCH_EXPERT(ActivityType.MISSIONSEARCH_EXPERT,MissSearchExpectRankActivity::new),
|
MISSIONSEARCH_EXPERT(ActivityType.MISSIONSEARCH_EXPERT,MissSearchExpectRankActivity::new),
|
||||||
LUCKWHEEL_EXPERT(ActivityType.LUCKWHEEL_EXPERT,LuckWheelExpectRankActivity::new),
|
LUCKWHEEL_EXPERT(ActivityType.LUCKWHEEL_EXPERT,LuckWheelExpectRankActivity::new),
|
||||||
|
@ -62,7 +62,7 @@ public enum ActivityTypeEnum {
|
||||||
SHEJI_ACTIVITY(ActivityType.SHEJI_ACTIVITY,SheJiActivity::new),
|
SHEJI_ACTIVITY(ActivityType.SHEJI_ACTIVITY,SheJiActivity::new),
|
||||||
SUB_ACTIVITY(ActivityType.SUB_ACTIVITY, SubActivity::new),
|
SUB_ACTIVITY(ActivityType.SUB_ACTIVITY, SubActivity::new),
|
||||||
SKIN_RECHARGE_ACTIVITY(ActivityType.SKIN_RECHARGE_ACTIVITY, DefaultEmptyActivity::new),
|
SKIN_RECHARGE_ACTIVITY(ActivityType.SKIN_RECHARGE_ACTIVITY, DefaultEmptyActivity::new),
|
||||||
SPECIAL_MONSTER_RANDOM_ACTIVITY(ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY,LimitRandomSpecialMonsterActivity::new),
|
SPECIAL_MONSTER_RANDOM_ACTIVITY(ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY,LimitRandomSpecialMonsterActivityNew::new),
|
||||||
SPECIAL_MONSTER_GIFT_ACTIVITY(ActivityType.SPECIAL_MONSTER_GIFT_ACTIVITY,DefaultEmptyActivity::new),
|
SPECIAL_MONSTER_GIFT_ACTIVITY(ActivityType.SPECIAL_MONSTER_GIFT_ACTIVITY,DefaultEmptyActivity::new),
|
||||||
DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new),
|
DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new),
|
||||||
NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new),
|
NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new),
|
||||||
|
@ -124,7 +124,7 @@ public enum ActivityTypeEnum {
|
||||||
*/
|
*/
|
||||||
public static AbstractActivity getActicityType(int id) {
|
public static AbstractActivity getActicityType(int id) {
|
||||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||||
if (activityEnumMap.containsKey(sGlobalActivity.getType())){
|
if (sGlobalActivity != null && activityEnumMap.containsKey(sGlobalActivity.getType())){
|
||||||
return activityEnumMap.get(sGlobalActivity.getType()).toActivity(id);
|
return activityEnumMap.get(sGlobalActivity.getType()).toActivity(id);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -104,7 +104,7 @@ public class ChoiceDrawCardActivity extends AbstractActivity {
|
||||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||||
// 检查是否需要重启奖励
|
// 检查是否需要重启奖励
|
||||||
checkResetProgress(mission,missionId);
|
checkResetProgress(user,mission);
|
||||||
// 状态推送
|
// 状态推送
|
||||||
sendActivityProgress(session, mission, null);
|
sendActivityProgress(session, mission, null);
|
||||||
// 打点上报
|
// 打点上报
|
||||||
|
@ -113,22 +113,21 @@ public class ChoiceDrawCardActivity extends AbstractActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 充值奖励
|
* 重置奖励
|
||||||
* @param mission
|
* @param mission
|
||||||
* @param missionId
|
* @param missionId
|
||||||
*/
|
*/
|
||||||
private void checkResetProgress(ActivityMission mission,int missionId){
|
public void checkResetProgress(User user,ActivityMission mission){
|
||||||
// 获取全部未领取的mission
|
// 是否已领取全部奖励
|
||||||
List<ActivityProgressInfo> collect = mission.getActivityMissionMap().values().stream().filter(v -> v.getState() == 0).collect(Collectors.toList());
|
if (checkActivityMissionFinishAndTake(user.getId(),id,mission)){
|
||||||
// 为空,表示全部领取,重置奖励
|
|
||||||
if (collect.isEmpty()){
|
|
||||||
// 配置表
|
// 配置表
|
||||||
List<SActivityRewardConfig> configs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
List<SActivityRewardConfig> configs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||||
// 获取最大奖励值
|
// 获取最大奖励值
|
||||||
List<Integer> collect2 = configs.stream().mapToInt(v -> v.getValues()[0][0]).boxed().collect(Collectors.toList());
|
List<Integer> collect2 = configs.stream().mapToInt(v -> v.getValues()[0][0]).boxed().collect(Collectors.toList());
|
||||||
Integer max = Collections.max(collect2);
|
Integer max = Collections.max(collect2);
|
||||||
// 获取盈余的积分
|
// 获取盈余的积分
|
||||||
int progrss = mission.getActivityMissionMap().get(missionId).getProgrss();
|
Integer maxMissionId = Collections.max(mission.getActivityMissionMap().keySet());
|
||||||
|
int progrss = mission.getActivityMissionMap().get(maxMissionId).getProgrss();
|
||||||
int count = (progrss-max)>0?(progrss-max):0;
|
int count = (progrss-max)>0?(progrss-max):0;
|
||||||
// 重置全部mission为新积分
|
// 重置全部mission为新积分
|
||||||
List<Integer> missionIds = configs.stream().mapToInt(SActivityRewardConfig::getId).boxed().collect(Collectors.toList());
|
List<Integer> missionIds = configs.stream().mapToInt(SActivityRewardConfig::getId).boxed().collect(Collectors.toList());
|
||||||
|
@ -144,6 +143,29 @@ public class ChoiceDrawCardActivity extends AbstractActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查活动是否完成或者可以领取
|
||||||
|
* @param uid
|
||||||
|
* @param activityId
|
||||||
|
* @param activityMission
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) {
|
||||||
|
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||||
|
if (activityProgressInfoMap.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
|
||||||
|
ActivityProgressInfo activityProgressInfo = item.getValue();
|
||||||
|
int missionStatus = activityProgressInfo.getState();
|
||||||
|
if (missionStatus == ActivityType.WILL_TAKE) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 特殊处理奖励
|
* 特殊处理奖励
|
||||||
* @param reward 默认奖励配置
|
* @param reward 默认奖励配置
|
||||||
|
|
|
@ -0,0 +1,181 @@
|
||||||
|
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.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 config.SActivityRewardConfig;
|
||||||
|
import config.SSpiritAnimalSummon;
|
||||||
|
import manager.STableManager;
|
||||||
|
import rpc.protocols.CommonProto;
|
||||||
|
import rpc.protocols.PlayerInfoProto;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lvxinran
|
||||||
|
* @date 2020/11/11
|
||||||
|
* @discribe
|
||||||
|
*/
|
||||||
|
public class LimitRandomSpecialMonsterActivityNew extends LimitRandomCardActivity {
|
||||||
|
|
||||||
|
public LimitRandomSpecialMonsterActivityNew(int id) {
|
||||||
|
super(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initActivity(User user) {
|
||||||
|
super.initActivity(user);
|
||||||
|
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
|
||||||
|
ActivityMission activityMission = activityMissionMap.get(id);
|
||||||
|
if(activityMission!=null){
|
||||||
|
activityMission.getActivityMissionMap().put(0,new ActivityProgressInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void updateProgress(ActivityMission activityMission, int count) {
|
||||||
|
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||||
|
int progress;
|
||||||
|
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
|
||||||
|
if(item.getKey()==0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ActivityProgressInfo activityProgressInfo = item.getValue();
|
||||||
|
progress = item.getValue().getProgrss() + count;
|
||||||
|
activityProgressInfo.setProgrss(progress);
|
||||||
|
activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||||
|
User user = UserManager.getUser(session.getUid());
|
||||||
|
//checkAndUpdate cfg
|
||||||
|
SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||||
|
if (config == null || config.getActivityId() != id) {
|
||||||
|
throw new ErrorCodeException(ErrorCode.CFG_NULL,"功能不存在:"+missionId);
|
||||||
|
}
|
||||||
|
// acitvityinfo check
|
||||||
|
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||||
|
if (mission == null){
|
||||||
|
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE,"数据错误");
|
||||||
|
}
|
||||||
|
if (mission.getActivityState() != ActivityType.OPEN_STATE || mission.getOpenType() == 0) {
|
||||||
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN,"活动未开启");
|
||||||
|
}
|
||||||
|
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
|
||||||
|
if (progressInfo == null || progressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||||
|
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
|
||||||
|
}
|
||||||
|
//take rewards checkAndUpdate
|
||||||
|
if (!takeRewardsProcess(session, config, progressInfo)) {
|
||||||
|
throw new ErrorCodeException(ErrorCode.newDefineCode("未达到领取条件"));
|
||||||
|
}
|
||||||
|
checkAndSetProgress(mission, progressInfo, missionId);
|
||||||
|
//up miss
|
||||||
|
int summonId = mission.getActivityMissionMap().get(0).getProgrss();
|
||||||
|
int[][] reward = getReward(config.getReward(),summonId);
|
||||||
|
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
|
||||||
|
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||||
|
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||||
|
// 检查是否需要重启奖励
|
||||||
|
checkResetProgress(user,mission);
|
||||||
|
// 状态推送
|
||||||
|
sendActivityProgress(session, mission, null);
|
||||||
|
// 打点上报
|
||||||
|
reportTakeActivityReward(user,reward,missionId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 特殊处理奖励
|
||||||
|
* @param reward 默认奖励配置
|
||||||
|
* @param summonId 替换得奖励配置
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private int[][] getReward(int[][] reward, int summonId){
|
||||||
|
if (summonId <= 0){
|
||||||
|
return reward;
|
||||||
|
}
|
||||||
|
SSpiritAnimalSummon summonConfig = STableManager.getConfig(SSpiritAnimalSummon.class).get(summonId);
|
||||||
|
int[][] result = new int[reward.length][2];
|
||||||
|
for (int i = 0; i < reward.length; i++) {
|
||||||
|
result[i][0] = summonConfig.getOriginalItem();
|
||||||
|
result[i][1] = reward[i][1];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值奖励
|
||||||
|
* @param user
|
||||||
|
* @param mission
|
||||||
|
*/
|
||||||
|
public void checkResetProgress(User user,ActivityMission mission){
|
||||||
|
// 是否已领取全部奖励
|
||||||
|
if (checkActivityMissionFinishAndTake(user.getId(),id,mission)){
|
||||||
|
// 配置表
|
||||||
|
List<SActivityRewardConfig> configs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||||
|
// 获取最大奖励值
|
||||||
|
List<Integer> collect2 = configs.stream().mapToInt(v -> v.getValues()[0][0]).boxed().collect(Collectors.toList());
|
||||||
|
Integer max = Collections.max(collect2);
|
||||||
|
// 获取盈余的积分
|
||||||
|
Integer maxMissionId = Collections.max(mission.getActivityMissionMap().keySet());
|
||||||
|
int progrss = mission.getActivityMissionMap().get(maxMissionId).getProgrss();
|
||||||
|
int count = Math.max((progrss - max), 0);
|
||||||
|
// 获取已选中的灵兽
|
||||||
|
int summonId = Optional.ofNullable(mission.getActivityMissionMap().get(0)).map(ActivityProgressInfo::getProgrss).orElse(0);
|
||||||
|
// 重置全部mission为新积分
|
||||||
|
List<Integer> missionIds = configs.stream().mapToInt(SActivityRewardConfig::getId).boxed().collect(Collectors.toList());
|
||||||
|
for(Integer id : missionIds){
|
||||||
|
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||||
|
activityProgressInfo.setProgrss(count);
|
||||||
|
activityProgressInfo.setState(0);
|
||||||
|
mission.getActivityMissionMap().put(id, activityProgressInfo);
|
||||||
|
}
|
||||||
|
// 重新赋值灵兽
|
||||||
|
ActivityProgressInfo progressInfo = new ActivityProgressInfo();
|
||||||
|
progressInfo.setProgrss(summonId);
|
||||||
|
mission.getActivityMissionMap().put(0, progressInfo);
|
||||||
|
|
||||||
|
mission.setOpenType(1);
|
||||||
|
mission.setV(0);
|
||||||
|
mission.setActivityState(ActivityType.OPEN_STATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查活动是否完成或者可以领取
|
||||||
|
* @param uid
|
||||||
|
* @param activityId
|
||||||
|
* @param activityMission4
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) {
|
||||||
|
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||||
|
if (activityProgressInfoMap.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
|
||||||
|
ActivityProgressInfo activityProgressInfo = item.getValue();
|
||||||
|
int missionStatus = activityProgressInfo.getState();
|
||||||
|
if (missionStatus == ActivityType.WILL_TAKE && item.getKey() != 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,11 +5,11 @@ import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||||
import com.ljsd.jieling.logic.dao.UserManager;
|
import com.ljsd.jieling.logic.dao.UserManager;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import rpc.protocols.CommonProto;
|
|
||||||
import rpc.protocols.PlayerInfoProto;
|
|
||||||
import com.ljsd.jieling.util.ItemUtil;
|
import com.ljsd.jieling.util.ItemUtil;
|
||||||
import com.ljsd.jieling.util.MessageUtil;
|
import com.ljsd.jieling.util.MessageUtil;
|
||||||
import config.SActivityRewardConfig;
|
import config.SActivityRewardConfig;
|
||||||
|
import rpc.protocols.CommonProto;
|
||||||
|
import rpc.protocols.PlayerInfoProto;
|
||||||
import util.TimeUtils;
|
import util.TimeUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
Loading…
Reference in New Issue