Merge branch 'online_1121' of http://60.1.1.230/backend/jieling_server into online_1121

back_recharge
zhangshanxue 2019-12-02 15:08:51 +08:00
commit a17f641d8c
8 changed files with 185 additions and 123 deletions

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.activity.AbstractActivity;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
@ -17,6 +18,8 @@ public class BlessInfoHandler extends BaseHandler {
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
///
ActivityLogic.getInstance().blessInfo(iSession,MessageTypeProto.MessageType.BLESS_INFO_RESPONSE);
}
}

View File

@ -27,5 +27,7 @@ public class BlessSaveRewardHandler extends BaseHandler {
info[i] = rewardIdsList.get(i);
}
ActivityLogic.getInstance().blessSaveOptionalReward(iSession,info,MessageTypeProto.MessageType.BLESS_SAVE_REWARD_RESPONSE);
////
}
}

View File

@ -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);
}
// /**
// * 云梦手动刷新
// *

View File

@ -22,7 +22,7 @@ public interface ActivityType {
int FirstRecharge = 4; //首充
int RechargeTotal = 5; //累计充值
int GrowthFund = 6; //成长基金
int BLESSACTIVITY = 7;
int BLESSACTIVITY = 7;//云梦祈福
int TREASURE = 8; //孙龙的宝藏
int LUCKYCAT = 9;//招財貓
int SERVERHAPPY = 10; //七日狂欢

View File

@ -1,11 +1,23 @@
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.handler.activity.BlessInfoConfig;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.ActivityManager;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.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.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SBlessingConfig;
import config.SBlessingRewardPool;
import config.SGlobalActivity;
@ -39,17 +51,21 @@ public class BlessActivity extends AbstractActivity {
* @return
*/
private ActivityMission blessInfoInit(ActivityManager activityManager, int activityId) {
SBlessingConfig sBlessingConfig = SBlessingConfig.blessingConfigMap.get(activityId);
if(sBlessingConfig==null){
return null;
}
//第一次9种
int fixRewardPool = SBlessingConfig.sBlessingConfig.getRandomPoolId();
int fixRewardNum = SBlessingConfig.sBlessingConfig.getRandomNum();
int fixRewardPool = sBlessingConfig.getRandomPoolId();
int fixRewardNum = sBlessingConfig.getRandomNum();
List<int[]> fixRewardArray = new ArrayList<>();
//第二次6,6种
int legendPool = SBlessingConfig.sBlessingConfig.getLegendPoolId();
int legendNum = SBlessingConfig.sBlessingConfig.getLegendNum();
int legendPool = sBlessingConfig.getLegendPoolId();
int legendNum = sBlessingConfig.getLegendNum();
List<int[]> legendRewardArray = new ArrayList<>();
int supremePool = SBlessingConfig.sBlessingConfig.getSupremePoolId();
int supremeNum = SBlessingConfig.sBlessingConfig.getSupremeNum();
int supremePool = sBlessingConfig.getSupremePoolId();
int supremeNum = sBlessingConfig.getSupremeNum();
List<int[]> supremeRewardArray = new ArrayList<>();
for (Map.Entry<Integer, SBlessingRewardPool> entry : STableManager.getConfig(SBlessingRewardPool.class).entrySet()) {
@ -62,8 +78,8 @@ public class BlessActivity extends AbstractActivity {
}
}
//第三次次数奖励6个
int[] countPool = SBlessingConfig.sBlessingConfig.getCopuntsPoolId();
int[] counts = SBlessingConfig.sBlessingConfig.getCounts();
int[] countPool = sBlessingConfig.getCopuntsPoolId();
int[] counts = sBlessingConfig.getCounts();
int[] countResult = new int[counts.length];
int countIndex = 0;
for (Integer cpool : countPool) {

View File

@ -87,13 +87,6 @@ public class UserManager {
playerManager.setHeadFrame(STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getDefaultPicture());
SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(1);
playerManager.setMaxStamina(sPlayerLevelConfig.getMaxEnergy());
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
HeroManager heroManager = user.getHeroManager();
Map<String, Hero> heroMap = heroManager.getHeroMap();
TeamPosManager teamPosManager = user.getTeamPosManager();
List<Hero> teamHeros = new ArrayList<>(1);
teamHeros.add(heroMap.values().iterator().next());
teamPosManager.addTeamOfInitPlayer(teamHeros);
int force = HeroLogic.getInstance().calTeamTotalForce(user, 1, true);
playerManager.setMaxForce(force);
PlayerLogic.getInstance().vipflushEveryDay(user,null);
@ -105,6 +98,13 @@ public class UserManager {
user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0);
user.getUserMissionManager().onGameEvent(user, GameEvent.BEGINNER);
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.LOGIN_TIMES.getType(),1));
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
HeroManager heroManager = user.getHeroManager();
Map<String, Hero> heroMap = heroManager.getHeroMap();
TeamPosManager teamPosManager = user.getTeamPosManager();
List<Hero> teamHeros = new ArrayList<>(1);
teamHeros.add(heroMap.values().iterator().next());
teamPosManager.addTeamOfInitPlayer(teamHeros);
KtEventUtils.onKtEvent(user, ParamEventBean.UserRegister);
}

View File

@ -3,6 +3,10 @@ package config;
import manager.STableManager;
import manager.Table;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
@Table(name ="BlessingConfig")
public class SBlessingConfig implements BaseConfig {
@ -38,11 +42,17 @@ public class SBlessingConfig implements BaseConfig {
private int countsNum;
public static SBlessingConfig sBlessingConfig;
public static Map<Integer,SBlessingConfig> sBlessingConfig;
public static Map<Integer,SBlessingConfig> blessingConfigMap;
@Override
public void init() throws Exception {
sBlessingConfig = STableManager.getConfig(SBlessingConfig.class).get(1);
sBlessingConfig = STableManager.getConfig(SBlessingConfig.class);
blessingConfigMap = new HashMap<>();
for(Map.Entry<Integer,SBlessingConfig> blessingConfigEntry:sBlessingConfig.entrySet()){
blessingConfigMap.put(blessingConfigEntry.getValue().getActivityId(),blessingConfigEntry.getValue());
}
}