diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java index 94cec730d..a92cbb3ac 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java @@ -43,10 +43,10 @@ public class SSpecialConfig implements BaseConfig { public static final String lamp_lottery_equiptalisman_content_parm = "lamp_lottery_equiptalisman_content_parm";//5及以上——系统消息 public static final String lamp_rankup_equipsign_content_parm = "lamp_rankup_equipsign_content_parm";//5级及以上——系统消息 public static final String lamp_rankup_equiptalisman_content_parm = "lamp_rankup_equiptalisman_content_parm";//8星及以上——系统消息 - - - - + public static final String SUNLONG_DAILYTASKS = "Sunlong_DailyTasks";//孙龙的宝藏每日、每周、每月任务个数 + public static final String SUNLONG_COST = "Sunlong_Cost";//孙龙的宝藏购买等级 + public static final String SUNLONG_INTEGRAL ="Sunlong_Integral";//孙龙的宝藏每日积分礼包 + public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包 @Override public void init() throws Exception { @@ -72,6 +72,29 @@ public class SSpecialConfig implements BaseConfig { } return Integer.valueOf(value); } + public static int[] getOnceArrayValue(String key){ + String value = enumers.get(key); + String[] array = value.split("\\#"); + int[] arrayNum = new int[array.length]; + for (int i = 0 ; i < array.length;i++) { + arrayNum[i] = Integer.parseInt(array[i]); + } + return arrayNum; + } + public static int[][] getTwiceArrayValue(String key){ + String value = enumers.get(key); + String[] array = value.split("\\|"); + int[][] arrayNum = new int[array.length][]; + for (int i = 0 ; i < array.length;i++) { + String[] temp = array[i].split("\\#"); + int[] tempNum = new int[temp.length]; + for (int j = 0 ; j < tempNum.length;j++) { + tempNum[j] = Integer.parseInt(temp[j]); + } + arrayNum[i] = tempNum; + } + return arrayNum; + } public static int[] getIntegerArrayValue(String key) { String value = enumers.get(key); @@ -91,5 +114,4 @@ public class SSpecialConfig implements BaseConfig { return value; } - } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongConfig.java new file mode 100644 index 000000000..098085782 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongConfig.java @@ -0,0 +1,73 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name ="TreasureSunlongConfig") +public class STreasureSunlongConfig implements BaseConfig { + + private int id; + + private int activityId; + + private int type; + + private int level; + + private int[][] integral; + + private int[][] reward; + + private int[][] treasureReward; + + public static Map treasureSunlongConfigMap; + + public static Map levelTreasureConfigMap; + @Override + public void init() throws Exception { + treasureSunlongConfigMap=STableManager.getConfig(STreasureSunlongConfig.class); + levelTreasureConfigMap= new HashMap<>(treasureSunlongConfigMap.size()); + for(Map.Entry entry:treasureSunlongConfigMap.entrySet()){ + STreasureSunlongConfig config = entry.getValue(); + if(config.getActivityId()!=40){ + continue; + } + levelTreasureConfigMap.put(config.getLevel(), config); + } + + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int getType() { + return type; + } + + public int getLevel() { + return level; + } + + public int[][] getIntegral() { + return integral; + } + + public int[][] getReward() { + return reward; + } + + public int[][] getTreasureReward() { + return treasureReward; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongTaskConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongTaskConfig.java new file mode 100644 index 000000000..485b37727 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongTaskConfig.java @@ -0,0 +1,81 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Table(name ="TreasureSunlongTaskConfig") +public class STreasureSunlongTaskConfig implements BaseConfig { + + private int id; + + private int activityId; + + private int type; + + private int taskType; + + private int[][] taskValue; + + private int[][] integral; + + private int weight; + + public static Map treasureTaskConfig; + + public static Map> taskTypeMap; + + public static Map> sTreasureTaskConfigListByTypeMapTmp; + @Override + public void init() throws Exception { + treasureTaskConfig = STableManager.getConfig(STreasureSunlongTaskConfig.class); + taskTypeMap = new HashMap<>(); + sTreasureTaskConfigListByTypeMapTmp = new HashMap<>(); + for(Map.Entry entry:treasureTaskConfig.entrySet()){ + STreasureSunlongTaskConfig entryValue = entry.getValue(); + if(!taskTypeMap.containsKey(entryValue.getType())){ + taskTypeMap.put(entryValue.getType(),new ArrayList<>()); + } + if(!sTreasureTaskConfigListByTypeMapTmp.containsKey(entryValue.getTaskType())){ + sTreasureTaskConfigListByTypeMapTmp.put(entryValue.getTaskType(),new ArrayList<>()); + } + sTreasureTaskConfigListByTypeMapTmp.get(entryValue.getTaskType()).add(entryValue); + taskTypeMap.get(entryValue.getType()).add(entry.getKey()); + } + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int getType() { + return type; + } + + public int getTaskType() { + return taskType; + } + + public int[][] getTaskValue() { + return taskValue; + } + + public int[][] getIntegral() { + return integral; + } + + public int getWeight() { + return weight; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java index 866e7a17a..1d44c844e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureTaskConfig.java @@ -45,11 +45,8 @@ public class STreasureTaskConfig implements BaseConfig { if(!treasureTaskConfigByActivityMap.containsKey(activityId)){ treasureTaskConfigByActivityMap.put(activityId,new ArrayList<>()); } - if(!sTreasureTaskConfigListByTypeMapTmp.containsKey(sTreasureTaskConfig.getTaskType())){ - sTreasureTaskConfigListByTypeMapTmp.put(sTreasureTaskConfig.getTaskType(),new ArrayList<>()); - } + treasureTaskConfigByActivityMap.get(activityId).add(sTreasureTaskConfig); - sTreasureTaskConfigListByTypeMapTmp.get(sTreasureTaskConfig.getTaskType()).add(sTreasureTaskConfig); if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ sTreasureSevenTaskConfigByActivityMapTmp.put(sTreasureTaskConfig.getActivityId(),sTreasureTaskConfig); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 49f49d0f1..672792ed1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -83,6 +83,7 @@ public interface BIReason { int RANDOM_SOULEQUIP = 51;//占星 int DIRECT_BUY = 52; // 直购 + int TREASURE_SCORE = 53;//孙龙宝藏获得积分 int MAIN_LEVEL_STATE_REWARD = 53; // 关卡挂机奖励 @@ -158,6 +159,7 @@ public interface BIReason { int FAMILY_SET_ICON = 1037;//工会修改图腾 + int EXCHANGE_ACTIVITY_CLOSE = 1038;//限时兑换删除道具 int LUCK_WHEEL = 1039; //幸运转盘消耗 int LUCK_WHEEL_ADVANCE = 1040; //高级幸运转盘消耗 @@ -165,4 +167,9 @@ public interface BIReason { int HERO_BACK_CONSUME = 1041; // 英雄回溯消耗 + int TREASURE_LEVEL_UP_CONCUME = 1042;//孙龙宝藏等级提升消耗 + + int TREASURE_BUY_LEVEL_CONSUME = 1043;//孙龙宝藏等级快速购买 + + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java index 14ca9cfd2..14dad316a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java @@ -336,7 +336,7 @@ public class GMRequestHandler extends BaseHandler{ } public void treasureScore(ISession session,int score) throws Exception { User user = UserManager.getUser(session.getUid()); - user.getPlayerInfoManager().setTreasureScore(score); + user.getPlayerInfoManager().setTreasureLevel(score); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 728375d54..f143fd649 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -150,7 +150,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ .addAllTowerReceivedReward(towerFloorReceivedReward) .addAllGoodsTypeDuration(goodsTypeDurations) .setHadBuyTreasure(playerInfoManager.getHadBuyTreasure()) - // .setTreasureScore(playerInfoManager.getTreasureScore()) + .setTreasureLevel(playerInfoManager.getTreasureLevel()) .setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(playerInfoManager.getSign()+1).setState(playerInfoManager.getSignTotay()).build()) .setMonsterAttackTime(user.getMapManager().getLastMonsterAttack()) .setFirstTenth(user.getHeroManager().getFirstTenth()) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java index ed4167959..65d01cb82 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java @@ -1,13 +1,26 @@ package com.ljsd.jieling.handler; +import com.ljsd.jieling.config.SErrorCodeEerverConfig; +import com.ljsd.jieling.config.SGlobalActivity; +import com.ljsd.jieling.config.SSpecialConfig; +import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.activity.ActivityType; +import com.ljsd.jieling.logic.dao.ActivityManager; +import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.TimeUtils; import org.springframework.stereotype.Component; +import java.util.Map; + @Component public class ServerZeroHandler extends BaseHandler { @Override @@ -17,6 +30,18 @@ public class ServerZeroHandler extends BaseHandler { @Override public void process(ISession iSession, PacketNetData netData) throws Exception { - PlayerLogic.getInstance().sendDayilyMail(UserManager.getUser(iSession.getUid()),-1); + User user = UserManager.getUser(iSession.getUid()); + PlayerLogic.getInstance().sendDayilyMail(user,-1); + //发送每日孙龙邮件 + if(user.getPlayerInfoManager().getHadBuyTreasure()!=0){ + Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); + for(Map.Entry entry:activityMissionMap.entrySet()){ + if(SGlobalActivity.getsGlobalActivityMap().get(entry).getType()== ActivityType.TREASURE){ + MailLogic.getInstance().sendMail(iSession.getUid(), SErrorCodeEerverConfig.getI18NMessage("secret_daily_title"),SErrorCodeEerverConfig.getI18NMessage("secret_daily_txt"), SSpecialConfig.getStringValue(SSpecialConfig.SUNLONG_INTEGRAL),(int)(TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME); + break; + } + } + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TreasureQuickBuyLevel.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TreasureQuickBuyLevel.java new file mode 100644 index 000000000..673d0cce3 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TreasureQuickBuyLevel.java @@ -0,0 +1,23 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class TreasureQuickBuyLevel extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.BUY_TREASURE_LEVEL_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.QuickBuyTreasureLevelRequest proto) throws Exception { + int level = proto.getLevel(); + ActivityLogic.getInstance().treasureBuyLevel(iSession,level,MessageTypeProto.MessageType.BUY_TREASURE_LEVEL_RESPONSE); + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 850022440..aac66b013 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -294,6 +294,7 @@ public class GlobalDataManaager { PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder); PlayerLogic.getInstance().flushUserdataEvery(user,fBuilder); user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0); + user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH,0); user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0); FriendLogic.getInstance().refreshState(session); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 62ce4ea57..030015ca7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1122,4 +1122,35 @@ public class ActivityLogic { // } MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } + + /** + * 戒灵秘宝直接购买等级 + * @param session + * @param messageType + * @throws Exception + */ + public void treasureBuyLevel(ISession session,int level,MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + int treasureLevel = user.getPlayerInfoManager().getTreasureLevel(); + if(level<=treasureLevel){ + MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"等级错误"); + return; + } + int num = 0; + int[][] cost= SSpecialConfig.getTwiceArrayValue(SSpecialConfig.SUNLONG_COST); + for(int i = level;i>treasureLevel;i--){ + num+=MathUtils.calABX(i,cost[1]); + } + int[][] costItems = new int[1][]; + int[] costTemp = {cost[0][0],num}; + costItems[0]=costTemp; + boolean result = ItemUtil.itemCost(user,costItems,BIReason.TREASURE_BUY_LEVEL_CONSUME,1); + if(result) { + user.getPlayerInfoManager().setTreasureLevel(level); + }else{ + MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"消耗道具不足"); + return; + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java index 3f5dbcb21..b62ca063f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SGlobalActivity; import com.ljsd.jieling.config.STreasureConfig; +import com.ljsd.jieling.config.STreasureSunlongConfig; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; @@ -18,10 +19,7 @@ import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class TreasureActivity extends AbstractActivity { @@ -31,15 +29,16 @@ public class TreasureActivity extends AbstractActivity { @Override public void initActivity(User user) throws Exception { + user.getPlayerInfoManager().setHadBuyTreasure(0); + LOGGER.info("戒灵秘宝初始化..."); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, sGlobalActivity.getId()); + user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_MONTH_REFRESH, sGlobalActivity.getId()); ActivityMission activityMission = new ActivityMission(); - List sTreasureConfigs = STreasureConfig.configByActivityIdMap.get(sGlobalActivity.getId()); - List misionIds = new ArrayList<>(sTreasureConfigs.size()); - for (STreasureConfig sTreasureConfig : sTreasureConfigs) { - misionIds.add(sTreasureConfig.getId()); + List levels = new ArrayList<>(STreasureSunlongConfig.levelTreasureConfigMap.keySet()); + if(levels.contains(0)){ + levels.remove(0); } - activityMission.initOtherMission(misionIds); + activityMission.initOtherMission(levels); long endTime = sGlobalActivity.getTimeLong(user.getPlayerInfoManager().getCreateTime(), 2) - 24 * 3600 * 1000; user.getActivityManager().setTrsendTime(endTime); user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission); @@ -67,93 +66,135 @@ public class TreasureActivity extends AbstractActivity { if (hadBuyTreasure == 1) { changeState = ActivityType.FINISH_TAKED; } - int treasureScore = playerInfoManager.getTreasureScore(); - CommonProto.Drop.Builder drop = null; - if (missionId == -1) { - List dropList = new ArrayList<>(10); - boolean canTakeFinalReward = true; - STreasureConfig finalSTreasureConfig = null; - Map willUpdateAcP = new HashMap<>(); - for (Map.Entry activityProgressInfoItem : activityMission.getActivityProgressInfoMap().entrySet()) { - Integer mineMision = activityProgressInfoItem.getKey(); - STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision); - if (sTreasureConfig.getType() == 2) { - finalSTreasureConfig = sTreasureConfig; + List dropList = new ArrayList<>(2); + Set missionIds = new HashSet<>(); + if(missionId==-1){ + for(int i = 1 ; i<=user.getPlayerInfoManager().getTreasureLevel();i++){ + Map progressInfoMap = activityMission.getActivityProgressInfoMap(); + int state =progressInfoMap.get(i).getState(); + if(state==changeState||state==ActivityType.FINISH_TAKED) { continue; } - ActivityProgressInfo value = activityProgressInfoItem.getValue(); - int stateTmp = value.getState(); - if (treasureScore >= sTreasureConfig.getPoints()) { - if (changeState != stateTmp) { - STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision); - if (stateTmp == ActivityType.WILL_TAKE) { - dropList.add(sTreasureConfigTmp.getReward()); - } - if (changeState == ActivityType.FINISH_TAKED) { - dropList.add(sTreasureConfigTmp.getTreasureReward()); - } - willUpdateAcP.put(mineMision, value); - } - } else { - canTakeFinalReward = false; - } - } - for (Map.Entry item : willUpdateAcP.entrySet()) { - ActivityProgressInfo value = item.getValue(); - value.setState(changeState); - activityMission.updateProgressInfo(item.getKey(), value); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, item.getKey()); - } - if (canTakeFinalReward && finalSTreasureConfig != null) { - ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId()); - int stateTmp = activityProgressInfo.getState(); - if (changeState != stateTmp) { - if (stateTmp == ActivityType.WILL_TAKE) { - dropList.add(finalSTreasureConfig.getReward()); - } - if (changeState == ActivityType.FINISH_TAKED) { - dropList.add(finalSTreasureConfig.getTreasureReward()); - } - activityProgressInfo.setState(changeState); - activityMission.updateProgressInfo(finalSTreasureConfig.getId(), activityProgressInfo); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, finalSTreasureConfig.getId()); - } - } - if (dropList.isEmpty()) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "no one can take"); - return; - } - drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); - } else { - STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId); - int type = sTreasureConfig.getType(); - ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); - int state = activityProgressInfo.getState(); - if (state == changeState) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); - return; - } - if (type == 1) { - List dropList = new ArrayList<>(2); - if (treasureScore < sTreasureConfig.getPoints()) { - MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish"); - return; - } - if (state == ActivityType.WILL_TAKE) { - dropList.add(sTreasureConfig.getReward()); - } - if (changeState == ActivityType.FINISH_TAKED) { - dropList.add(sTreasureConfig.getTreasureReward()); - } - drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); - activityProgressInfo.setState(changeState); - activityMission.updateProgressInfo(missionId, activityProgressInfo); - KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, missionId); - } - } + missionIds.add(i); + dropByState(dropList,state,changeState,i); + ActivityProgressInfo progressInfo = new ActivityProgressInfo(0,changeState); + activityMission.updateProgressInfo(i, progressInfo); + } + + }else{ + int state = activityMission.getActivityProgressInfoMap().get(missionId).getState(); + if(state==changeState||state==ActivityType.FINISH_TAKED){ + MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"该奖励已领取过"); + return; + } + dropByState(dropList,state,changeState,missionId); + ActivityProgressInfo progressInfo = new ActivityProgressInfo(0,changeState); + activityMission.updateProgressInfo(missionId, progressInfo); + missionIds.add(missionId); + } +// sendActivityProgress(session,activityMission,missionIds); + + + +// if (missionId == -1) { +// List dropList = new ArrayList<>(10); +// boolean canTakeFinalReward = true; +// STreasureConfig finalSTreasureConfig = null; +// Map willUpdateAcP = new HashMap<>(); +// for (Map.Entry activityProgressInfoItem : activityMission.getActivityProgressInfoMap().entrySet()) { +// Integer mineMision = activityProgressInfoItem.getKey(); +// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision); +// if (sTreasureConfig.getType() == 2) { +// finalSTreasureConfig = sTreasureConfig; +// continue; +// } +// ActivityProgressInfo value = activityProgressInfoItem.getValue(); +// int stateTmp = value.getState(); +// if (treasureScore >= sTreasureConfig.getPoints()) { +// if (changeState != stateTmp) { +// STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision); +// if (stateTmp == ActivityType.WILL_TAKE) { +// dropList.add(sTreasureConfigTmp.getReward()); +// } +// if (changeState == ActivityType.FINISH_TAKED) { +// dropList.add(sTreasureConfigTmp.getTreasureReward()); +// } +// willUpdateAcP.put(mineMision, value); +// } +// } else { +// canTakeFinalReward = false; +// } +// } +// for (Map.Entry item : willUpdateAcP.entrySet()) { +// ActivityProgressInfo value = item.getValue(); +// value.setState(changeState); +// activityMission.updateProgressInfo(item.getKey(), value); +// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, item.getKey()); +// } +// if (canTakeFinalReward && finalSTreasureConfig != null) { +// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId()); +// int stateTmp = activityProgressInfo.getState(); +// if (changeState != stateTmp) { +// if (stateTmp == ActivityType.WILL_TAKE) { +// dropList.add(finalSTreasureConfig.getReward()); +// } +// if (changeState == ActivityType.FINISH_TAKED) { +// dropList.add(finalSTreasureConfig.getTreasureReward()); +// } +// activityProgressInfo.setState(changeState); +// activityMission.updateProgressInfo(finalSTreasureConfig.getId(), activityProgressInfo); +// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, finalSTreasureConfig.getId()); +// } +// } +// if (dropList.isEmpty()) { +// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "no one can take"); +// return; +// } +// drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); +// } else { +// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId); +// int type = sTreasureConfig.getType(); +// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId); +// int state = activityProgressInfo.getState(); +// if (state == changeState) { +// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked"); +// return; +// } +// if (type == 1) { +// List dropList = new ArrayList<>(2); +// if (treasureScore < sTreasureConfig.getPoints()) { +// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish"); +// return; +// } +// if (state == ActivityType.WILL_TAKE) { +// dropList.add(sTreasureConfig.getReward()); +// } +// if (changeState == ActivityType.FINISH_TAKED) { +// dropList.add(sTreasureConfig.getTreasureReward()); +// } +// activityProgressInfo.setState(changeState); +// activityMission.updateProgressInfo(missionId, activityProgressInfo); +// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, missionId); +// } +// } + + CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); } + private void dropByState(List dropList,int curState,int targetState,int missionId){ + STreasureSunlongConfig rewardConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(missionId); + if(curState==ActivityType.WILL_TAKE){ + dropList.add(rewardConfig.getReward()); + if(targetState == ActivityType.FINISH_TAKED){ + dropList.add(rewardConfig.getTreasureReward()); + } + }else if(curState==ActivityType.HAD_TAKED){ + if(targetState == ActivityType.FINISH_TAKED){ + dropList.add(rewardConfig.getTreasureReward()); + } + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 473d03273..859b0640f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -62,7 +62,7 @@ public class PlayerManager extends MongoBase { private int headFrame; - private int treasureScore; //孙龙的宝藏分数 + private int treasureLevel; //孙龙的宝藏等级 private int hadBuyTreasure; //是否已购 @@ -94,18 +94,18 @@ public class PlayerManager extends MongoBase { this.setRootCollection(User._COLLECTION_NAME); } - public int getTreasureScore() { - return treasureScore; + public int getTreasureLevel() { + return treasureLevel; } - public void addTreasureScore(int treasureScore) { - this.treasureScore += treasureScore; - setTreasureScore(this.treasureScore); + public void addTreasureLevel() { + this.treasureLevel++; + setTreasureLevel(this.treasureLevel); } - public void setTreasureScore(int treasureScore){ - this.treasureScore = treasureScore; - updateString("treasureScore", treasureScore); + public void setTreasureLevel(int treasureLevel){ + this.treasureLevel = treasureLevel; + updateString("treasureLevel", treasureLevel); } public int getHadBuyTreasure() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 677963798..793a5ba49 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -2,11 +2,19 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.*; +import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.*; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.mission.main.*; +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.MathUtils; +import com.ljsd.jieling.util.MessageUtil; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -26,9 +34,12 @@ public class UserMissionManager extends MongoBase { private CumulationData beginCumulationData = new CumulationData(); private CumulationData treasureCumulationData = new CumulationData(); + private CumulationData treasureWeekCumulationData = new CumulationData(); + private CumulationData treasureMonthCumulationData = new CumulationData(); private CumulationData sevenHappyCumulationData = new CumulationData(); public void openMission(User user,GameEvent event,Map> missionTypeEnumListMap, Object... parm){ + ISession session= OnlineUserManager.getSessionByUid(user.getId()); switch (event){ case VIP_LEVLUP:{ int vipLevle= (int)parm[0]; @@ -54,24 +65,53 @@ public class UserMissionManager extends MongoBase { updateString("dailyMissionIdsType",dailyMissionIdsType); break; case TREASH_REFRESH: - List sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]); - treasureMissionIdsType.getDoingMissionIds().clear(); - treasureMissionIdsType.getFinishMissionIds().clear(); - treasureMissionIdsType.getRewardedMissionIds().clear(); - treasureMissionIdsType.getTakeTimes().clear(); - List missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION); - for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){ - treasureMissionIdsType.getDoingMissionIds().add(sTreasureTaskConfig.getId()); - missionStateChangeInfos.add(new MissionStateChangeInfo(sTreasureTaskConfig.getId(), MissionState.DOING,0)); - } - user.getPlayerInfoManager().setTreasureScore(0); - treasureCumulationData= new CumulationData(); - updateString("treasureMissionIdsType",treasureMissionIdsType); - updateString("treasureCumulationData",treasureCumulationData); - break; +// List sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]); +// treasureMissionIdsType.getDoingMissionIds().clear(); +// treasureMissionIdsType.getFinishMissionIds().clear(); +// treasureMissionIdsType.getRewardedMissionIds().clear(); +// treasureMissionIdsType.getTakeTimes().clear(); +// List missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION); +// for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){ +// treasureMissionIdsType.getDoingMissionIds().add(sTreasureTaskConfig.getId()); +// missionStateChangeInfos.add(new MissionStateChangeInfo(sTreasureTaskConfig.getId(), MissionState.DOING,0)); +// } +// user.getPlayerInfoManager().setTreasureScore(0); +// treasureCumulationData= new CumulationData(); +// updateString("treasureMissionIdsType",treasureMissionIdsType); +// updateString("treasureCumulationData",treasureCumulationData); + + int[] refreshIds =resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData); + CommonProto.RefreshTask.Builder task = treasureIndicationBuild(1, refreshIds); + PlayerInfoProto.TreasureRefreshIndication indication1 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task.build()).build(); + MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication1,true); + break; + case TREASH_WEEK_REFRESH: + int[] dailyRefreshIds = resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData); + int[] weekRefreshIds = resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData); + CommonProto.RefreshTask.Builder task1 = treasureIndicationBuild(1, dailyRefreshIds); + CommonProto.RefreshTask.Builder task2 = treasureIndicationBuild(2, weekRefreshIds); + PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task1.build()).addTasks(task2.build()).build(); + MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication2,true); + + break; + case TREASH_MONTH_REFRESH: + System.out.println("戒灵秘宝月任务初始化"); + int[] dailyRefreshIds1 = resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData); + int[] weekRefreshIds1 = resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData); + int[] monthRefreshIds1 = resetTreasureTaskInfo(3,missionTypeEnumListMap,treasureMonthCumulationData); + + CommonProto.RefreshTask.Builder task3 = treasureIndicationBuild(1, dailyRefreshIds1); + CommonProto.RefreshTask.Builder task4 = treasureIndicationBuild(2, weekRefreshIds1); + CommonProto.RefreshTask.Builder task5 = treasureIndicationBuild(3, monthRefreshIds1); + PlayerInfoProto.TreasureRefreshIndication indication3 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task3.build()).addTasks(task4.build()).addTasks(task5.build()).build(); + MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication3,true); + +// openMission(user,GameEvent.TREASH_WEEK_REFRESH,missionTypeEnumListMap,parm); + break; case SERVENHAPPY_REFRESH: - sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]); + List sTreasureTaskConfigs = null; + sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]); sevenHappyMissionType.getDoingMissionIds().clear(); sevenHappyMissionType.getFinishMissionIds().clear(); sevenHappyMissionType.getRewardedMissionIds().clear(); @@ -188,14 +228,29 @@ public class UserMissionManager extends MongoBase { } } if(!treasureMissionIdsType.getDoingMissionIds().isEmpty() ){ - List sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByTypeMap.get(missionType.getMissionTypeValue()); + List sTreasureTaskConfigs = STreasureSunlongTaskConfig.sTreasureTaskConfigListByTypeMapTmp.get(missionType.getMissionTypeValue()); if(sTreasureTaskConfigs!=null && user.getActivityManager().getTrsendTime()>System.currentTimeMillis()){ CumulationData.Result result = treasureCumulationData.updateData(missionType, parm); + CumulationData.Result weekResult = treasureWeekCumulationData.updateData(missionType, parm); + CumulationData.Result monthResult = treasureMonthCumulationData.updateData(missionType, parm); + if(result!=null){ treasureMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureCumulationData); updateString("treasureCumulationData",treasureCumulationData); updateString("treasureMissionIdsType",treasureMissionIdsType); } + if(weekResult!=null){ + treasureMissionIdsType.calCumulationDataResult(user,weekResult,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureWeekCumulationData); + updateString("treasureWeekCumulationData",treasureWeekCumulationData); + updateString("treasureMissionIdsType",treasureMissionIdsType); + } + if(monthResult!=null){ + treasureMissionIdsType.calCumulationDataResult(user,monthResult,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureMonthCumulationData); + + updateString("treasureMonthCumulationData",treasureMonthCumulationData); + updateString("treasureMissionIdsType",treasureMissionIdsType); + } + } } @@ -219,6 +274,47 @@ public class UserMissionManager extends MongoBase { } } + + private int[] resetTreasureTaskInfo(int type,Map> missionTypeEnumListMap,CumulationData treasureCumulationData){ + int[] typeMissionNum = SSpecialConfig.getOnceArrayValue(SSpecialConfig.SUNLONG_DAILYTASKS); + List taskTypeMap = STreasureSunlongTaskConfig.taskTypeMap.get(type); + for(Integer treasure:taskTypeMap){ + if(treasureMissionIdsType.getDoingMissionIds().contains(treasure)){ + treasureMissionIdsType.getDoingMissionIds().remove(treasure); + } + if(treasureMissionIdsType.getFinishMissionIds().contains(treasure)){ + treasureMissionIdsType.getFinishMissionIds().remove(treasure); + } + if(treasureMissionIdsType.getRewardedMissionIds().get(treasure)){ + treasureMissionIdsType.getRewardedMissionIds().clear(treasure); + } + } + int[][] randomTask = new int[taskTypeMap.size()][]; + for(int i = 0 ; i missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION); + for(Integer task:tasks){ + treasureMissionIdsType.getDoingMissionIds().add(task); + missionStateChangeInfos.add(new MissionStateChangeInfo(task, MissionState.DOING,0)); + } + treasureCumulationData.reset(); + updateString("treasureMissionIdsType",treasureMissionIdsType); + updateString("treasureCumulationData",treasureCumulationData); + return tasks; + } + private CommonProto.RefreshTask.Builder treasureIndicationBuild(int type,int[] refreshIds){ + CommonProto.RefreshTask.Builder task = CommonProto.RefreshTask.newBuilder().setType(type); + for(int i = 0;i takeTimesMap = treasureMissionIdsType.getTakeTimes(); - List sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get(treasureActivityId); - for(STreasureTaskConfig sTreasureTaskConfig:sTreasureTaskConfigs){ - int state = 2; - int missionId = sTreasureTaskConfig.getId(); - int sendProgress =0; - Integer takeTimes = null; - if(!rewardedMissionIds.get(missionId)){ - takeTimes = takeTimesMap.get(missionId); - if(takeTimes == null){ - takeTimes=0; - } - int finishParm = sTreasureTaskConfig.getTaskValue()[1][0]; - int doingProgress = getDoingProgress(user,treasureCumulationData,sTreasureTaskConfig.getTaskType(),sTreasureTaskConfig.getTaskValue()[0]); - if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){ - sendProgress =1; - }else{ - sendProgress = (doingProgress - takeTimes * finishParm) / finishParm; - } - int times = sTreasureTaskConfig.getTimes(); - if( (sendProgress + takeTimes)>times){ - sendProgress =times-takeTimes; - } - if(sendProgress>0){ - state=1; - }else{ - state=0; - } - if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ - sendProgress = doingProgress; - } - - }else{ - takeTimes = takeTimesMap.get(missionId); + for(Integer id:treasureMissionIdsType.getDoingMissionIds()){ + STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(id); + int progress = config.getTaskValue()[1][0]; + switch (config.getType()){ + case 1: + progress = getDoingProgress(user,treasureCumulationData,config.getTaskType(),config.getTaskValue()[0]); + break; + case 2: + progress = getDoingProgress(user,treasureWeekCumulationData,config.getTaskType(),config.getTaskValue()[0]); + break; + case 3: + progress = getDoingProgress(user,treasureMonthCumulationData,config.getTaskType(),config.getTaskValue()[0]); + break; + default: + break; } - - if(takeTimes == null){ - takeTimes=0; + missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(id).setState(0).setType(treasuremissionType).setProgress(progress).setTakeTimes(0).build()); + } + for(Integer id:treasureMissionIdsType.getFinishMissionIds()){ + STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(id); + int progress = config.getTaskValue()[1][0]; + missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(id).setState(1).setType(treasuremissionType).setProgress(progress).setTakeTimes(0).build()); + } + for(Map.Entry taskId:STreasureSunlongTaskConfig.treasureTaskConfig.entrySet()){ + if(treasureMissionIdsType.getRewardedMissionIds().get(taskId.getKey())){ + missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(taskId.getKey()).setState(2).setType(treasuremissionType).setProgress(taskId.getValue().getTaskValue()[1][0]).setTakeTimes(0).build()); } - - - missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(treasuremissionType).setProgress(sendProgress).setTakeTimes(takeTimes).build()); } } @@ -362,13 +349,18 @@ public class MissionLoigc { Map> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION); if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ - int takeTimes = missionStateChangeInfos.get(0).getProgress(); - missionStateChangeInfos.get(0).setProgress(0); - int score = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId).getPoints() * takeTimes; - user.getPlayerInfoManager().addTreasureScore(score); + +// ItemUtil.drop(user,STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId).getIntegral(),BIReason.TREASURE_SCORE); KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId); Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,""); - PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setTreasureScore(user.getPlayerInfoManager().getTreasureScore()).build(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD); + + STreasureSunlongConfig levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(user.getPlayerInfoManager().getTreasureLevel()); + while(ItemUtil.itemCost(user,levelConfig.getIntegral(), BIReason.TREASURE_LEVEL_UP_CONCUME,1)){ + user.getPlayerInfoManager().addTreasureLevel(); + levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(user.getPlayerInfoManager().getTreasureLevel()); + } + PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).setTreasureScore(user.getPlayerInfoManager().getTreasureLevel()).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); return; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index 7c96fb4cc..18320b09f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -34,7 +34,7 @@ public class MissionEventDistributor { eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess()); eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess()); - eventProcessor.put(GameEvent.TREASH_REFRESH,new TreasureRefreshEventProcess()); + eventProcessor.put(GameEvent.TREASH_MONTH_REFRESH,new TreasureRefreshEventProcess()); eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new TreasureRefreshEventProcess()); eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AbstractMissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AbstractMissionType.java index 2a8a97668..d9031c787 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AbstractMissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/AbstractMissionType.java @@ -50,7 +50,7 @@ public abstract class AbstractMissionType { } public Set getDoingMissionIds() { - return doingMissionIds; + return doingMissionIds; } public void addFinishMissionId(int missionId) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java index 9aa5306ee..36a0ff9d5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/TreasureMissionType.java @@ -1,11 +1,15 @@ package com.ljsd.jieling.logic.mission.main; +import com.ljsd.jieling.config.STreasureSunlongConfig; +import com.ljsd.jieling.config.STreasureSunlongTaskConfig; import com.ljsd.jieling.config.STreasureTaskConfig; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.logic.dao.CumulationData; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionLoigc; import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.MissionType; +import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MathUtils; import java.util.HashMap; @@ -22,57 +26,22 @@ public class TreasureMissionType extends AbstractMissionType{ } - public void rewardMission(User user,int missionId, List missionTypeEnumListMap, CumulationData cumulationData){ - STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId); - if(sTreasureTaskConfig == null){return;} - int doingProgress = MissionLoigc.getDoingProgress(user,cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]); + public void rewardMission(User user,int missionId, List missionTypeEnumListMap, CumulationData cumulationData) throws Exception { + STreasureSunlongTaskConfig taskConfig = STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId); + if(taskConfig == null){return;} +// int doingProgress = MissionLoigc.getDoingProgress(user,cumulationData, taskConfig.getTaskType(), taskConfig.getTaskValue()[0]); //完成 - int finishParm = sTreasureTaskConfig.getTaskValue()[1][0]; - Integer takeTimes = this.takeTimes.get(missionId); - if(takeTimes == null){ - takeTimes = 0; - } - int reallyTakeTimes = (doingProgress - takeTimes * finishParm) / finishParm; - if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){ - reallyTakeTimes =1; - } - if(reallyTakeTimes>0){ - if(sTreasureTaskConfig.getTimes()>0){ - reallyTakeTimes = MathUtils.setBetweenWithMax(reallyTakeTimes,0,sTreasureTaskConfig.getTimes() - takeTimes); - } - int hadTakes = takeTimes + reallyTakeTimes; - if(sTreasureTaskConfig.getTimes()>0 && hadTakes>=sTreasureTaskConfig.getTimes()){ - hadTakes = sTreasureTaskConfig.getTimes(); - } - int[][] rewward = sTreasureTaskConfig.getRewward(); - int[][] rewardFinal = new int[rewward.length][]; - if(rewward.length>0){ - for(int i=0;i0 && this.takeTimes.get(missionId)>=sTreasureTaskConfig.getTimes()){ - getRewardedMissionIds().set(missionId); - getDoingMissionIds().remove(missionId); - getFinishMissionIds().remove(missionId); - MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.REWARD,reallyTakeTimes,hadTakes); - if(rewward.length>0){ - stateChangeInfo.setRewwards(rewardFinal); - } - missionTypeEnumListMap.add(stateChangeInfo); - return; - }else{ - MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.DOING,reallyTakeTimes,hadTakes); - if(rewward.length>0){ - stateChangeInfo.setRewwards(rewardFinal); - } - missionTypeEnumListMap.add(stateChangeInfo); - - } +// int finishParm = taskConfig.getTaskValue()[1][0]; +// if(doingProgress missionStateChangeInfos, CumulationData cumulationData) { Set doingMissionIds = getDoingMissionIds(); - List sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByTypeMap.get(result.subType.getMissionTypeValue()); + List sTreasureTaskConfigs = STreasureSunlongTaskConfig.sTreasureTaskConfigListByTypeMapTmp.get(result.subType.getMissionTypeValue()); if(sTreasureTaskConfigs == null){ return; } - for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){ + for(STreasureSunlongTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){ int id = sTreasureTaskConfig.getId(); if(!doingMissionIds.contains(sTreasureTaskConfig.getId())){ continue; } int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]); - int times = sTreasureTaskConfig.getTimes(); //完成 int finishParm = sTreasureTaskConfig.getTaskValue()[1][0]; - Integer takeTimes = this.takeTimes.get(id); - if(takeTimes == null){ - takeTimes = 0; - } - if(times!=0 && (finishParm>0 && (takeTimes + doingProgress)/finishParm>=times || (doingProgress!=0 && finishParm<0 && (-takeTimes + doingProgress)>=finishParm) )){ + if( doingProgress>=finishParm){ doingMissionIds.remove(id); getFinishMissionIds().add(id); - MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,times-takeTimes,takeTimes); + MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,doingProgress,0); missionStateChangeInfos.add(missionStateChangeInfo); continue; } @@ -112,18 +76,19 @@ public class TreasureMissionType extends AbstractMissionType{ continue; } - int sendProgress = (doingProgress - takeTimes * finishParm) / finishParm; + int sendProgress = doingProgress; if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){ sendProgress = doingProgress; } if(sendProgress>=finishParm){ - MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,sendProgress,takeTimes); + MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,sendProgress,0); missionStateChangeInfos.add(missionStateChangeInfo); }else{ - MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.DOING,sendProgress,takeTimes); + MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.DOING,sendProgress,0); missionStateChangeInfos.add(missionStateChangeInfo); } } + } public Map getTakeTimes() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index c0dfa3a8b..2e66a100a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -4,6 +4,7 @@ import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.HandlerLogicThread; import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.logic.OnlineUserManager; @@ -14,6 +15,7 @@ import com.ljsd.jieling.logic.dao.StoreInfo; import com.ljsd.jieling.logic.dao.StoreManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.network.server.ProtocolsManager; @@ -551,6 +553,10 @@ public class StoreLogic { return; } user.getPlayerInfoManager().setHadBuyTreasure(1); + + MailLogic.getInstance().sendMail(session.getUid(),SErrorCodeEerverConfig.getI18NMessage("secret_extra_title"),SErrorCodeEerverConfig.getI18NMessage("secret_extra_txt"),SSpecialConfig.getStringValue(SSpecialConfig.SUNLONG_REWARD),(int)(TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME); + MailLogic.getInstance().sendMail(session.getUid(),SErrorCodeEerverConfig.getI18NMessage("secret_daily_title"),SErrorCodeEerverConfig.getI18NMessage("secret_daily_txt"),SSpecialConfig.getStringValue(SSpecialConfig.SUNLONG_INTEGRAL),(int)(TimeUtils.now()/1000), Global.MAIL_EFFECTIVE_TIME); + MessageUtil.sendMessage(session, 1,msgId, null, true); } }