|
|
|
|
@ -702,10 +702,129 @@ public class ActivityLogic {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int getBlessActivityId(User user){
|
|
|
|
|
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
|
|
|
|
|
for(Integer activityId:activityMissionMap.keySet()){
|
|
|
|
|
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()==ActivityType.BLESSACTIVITY){
|
|
|
|
|
return activityId;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 云梦抽取
|
|
|
|
|
*
|
|
|
|
|
* @param session
|
|
|
|
|
* @param locationId
|
|
|
|
|
* @param messageType
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
|
|
|
|
public void blessChoose(ISession session, int locationId, MessageTypeProto.MessageType messageType) throws Exception {
|
|
|
|
|
User user = UserManager.getUser(session.getUid());
|
|
|
|
|
int blessActivityId = getBlessActivityId(user);
|
|
|
|
|
if(blessActivityId==0){
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
|
|
|
|
}
|
|
|
|
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(blessActivityId);
|
|
|
|
|
if (activityMission == null) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
|
|
|
|
}
|
|
|
|
|
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
|
|
|
|
|
if (activityProgressInfoMap.get(locationId + BlessInfoConfig.START_CAPACITY).getProgrss() != 0) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.newDefineCode("已经抽过改格子"));
|
|
|
|
|
}
|
|
|
|
|
int resultRewardId = 0;
|
|
|
|
|
if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == -1) {
|
|
|
|
|
Map<Integer, SBlessingRewardPool> poolMap = STableManager.getConfig(SBlessingRewardPool.class);
|
|
|
|
|
int[][] result = new int[BlessInfoConfig.START_CAPACITY][];
|
|
|
|
|
int index = 0;
|
|
|
|
|
for (Map.Entry<Integer, ActivityProgressInfo> entry : activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if (entry.getKey() > BlessInfoConfig.START_CAPACITY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
int[] temp = new int[2];
|
|
|
|
|
temp[0] = entry.getValue().getProgrss();
|
|
|
|
|
temp[1] = poolMap.get(entry.getValue().getProgrss()).getExtractWeight();
|
|
|
|
|
result[index] = temp;
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
int[] order = MathUtils.randomFromWeightWithTaking(result, BlessInfoConfig.START_CAPACITY);
|
|
|
|
|
for (int i = 0; i < order.length; i++) {
|
|
|
|
|
LOGGER.info("获取顺序{}", order[i]);
|
|
|
|
|
}
|
|
|
|
|
index = 0;
|
|
|
|
|
for (Map.Entry<Integer, ActivityProgressInfo> entry : activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if (entry.getKey() > BlessInfoConfig.START_CAPACITY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
ActivityProgressInfo progress = new ActivityProgressInfo();
|
|
|
|
|
progress.setProgrss(order[index]);
|
|
|
|
|
activityMission.updateProgressInfo(entry.getKey(), progress);
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo(1, 0));
|
|
|
|
|
}
|
|
|
|
|
//检验消耗道具
|
|
|
|
|
int[][] costConfig = SBlessingConfig.blessingConfigMap.get(blessActivityId).getCost();
|
|
|
|
|
int[][] cost = new int[1][];
|
|
|
|
|
int[] temp = new int[2];
|
|
|
|
|
temp[0] = costConfig[0][0];
|
|
|
|
|
temp[1] = (int) MathUtils.calABX(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(), costConfig[1]);
|
|
|
|
|
cost[0] = temp;
|
|
|
|
|
LOGGER.info("本次为第{}次抽取,消耗{}个数为{}", activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(), temp[0], temp[1]);
|
|
|
|
|
boolean costResult = ItemUtil.itemCost(user, cost, BIReason.BLESS_CHOOSE_CONSUME, 1);
|
|
|
|
|
if (!costResult) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
|
|
|
|
}
|
|
|
|
|
if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() > 0) {
|
|
|
|
|
for (Map.Entry<Integer, ActivityProgressInfo> entry : activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if (entry.getKey() > BlessInfoConfig.START_CAPACITY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (entry.getValue().getProgrss() == 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
resultRewardId = entry.getValue().getProgrss();
|
|
|
|
|
ActivityProgressInfo progress = new ActivityProgressInfo();
|
|
|
|
|
progress.setProgrss(entry.getValue().getProgrss());
|
|
|
|
|
activityMission.updateProgressInfo(locationId + BlessInfoConfig.START_CAPACITY, progress);
|
|
|
|
|
activityMission.updateProgressInfo(entry.getKey(), new ActivityProgressInfo());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LOGGER.info("本次抽取的Id为{}", resultRewardId);
|
|
|
|
|
Map<Integer, SBlessingRewardPool> poolMap = STableManager.getConfig(SBlessingRewardPool.class);
|
|
|
|
|
int[][] dropItem = new int[1][];
|
|
|
|
|
for (Integer count : SBlessingConfig.blessingConfigMap.get(blessActivityId).getCounts()) {
|
|
|
|
|
if (count != activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
dropItem = new int[2][];
|
|
|
|
|
dropItem[1] = poolMap.get(activityProgressInfoMap.get(BlessInfoConfig.COUNT_REWARD_START_ID + count).getProgrss()).getReward();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int[] reward = poolMap.get(resultRewardId).getReward();
|
|
|
|
|
dropItem[0] = reward;
|
|
|
|
|
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropItem, BIReason.BLESS_REWARD);
|
|
|
|
|
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() + 1, 0));
|
|
|
|
|
// if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == BlessInfoConfig.START_CAPACITY + 1) {
|
|
|
|
|
// if (SBlessingConfig.sBlessingConfig.getIsRefresh() != 0) {
|
|
|
|
|
// blessRefresh(user);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
PlayerInfoProto.blessChooseResponse response = PlayerInfoProto.blessChooseResponse.newBuilder().setReward(drop).setChooseRewardId(resultRewardId).build();
|
|
|
|
|
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//云梦请求数据
|
|
|
|
|
public void blessInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
|
|
|
|
User user = UserManager.getUser(session.getUid());
|
|
|
|
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
int blessActivityId = getBlessActivityId(user);
|
|
|
|
|
if(blessActivityId==0){
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
|
|
|
|
}
|
|
|
|
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(blessActivityId);
|
|
|
|
|
if (activityMission == null) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
|
|
|
|
}
|
|
|
|
|
@ -813,11 +932,24 @@ public class ActivityLogic {
|
|
|
|
|
|
|
|
|
|
public void blessSaveOptionalReward(ISession session, int[] rewardIds, MessageTypeProto.MessageType messageType) throws Exception {
|
|
|
|
|
User user = UserManager.getUser(session.getUid());
|
|
|
|
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
// for(Map.Entry<Integer,SBlessingConfig> entry:SBlessingConfig.blessingConfigMap.entrySet()){
|
|
|
|
|
//
|
|
|
|
|
// int activityOpenState = getActivityOpenState(user, entry.getKey());
|
|
|
|
|
// if(activityOpenState==ActivityType.OPEN_STATE){
|
|
|
|
|
// blessingConfig = entry.getValue();
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
int blessActivityId = getBlessActivityId(user);
|
|
|
|
|
if(blessActivityId==0){
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
|
|
|
|
}
|
|
|
|
|
SBlessingConfig blessingConfig =SBlessingConfig.blessingConfigMap.get(blessActivityId) ;
|
|
|
|
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(blessActivityId);
|
|
|
|
|
if (activityMission.getActivityProgressInfoMap().get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() != 0) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.newDefineCode("您当前不能进行保存"));
|
|
|
|
|
}
|
|
|
|
|
if (SBlessingConfig.sBlessingConfig.getRandomNum() != BlessInfoConfig.START_CAPACITY - rewardIds.length) {
|
|
|
|
|
if (blessingConfig.getRandomNum() != BlessInfoConfig.START_CAPACITY - rewardIds.length) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.newDefineCode("选择数量不对"));
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < rewardIds.length; i++) {
|
|
|
|
|
@ -833,108 +965,6 @@ public class ActivityLogic {
|
|
|
|
|
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 云梦抽取
|
|
|
|
|
*
|
|
|
|
|
* @param session
|
|
|
|
|
* @param locationId
|
|
|
|
|
* @param messageType
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
|
|
|
|
public void blessChoose(ISession session, int locationId, MessageTypeProto.MessageType messageType) throws Exception {
|
|
|
|
|
User user = UserManager.getUser(session.getUid());
|
|
|
|
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
if (activityMission == null) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
|
|
|
|
}
|
|
|
|
|
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
|
|
|
|
|
if (activityProgressInfoMap.get(locationId + BlessInfoConfig.START_CAPACITY).getProgrss() != 0) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.newDefineCode("已经抽过改格子"));
|
|
|
|
|
}
|
|
|
|
|
int resultRewardId = 0;
|
|
|
|
|
if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == -1) {
|
|
|
|
|
Map<Integer, SBlessingRewardPool> poolMap = STableManager.getConfig(SBlessingRewardPool.class);
|
|
|
|
|
int[][] result = new int[BlessInfoConfig.START_CAPACITY][];
|
|
|
|
|
int index = 0;
|
|
|
|
|
for (Map.Entry<Integer, ActivityProgressInfo> entry : activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if (entry.getKey() > BlessInfoConfig.START_CAPACITY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
int[] temp = new int[2];
|
|
|
|
|
temp[0] = entry.getValue().getProgrss();
|
|
|
|
|
temp[1] = poolMap.get(entry.getValue().getProgrss()).getExtractWeight();
|
|
|
|
|
result[index] = temp;
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
int[] order = MathUtils.randomFromWeightWithTaking(result, BlessInfoConfig.START_CAPACITY);
|
|
|
|
|
for (int i = 0; i < order.length; i++) {
|
|
|
|
|
LOGGER.info("获取顺序{}", order[i]);
|
|
|
|
|
}
|
|
|
|
|
index = 0;
|
|
|
|
|
for (Map.Entry<Integer, ActivityProgressInfo> entry : activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if (entry.getKey() > BlessInfoConfig.START_CAPACITY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
ActivityProgressInfo progress = new ActivityProgressInfo();
|
|
|
|
|
progress.setProgrss(order[index]);
|
|
|
|
|
activityMission.updateProgressInfo(entry.getKey(), progress);
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo(1, 0));
|
|
|
|
|
}
|
|
|
|
|
//检验消耗道具
|
|
|
|
|
int[][] costConfig = SBlessingConfig.sBlessingConfig.getCost();
|
|
|
|
|
int[][] cost = new int[1][];
|
|
|
|
|
int[] temp = new int[2];
|
|
|
|
|
temp[0] = costConfig[0][0];
|
|
|
|
|
temp[1] = (int) MathUtils.calABX(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(), costConfig[1]);
|
|
|
|
|
cost[0] = temp;
|
|
|
|
|
LOGGER.info("本次为第{}次抽取,消耗{}个数为{}", activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(), temp[0], temp[1]);
|
|
|
|
|
boolean costResult = ItemUtil.itemCost(user, cost, BIReason.BLESS_CHOOSE_CONSUME, 1);
|
|
|
|
|
if (!costResult) {
|
|
|
|
|
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
|
|
|
|
}
|
|
|
|
|
if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() > 0) {
|
|
|
|
|
for (Map.Entry<Integer, ActivityProgressInfo> entry : activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if (entry.getKey() > BlessInfoConfig.START_CAPACITY) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (entry.getValue().getProgrss() == 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
resultRewardId = entry.getValue().getProgrss();
|
|
|
|
|
ActivityProgressInfo progress = new ActivityProgressInfo();
|
|
|
|
|
progress.setProgrss(entry.getValue().getProgrss());
|
|
|
|
|
activityMission.updateProgressInfo(locationId + BlessInfoConfig.START_CAPACITY, progress);
|
|
|
|
|
activityMission.updateProgressInfo(entry.getKey(), new ActivityProgressInfo());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LOGGER.info("本次抽取的Id为{}", resultRewardId);
|
|
|
|
|
Map<Integer, SBlessingRewardPool> poolMap = STableManager.getConfig(SBlessingRewardPool.class);
|
|
|
|
|
int[][] dropItem = new int[1][];
|
|
|
|
|
for (Integer count : SBlessingConfig.sBlessingConfig.getCounts()) {
|
|
|
|
|
if (count != activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
dropItem = new int[2][];
|
|
|
|
|
dropItem[1] = poolMap.get(activityProgressInfoMap.get(BlessInfoConfig.COUNT_REWARD_START_ID + count).getProgrss()).getReward();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int[] reward = poolMap.get(resultRewardId).getReward();
|
|
|
|
|
dropItem[0] = reward;
|
|
|
|
|
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropItem, BIReason.BLESS_REWARD);
|
|
|
|
|
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS, new ActivityProgressInfo(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() + 1, 0));
|
|
|
|
|
// if (activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss() == BlessInfoConfig.START_CAPACITY + 1) {
|
|
|
|
|
// if (SBlessingConfig.sBlessingConfig.getIsRefresh() != 0) {
|
|
|
|
|
// blessRefresh(user);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
PlayerInfoProto.blessChooseResponse response = PlayerInfoProto.blessChooseResponse.newBuilder().setReward(drop).setChooseRewardId(resultRewardId).build();
|
|
|
|
|
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// /**
|
|
|
|
|
// * 云梦手动刷新
|
|
|
|
|
// *
|
|
|
|
|
|