diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/STaskConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/STaskConfig.java index 3163f6fc0..a0cf477fe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/STaskConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/STaskConfig.java @@ -3,6 +3,9 @@ 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 ="TaskConfig") @@ -20,10 +23,22 @@ public class STaskConfig implements BaseConfig { private static Map sTaskConfigMap; + private static Map> sTaskConfigByTypeMap; + @Override public void init() throws Exception { - sTaskConfigMap = STableManager.getConfig(STaskConfig.class); + Map config = STableManager.getConfig(STaskConfig.class); + Map> configTmp = new HashMap<>(); + for(STaskConfig sTaskConfig : config.values()){ + int taskType = sTaskConfig.getTaskType(); + if(!configTmp.containsKey(taskType)){ + configTmp.put(taskType,new ArrayList<>()); + } + configTmp.get(taskType).add(sTaskConfig); + } + sTaskConfigMap = config; + sTaskConfigByTypeMap = configTmp; } @@ -31,6 +46,10 @@ public class STaskConfig implements BaseConfig { return sTaskConfigMap.get(missionId); } + public static List getsTaskConfigByType(int type) { + return sTaskConfigByTypeMap.get(type); + } + public int getId() { return id; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index 2e8bb22fc..c4735026e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.globals; public interface Global { int STAMINA = 2; // 体力id + int GEM = 16; // 妖精id int SEND_CARD_COUNT = 20; // 每页发送卡牌个数 int SEND_ITEM_COUNT = 200; // 每页发送道具个数 int SEND_EQUIP_COUNT = 20; // 每页发送装备个数 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index 539a698b0..5d3cf0af4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -1,6 +1,6 @@ package com.ljsd.jieling.logic.dao; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.data.DataManagerDistributor; import java.util.HashMap; @@ -8,14 +8,13 @@ import java.util.Map; public class CumulationData { - // key:itemid,value 数量 - private Map consumeMaterialMap = new HashMap<>(); // 消耗材料 - //获取材料 // private Map getMaterialMap = new HashMap<>(); //key: 抽卡类型 value 抽卡次数 - private Map randomCountMap = new HashMap<>(); // 抽卡次数统计 + // private Map randomCountMap = new HashMap<>(); // 抽卡次数统计 + + public int recruitmentRands; //群英征募 群英招募次数 /** @@ -41,9 +40,8 @@ public class CumulationData { /** * 获得某品质装备数量 - * key:equipTid value:数量 */ - private Map sEquipCountMap=new HashMap<>(); // 装备数量统计 + private int[] sEquipQualityCount =new int[5]; // 装备数量统计 private int secretRandomCount; // 抽取秘盒次数 @@ -53,39 +51,44 @@ public class CumulationData { private int arenaScore; + private int consumeGem ; - public void updateData(GameEvent gameEvent, Object...parm) throws Exception { - DataManagerDistributor.updateData(this, gameEvent,parm); + + public Result updateData(MissionType missionType, Object...parm) throws Exception { + return DataManagerDistributor.updateData(this, missionType,parm); } + public static class Result { + public MissionType subType; + public int param; + public Map> param2; + public long value; + public Result(MissionType subType) { + this.subType = subType; + } + public Result(MissionType subType, long value) { + this.subType = subType; + this.value = value; + } + public Result(MissionType subType, int param, long value) { + this.subType = subType; + this.param = param; + this.value = value; + } - - public Map getConsumeMaterialMap() { - return consumeMaterialMap; - } - - public void setConsumeMaterialMap(Map consumeMaterialMap) { - this.consumeMaterialMap = consumeMaterialMap; - } - - public Map getRandomCountMap() { - return randomCountMap; - } - - public void setRandomCountMap(Map randomCountMap) { - this.randomCountMap = randomCountMap; + public Result(MissionType subType, Map> param2) { + this.subType = subType; + this.param2 = param2; + } } public Map getsHeroCountMap() { return sHeroCountMap; } - public void setsHeroCountMap(Map sHeroCountMap) { - this.sHeroCountMap = sHeroCountMap; - } public Map getStoryFightCountMap() { return storyFightCountMap; @@ -95,14 +98,6 @@ public class CumulationData { this.storyFightCountMap = storyFightCountMap; } - public Map getsEquipCountMap() { - return sEquipCountMap; - } - - public void setsEquipCountMap(Map sEquipCountMap) { - this.sEquipCountMap = sEquipCountMap; - } - public int getSecretRandomCount() { return secretRandomCount; } @@ -138,4 +133,16 @@ public class CumulationData { public void setArenaScore(int arenaScore) { this.arenaScore = arenaScore; } + + public int getConsumeGem() { + return consumeGem; + } + + public void setConsumeGem(int consumeGem) { + this.consumeGem = consumeGem; + } + + public void updateEquipQuality(int quality ){ + sEquipQualityCount[quality-1]=sEquipQualityCount[quality-1]+1; + } } 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 d5ad894f5..a53536d9c 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 @@ -5,6 +5,7 @@ import com.ljsd.jieling.config.SVipLevelConfig; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameMisionType; +import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.event.MissionEventDistributor; import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; import com.ljsd.jieling.logic.mission.main.VipMissionIdsType; @@ -18,14 +19,14 @@ public class UserMissionManager extends MongoBase { //数据累加项 private CumulationData cumulationData = new CumulationData(); - public void openMission(GameEvent event, Object... parm){ + public void openMission(User user,GameEvent event, Object... parm){ switch (event){ case VIP_LEVLUP:{ int vipLevle= (int)parm[0]; SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevle); int[] openRules = sVipLevelConfig.getOpenRules(); for(int missionId:openRules){ - vipMissionIdsType.openMission(missionId); + vipMissionIdsType.openMission(user,missionId); } updateString("vipMissionIdsType",vipMissionIdsType); } @@ -47,11 +48,13 @@ public class UserMissionManager extends MongoBase { - public void calCumulationDataResult(User user,GameEvent gameEvent, Map> missionTypeEnumListMap , Object...parm) throws Exception { - cumulationData.updateData(gameEvent,parm); - vipMissionIdsType.calCumulationDataResult(user,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData); - updateString("cumulationData",cumulationData); - updateString("vipMissionIdsType",vipMissionIdsType); + public void calCumulationDataResult(User user, MissionType missionType, Map> missionTypeEnumListMap , Object...parm) throws Exception { + CumulationData.Result result = cumulationData.updateData(missionType, parm); + if(result!=null){ + vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData); + updateString("cumulationData",cumulationData); + updateString("vipMissionIdsType",vipMissionIdsType); + } } public VipMissionIdsType getVipMissionIdsType() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index 2d4796324..62f4d974c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -143,7 +143,7 @@ public class MissionLoigc { case USER_FORCE: count = user.getPlayerInfoManager().getMaxForce(); break; - case USER_CONSUMER_MATERIAL: + case USER_CONSUMER_GEM: count=cumulationData.getConsumeMaterialMap().get(missionSubType); break; case USER_WORKSHOP_LEVEL: diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java index c7dcffa99..9b3ba99ed 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionType.java @@ -14,7 +14,7 @@ public enum MissionType { USER_LEVEL(9), // 玩家等级 玩家等级 USER_FORCE(10), // 战力评分 玩家战力达到一定目标 - USER_CONSUMER_MATERIAL(11), // 累计消耗元宝 玩家累计消耗元宝数量 + USER_CONSUMER_GEM(11), // 累计消耗元宝 玩家累计消耗元宝数量 USER_WORKSHOP_LEVEL(12), // 炼造等级 玩家炼造等级 USER_GET_EQUIP_QUALITY(13), //获得某品质装备数量 玩家累计获得传说、史诗等品质装备的数量 @@ -31,10 +31,14 @@ public enum MissionType { ; - private int missionId; + private int missionType; - private MissionType(int missionId) { - this.missionId = missionId; + public int getMissionTypeValue() { + return missionType; + } + + private MissionType(int missionType) { + this.missionType = missionType; } public static MissionType findByMissionId(int missionTypeId){ @@ -60,7 +64,7 @@ public enum MissionType { case 10: return USER_FORCE; case 11: - return USER_CONSUMER_MATERIAL; + return USER_CONSUMER_GEM; case 12: return USER_WORKSHOP_LEVEL; case 13: diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java index e980d1a4c..994f8d795 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaChallengeManager.java @@ -1,17 +1,23 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; public class ArenaChallengeManager implements BaseDataManager{ @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object... parm) { - //int fightResult = (int)parm[0]; - int myscore = (int)parm[1]; - data.setArenaFightNums(data.getArenaFightNums()+1); - if(myscore > data.getArenaScore()){ - data.setArenaScore(myscore); + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + CumulationData.Result result = null; + if(missionType == MissionType.ARENA_CHALLENEGE_NUMS){ + data.setArenaFightNums(data.getArenaFightNums()+1); + result = new CumulationData.Result(missionType); + }else if(missionType == MissionType.ARENA_SCORE){ + int myscore = (int)parm[1]; + if(myscore > data.getArenaScore()){ + data.setArenaScore(myscore); + result = new CumulationData.Result(missionType); + } } + return result; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java index 3ac161822..d77f46d71 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BaseDataManager.java @@ -2,7 +2,8 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; public interface BaseDataManager { - public void updateData(CumulationData data, GameEvent gameEvent, Object ...parm); + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object ...parm); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ConsumerMaterialDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ConsumerMaterialDataManager.java index 078868baa..960d79749 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ConsumerMaterialDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ConsumerMaterialDataManager.java @@ -1,23 +1,25 @@ package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; import java.util.Map; public class ConsumerMaterialDataManager implements BaseDataManager{ @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object... parm) { + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + CumulationData.Result result = null; Map consumeMaterialMapTmp = (Map) parm[0]; - Map consumeMaterialMap = data.getConsumeMaterialMap(); - for(Map.Entry item : consumeMaterialMapTmp.entrySet()){ - int count =item.getValue(); - Integer itemId = item.getKey(); - Integer cacheCount = consumeMaterialMap.get(itemId); - if(cacheCount!=null){ - count += cacheCount; + if(missionType == MissionType.USER_CONSUMER_GEM){ + Integer count = consumeMaterialMapTmp.get(Global.GEM); + if(count!=null){ + data.setConsumeGem(data.getConsumeGem() + count); + result = new CumulationData.Result(missionType); } - consumeMaterialMap.put(itemId,count); } + + return result; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index 575cc5153..851cf757e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -1,29 +1,53 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; import java.util.HashMap; import java.util.Map; public class DataManagerDistributor { - private static Map judges = new HashMap<>(); + private static Map judges = new HashMap<>(); public static void init(){ - judges.put(GameEvent.RANDOM_HERO,new RandomHeroDataManager()); - judges.put(GameEvent.GET_HERO,new GetHeroManager()); - judges.put(GameEvent.HERO_LEVEL_UP,new HeroLevelUpManager()); - judges.put(GameEvent.ARENA_CHALLENGE,new ArenaChallengeManager()); - judges.put(GameEvent.CONSUMER_MATERIAL,new ConsumerMaterialDataManager()); - judges.put(GameEvent.GET_EQUIP,new GetEquipDataManager()); - judges.put(GameEvent.KILLINVASIONBOSS,new KillInvasionBossDataManager()); + judges.put(MissionType.RECRUITMENT_RANDOM_HEROES,new RandomHeroDataManager()); + judges.put(MissionType.COLLECT_QUALITY_HERO,new GetHeroManager()); + judges.put(MissionType.HERO_LEVLE_COUNT,new HeroLevelUpManager()); + + + judges.put(MissionType.POKEMON_ADVANCED,new DefaultDataManager()); + judges.put(MissionType.POKEMON_FORCE ,new DefaultDataManager()); + judges.put(MissionType.POKEMON_ALL_FORCE ,new DefaultDataManager()); + + judges.put(MissionType.ARENA_CHALLENEGE_NUMS,new ArenaChallengeManager()); + judges.put(MissionType.ARENA_SCORE,new ArenaChallengeManager()); + + judges.put(MissionType.USER_LEVEL,new DefaultDataManager()); + judges.put(MissionType.USER_FORCE,new DefaultDataManager()); + + judges.put(MissionType.USER_CONSUMER_GEM,new DefaultDataManager()); + + judges.put(MissionType.USER_WORKSHOP_LEVEL,new DefaultDataManager()); + + judges.put(MissionType.USER_GET_EQUIP_QUALITY,new GetEquipDataManager()); + + judges.put(MissionType.LEVEL_STORY_PASS,new DefaultDataManager()); + judges.put(MissionType.GENERAL_STORY_PASS,new DefaultDataManager()); + judges.put(MissionType.HERO_STORY_PASS,new DefaultDataManager()); + + judges.put(MissionType.KILL_INVASIONBOSS,new KillInvasionBossDataManager()); + judges.put(MissionType.SECRETBOX_TIMES,new SecretboxRandomManager()); + judges.put(MissionType.EQUIP_FORCE_NUMS,new DefaultDataManager()); + + + } - public static void updateData(CumulationData data, GameEvent type, Object...parm) throws Exception { - BaseDataManager updater = judges.get(type); + public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception { + BaseDataManager updater = judges.get(missionType); if(updater==null){ - return; + return null; } - updater.updateData(data, type,parm); + return updater.updateData(data, missionType,parm); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DefaultDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DefaultDataManager.java new file mode 100644 index 000000000..f6286a787 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DefaultDataManager.java @@ -0,0 +1,11 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +public class DefaultDataManager implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetEquipDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetEquipDataManager.java index bd825667e..4939a754a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetEquipDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetEquipDataManager.java @@ -1,19 +1,20 @@ package com.ljsd.jieling.logic.mission.data; +import com.ljsd.jieling.config.SEquipConfig; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; + -import java.util.Map; public class GetEquipDataManager implements BaseDataManager{ @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object... parm) { - Map equipCountMap = data.getsEquipCountMap(); + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + CumulationData.Result result = null; int equipTid = (int)parm[0]; - Integer count = equipCountMap.get(equipTid); - if(count == null){ - count =0; + if(missionType == MissionType.USER_GET_EQUIP_QUALITY){ + data.updateEquipQuality(SEquipConfig.getsEquipConfigById(equipTid).getQuality()); + result = new CumulationData.Result(missionType); } - equipCountMap.put(equipTid,count+1); + return result; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetHeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetHeroManager.java index 33ca3e192..6feda1d12 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetHeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GetHeroManager.java @@ -2,13 +2,13 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; import java.util.Map; public class GetHeroManager implements BaseDataManager { @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object ...parm) { + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object ...parm) { Map sHeroCountMap = data.getsHeroCountMap(); int count =1; int heroTid = (int)parm[0]; @@ -17,5 +17,6 @@ public class GetHeroManager implements BaseDataManager { count+=sHeroCountMap.get(heroTid); } sHeroCountMap.put(heroTid,count); + return null; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroLevelUpManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroLevelUpManager.java index 20a477ec9..fc6ed7f73 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroLevelUpManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroLevelUpManager.java @@ -1,13 +1,13 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; import java.util.Map; public class HeroLevelUpManager implements BaseDataManager{ @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object... parm) { + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { int oldLevle = (int)parm[0]; int newLevle = (int)parm[1]; Map heroLevleCountMap = data.getHeroLevleCountMap(); @@ -17,6 +17,8 @@ public class HeroLevelUpManager implements BaseDataManager{ count=0; } heroLevleCountMap.put(oldLevle,count+1); + } + return null; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/KillInvasionBossDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/KillInvasionBossDataManager.java index 9d26a6f3b..60b596ccb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/KillInvasionBossDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/KillInvasionBossDataManager.java @@ -1,11 +1,12 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.mission.MissionType; public class KillInvasionBossDataManager implements BaseDataManager{ @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object... parm) { + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { data.setKillInvasionbossCount(data.getKillInvasionbossCount() +1); + return null; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/RandomHeroDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/RandomHeroDataManager.java index fee66623c..7590bef01 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/RandomHeroDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/RandomHeroDataManager.java @@ -1,19 +1,16 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.mission.GameEvent; - -import java.util.Map; +import com.ljsd.jieling.logic.mission.MissionType; public class RandomHeroDataManager implements BaseDataManager{ @Override - public void updateData(CumulationData data, GameEvent gameEvent, Object... parm) { - Map randomCountMap = data.getRandomCountMap(); - int randomType = (int)parm[0]; + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { int count =(int)parm[1]; - if(randomCountMap.containsKey(randomType)){ - count += randomCountMap.get(randomType); + CumulationData.Result result = null; + if(missionType == MissionType.RECRUITMENT_RANDOM_HEROES){ + result = new CumulationData.Result(missionType, ++data.recruitmentRands); } - randomCountMap.put(randomType,count); + return result; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/SecretboxRandomManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/SecretboxRandomManager.java new file mode 100644 index 000000000..90e5b61cc --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/SecretboxRandomManager.java @@ -0,0 +1,13 @@ +package com.ljsd.jieling.logic.mission.data; + + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.mission.MissionType; + +public class SecretboxRandomManager implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + data.setSecretRandomCount(data.getSecretRandomCount() + (int)parm[0]); + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/BaseGameEventProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/BaseGameEventProcessor.java index 38aca04d2..4e2d42edd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/BaseGameEventProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/BaseGameEventProcessor.java @@ -1,6 +1,5 @@ package com.ljsd.jieling.logic.mission.event; -import com.ljsd.jieling.logic.dao.UserMissionManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameMisionType; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/CumulationDataEventProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/CumulationDataEventProcessor.java index c2e2fa07d..f9249e00a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/CumulationDataEventProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/CumulationDataEventProcessor.java @@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.mission.event; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameMisionType; +import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; import java.util.List; @@ -11,6 +12,9 @@ import java.util.Map; public class CumulationDataEventProcessor implements BaseGameEventProcessor{ @Override public void onGameEvent(User user, Map> misionTypeListMap, GameEvent event, Object... parm) throws Exception { - user.getUserMissionManager().calCumulationDataResult(user,event,misionTypeListMap,parm); + List typeList = MissionEventDistributor.eventEnumListMap.get(event); + for (MissionType type : typeList) { + user.getUserMissionManager().calCumulationDataResult(user,type,misionTypeListMap,parm); + } } } 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 cf1e847b7..942e6d782 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 @@ -4,10 +4,7 @@ import com.ljsd.jieling.config.STaskConfig; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserMissionManager; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.mission.GameEvent; -import com.ljsd.jieling.logic.mission.GameMisionType; -import com.ljsd.jieling.logic.mission.MissionLoigc; -import com.ljsd.jieling.logic.mission.MissionState; +import com.ljsd.jieling.logic.mission.*; import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -28,23 +25,93 @@ import java.util.Map; public class MissionEventDistributor { private static final Logger LOGGER = LoggerFactory.getLogger(MissionEventDistributor.class); private static Map eventProcessor = new HashMap<>(); + protected static Map> eventEnumListMap = new HashMap<>(); public static void init(){ + List typeList = new ArrayList<>(); eventProcessor.put(GameEvent.VIP_LEVLUP,new VipLevelUpEventProces()); - eventProcessor.put(GameEvent.STORY_FIGHT,new StoryFightEventProcessor()); + + typeList.add(MissionType.RECRUITMENT_RANDOM_HEROES); + eventEnumListMap.put(GameEvent.RANDOM_HERO,typeList); eventProcessor.put(GameEvent.RANDOM_HERO,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.COLLECT_QUALITY_HERO); + eventEnumListMap.put(GameEvent.GET_HERO,typeList); eventProcessor.put(GameEvent.GET_HERO,new CumulationDataEventProcessor()); + + + + typeList = new ArrayList<>(); + typeList.add(MissionType.HERO_LEVLE_COUNT); + eventEnumListMap.put(GameEvent.HERO_LEVEL_UP,typeList); eventProcessor.put(GameEvent.HERO_LEVEL_UP,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.POKEMON_ADVANCED); + eventEnumListMap.put(GameEvent.POKEMON_ADVANCED,typeList); eventProcessor.put(GameEvent.POKEMON_ADVANCED,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.POKEMON_FORCE); + typeList.add(MissionType.POKEMON_ALL_FORCE); + eventEnumListMap.put(GameEvent.POKEMON_UPLEVEL,typeList); eventProcessor.put(GameEvent.POKEMON_UPLEVEL,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.ARENA_CHALLENEGE_NUMS); + typeList.add(MissionType.ARENA_SCORE); + eventEnumListMap.put(GameEvent.ARENA_CHALLENGE,typeList); eventProcessor.put(GameEvent.ARENA_CHALLENGE,new CumulationDataEventProcessor()); + + + typeList = new ArrayList<>(); + typeList.add(MissionType.USER_LEVEL); + eventEnumListMap.put(GameEvent.USER_LEVELUP,typeList); eventProcessor.put(GameEvent.USER_LEVELUP,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.USER_FORCE); + eventEnumListMap.put(GameEvent.USER_FORCE_CHANGE,typeList); eventProcessor.put(GameEvent.USER_FORCE_CHANGE,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.USER_CONSUMER_GEM); + eventEnumListMap.put(GameEvent.CONSUMER_MATERIAL,typeList); eventProcessor.put(GameEvent.CONSUMER_MATERIAL,new CumulationDataEventProcessor()); + + + typeList = new ArrayList<>(); + typeList.add(MissionType.USER_WORKSHOP_LEVEL); + eventEnumListMap.put(GameEvent.WORKSHOP_LEVELUP,typeList); eventProcessor.put(GameEvent.WORKSHOP_LEVELUP,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.USER_GET_EQUIP_QUALITY); + typeList.add(MissionType.EQUIP_FORCE_NUMS); + eventEnumListMap.put(GameEvent.GET_EQUIP,typeList); eventProcessor.put(GameEvent.GET_EQUIP,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.LEVEL_STORY_PASS); + typeList.add(MissionType.GENERAL_STORY_PASS); + typeList.add(MissionType.HERO_STORY_PASS); + eventEnumListMap.put(GameEvent.STORY_FIGHT,typeList); + eventProcessor.put(GameEvent.STORY_FIGHT,new CumulationDataEventProcessor()); + + + typeList = new ArrayList<>(); + typeList.add(MissionType.KILL_INVASIONBOSS); + eventEnumListMap.put(GameEvent.KILLINVASIONBOSS,typeList); + eventProcessor.put(GameEvent.KILLINVASIONBOSS,new CumulationDataEventProcessor()); + + + typeList = new ArrayList<>(); + typeList.add(MissionType.SECRETBOX_TIMES); + eventEnumListMap.put(GameEvent.SECRETBOX,typeList); eventProcessor.put(GameEvent.SECRETBOX,new CumulationDataEventProcessor()); + eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/StoryFightEventProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/StoryFightEventProcessor.java deleted file mode 100644 index 4e151b3ee..000000000 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/StoryFightEventProcessor.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ljsd.jieling.logic.mission.event; - - -import com.ljsd.jieling.logic.dao.UserMissionManager; -import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.mission.GameEvent; -import com.ljsd.jieling.logic.mission.GameMisionType; -import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo; - -import java.util.List; -import java.util.Map; - -public class StoryFightEventProcessor implements BaseGameEventProcessor { - - @Override - public void onGameEvent(User user, Map> missionTypeEnumListMap, GameEvent event, Object... parm) { - - } -} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/VipLevelUpEventProces.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/VipLevelUpEventProces.java index 9621c2a37..c60fbd595 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/VipLevelUpEventProces.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/VipLevelUpEventProces.java @@ -12,6 +12,6 @@ import java.util.Map; public class VipLevelUpEventProces implements BaseGameEventProcessor { @Override public void onGameEvent(User user, Map> missionTypeEnumListMap, GameEvent event, Object... parm) { - user.getUserMissionManager().openMission(event, parm); + user.getUserMissionManager().openMission(user,event, parm); } } 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 63adf9171..44a30a808 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 @@ -19,7 +19,7 @@ public abstract class AbstractMissionType { //已领取的任务,在可控范围内,使用map存储,利于查找 private BitSet rewardedMissionIds = new BitSet(1024); - public abstract void openMission(int missionId); + public abstract void openMission(User user,int missionId); public abstract int[] reward(int missionId); @@ -33,7 +33,7 @@ public abstract class AbstractMissionType { missionTypeEnumListMap.add(stateChangeInfo); } - public abstract void calCumulationDataResult(User user,List missionStateChangeInfos, CumulationData cumulationData); + public abstract void calCumulationDataResult(User user,CumulationData.Result result,List missionStateChangeInfos, CumulationData cumulationData); public boolean checkIsNew(int missionId){ if(doingMissionIds.contains(missionId)){ @@ -53,16 +53,11 @@ public abstract class AbstractMissionType { return doingMissionIds; } - public void addFinishMissionId(int missionId) throws Exception { + public void addFinishMissionId(int missionId) { finishMissionIds.add(missionId); } public Set getFinishMissionIds() { return finishMissionIds; } - - - public BitSet getRewardedMissionIds() { - return rewardedMissionIds; - } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java index f36328587..e32a0612d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/main/VipMissionIdsType.java @@ -16,11 +16,19 @@ public class VipMissionIdsType extends AbstractMissionType{ } @Override - public void openMission(int missionId) { + public void openMission(User user,int missionId) { if(!checkIsNew(missionId)){ return; } - addDoingMission(missionId); + STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionId); + boolean isFinish = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1]; + if(!isFinish){ + addDoingMission(missionId); + }else{ + addFinishMissionId(missionId); + } + + } @Override @@ -31,12 +39,17 @@ public class VipMissionIdsType extends AbstractMissionType{ @Override - public void calCumulationDataResult(User user,List missionStateChangeInfos, CumulationData cumulationData) { + public void calCumulationDataResult(User user,CumulationData.Result result,List missionStateChangeInfos, CumulationData cumulationData) { Set doingMissionIds = getDoingMissionIds(); - Iterator doingIterator = doingMissionIds.iterator(); - while (doingIterator.hasNext()){ - Integer missionId = doingIterator.next(); - STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionId); + List sTaskConfigs = STaskConfig.getsTaskConfigByType(result.subType.getMissionTypeValue()); + if(sTaskConfigs == null){ + return; + } + for(STaskConfig sTaskConfig : sTaskConfigs){ + int missionId = sTaskConfig.getId(); + if(!doingMissionIds.contains(missionId)){ + continue; + } boolean isFinish = MissionLoigc.getDoingProgress(user,cumulationData,sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1]; if(!isFinish){ MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId, @@ -62,7 +75,7 @@ public class VipMissionIdsType extends AbstractMissionType{ } } missionStateChangeInfos.add(finishInfo); - doingIterator.remove(); + doingMissionIds.remove(missionId); getFinishMissionIds().add(missionId); }