东海寻仙活动:初版未测试
parent
927cbee86c
commit
f7848be28d
|
@ -10,6 +10,8 @@ import com.ljsd.jieling.logic.dao.HeroManager;
|
|||
import com.ljsd.jieling.logic.dao.SixiangProfessionInfo;
|
||||
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.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
@ -59,7 +61,7 @@ public class FaBaoSoulUpLvRequestHandler extends BaseHandler<HeroInfoProto.FaBao
|
|||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.FA_BAO_SOUL_UPLV_RESPONSE_VALUE,null,true);
|
||||
}
|
||||
|
||||
private void updateFaBaoGongMingLv(User user,int bookId){
|
||||
private void updateFaBaoGongMingLv(User user,int bookId) throws Exception {
|
||||
STrumpBook sTrumpBook=STrumpBook.sTrumpBookMap.get(bookId);
|
||||
int[]trumpList=sTrumpBook.getTrumpList();
|
||||
int gongmingLv=0;
|
||||
|
@ -75,6 +77,11 @@ public class FaBaoSoulUpLvRequestHandler extends BaseHandler<HeroInfoProto.FaBao
|
|||
}
|
||||
}
|
||||
int skillId=sTrumpBook.getSkillList()[gongmingLv-1][1];
|
||||
Integer integer = user.getHeroManager().getFaBaoGongMingSkillMap().getOrDefault(bookId, 0);
|
||||
if (integer == 0){
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TREASURE_SKILL_NUM, sTrumpBook.getQuality(), 1);
|
||||
}
|
||||
user.getHeroManager().putFaBaoGongMingSkillMap(bookId,skillId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,11 +17,7 @@ import org.springframework.stereotype.Component;
|
|||
import rpc.protocols.HeroInfoProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
|
|
|
@ -45,6 +45,7 @@ import rpc.protocols.PlayerInfoProto;
|
|||
import util.MathUtils;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -1488,7 +1489,6 @@ public class ActivityLogic implements IEventHandler{
|
|||
if(activities.isEmpty()){
|
||||
return new HashSet<>();
|
||||
}else{
|
||||
|
||||
Set<Integer> objects = activities.stream().filter(n -> user.getActivityManager().getActivityMissionMap().keySet().contains(n.getId())).map(sGlobalActivity -> sGlobalActivity.getId()).collect(Collectors.toSet());
|
||||
return objects;
|
||||
}
|
||||
|
@ -1998,4 +1998,26 @@ public class ActivityLogic implements IEventHandler{
|
|||
activity.takeAllReward(session);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据活动类型获取活动id
|
||||
* 只支持同时同时存在一个活动的类型
|
||||
* @param user
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
public int getActivityByTypeToFirst(User user, int type){
|
||||
List<SGlobalActivity> activities = SGlobalActivity.getsGlobalActivityMapByType(type);
|
||||
if (activities.isEmpty() || activities == null){
|
||||
return 0;
|
||||
}
|
||||
Map<Integer, ActivityMission> map = user.getActivityManager().getActivityMissionMap();
|
||||
for (SGlobalActivity activity : activities) {
|
||||
ActivityMission mission = map.get(activity.getId());
|
||||
if (mission != null && mission.getActivityState() == ActivityType.OPEN_STATE){
|
||||
return activity.getId();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,6 +117,7 @@ public interface ActivityType {
|
|||
int EXPLORE_EXPECT_ACTIVITY=96;//探索达人活动
|
||||
int POWER_RICE_ACTIVITY = 97;//战力冲刺
|
||||
|
||||
int DonghaiXunxian = 98;//东海寻仙
|
||||
|
||||
int NEW_GENERAL_ATTACK = 200;//新将来袭
|
||||
int HERO_STAR = 500;
|
||||
|
|
|
@ -106,7 +106,8 @@ public enum ActivityTypeEnum {
|
|||
DAILY_SPECIAL(ActivityType.DAILY_SPECIAL,DefaultEmptyActivity::new),//每日特惠
|
||||
fESTIVAL_LOGIN_ACTIVITY(ActivityType.fESTIVAL_LOGIN_ACTIVITY,NewEightActivity::new),//节日登录活动
|
||||
EXPLORE_EXPECT_ACTIVITY(ActivityType.EXPLORE_EXPECT_ACTIVITY,ExploreExpectActivity::new),
|
||||
POWER_RICE_ACTIVITY(ActivityType.POWER_RICE_ACTIVITY,PowerRiceActivity::new)//战力冲刺
|
||||
POWER_RICE_ACTIVITY(ActivityType.POWER_RICE_ACTIVITY,PowerRiceActivity::new),//战力冲刺
|
||||
DONGHAI_XUNXIAN_ACTIVITY(ActivityType.DonghaiXunxian,DonghaiXunxianActivity::new),//东海寻仙
|
||||
;
|
||||
|
||||
private int type;
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
|
||||
public class DonghaiXunxianActivity extends AbstractActivity{
|
||||
|
||||
public DonghaiXunxianActivity(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_INIT);
|
||||
}
|
||||
}
|
|
@ -221,9 +221,22 @@ public class CumulationData {
|
|||
//新将招募次数
|
||||
public int new_hero_zhaomu;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 方寸寻宝次数
|
||||
*/
|
||||
public int fangcunxunbao_num;
|
||||
/**
|
||||
* 天地烘炉次数
|
||||
*/
|
||||
public int tiandihonglu_num;
|
||||
/**
|
||||
* 获取quality品质的变身卡num张
|
||||
*/
|
||||
public Map<Integer, Integer> get_transfiguration_num = new HashMap<>();
|
||||
/**
|
||||
* 激活quality品质的法宝聚灵技能num个
|
||||
*/
|
||||
public Map<Integer, Integer> activate_treasure_skill_num = new HashMap<>();
|
||||
|
||||
|
||||
public Result updateData(MissionType missionType, Object...parm) throws Exception {
|
||||
|
@ -237,8 +250,6 @@ public class CumulationData {
|
|||
public long value;
|
||||
public int missionTimeType;
|
||||
|
||||
|
||||
|
||||
public Result(MissionType subType, long value) {
|
||||
this.subType = subType;
|
||||
this.value = value;
|
||||
|
@ -468,4 +479,60 @@ public class CumulationData {
|
|||
public void setHardstage_node(int hardstage_node) {
|
||||
this.hardstage_node = hardstage_node;
|
||||
}
|
||||
|
||||
public int getFangcunxunbao_num() {
|
||||
return fangcunxunbao_num;
|
||||
}
|
||||
|
||||
public void setFangcunxunbao_num(int fangcunxunbao_num) {
|
||||
this.fangcunxunbao_num = fangcunxunbao_num;
|
||||
}
|
||||
|
||||
public void addFangcunxunbao_num(int fangcunxunbao_num){
|
||||
this.fangcunxunbao_num+=fangcunxunbao_num;
|
||||
}
|
||||
|
||||
public int getTiandihonglu_num() {
|
||||
return tiandihonglu_num;
|
||||
}
|
||||
|
||||
public void setTiandihonglu_num(int tiandihonglu_num) {
|
||||
this.tiandihonglu_num = tiandihonglu_num;
|
||||
}
|
||||
|
||||
public void addTiandihonglu_num(int tiandihonglu_num){
|
||||
this.tiandihonglu_num+=tiandihonglu_num;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getGet_transfiguration_num() {
|
||||
return get_transfiguration_num;
|
||||
}
|
||||
|
||||
public int getTransfigurationNum(int quality) {
|
||||
return get_transfiguration_num.getOrDefault(quality,0);
|
||||
}
|
||||
|
||||
public void addTransfigurationNum(int quality,int num){
|
||||
get_transfiguration_num.merge(quality,num,(oldV, newV) -> oldV + newV);
|
||||
}
|
||||
|
||||
public void setGet_transfiguration_num(Map<Integer, Integer> get_transfiguration_num) {
|
||||
this.get_transfiguration_num = get_transfiguration_num;
|
||||
}
|
||||
|
||||
public int getActivate_treasure_skill_num(int quality) {
|
||||
return get_transfiguration_num.getOrDefault(quality,0);
|
||||
}
|
||||
|
||||
public void addActivate_treasure_skill_num(int quality,int num){
|
||||
get_transfiguration_num.merge(quality,num,(oldV, newV) -> oldV + newV);
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getActivate_treasure_skill_num() {
|
||||
return activate_treasure_skill_num;
|
||||
}
|
||||
|
||||
public void setActivate_treasure_skill_num(Map<Integer, Integer> activate_treasure_skill_num) {
|
||||
this.activate_treasure_skill_num = activate_treasure_skill_num;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -200,12 +200,6 @@ public class PlayerManager extends MongoBase {
|
|||
private int getFiveStarHeroNum;
|
||||
//探索
|
||||
private Map<Integer,ExplorerInfo> explorer = new HashMap<>(); //<teamId,队伍数据>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 浮生阁建筑列表
|
||||
*/
|
||||
|
|
|
@ -12,10 +12,13 @@ import com.ljsd.jieling.globals.Global;
|
|||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hardStage.HardStageLogic;
|
||||
import com.ljsd.jieling.logic.home.HomeLogic;
|
||||
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 org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
@ -49,31 +52,29 @@ import java.util.stream.Collectors;
|
|||
*
|
||||
* */
|
||||
public class UserMissionManager extends MongoBase {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(UserMissionManager.class);
|
||||
|
||||
// 任务信息初始化
|
||||
private VipMissionIdsType vipMissionIdsType=new VipMissionIdsType();
|
||||
private DailyMissionIdsType dailyMissionIdsType=new DailyMissionIdsType();
|
||||
private BeginerTaskIdsType beginerTaskIdsType=new BeginerTaskIdsType();
|
||||
|
||||
private TreasureMissionType treasureMissionIdsType=new TreasureMissionType();
|
||||
private ServenMissionIdsType sevenHappyMissionType =new ServenMissionIdsType();
|
||||
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
|
||||
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
|
||||
private AchieveMissionIdsType achievementMissionTypMap = new AchieveMissionIdsType();
|
||||
//破阵诛仙任务
|
||||
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();
|
||||
// 牛气冲天活动任务
|
||||
private CowFlySkyMissionType cowFlySkyMissionType = new CowFlySkyMissionType();
|
||||
|
||||
private EndlessMissionType endlessMissionType = new EndlessMissionType();
|
||||
//缥缈之旅
|
||||
private MistyTripMissionType mistyTripMissionType = new MistyTripMissionType();
|
||||
// 家园任务
|
||||
private HomeMissionType homeMissionType = new HomeMissionType();
|
||||
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();//破阵诛仙任务
|
||||
private CowFlySkyMissionType cowFlySkyMissionType = new CowFlySkyMissionType();// 牛气冲天活动任务
|
||||
private EndlessMissionType endlessMissionType = new EndlessMissionType();//无尽副本
|
||||
private MistyTripMissionType mistyTripMissionType = new MistyTripMissionType();//缥缈之旅
|
||||
private HomeMissionType homeMissionType = new HomeMissionType();//家园任务
|
||||
private DonghaiXunxianMissionType donghaiXunxianMission = new DonghaiXunxianMissionType();//东海寻仙
|
||||
|
||||
//数据累加项
|
||||
private CumulationData cumulationData = new CumulationData();
|
||||
private CumulationData dailyCumulationData = new CumulationData();
|
||||
private CumulationData beginCumulationData = new CumulationData();
|
||||
|
||||
private CumulationData treasureCumulationData = new CumulationData();
|
||||
private CumulationData treasureWeekCumulationData = new CumulationData();
|
||||
private CumulationData treasureMonthCumulationData = new CumulationData();
|
||||
|
@ -83,6 +84,7 @@ public class UserMissionManager extends MongoBase {
|
|||
private CumulationData jadeDynastyWeekCumulationData = new CumulationData();//破阵诛仙周数据
|
||||
private CumulationData endlessTask = new CumulationData();//无尽副本任务数据
|
||||
private CumulationData mistyTripCumulationData = new CumulationData();//缥缈之旅数据
|
||||
private CumulationData donghaiXunxianData = new CumulationData();//东海寻仙数据
|
||||
|
||||
/**
|
||||
* 触发任务上身
|
||||
|
@ -105,6 +107,10 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("vipMissionIdsType", vipMissionIdsType);
|
||||
break;
|
||||
}
|
||||
case DONGHAIXUNXIAN_INIT:
|
||||
// 东海寻仙活动初始化
|
||||
resetDonghaiXunxianTaskInfo((int)parm[0]);
|
||||
break;
|
||||
case HOME_TASK_INIT:
|
||||
homeMissionType.openMission(user,0,null);
|
||||
updateString("homeMissionType", homeMissionType);
|
||||
|
@ -421,6 +427,10 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||
}
|
||||
break;
|
||||
case DONGHAIXUNXIAN_REWARD:
|
||||
donghaiXunxianMission.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.DONGHAIXUNXIAN_MISSION));
|
||||
updateString("donghaiXunxianMission",donghaiXunxianMission);
|
||||
break;
|
||||
case HOME_TASK_REWARD://家园
|
||||
homeMissionType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.HOME_MISSION));
|
||||
updateString("homeMissionType",homeMissionType);
|
||||
|
@ -615,7 +625,6 @@ public class UserMissionManager extends MongoBase {
|
|||
|
||||
}
|
||||
if(!endlessMissionType.getDoingMissionIds().isEmpty() ){
|
||||
|
||||
Map<Integer, SEndlessTask> endlessConfig = STableManager.getConfig(SEndlessTask.class);
|
||||
if(endlessConfig!=null&&endlessConfig.size()!=0){
|
||||
CumulationData.Result result= endlessTask.updateData(missionType, parm);
|
||||
|
@ -625,12 +634,16 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("endlessMissionType",endlessMissionType);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 东海寻仙
|
||||
if (!donghaiXunxianMission.getDoingMissionIds().isEmpty()){
|
||||
CumulationData.Result result = donghaiXunxianData.updateData(missionType, parm);
|
||||
donghaiXunxianMission.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.DONGHAIXUNXIAN_MISSION),donghaiXunxianData);
|
||||
updateString("donghaiXunxianData",donghaiXunxianData);
|
||||
updateString("donghaiXunxianMission",donghaiXunxianMission);
|
||||
}
|
||||
//缥缈之旅
|
||||
if(!mistyTripMissionType.getDoingMissionIds().isEmpty() ){
|
||||
|
||||
Map<Integer, SJourneyWithWind> config = STableManager.getConfig(SJourneyWithWind.class);
|
||||
if(config!=null&&config.size()!=0){
|
||||
int starSum = HardStageLogic.getHardStageStarsSum(user);
|
||||
|
@ -643,7 +656,6 @@ public class UserMissionManager extends MongoBase {
|
|||
if(sevenHappyCumulationData.expeditinoTimes!= 0 && mistyTripCumulationData.expeditinoTimes == 0){
|
||||
mistyTripCumulationData.expeditinoTimes = sevenHappyCumulationData.expeditinoTimes;
|
||||
}
|
||||
|
||||
CumulationData.Result result= mistyTripCumulationData.updateData(missionType, parm);
|
||||
if(result!=null){
|
||||
mistyTripMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.MISTY_TRIP_MISSION),mistyTripCumulationData);
|
||||
|
@ -788,6 +800,28 @@ public class UserMissionManager extends MongoBase {
|
|||
return tasks;
|
||||
}
|
||||
|
||||
/**
|
||||
* 东海寻仙活动初始化
|
||||
* @param activityId
|
||||
*/
|
||||
private void resetDonghaiXunxianTaskInfo(int activityId){
|
||||
donghaiXunxianMission.getDoingMissionIds().clear();
|
||||
donghaiXunxianMission.getFinishMissionIds().clear();
|
||||
donghaiXunxianMission.getRewardedMissionIds().clear();
|
||||
|
||||
List<SThemeActivityTaskConfig> taskConfigs = SThemeActivityTaskConfig.themeTaskByActivity.get(activityId);
|
||||
if (taskConfigs == null || taskConfigs.isEmpty()){
|
||||
LOGGER.error("东海寻仙任务初始化,ThemeActivityTaskConfig查询活动信息为空:{}",activityId);
|
||||
return;
|
||||
}
|
||||
for (SThemeActivityTaskConfig config : taskConfigs) {
|
||||
donghaiXunxianMission.getDoingMissionIds().add(config.getId());
|
||||
}
|
||||
donghaiXunxianData = new CumulationData();
|
||||
updateString("donghaiXunxianData",donghaiXunxianData);
|
||||
updateString("donghaiXunxianMission",donghaiXunxianMission);
|
||||
}
|
||||
|
||||
private CommonProto.RefreshTask.Builder treasureIndicationBuild(int type,int[] refreshIds){
|
||||
CommonProto.RefreshTask.Builder task = CommonProto.RefreshTask.newBuilder().setType(type);
|
||||
for(int i = 0;i<refreshIds.length;i++){
|
||||
|
@ -909,4 +943,20 @@ public class UserMissionManager extends MongoBase {
|
|||
public HomeMissionType getHomeMissionType() {
|
||||
return homeMissionType;
|
||||
}
|
||||
|
||||
public DonghaiXunxianMissionType getDonghaiXunxianMission() {
|
||||
return donghaiXunxianMission;
|
||||
}
|
||||
|
||||
public void setDonghaiXunxianMission(DonghaiXunxianMissionType donghaiXunxianMission) {
|
||||
this.donghaiXunxianMission = donghaiXunxianMission;
|
||||
}
|
||||
|
||||
public CumulationData getDonghaiXunxianData() {
|
||||
return donghaiXunxianData;
|
||||
}
|
||||
|
||||
public void setDonghaiXunxianData(CumulationData donghaiXunxianData) {
|
||||
this.donghaiXunxianData = donghaiXunxianData;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ import com.ljsd.jieling.logic.help.HelpHeroLogic;
|
|||
import com.ljsd.jieling.logic.item.ItemLogic;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent;
|
||||
import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType;
|
||||
|
@ -187,7 +188,7 @@ public class HeroLogic {
|
|||
LOGGER.error("Exception SItem配置不存在 id:" + integer);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Exception :" + e.toString());
|
||||
LOGGER.error("Exception :" + e);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
@ -413,30 +414,38 @@ public class HeroLogic {
|
|||
// 对应卡池抽奖次数
|
||||
Integer num = heroManager.getRandomCountByType().getOrDefault(type, 0);
|
||||
// 心愿抽卡
|
||||
int[] result;
|
||||
int[] result = reward;
|
||||
if (type == 1 && num >= value) {
|
||||
// 钻石抽卡并且次数满足
|
||||
result = wishDrawCardCheck(user, reward, type);
|
||||
} else if (sLotterySetting.getLotteryType() == 3 &&
|
||||
isActivityBeautyBag(sLotterySetting.getActivityId())) {//乾坤宝盒-许愿魂印
|
||||
} else if (sLotterySetting.getLotteryType() == 3 && isActivityBeautyBag(sLotterySetting.getActivityId())) {
|
||||
//乾坤宝盒-许愿魂印
|
||||
result = BeautyBagDrawCard(user, sLotteryRewardConfig);
|
||||
}else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
|
||||
} else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
|
||||
// 天地烘炉
|
||||
result = TrumpGachaDrawCard(user, sLotteryRewardConfig);
|
||||
}
|
||||
else {
|
||||
result = reward;
|
||||
}
|
||||
//活动抽奖计数
|
||||
|
||||
//活动抽奖计数,触发活动
|
||||
if (isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.BEAUTY_BAG)) {
|
||||
//乾坤宝盒抽奖 计次数
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.QIAN_KUN_BOX, 1);
|
||||
} else if (isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY)) {
|
||||
}
|
||||
if (isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY)) {
|
||||
//灵兽招募 计次数
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.SOUL_RECRUIT, 1);
|
||||
}else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
|
||||
}
|
||||
if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
|
||||
//天地洪炉抽奖 计次数
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.TRUMP_GACHA, 1);
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE, MissionType.TIANDIHONGLU_NUM,1);
|
||||
}
|
||||
if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRANSFORMATION_DRAW_CARD)){
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE, MissionType.FANGCUNXUNBAO_NUM,1);
|
||||
}
|
||||
|
||||
//记录卡池抽奖次数
|
||||
heroManager.putRandomType(type, num + result[1]);
|
||||
int[]rewardArr=new int[result.length];
|
||||
|
@ -470,7 +479,7 @@ public class HeroLogic {
|
|||
}
|
||||
|
||||
///天地洪炉抽奖处理
|
||||
private int[] TrumpGachaDrawCard(User user, SLotteryRewardConfig sLotteryRewardConfig) {
|
||||
private int[] TrumpGachaDrawCard(User user, SLotteryRewardConfig sLotteryRewardConfig) throws Exception {
|
||||
int count = 4;
|
||||
List<SLotteryRewardConfig> list = SLotteryRewardConfig.getSLotteryRewardConfigListByPoolId(sLotteryRewardConfig.getPool());
|
||||
if (list == null) {
|
||||
|
@ -4944,6 +4953,9 @@ public class HeroLogic {
|
|||
}
|
||||
pokemonManager.updatePokemonLevel(pokemonId, finalLevel);
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
|
||||
if (pokemonManager.getPokemonTeamMap().containsValue(pokemonId)) {
|
||||
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid()));
|
||||
}
|
||||
|
@ -4960,9 +4972,6 @@ public class HeroLogic {
|
|||
|
||||
}
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.BEAST_LEVEL.getType(), pokemon.getTmpId(), oldLevel, finalLevel, builder.toString());
|
||||
|
||||
// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_UPLEVEL,pokemonId);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5029,6 +5038,10 @@ public class HeroLogic {
|
|||
pokemonManager.removePokemon(consume);
|
||||
}
|
||||
pokemonManager.updatePokemonStar(pokemonId, pokemon.getStar() + 1);
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
|
||||
if (pokemonManager.getPokemonTeamMap().containsValue(pokemonId)) {
|
||||
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid()));
|
||||
}
|
||||
|
@ -5094,6 +5107,9 @@ public class HeroLogic {
|
|||
pokemonManager.updatePokemonLevel(pokemonId, 1);
|
||||
pokemonManager.updatePokemonStar(pokemonId, 0);
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_MONSTER_REWARD);
|
||||
|
||||
HeroInfoProto.PokemonBackResponse response = HeroInfoProto.PokemonBackResponse.newBuilder().setDrop(drop).build();
|
||||
|
|
|
@ -143,4 +143,8 @@ public enum GameEvent {
|
|||
HOME_TASK_UPDATE,//家园任务更新进度
|
||||
HOME_TASK_REWARD,// 家园任务奖励
|
||||
|
||||
DONGHAIXUNXIAN_INIT,//东海寻仙,任务初始化
|
||||
DONGHAIXUNXIAN_UPDATE,//东海寻仙,任务进度更新
|
||||
DONGHAIXUNXIAN_REWARD,//东海寻仙,任务奖励
|
||||
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ public enum GameMisionType {
|
|||
ENDLESS_MISSION(12),
|
||||
MISTY_TRIP_MISSION(13),//缥缈之旅
|
||||
HOME_MISSION(14),//家园任务
|
||||
|
||||
DONGHAIXUNXIAN_MISSION(15),//东海寻仙
|
||||
;
|
||||
private int type;
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import com.ljsd.jieling.ktbeans.KtEventUtils;
|
|||
import com.ljsd.jieling.ktbeans.ReportEventEnum;
|
||||
import com.ljsd.jieling.ktbeans.ReportUtil;
|
||||
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import com.ljsd.jieling.logic.activity.event.MissingRoomBestEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
|
@ -60,6 +61,7 @@ public class MissionLoigc {
|
|||
getEndlessMission(user,missionList);
|
||||
getMistyTripMission(user,missionList);
|
||||
getHomeMission(user,missionList);
|
||||
getDonghaiXunxianMission(user,missionList);
|
||||
// 此方法必须放在最后,对所有获取到的任务进行处理
|
||||
// checkMissionTime(missionList);
|
||||
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
|
||||
|
@ -94,6 +96,55 @@ public class MissionLoigc {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取东海寻仙任务信息
|
||||
* @param user
|
||||
* @param missionList
|
||||
*/
|
||||
public static void getDonghaiXunxianMission(User user ,List<CommonProto.UserMissionInfo> missionList){
|
||||
DonghaiXunxianMissionType missionType = user.getUserMissionManager().getDonghaiXunxianMission();
|
||||
// 进行中
|
||||
Set<Integer> doingMissionIds = missionType.getDoingMissionIds();
|
||||
// 可领取
|
||||
Set<Integer> finishMissionIds = missionType.getFinishMissionIds();
|
||||
// 已领取
|
||||
BitSet rewardedMissionIds = missionType.getRewardedMissionIds();
|
||||
|
||||
int activity = ActivityLogic.getInstance().getActivityByTypeToFirst(user, ActivityType.DonghaiXunxian);
|
||||
if (activity <= 0){
|
||||
LOGGER.error("获取任务信息,东海寻仙任务,根据活动类型找不到活动,类型:{}",ActivityType.DonghaiXunxian);
|
||||
return;
|
||||
}
|
||||
|
||||
List<SThemeActivityTaskConfig> taskConfigs = SThemeActivityTaskConfig.themeTaskByActivity.get(activity);
|
||||
if (taskConfigs.isEmpty() || taskConfigs == null){
|
||||
LOGGER.error("获取任务信息,东海寻仙任务,根据活动id找不到任务,活动id:{}",activity);
|
||||
return;
|
||||
}
|
||||
|
||||
CumulationData cumulationData = user.getUserMissionManager().getCumulationData();
|
||||
for (SThemeActivityTaskConfig v : taskConfigs) {
|
||||
int id = v.getId();
|
||||
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
||||
info.setMissionId(id);
|
||||
info.setType(GameMisionType.DONGHAIXUNXIAN_MISSION.getType());
|
||||
if (doingMissionIds.contains(id)){
|
||||
info.setState(MissionState.DOING.getState());
|
||||
int doingProgress = getDoingProgress(user, cumulationData, v.getType(), v.getTaskValue()[0]);
|
||||
info.setProgress(doingProgress);
|
||||
}
|
||||
if (finishMissionIds.contains(id)){
|
||||
info.setState(MissionState.FINISH.getState());
|
||||
info.setProgress(v.getTaskValue()[1][0]);
|
||||
}
|
||||
if (rewardedMissionIds.get(id)){
|
||||
info.setState(MissionState.REWARD.getState());
|
||||
info.setProgress(v.getTaskValue()[1][0]);
|
||||
}
|
||||
missionList.add(info.build());
|
||||
}
|
||||
}
|
||||
|
||||
private static void getBloodyMisison(User user, List<CommonProto.UserMissionInfo> missionList){
|
||||
UserMissionManager userMissionManager = user.getUserMissionManager();
|
||||
BloodyMissionIdsType bloodyMissionIdsType = userMissionManager.getBloodyMissionIdsType();
|
||||
|
@ -628,13 +679,16 @@ public class MissionLoigc {
|
|||
User user = UserManager.getUser(uid);
|
||||
UserMissionManager userMissionManager = user.getUserMissionManager();
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = null;
|
||||
|
||||
// 家园任务
|
||||
if (type == GameMisionType.HOME_MISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMissionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.HOME_TASK_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMissionTypeListMap.get(GameMisionType.HOME_MISSION);
|
||||
}
|
||||
|
||||
// 东海寻仙
|
||||
if (type == GameMisionType.DONGHAIXUNXIAN_MISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMissionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.DONGHAIXUNXIAN_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMissionTypeListMap.get(GameMisionType.DONGHAIXUNXIAN_MISSION);
|
||||
}
|
||||
//BLOODY 任务
|
||||
if(type == GameMisionType.BLOODYMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BLOODY_MISSION_REWARD, missionId);
|
||||
|
@ -814,7 +868,7 @@ public class MissionLoigc {
|
|||
}
|
||||
|
||||
/**
|
||||
* TODO 不够抽象 ifelse?
|
||||
* 根据不同的任务类型(missiontype)获取任务的完成数量
|
||||
*
|
||||
* 已经有了映射关系 不应再ifelse 现100及1以后的类型 进度完成状态及进度迁移到类型处理器中
|
||||
*/
|
||||
|
|
|
@ -3,6 +3,9 @@ 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品质的妖灵师数量
|
||||
|
@ -149,8 +152,15 @@ public enum MissionType {
|
|||
HARSTAGE_PARTICIPATION_REWARD(139),//山河社稷图参与奖励
|
||||
NEW_HERO_ZHAOMU(140),//新将招募次数
|
||||
|
||||
FANGCUNXUNBAO_NUM(146),//方寸寻宝次数
|
||||
TIANDIHONGLU_NUM(147),//天地烘炉次数
|
||||
GET_TRANSFIGURATION_CARD_NUM(148),//获取quality品质的变身卡num张
|
||||
GET_TREASURE_SKILL_NUM(149),//激活quality品质的法宝聚灵技能num个
|
||||
|
||||
HOME_ARCHITECTURE_ONE_LV(150),//家园建筑单个等级
|
||||
HOME_ARCHITECTURE_TOTAL_LV(151),//家园建筑总等级
|
||||
|
||||
HAVE_ID_STAR_LV_POKEMON_NUM(152),//拥有指定ID的star星级level等级的灵兽num个
|
||||
;
|
||||
|
||||
private int missionType;
|
||||
|
|
|
@ -8,6 +8,7 @@ import java.util.Map;
|
|||
|
||||
/**
|
||||
* 任务修改进度操作类
|
||||
* 任务子类添加,missionType
|
||||
*/
|
||||
public class DataManagerDistributor {
|
||||
private static Map<MissionType, BaseDataManager> judges = new HashMap<>();
|
||||
|
@ -178,6 +179,12 @@ public class DataManagerDistributor {
|
|||
// 家园任务
|
||||
judges.put(MissionType.HOME_ARCHITECTURE_ONE_LV,new DefaultDataManager());//单个建筑等级
|
||||
judges.put(MissionType.HOME_ARCHITECTURE_TOTAL_LV,new DefaultDataManager());//总建筑等级
|
||||
|
||||
judges.put(MissionType.FANGCUNXUNBAO_NUM,new FangcunxunbaoNumManager());//方寸寻宝次数
|
||||
judges.put(MissionType.TIANDIHONGLU_NUM,new TiandihongluNumManager());//天地烘炉次数
|
||||
judges.put(MissionType.GET_TRANSFIGURATION_CARD_NUM,new TransfigurationCardNumManager());//获取quality品质的变身卡num张
|
||||
judges.put(MissionType.GET_TREASURE_SKILL_NUM,new TreasureSkillNumManager());//激活quality品质的法宝聚灵技能num个
|
||||
judges.put(MissionType.HAVE_ID_STAR_LV_POKEMON_NUM,new IdStarLvPokemonNumManager());//拥有指定ID的star星级level等级的灵兽num个
|
||||
}
|
||||
|
||||
public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception {
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package com.ljsd.jieling.logic.mission.data;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
* 方寸寻宝次数
|
||||
*/
|
||||
public class FangcunxunbaoNumManager extends AbstractDataManager {
|
||||
|
||||
@Override
|
||||
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
|
||||
return data.fangcunxunbao_num >= cfgValue[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProcess(User user, CumulationData data, int[] missionSubType) {
|
||||
return data.fangcunxunbao_num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
|
||||
MissionType type = (MissionType) parm[0];
|
||||
if (type.getMissionTypeValue() == missionType.getMissionTypeValue()){
|
||||
int count = (int) parm[1];
|
||||
data.addFangcunxunbao_num(count);
|
||||
}
|
||||
return new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.ljsd.jieling.logic.mission.data;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.Pokemon;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
* 拥有指定ID的star星级level等级的灵兽num个
|
||||
*/
|
||||
public class IdStarLvPokemonNumManager extends AbstractDataManager {
|
||||
|
||||
@Override
|
||||
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
|
||||
return getProcess(user,data,cfgValue[0]) >= cfgValue[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProcess(User user, CumulationData data, int[] missionSubType) {
|
||||
Map<String, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
|
||||
int count = 0;
|
||||
for (Pokemon pokemon : pokemonMap.values()) {
|
||||
// 满足id,星级,等级三个条件
|
||||
if (pokemon.getTmpId() == missionSubType[0] && pokemon.getStar() >= missionSubType[1] && pokemon.getLevel() >= missionSubType[2]){
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
|
||||
return new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package com.ljsd.jieling.logic.mission.data;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
* 天地烘炉次数
|
||||
*/
|
||||
public class TiandihongluNumManager extends AbstractDataManager {
|
||||
|
||||
@Override
|
||||
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
|
||||
return data.tiandihonglu_num >= cfgValue[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProcess(User user, CumulationData data, int[] missionSubType) {
|
||||
return data.tiandihonglu_num;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
|
||||
MissionType type = (MissionType) parm[0];
|
||||
if (type.getMissionTypeValue() == missionType.getMissionTypeValue()){
|
||||
int count = (int) parm[1];
|
||||
data.addTiandihonglu_num(count);
|
||||
}
|
||||
return new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.ljsd.jieling.logic.mission.data;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
* 获取quality品质的变身卡num张
|
||||
*/
|
||||
public class TransfigurationCardNumManager extends AbstractDataManager {
|
||||
|
||||
@Override
|
||||
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
|
||||
return data.getTransfigurationNum(cfgValue[0][0]) >= cfgValue[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProcess(User user, CumulationData data, int[] missionSubType) {
|
||||
return data.getTransfigurationNum(missionSubType[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
|
||||
MissionType type = (MissionType) parm[0];
|
||||
if (type.getMissionTypeValue() == missionType.getMissionTypeValue()){
|
||||
int quality = (int) parm[1];
|
||||
int count = (int) parm[2];
|
||||
data.addTransfigurationNum(quality,count);
|
||||
}
|
||||
return new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.ljsd.jieling.logic.mission.data;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.CumulationData;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
|
||||
/**
|
||||
* @author hj
|
||||
* 激活quality品质的法宝聚灵技能num个
|
||||
*/
|
||||
public class TreasureSkillNumManager extends AbstractDataManager {
|
||||
|
||||
@Override
|
||||
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
|
||||
return data.getActivate_treasure_skill_num(cfgValue[0][0]) >= cfgValue[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProcess(User user, CumulationData data, int[] missionSubType) {
|
||||
return data.getActivate_treasure_skill_num(missionSubType[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
|
||||
MissionType type = (MissionType) parm[0];
|
||||
if (type.getMissionTypeValue() == missionType.getMissionTypeValue()){
|
||||
int quality = (int) parm[1];
|
||||
int count = (int) parm[2];
|
||||
data.addActivate_treasure_skill_num(quality,count);
|
||||
}
|
||||
return new CumulationData.Result(missionType);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
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;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 任务
|
||||
* 东海寻仙活动
|
||||
*/
|
||||
public class DonghaiXunxianMissionUpdateProcessor implements BaseGameEventProcessor{
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
user.getUserMissionManager().calCumulationDataResult(user,(MissionType) parm[0],misionTypeListMap,parm);
|
||||
}
|
||||
}
|
|
@ -48,6 +48,18 @@ public class MissionEventDistributor {
|
|||
// 任务奖励
|
||||
eventProcessor.put(GameEvent.HOME_TASK_REWARD,new RewardEventProcessor());
|
||||
|
||||
// 东海寻仙
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_INIT, new DefaultMissionRefreshProcess());
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_REWARD, new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.DONGHAIXUNXIAN_UPDATE, new DonghaiXunxianMissionUpdateProcessor());
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.FANGCUNXUNBAO_NUM);
|
||||
typeList.add(MissionType.TIANDIHONGLU_NUM);
|
||||
typeList.add(MissionType.TIANDIHONGLU_NUM);
|
||||
typeList.add(MissionType.GET_TRANSFIGURATION_CARD_NUM);
|
||||
typeList.add(MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
eventEnumListMap.put(GameEvent.DONGHAIXUNXIAN_UPDATE,typeList);
|
||||
|
||||
// 刷新任务
|
||||
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor());
|
||||
eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess());
|
||||
|
@ -596,8 +608,8 @@ public class MissionEventDistributor {
|
|||
missionTypeEnumListMap.put(GameMisionType.ENDLESS_MISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.MISTY_TRIP_MISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.HOME_MISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.DONGHAIXUNXIAN_MISSION, new ArrayList<>());
|
||||
} else {
|
||||
missionTypeEnumListMap.get(GameMisionType.HOME_MISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.COPYMISSION).clear();
|
||||
|
@ -611,6 +623,8 @@ public class MissionEventDistributor {
|
|||
missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.ENDLESS_MISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.MISTY_TRIP_MISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.HOME_MISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.DONGHAIXUNXIAN_MISSION).clear();
|
||||
}
|
||||
threadMissionChangeList.set(missionTypeEnumListMap);
|
||||
}
|
||||
|
@ -634,6 +648,13 @@ public class MissionEventDistributor {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* build全部活动数据
|
||||
* @param user
|
||||
* @param missionStateChangeInfos
|
||||
* @param gameMisionType
|
||||
* @param builder
|
||||
*/
|
||||
private static void buildMissionUpdate(User user,List<MissionStateChangeInfo> missionStateChangeInfos, GameMisionType gameMisionType,PlayerInfoProto.MissionUpdateListIndication.Builder builder) {
|
||||
if(missionStateChangeInfos.isEmpty()){
|
||||
return;
|
||||
|
@ -643,6 +664,7 @@ public class MissionEventDistributor {
|
|||
MissionState missionState = missionStateChangeInfo.getMissionState();
|
||||
int state = missionState.getState();
|
||||
int progress = 0;
|
||||
// 特殊处理
|
||||
if(gameMisionType==GameMisionType.MISSINGROOMMISSION){
|
||||
continue;
|
||||
}
|
||||
|
@ -655,48 +677,63 @@ public class MissionEventDistributor {
|
|||
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION
|
||||
|| gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION
|
||||
|| gameMisionType == GameMisionType.ACHIEVEMISSION || gameMisionType == GameMisionType.JADE_DYNASTY_MISSION
|
||||
|| gameMisionType == GameMisionType.COWFLYSKYMISSION||gameMisionType==GameMisionType.ENDLESS_MISSION||gameMisionType==GameMisionType.MISTY_TRIP_MISSION){
|
||||
|| gameMisionType == GameMisionType.COWFLYSKYMISSION||gameMisionType==GameMisionType.ENDLESS_MISSION
|
||||
|| gameMisionType==GameMisionType.MISTY_TRIP_MISSION)
|
||||
{
|
||||
progress = missionStateChangeInfo.getProgress();
|
||||
}
|
||||
// 进行中的任务
|
||||
if(missionState == MissionState.DOING){
|
||||
if(gameMisionType == GameMisionType.VIPMISSION){
|
||||
STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId());
|
||||
progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0]);
|
||||
}else if(gameMisionType == GameMisionType.DAILYMISSION){
|
||||
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId());
|
||||
progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getDailyCumulationData(),sDailyTasksConfig.getType(),sDailyTasksConfig.getValues()[0]);
|
||||
}else if(gameMisionType == GameMisionType.BEGINNERMISSION){
|
||||
SBeginnerTask sBeginnerTask = SBeginnerTask.sBeginnerTaskCongigMap.get(missionStateChangeInfo.getMissionId());
|
||||
progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getBeginCumulationData(),sBeginnerTask.getTaskType(),sBeginnerTask.getTaskValue()[0]);
|
||||
}else if (gameMisionType == GameMisionType.HOME_MISSION){
|
||||
SHomeLandTask homeLandTask = STableManager.getConfig(SHomeLandTask.class).get(missionStateChangeInfo.getMissionId());
|
||||
progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getBeginCumulationData(),homeLandTask.getType(),homeLandTask.getValues()[0]);
|
||||
}
|
||||
}else if(missionState == MissionState.FINISH || missionState == MissionState.REWARD){
|
||||
if(gameMisionType == GameMisionType.VIPMISSION){
|
||||
STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId());
|
||||
progress=sTaskConfig.getTaskValue()[1][0];
|
||||
progress = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0]);
|
||||
}
|
||||
if(gameMisionType == GameMisionType.DAILYMISSION){
|
||||
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId());
|
||||
progress= sDailyTasksConfig.getValues()[1][0];
|
||||
progress = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getDailyCumulationData(),sDailyTasksConfig.getType(),sDailyTasksConfig.getValues()[0]);
|
||||
}
|
||||
if(gameMisionType == GameMisionType.BEGINNERMISSION){
|
||||
SBeginnerTask sBeginnerTask = SBeginnerTask.sBeginnerTaskCongigMap.get(missionStateChangeInfo.getMissionId());
|
||||
progress= sBeginnerTask.getTaskValue()[1][0];
|
||||
progress = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getBeginCumulationData(),sBeginnerTask.getTaskType(),sBeginnerTask.getTaskValue()[0]);
|
||||
}
|
||||
if (gameMisionType == GameMisionType.HOME_MISSION){
|
||||
SHomeLandTask homeLandTask = STableManager.getConfig(SHomeLandTask.class).get(missionStateChangeInfo.getMissionId());
|
||||
progress = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getBeginCumulationData(),homeLandTask.getType(),homeLandTask.getValues()[0]);
|
||||
}
|
||||
if (gameMisionType == GameMisionType.DONGHAIXUNXIAN_MISSION){
|
||||
SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(missionStateChangeInfo.getMissionId());
|
||||
progress = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getDonghaiXunxianData(), config.getTaskType(), config.getTaskValue()[0]);
|
||||
}
|
||||
}
|
||||
// 已完成或者已领取的任务
|
||||
if(missionState == MissionState.FINISH || missionState == MissionState.REWARD){
|
||||
if(gameMisionType == GameMisionType.VIPMISSION){
|
||||
STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId());
|
||||
progress = sTaskConfig.getTaskValue()[1][0];
|
||||
}
|
||||
if(gameMisionType == GameMisionType.DAILYMISSION){
|
||||
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId());
|
||||
progress = sDailyTasksConfig.getValues()[1][0];
|
||||
}
|
||||
if(gameMisionType == GameMisionType.BEGINNERMISSION){
|
||||
SBeginnerTask sBeginnerTask = SBeginnerTask.sBeginnerTaskCongigMap.get(missionStateChangeInfo.getMissionId());
|
||||
progress = sBeginnerTask.getTaskValue()[1][0];
|
||||
}
|
||||
if(gameMisionType == GameMisionType.TREASUREMISSION){
|
||||
STreasureSunlongTaskConfig sunlongTaskConfig = STreasureSunlongTaskConfig.treasureTaskConfig.get(missionStateChangeInfo.getMissionId());
|
||||
progress= sunlongTaskConfig.getTaskValue()[1][0];
|
||||
progress = sunlongTaskConfig.getTaskValue()[1][0];
|
||||
}
|
||||
|
||||
if(gameMisionType == GameMisionType.ACHIEVEMISSION){
|
||||
SAchievementConfig sAchievementConfig = STableManager.getConfig(SAchievementConfig.class).get(missionStateChangeInfo.getMissionId());
|
||||
progress= sAchievementConfig.getValues()[1][0];
|
||||
progress = sAchievementConfig.getValues()[1][0];
|
||||
}
|
||||
if(gameMisionType == GameMisionType.HOME_MISSION){
|
||||
SHomeLandTask homeLandTask = STableManager.getConfig(SHomeLandTask.class).get(missionStateChangeInfo.getMissionId());
|
||||
progress= homeLandTask.getValues()[1][0];
|
||||
progress = homeLandTask.getValues()[1][0];
|
||||
}
|
||||
if (gameMisionType == GameMisionType.DONGHAIXUNXIAN_MISSION){
|
||||
SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(missionStateChangeInfo.getMissionId());
|
||||
progress = config.getTaskValue()[1][0];
|
||||
}
|
||||
if(gameMisionType == GameMisionType.SEVENMISSION){
|
||||
STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionStateChangeInfo.getMissionId());
|
||||
|
|
|
@ -26,7 +26,7 @@ public abstract class AbstractMissionType {
|
|||
|
||||
public abstract int[][] reward(int missionId);
|
||||
|
||||
public void rewardMission(int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap){
|
||||
public void rewardMission(int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap){
|
||||
if (!finishMissionIds.contains(missionId)) {
|
||||
return ;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ public abstract class AbstractMissionType {
|
|||
itemAttrs.add(reward(next));
|
||||
// 存入已完成
|
||||
bitSet.set(next);
|
||||
//
|
||||
// 删除
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
package com.ljsd.jieling.logic.mission.main;
|
||||
|
||||
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 config.SHomeLandTask;
|
||||
import config.SThemeActivityTaskConfig;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class DonghaiXunxianMissionType extends AbstractMissionType {
|
||||
|
||||
@Override
|
||||
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
|
||||
// 缺少必要参数,在方法外实现
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkIsNew(int missionId){
|
||||
return this.getDoingMissionIds().contains(missionId) || this.getFinishMissionIds().contains(missionId) || this.getRewardedMissionIds().get(missionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[][] reward(int missionId) {
|
||||
SThemeActivityTaskConfig config = SThemeActivityTaskConfig.idTaskConfig.get(missionId);
|
||||
if (config == null){
|
||||
return new int[0][];
|
||||
}
|
||||
return config.getIntegral();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getAllRewards(List<int[][]> itemAttrs){
|
||||
super.getAllRewards(this, itemAttrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
|
||||
// 进行中得任务
|
||||
Set<Integer> doingMissionIds = getDoingMissionIds();
|
||||
|
||||
List<SThemeActivityTaskConfig> configs = SThemeActivityTaskConfig.sThemeTaskConfigListByTypeMapTmp.get(result.subType.getMissionTypeValue());
|
||||
if (configs == null){
|
||||
return;
|
||||
}
|
||||
|
||||
for (SThemeActivityTaskConfig config : configs) {
|
||||
// 任务子id
|
||||
int id = config.getId();
|
||||
// 不在执行中
|
||||
if(!doingMissionIds.contains(id)){
|
||||
continue;
|
||||
}
|
||||
// 获取任务进度
|
||||
int num = MissionLoigc.getDoingProgress(user, cumulationData, config.getType(), config.getTaskValue()[0]);
|
||||
// 是否完成
|
||||
boolean isFinish = num >= config.getTaskValue()[1][0];
|
||||
if (!isFinish) {
|
||||
// 未完成
|
||||
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(id, MissionState.DOING, num);
|
||||
missionStateChangeInfos.add(doingInfo);
|
||||
continue;
|
||||
}
|
||||
// 清除旧信息(进行中)
|
||||
missionStateChangeInfos.removeIf(v->v.getMissionId()==id);
|
||||
// 添加新信息(可领取)
|
||||
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(id,MissionState.FINISH, reward(id));
|
||||
missionStateChangeInfos.add(finishInfo);
|
||||
// 任务列表更新
|
||||
doingMissionIds.remove(id);
|
||||
getFinishMissionIds().add(id);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -28,6 +28,7 @@ import com.ljsd.jieling.logic.item.ItemLog;
|
|||
import com.ljsd.jieling.logic.item.ItemLogic;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.PushRechargeType;
|
||||
|
@ -725,6 +726,10 @@ public class ItemUtil {
|
|||
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
|
||||
}
|
||||
|
||||
// 触发任务,东海寻仙
|
||||
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),itemNum);
|
||||
}
|
||||
|
||||
ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
|
||||
|
||||
|
@ -1890,6 +1895,8 @@ public class ItemUtil {
|
|||
}
|
||||
}
|
||||
}
|
||||
// 触发任务,东海寻仙
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DONGHAIXUNXIAN_UPDATE,MissionType.HAVE_ID_STAR_LV_POKEMON_NUM);
|
||||
}
|
||||
|
||||
public static long getMapById(int id,ItemMap itemObj){
|
||||
|
|
|
@ -31,6 +31,8 @@ public class SThemeActivityTaskConfig implements BaseConfig {
|
|||
|
||||
public static Map<Integer,List<SThemeActivityTaskConfig>> sThemeTaskConfigListByTypeMapTmp;
|
||||
|
||||
public static Map<Integer, List<SThemeActivityTaskConfig>> themeTaskByActivity = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
idTaskConfig = STableManager.getConfig(SThemeActivityTaskConfig.class);
|
||||
|
@ -40,6 +42,7 @@ public class SThemeActivityTaskConfig implements BaseConfig {
|
|||
SThemeActivityTaskConfig entryValue = entry.getValue();
|
||||
taskTypeMap.computeIfAbsent(entryValue.getType(),v->new ArrayList<>()).add(entry.getKey());
|
||||
sThemeTaskConfigListByTypeMapTmp.computeIfAbsent(entryValue.getTaskType(),v->new ArrayList<>()).add(entryValue);
|
||||
themeTaskByActivity.computeIfAbsent(entryValue.getActivityId(),v->new ArrayList<>()).add(entryValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ public class STrumpBook implements BaseConfig {
|
|||
|
||||
private int id;
|
||||
|
||||
private int quality;
|
||||
|
||||
private int[] trumpList;
|
||||
|
||||
private int[][] skillList;
|
||||
|
@ -27,6 +29,10 @@ public class STrumpBook implements BaseConfig {
|
|||
return id;
|
||||
}
|
||||
|
||||
public int getQuality() {
|
||||
return quality;
|
||||
}
|
||||
|
||||
public int[] getTrumpList() {
|
||||
return trumpList;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue