From ea8ab53cb81ea694a741173cd7afec3127ae780c Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 10 Oct 2019 10:04:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=92=E7=81=B5=E7=A7=98=E5=AE=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/config/SSpecialConfig.java | 21 +++++- .../config/STreasureSunlongTaskConfig.java | 15 +++-- .../jieling/config/STreasureTaskConfig.java | 5 +- .../com/ljsd/jieling/globals/BIReason.java | 2 + .../handler/GameGM/GMRequestHandler.java | 2 +- .../jieling/handler/ServerZeroHandler.java | 27 +++++++- .../activity/TreasureQuickBuyLevel.java | 23 +++++++ .../jieling/logic/activity/ActivityLogic.java | 31 +++++++++ .../logic/activity/TreasureActivity.java | 32 +++++---- .../jieling/logic/dao/UserMissionManager.java | 66 ++++++++++++++++--- .../jieling/logic/mission/MissionLoigc.java | 15 +++-- .../mission/main/TreasureMissionType.java | 37 +++++------ .../ljsd/jieling/logic/store/StoreLogic.java | 6 ++ 13 files changed, 224 insertions(+), 58 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TreasureQuickBuyLevel.java 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 7b9cd59ce..fb7649100 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SSpecialConfig.java @@ -27,7 +27,9 @@ public class SSpecialConfig implements BaseConfig { public static final String FRIENDAMOUNT_LIMIT = "FriendAmount_limit";//好友上限 public static final String FRIENDAPPLYAMOUNT_LIMIT = "FriendApplyAmount_limit";//好友申请上限 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 { @@ -55,13 +57,27 @@ public class SSpecialConfig implements BaseConfig { } public static int[] getOnceArrayValue(String key){ String value = enumers.get(key); - String[] array = value.split("#"); + 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 int getId() { @@ -76,5 +92,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/STreasureSunlongTaskConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongTaskConfig.java index e6b390d3d..485b37727 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongTaskConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STreasureSunlongTaskConfig.java @@ -28,16 +28,23 @@ public class STreasureSunlongTaskConfig implements BaseConfig { 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()){ - entry.getValue(); - if(!taskTypeMap.containsKey(entry.getValue().getType())){ - taskTypeMap.put(entry.getValue().getType(),new ArrayList<>()); + STreasureSunlongTaskConfig entryValue = entry.getValue(); + if(!taskTypeMap.containsKey(entryValue.getType())){ + taskTypeMap.put(entryValue.getType(),new ArrayList<>()); } - taskTypeMap.get(entry.getValue().getType()).add(entry.getKey()); + if(!sTreasureTaskConfigListByTypeMapTmp.containsKey(entryValue.getTaskType())){ + sTreasureTaskConfigListByTypeMapTmp.put(entryValue.getTaskType(),new ArrayList<>()); + } + sTreasureTaskConfigListByTypeMapTmp.get(entryValue.getTaskType()).add(entryValue); + taskTypeMap.get(entryValue.getType()).add(entry.getKey()); } } 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 89d69a44d..bd03c9bb9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -154,4 +154,6 @@ public interface BIReason { int TREASURE_LEVEL_UP_CONCUME = 1038;//孙龙宝藏等级提升消耗 + int TREASURE_BUY_LEVEL_CONSUME = 1039;//孙龙宝藏等级快速购买 + } \ 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 a6f598192..79783b2ba 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 @@ -330,7 +330,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/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/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index d48bf60a7..8694b62de 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 @@ -1068,4 +1068,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 f4df29595..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 @@ -19,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 { @@ -32,6 +29,7 @@ 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_MONTH_REFRESH, sGlobalActivity.getId()); @@ -69,16 +67,21 @@ public class TreasureActivity extends AbstractActivity { changeState = ActivityType.FINISH_TAKED; } List dropList = new ArrayList<>(2); + Set missionIds = new HashSet<>(); if(missionId==-1){ - for (Map.Entry entry : activityMission.getActivityProgressInfoMap().entrySet()) { - if(entry.getKey() progressInfoMap = activityMission.getActivityProgressInfoMap(); + int state =progressInfoMap.get(i).getState(); + if(state==changeState||state==ActivityType.FINISH_TAKED) { + continue; } + 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){ @@ -86,7 +89,14 @@ public class TreasureActivity extends AbstractActivity { 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; 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 84c2d5a96..928c28cef 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,17 @@ 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; @@ -33,6 +39,7 @@ public class UserMissionManager extends MongoBase { 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]; @@ -58,17 +65,33 @@ public class UserMissionManager extends MongoBase { updateString("dailyMissionIdsType",dailyMissionIdsType); break; case TREASH_REFRESH: - resetTreasureTaskInfo(1,missionTypeEnumListMap,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: - resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData); - resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData); + 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("戒灵秘宝月任务初始化"); - resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData); - resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData); - resetTreasureTaskInfo(3,missionTypeEnumListMap,treasureMonthCumulationData); + 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: List sTreasureTaskConfigs = null; @@ -189,14 +212,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); + } + } } @@ -221,7 +259,7 @@ public class UserMissionManager extends MongoBase { } - private void resetTreasureTaskInfo(int type,Map> missionTypeEnumListMap,CumulationData treasureCumulationData){ + 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){ @@ -242,7 +280,7 @@ public class UserMissionManager extends MongoBase { temp[1] = STreasureSunlongTaskConfig.treasureTaskConfig.get(taskTypeMap.get(i)).getWeight(); randomTask[i] = temp; } - int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask, typeMissionNum[type-1]); + int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask,5);// typeMissionNum[type-1] List missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION); for(Integer task:tasks){ treasureMissionIdsType.getDoingMissionIds().add(task); @@ -251,7 +289,15 @@ public class UserMissionManager extends MongoBase { 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 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 doingProgress = MissionLoigc.getDoingProgress(user,cumulationData, taskConfig.getTaskType(), taskConfig.getTaskValue()[0]); //完成 - 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; } @@ -80,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 e4ac7617e..16e237942 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); } }