diff --git a/serverlogic/src/main/java/com/ljsd/jieling/battle/BattleManager.java b/serverlogic/src/main/java/com/ljsd/jieling/battle/BattleManager.java new file mode 100644 index 000000000..b1d07026b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/battle/BattleManager.java @@ -0,0 +1,21 @@ +package com.ljsd.jieling.battle; + + + +import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.CommonProto; + +import java.util.HashMap; +import java.util.Map; + +public class BattleManager { + + static Map fightTeamInfoMap = new HashMap<>(); + + public static void snapUserFightInfo(User mine, int myteamId){ + CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(mine,myteamId,false); + fightTeamInfoMap.put(mine.getId(),fightTeamInfo); + } + +} 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 6e90c10cf..e3706dcc3 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 @@ -92,7 +92,9 @@ public class CumulationData { public int wearEquipTimes;// 妖灵师穿戴装备件数达到 public Map synthesisHeroStarTimesMap = new HashMap<>();// 碎片合成%s星妖灵师次数达到 - public Map heroUpStarTimesMap = new HashMap<>();// 碎片合成%s星妖灵师次数达到 + public Map heroUpStarTimesMap = new HashMap<>();//将妖灵师%s进阶次数达到 + + public Map heroUpSomeStarTimesMap = new HashMap<>();// 进阶x星卡牌个数达到 public int consumerStamina; //消耗体力数量达到 @@ -100,6 +102,12 @@ public class CumulationData { public Set differentHeros = new HashSet<>(); + public int buyGenerStoreTimes; + + public int givePresents ; //好友赠礼 + + public int friendNums; + //任务重置 @@ -141,6 +149,10 @@ public class CumulationData { differentHeros.clear(); heroUpStarTimesMap.clear(); heroInTeamNums=0; + buyGenerStoreTimes=0; + heroUpSomeStarTimesMap.clear(); + givePresents=0; + friendNums=0; } private void clearArray(int[] source){ @@ -189,6 +201,14 @@ public class CumulationData { heroUpStarTimesMap.put(heroTid,count+1); } + public void updateHeroUpSomeStarTimes(int heroStar){ + Integer count = heroUpSomeStarTimesMap.get(heroStar); + if(count == null){ + count = 0; + } + heroUpStarTimesMap.put(heroStar,count+1); + } + public int getSecretRandomCount() { return secretRandomCount; 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 95b215013..7b0f2f405 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 @@ -108,6 +108,7 @@ public class UserMissionManager extends MongoBase { case DAILY_MISSION_REWARD:{ dailyMissionIdsType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.DAILYMISSION)); calCumulationDataResult(user,MissionType.FINSIH_DAYILY_TIMES,missionTypeEnumListMap,(int)parm[0]); + updateString("dailyMissionIdsType",dailyMissionIdsType); } break; case TREASURE_MISSION_REWARD:{ @@ -123,6 +124,7 @@ public class UserMissionManager extends MongoBase { int score = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId).getPoints(); calCumulationDataResult(user,MissionType.SENVER_HAPPY,missionTypeEnumListMap,score); } + updateString("sevenHappyMissionType",sevenHappyMissionType); } break; case BEGINNER_MISSION_REWARD:{ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java index 2852e42b2..4e1aff117 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/friend/FriendLogic.java @@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.dao.FriendManager; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MessageTypeProto; @@ -272,6 +273,7 @@ public class FriendLogic { initFriendGriveAndRreward(friendId, uid, friendManager, friendfriendManager); sendFriendInfoIndication(uid,friendId,2); + user.getUserMissionManager().onGameEvent(user,GameEvent.FRIEND_NUMS,1); break; case 2://拒绝 applyFriends = friendManager.getApplyFriends(); @@ -280,7 +282,8 @@ public class FriendLogic { } break; case 3://全部同意 - allApplyFriend(uid, friendManager, friends, applyFriends, maxFriends); + int nums = allApplyFriend(uid, friendManager, friends, applyFriends, maxFriends); + user.getUserMissionManager().onGameEvent(user,GameEvent.FRIEND_NUMS,nums); break; case 4://全部拒绝 friendManager.setApplyFriends(new CopyOnWriteArrayList<>()); @@ -289,10 +292,11 @@ public class FriendLogic { MessageUtil.sendMessage(iSession, 1, msgId, null, true); } - private void allApplyFriend(int uid, FriendManager friendManager, List friends, List applyFriends, int maxFriends) throws Exception { + private int allApplyFriend(int uid, FriendManager friendManager, List friends, List applyFriends, int maxFriends) throws Exception { User friendUser; FriendManager friendfriendManager; List friendFriendList; + int nums =0; for (Integer applyfriendId :applyFriends){ friendUser = UserManager.getUser(applyfriendId); friendfriendManager = friendUser.getFriendManager(); @@ -311,7 +315,9 @@ public class FriendLogic { friendManager.addFriendId(applyfriendId); initFriendGriveAndRreward(applyfriendId, uid, friendManager, friendfriendManager); sendFriendInfoIndication(uid,applyfriendId,2); + nums++; } + return nums; } private void initFriendGriveAndRreward(int friendId, int uid, FriendManager friendManager, FriendManager friendfriendManager) { @@ -377,6 +383,7 @@ public class FriendLogic { FriendManager friendManager = user.getFriendManager(); List friends = friendManager.getFriends(); Map giveMap = friendManager.getGiveMap(); + int times = 0; if (type == 1) {//赠送一个人 if (!friends.contains(friendId)) { MessageUtil.sendErrorResponse(iSession, 0, msgId, "没有该好友"); @@ -398,6 +405,7 @@ public class FriendLogic { if(check){ friendManager1.updateHaveRewardMap(uid,1); sendFriendStatedication(uid,friendId,2); + times++; } }else{ //赠送全部好友 for (Integer friendUserId : friends) { @@ -415,9 +423,11 @@ public class FriendLogic { if(check){ friendManager1.updateHaveRewardMap(uid,1); sendFriendStatedication(uid,friendId,2); + times++; } } } + user.getUserMissionManager().onGameEvent(user, GameEvent.GIVE_PRESENT,times); MessageUtil.sendMessage(iSession, 1, msgId, null, true); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index b1523d79f..37d7b9da9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -638,7 +638,7 @@ public class HeroLogic { targetHero.upStar( 1 ); Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),targetHero.getStar())); targetHero.setStarBreakId(scHeroRankUpConfig.getId()); - user.getUserMissionManager().onGameEvent(user,GameEvent.HERO_UP,2,targetHero.getTemplateId()); + user.getUserMissionManager().onGameEvent(user,GameEvent.HERO_UP,2,targetHero.getTemplateId(),targetHero.getStar()); MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true); if(targetHero.getStar()>=7){ String message = SErrorCodeEerverConfig.getI18NMessage("lamp_rankup_hero_content", new Object[]{user.getPlayerInfoManager().getNickName(), scHero.getReadingName(),targetHero.getStar()}); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java index ec6c4681d..ee229c642 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java @@ -46,4 +46,7 @@ public enum GameEvent { HERO_IN_TEAM, // 上阵卡牌数量 + GIVE_PRESENT,//赠送体力 + FRIEND_NUMS,//好友数量 + } 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 f5b2b3695..2cac7cea1 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 @@ -559,6 +559,21 @@ public class MissionLoigc { case HERO_IN_TEAM_NUMS: count = cumulationData.heroInTeamNums; break; + case BUY_GROCERY_TIMES: + count = cumulationData.buyGenerStoreTimes; + break; + case FRIEND_NUMS: + count = cumulationData.friendNums; + break; + case GIVE_FRIEND_STAMIN_TIMES: + count = cumulationData.givePresents; + break; + case HERO_UP_SOME_STAR_TIMES: + num = cumulationData.heroUpSomeStarTimesMap.get(missionSubType[0]); + if(num!=null){ + count = num; + } + break; default: count = 0; break; 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 14402d6f9..7f3845859 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 @@ -1,5 +1,8 @@ package com.ljsd.jieling.logic.mission; +import java.util.HashMap; +import java.util.Map; + public enum MissionType { RECRUITMENT_RANDOM_HEROES(1), //群英征募 群英招募次数 COLLECT_QUALITY_HERO (2), //获得某品质妖灵师 获得SSR、SR品质的妖灵师数量 @@ -62,9 +65,16 @@ public enum MissionType { SYNTHESIS_HERO_STAR_TIMES(47),//碎片合成%s星妖灵师次数达到 USER_CONSUMER_STAMINA(48),//消耗体力数量达到 COLLECT_DIFFERENT_HEROS(49), // 收集不同妖灵师数目达到 - ONE_HERO_UP_STAR_TIMES(50), // 收集不同妖灵师数目达到 + ONE_HERO_UP_STAR_TIMES(50), // 将妖灵师%s进阶次数达到 HERO_IN_TEAM_NUMS(51), // 上阵卡牌数量 + + BUY_GROCERY_TIMES(52),//杂货店购买次数:%s + FRIEND_NUMS(53),//拥有好友的个数:%:%s + GIVE_FRIEND_STAMIN_TIMES(54),//赠送好友体力次数:%s + HERO_UP_SOME_STAR_TIMES(55),//进阶x星卡牌个数达到:%s + + ; private int missionType; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java index 431e0f648..262c481de 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/BuyGoodsManager.java @@ -3,18 +3,23 @@ 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.MissionType; +import com.ljsd.jieling.logic.store.StoreType; public class BuyGoodsManager implements BaseDataManager { @Override public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { int itemId = (int)parm[0]; int itemNum = (int)parm[1]; + int storeType = (int)parm[2]; if(missionType == MissionType.BUY_GOLD_TIMES && itemId == Global.GOLD){ data.buyGoldTimes = data.buyGoldTimes + itemNum; return new CumulationData.Result(missionType); }else if(missionType == MissionType.BUY_STAMINA_TIMES && itemId == Global.STAMINA){ data.buyStaminaTimes = data.buyStaminaTimes + itemNum; return new CumulationData.Result(missionType); + }else if(missionType == MissionType.BUY_GROCERY_TIMES && storeType == StoreType.GENERAL_STORE.getType()){ + data.buyGenerStoreTimes = data.buyGenerStoreTimes + itemNum; + return new CumulationData.Result(missionType); } return null; } 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 1d4628082..cf526c882 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 @@ -46,6 +46,7 @@ public class DataManagerDistributor { judges.put(MissionType.BUY_GOLD_TIMES,new BuyGoodsManager()); judges.put(MissionType.BUY_STAMINA_TIMES,new BuyGoodsManager()); + judges.put(MissionType.BUY_GROCERY_TIMES,new BuyGoodsManager()); judges.put(MissionType.WORKSHOP_CREATE_EQUIP_NUMS,new WorkShopCreateEquipTimesManager()); @@ -73,6 +74,7 @@ public class DataManagerDistributor { judges.put(MissionType.HERO_BREAK_TIMES,new HeroUpDataManager()); judges.put(MissionType.HERO_UP_STAR_TIMES,new HeroUpDataManager()); judges.put(MissionType.ONE_HERO_UP_STAR_TIMES,new HeroUpDataManager()); + judges.put(MissionType.HERO_UP_SOME_STAR_TIMES,new HeroUpDataManager()); judges.put(MissionType.TAKE_CHAPTER_REWARD_TIMES,new TakeActivityRewardHandler()); judges.put(MissionType.TAKE_ONLINE_REWARD_TIMES,new TakeActivityRewardHandler()); @@ -86,6 +88,10 @@ public class DataManagerDistributor { judges.put(MissionType.HERO_IN_TEAM_NUMS,new HeroInTeamNumsDataManager()); + judges.put(MissionType.GIVE_FRIEND_STAMIN_TIMES,new GivePresentDataManager()); + + judges.put(MissionType.FRIEND_NUMS,new FriendNumDataManager()); + judges.put(MissionType.VIP_LEVEL,new DefaultDataManager()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FriendNumDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FriendNumDataManager.java new file mode 100644 index 000000000..111bddbce --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/FriendNumDataManager.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 FriendNumDataManager implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int nums = (int)parm[0]; + data.friendNums+=nums; + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GivePresentDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GivePresentDataManager.java new file mode 100644 index 000000000..8809e6094 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GivePresentDataManager.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 GivePresentDataManager implements BaseDataManager{ + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + int times = (int)parm[0]; + data.givePresents+=times; + return new CumulationData.Result(missionType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroUpDataManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroUpDataManager.java index 1b84977c9..7f57da890 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroUpDataManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/HeroUpDataManager.java @@ -7,13 +7,24 @@ public class HeroUpDataManager implements BaseDataManager { @Override public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { int type = (int) parm[0]; - if(missionType == MissionType.HERO_BREAK_TIMES && type == 1){ - data.heroBreakTimes++; - }else if(missionType == MissionType.HERO_UP_STAR_TIMES && type == 2){ - data.heroUpStarTimes++; - }else if(missionType == MissionType.ONE_HERO_UP_STAR_TIMES && type == 2){ - int heroTid = (int) parm[1]; - data.updateHeroUpStarTimes(heroTid); + if(type == 1){ + if(missionType == MissionType.HERO_BREAK_TIMES){ + data.heroBreakTimes++; + }else{ + return null; + } + }else if(type == 2){ + if(missionType == MissionType.HERO_UP_STAR_TIMES){ + data.heroUpStarTimes++; + }else if(missionType == MissionType.ONE_HERO_UP_STAR_TIMES){ + int heroTid = (int) parm[1]; + data.updateHeroUpStarTimes(heroTid); + }else if(missionType == MissionType.HERO_UP_SOME_STAR_TIMES){ + int heroStar = (int) parm[2]; + data.updateHeroUpSomeStarTimes(heroStar); + }else{ + return null; + } }else{ return null; } 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 884698196..2f60fa804 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 @@ -150,6 +150,7 @@ public class MissionEventDistributor { typeList = new ArrayList<>(); typeList.add(MissionType.BUY_GOLD_TIMES); typeList.add(MissionType.BUY_STAMINA_TIMES); + typeList.add(MissionType.BUY_GROCERY_TIMES); eventEnumListMap.put(GameEvent.BUY_MATERIAL,typeList); eventProcessor.put(GameEvent.BUY_MATERIAL,new CumulationDataEventProcessor()); @@ -189,6 +190,7 @@ public class MissionEventDistributor { typeList.add(MissionType.HERO_BREAK_TIMES); typeList.add(MissionType.HERO_UP_STAR_TIMES); typeList.add(MissionType.ONE_HERO_UP_STAR_TIMES); + typeList.add(MissionType.HERO_UP_SOME_STAR_TIMES); eventEnumListMap.put(GameEvent.HERO_UP,typeList); eventProcessor.put(GameEvent.HERO_UP,new CumulationDataEventProcessor()); @@ -219,6 +221,16 @@ public class MissionEventDistributor { eventEnumListMap.put(GameEvent.HERO_IN_TEAM,typeList); eventProcessor.put(GameEvent.HERO_IN_TEAM,new CumulationDataEventProcessor()); + typeList = new ArrayList<>(); + typeList.add(MissionType.GIVE_FRIEND_STAMIN_TIMES); + eventEnumListMap.put(GameEvent.GIVE_PRESENT,typeList); + eventProcessor.put(GameEvent.GIVE_PRESENT,new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.FRIEND_NUMS); + eventEnumListMap.put(GameEvent.FRIEND_NUMS,typeList); + eventProcessor.put(GameEvent.FRIEND_NUMS,new CumulationDataEventProcessor()); + } private static final ThreadLocal>> threadMissionChangeList = 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 a12ad15f6..72a74b094 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 @@ -305,7 +305,7 @@ public class StoreLogic { } CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.STORE_BUY_ITEM); if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() != StoreType.GIFT_STORE.getType()){ - user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum); + user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum,SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType()); } if(itemId==10005){ Poster.getPoster().dispatchEvent(new GoldEvent(user.getId(),itemNum));