专武活动
parent
e1eb601ec1
commit
e9327ca378
|
|
@ -141,6 +141,7 @@ public interface ActivityType {
|
|||
int BAUBLES_SUMMON_GIFT = 20015;//法宝召唤礼包
|
||||
int GM_DAILY_GIFT = 10011;//gm每日礼包
|
||||
int GM_WEEK_GIFT = 10012;//gm每周礼包
|
||||
int BAUBLES_BOOK = 125;//法宝图鉴
|
||||
|
||||
//***************************************bt活动=====================================//
|
||||
int BRUSH_PRIVILEGE = 103;//刷充特权
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@ public enum ActivityTypeEnum {
|
|||
NOVICE_GEM_CHEST(ActivityType.NOVICE_GEM_CHEST, GemChestActivity::new),//初级命石宝箱
|
||||
ADVANCED_GEM_CHEST(ActivityType.ADVANCED_GEM_CHEST, GemChestActivity::new),//高级命石宝箱
|
||||
BAUBLES_SUMMON_GIFT(ActivityType.BAUBLES_SUMMON_GIFT, DefaultEmptyActivity::new),//法宝召唤礼包
|
||||
BAUBLES_BOOK(ActivityType.BAUBLES_BOOK, BaublesBookNumActivity::new),//法宝图鉴,专武活动
|
||||
|
||||
/****************************************************** bt **********************************************************/
|
||||
BRUSH_PRIVILEGE(ActivityType.BRUSH_PRIVILEGE, BrushPrivilegeActivity::new),//刷充特权
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
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.SGlobalActivity;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
* 专武,法宝图鉴数量
|
||||
* 2022-1-24
|
||||
*/
|
||||
public class BaublesBookNumActivity extends AbstractActivity {
|
||||
|
||||
BaublesBookNumActivity(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
ActivityMission mission = new ActivityMission();
|
||||
// 活动信息初始化
|
||||
ActivityLogic.getInstance().initOtherMission(mission, new ArrayList<>());
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
LOGGER.info("法宝图鉴/专武...uid={} activityId={}",user.getId(), id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user, ActivityMission activityMission, Set<Integer> filter) {
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missionInfo = new ArrayList<>();
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// 验证活动是否开启
|
||||
if (activityMission == null || activity == null){
|
||||
return missionInfo;
|
||||
}
|
||||
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
if (rewardConfigs == null){
|
||||
return missionInfo;
|
||||
}
|
||||
int num = user.getEquipManager().getBaublesBookList().size();
|
||||
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
|
||||
for (SActivityRewardConfig config : rewardConfigs) {
|
||||
int missionId = config.getId();
|
||||
Integer state = Optional.ofNullable(progressInfoMap.get(missionId)).map(ActivityProgressInfo::getState).orElse(0);
|
||||
// 封装proto并返回
|
||||
CommonProto.ActivityInfo.MissionInfo build = CommonProto.ActivityInfo.MissionInfo.newBuilder()
|
||||
.setMissionId(missionId)
|
||||
.setProgress(num)
|
||||
.setState(state)
|
||||
.build();
|
||||
missionInfo.add(build);
|
||||
}
|
||||
return missionInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
// 开始校验数据正确性
|
||||
SActivityRewardConfig rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
if (rewardConfig == null) {
|
||||
String format = MessageFormat.format("法宝图鉴退出,表数据错误,uid:{0},活动id:{1},档位id:{2}", user.getId(), id, missionId);
|
||||
throw new ErrorCodeException(format);
|
||||
}
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null || mission.getActivityState() != ActivityType.OPEN_STATE){
|
||||
String format = MessageFormat.format("法宝图鉴退出,活动数据未开启,uid:{0},活动id:{1}", user.getId(), id);
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN, format);
|
||||
}
|
||||
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
|
||||
if (progressInfo != null && progressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||
String format = MessageFormat.format("法宝图鉴退出,活动奖励已经领取,uid:{0},活动id:{1},档位id:{2}", user.getId(), id, missionId);
|
||||
throw new ErrorCodeException(ErrorCode.HAD_TAKE_REWARD, format);
|
||||
}
|
||||
if (!checkRewardsProcess(user,rewardConfig)) {
|
||||
String format = MessageFormat.format("法宝图鉴退出,未达到领取条件,uid:{0},活动id:{1},档位id:{2}", user.getId(), id, missionId);
|
||||
throw new ErrorCodeException(format);
|
||||
}
|
||||
checkAndSetProgress(mission,missionId,ActivityType.HAD_TAKED);
|
||||
// reward
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
// 状态推送
|
||||
sendActivityProgress(session, null);
|
||||
// 打点上报
|
||||
reportTakeActivityReward(user,rewardConfig.getReward(),missionId);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 领奖后更新奖励进度
|
||||
*/
|
||||
public void checkAndSetProgress(ActivityMission activityMission, int missionId, int state) {
|
||||
ActivityProgressInfo progressInfo = new ActivityProgressInfo();
|
||||
progressInfo.setState(state);
|
||||
activityMission.getActivityMissionMap().put(missionId, progressInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证奖励是否可以领取
|
||||
*/
|
||||
boolean checkRewardsProcess(User user, SActivityRewardConfig rewardConfig) {
|
||||
int size = user.getEquipManager().getBaublesBookList().size();
|
||||
return size >= rewardConfig.getValues()[0][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue