|
|
|
|
@ -129,7 +129,7 @@ public class ActivityLogic {
|
|
|
|
|
user.getActivityManager().addActivity(sGlobalActivity.getId(),activityMission);
|
|
|
|
|
break;
|
|
|
|
|
case ActivityType.BLESSACTIVITY:
|
|
|
|
|
blessInfoInit(user.getActivityManager());
|
|
|
|
|
blessInfoInit(user.getActivityManager(),sGlobalActivity.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -349,7 +349,8 @@ public class ActivityLogic {
|
|
|
|
|
Integer activityId = activityState.getKey();
|
|
|
|
|
ActivityMission activityMission = activityState.getValue();
|
|
|
|
|
int activityStatus = activityMission.getActivityState();
|
|
|
|
|
if(activityStatus != ActivityType.OPEN_STATE){
|
|
|
|
|
|
|
|
|
|
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType()!=7&&activityStatus != ActivityType.OPEN_STATE){
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
SGlobalActivity sGlobalActivity = sGlobalActivityMap.get(activityId);
|
|
|
|
|
@ -598,7 +599,7 @@ public class ActivityLogic {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//祈福信息初始化
|
|
|
|
|
blessInfoInit(activityManager);
|
|
|
|
|
blessInfoInit(activityManager,7);
|
|
|
|
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -606,7 +607,7 @@ public class ActivityLogic {
|
|
|
|
|
* 祈福信息初始化
|
|
|
|
|
* @param activityManager
|
|
|
|
|
*/
|
|
|
|
|
private void blessInfoInit(ActivityManager activityManager){
|
|
|
|
|
private void blessInfoInit(ActivityManager activityManager,int activityId){
|
|
|
|
|
//第一次9种
|
|
|
|
|
int fixRewardPool = SBlessingConfig.sBlessingConfig.getRandomPoolId();
|
|
|
|
|
int fixRewardNum = SBlessingConfig.sBlessingConfig.getRandomNum();
|
|
|
|
|
@ -668,8 +669,8 @@ public class ActivityLogic {
|
|
|
|
|
int[] legendResult = MathUtils.randomFromWeightWithTaking(legendReward, legendNum);
|
|
|
|
|
int[] supremeResult = MathUtils.randomFromWeightWithTaking(supremeReward, supremeNum);
|
|
|
|
|
|
|
|
|
|
activityManager.initAllActivityMission(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
ActivityMission activityMission = activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
|
|
|
|
|
ActivityMission activityMission =new ActivityMission();
|
|
|
|
|
for(int i=16;i>0;i--){
|
|
|
|
|
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
|
|
|
|
|
if(16-i<fixResult.length){
|
|
|
|
|
@ -683,6 +684,10 @@ public class ActivityLogic {
|
|
|
|
|
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
|
|
|
|
|
activityMission.updateProgressInfo(i,progressInfo);
|
|
|
|
|
}
|
|
|
|
|
//初始化状态
|
|
|
|
|
activityMission.updateProgressInfo(99,new ActivityProgressInfo());
|
|
|
|
|
//初始化上次刷新时间
|
|
|
|
|
activityMission.updateProgressInfo(100,new ActivityProgressInfo());
|
|
|
|
|
for(int i = 0 ; i <legendResult.length;i++){
|
|
|
|
|
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
|
|
|
|
|
progressInfo.setProgrss(legendResult[i]);
|
|
|
|
|
@ -698,6 +703,7 @@ public class ActivityLogic {
|
|
|
|
|
progressInfo.setProgrss(countResult[i]);
|
|
|
|
|
activityMission.updateProgressInfo(1000+counts[i],progressInfo);
|
|
|
|
|
}
|
|
|
|
|
activityManager.addActivity(activityId,activityMission);
|
|
|
|
|
}
|
|
|
|
|
//云梦请求数据
|
|
|
|
|
public void blessInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
|
|
|
|
@ -715,7 +721,7 @@ public class ActivityLogic {
|
|
|
|
|
PlayerInfoProto.blessResponse.Builder response = PlayerInfoProto.blessResponse.newBuilder();
|
|
|
|
|
Map<Integer, ActivityProgressInfo> blessInfoMap = activityMission.getActivityProgressInfoMap();
|
|
|
|
|
//保存之前
|
|
|
|
|
if(activityMission.getActivityState()==0){
|
|
|
|
|
if(blessInfoMap.get(99).getProgrss()==0){
|
|
|
|
|
for(Map.Entry<Integer,ActivityProgressInfo> entry:blessInfoMap.entrySet()){
|
|
|
|
|
if(entry.getKey()/1000>0){
|
|
|
|
|
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
|
|
|
|
|
@ -750,7 +756,7 @@ public class ActivityLogic {
|
|
|
|
|
response.addFixReward(blessReward);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else if(activityMission.getActivityState()!=0){//保存之后
|
|
|
|
|
}else{//保存之后
|
|
|
|
|
for(Map.Entry<Integer,ActivityProgressInfo> entry:blessInfoMap.entrySet()){
|
|
|
|
|
if(entry.getKey()/1000>0){
|
|
|
|
|
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
|
|
|
|
|
@ -803,13 +809,13 @@ public class ActivityLogic {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
response.setLastRefreshTime(activityMission.getOpenType());
|
|
|
|
|
response.setLastRefreshTime(blessInfoMap.get(100).getProgrss());
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
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());
|
|
|
|
|
if(activityMission.getActivityState()!=0){
|
|
|
|
|
if(activityMission.getActivityProgressInfoMap().get(99).getProgrss()!=0){
|
|
|
|
|
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"您当前不能进行保存!");
|
|
|
|
|
}
|
|
|
|
|
if(SBlessingConfig.sBlessingConfig.getRandomNum()!=16-rewardIds.length){
|
|
|
|
|
@ -824,7 +830,8 @@ public class ActivityLogic {
|
|
|
|
|
for(int i = 0 ;i <16;i++){
|
|
|
|
|
activityMission.updateProgressInfo(i+33,activityMission.getActivityProgressInfoMap().get(i+1));
|
|
|
|
|
}
|
|
|
|
|
activityMission.updateActivityState(-1);
|
|
|
|
|
// activityMission.updateActivityState(-1);
|
|
|
|
|
activityMission.updateProgressInfo(99,new ActivityProgressInfo(-1,0));
|
|
|
|
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -844,7 +851,7 @@ public class ActivityLogic {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
int resultRewardId = 0;
|
|
|
|
|
if(activityMission.getActivityState()==-1){
|
|
|
|
|
if(activityProgressInfoMap.get(99).getProgrss()==-1){
|
|
|
|
|
Map<Integer, SBlessingRewardPool> poolMap = SBlessingRewardPool.sBlessingRewardPoolMap;
|
|
|
|
|
int[][] result = new int[16][];
|
|
|
|
|
int index = 0;
|
|
|
|
|
@ -872,22 +879,22 @@ public class ActivityLogic {
|
|
|
|
|
activityMission.updateProgressInfo(entry.getKey(),progress);
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
activityMission.updateActivityState(1);
|
|
|
|
|
activityMission.updateProgressInfo(99,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(activityMission.getActivityState(),costConfig[1]);
|
|
|
|
|
temp[1] = (int)MathUtils.calABX(activityProgressInfoMap.get(99).getProgrss(),costConfig[1]);
|
|
|
|
|
cost[0] = temp;
|
|
|
|
|
LOGGER.info("本次为第{}次抽取,消耗{}个数为{}",activityMission.getActivityState(),temp[0],temp[1]);
|
|
|
|
|
LOGGER.info("本次为第{}次抽取,消耗{}个数为{}",activityProgressInfoMap.get(99).getProgrss(),temp[0],temp[1]);
|
|
|
|
|
boolean costResult = ItemUtil.itemCost(user,cost,BIReason.BLESS_CHOOSE_CONSUME,1);
|
|
|
|
|
if(!costResult){
|
|
|
|
|
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"道具不足");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if(activityMission.getActivityState()>0){
|
|
|
|
|
if(activityProgressInfoMap.get(99).getProgrss()>0){
|
|
|
|
|
for (Map.Entry<Integer,ActivityProgressInfo> entry :activityProgressInfoMap.entrySet()) {
|
|
|
|
|
if(entry.getKey()>16){
|
|
|
|
|
continue;
|
|
|
|
|
@ -907,7 +914,7 @@ public class ActivityLogic {
|
|
|
|
|
Map<Integer, SBlessingRewardPool> poolMap = SBlessingRewardPool.sBlessingRewardPoolMap;
|
|
|
|
|
int[][] dropItem = new int[1][];
|
|
|
|
|
for(Integer count:SBlessingConfig.sBlessingConfig.getCounts()){
|
|
|
|
|
if (count!=activityMission.getActivityState()){
|
|
|
|
|
if (count!=activityProgressInfoMap.get(99).getProgrss()){
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
dropItem = new int[2][];
|
|
|
|
|
@ -915,8 +922,8 @@ public class ActivityLogic {
|
|
|
|
|
}
|
|
|
|
|
int[] reward = poolMap.get(resultRewardId).getReward();
|
|
|
|
|
dropItem[0] = reward;
|
|
|
|
|
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropItem, BIReason.BLESS_REWARD);
|
|
|
|
|
activityMission.updateActivityState(activityMission.getActivityState()+1);
|
|
|
|
|
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItem, BIReason.BLESS_REWARD);
|
|
|
|
|
activityMission.updateProgressInfo(99,new ActivityProgressInfo(activityProgressInfoMap.get(99).getProgrss()+1,0));
|
|
|
|
|
PlayerInfoProto.blessChooseResponse response = PlayerInfoProto.blessChooseResponse.newBuilder().setReward(drop).setChooseRewardId(resultRewardId).build();
|
|
|
|
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
|
|
|
|
|
}
|
|
|
|
|
@ -942,9 +949,9 @@ public class ActivityLogic {
|
|
|
|
|
ActivityManager activityManager = user.getActivityManager();
|
|
|
|
|
ActivityMission activityMission = activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
activityMission.initMissionInfo(SBlessingConfig.sBlessingConfig.getActivityId());
|
|
|
|
|
activityMission.updateActivityState(0);
|
|
|
|
|
activityMission.setOpenType((int)(TimeUtils.now()/1000));
|
|
|
|
|
blessInfoInit(activityManager);
|
|
|
|
|
activityMission.updateProgressInfo(99,new ActivityProgressInfo());
|
|
|
|
|
activityMission.updateProgressInfo(100,new ActivityProgressInfo((int)(TimeUtils.now()/1000),0));
|
|
|
|
|
blessInfoInit(activityManager,7);
|
|
|
|
|
PlayerInfoProto.blessRefresh res = PlayerInfoProto.blessRefresh.newBuilder().setReward(getBlessInfoResponse(activityMission).build()).build();
|
|
|
|
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),res,true);
|
|
|
|
|
}
|
|
|
|
|
|