东海寻仙活动:初版未测试

back_recharge
duhui 2022-03-16 14:35:28 +08:00
parent 927cbee86c
commit f7848be28d
27 changed files with 645 additions and 79 deletions

View File

@ -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);
}
}

View File

@ -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

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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);
}
}

View File

@ -221,9 +221,22 @@ public class CumulationData {
//新将招募次数
public int new_hero_zhaomu;
/**
*
*/
public int fangcunxunbao_num;
/**
*
*/
public int tiandihonglu_num;
/**
* qualitynum
*/
public Map<Integer, Integer> get_transfiguration_num = new HashMap<>();
/**
* qualitynum
*/
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;
}
}

View File

@ -200,12 +200,6 @@ public class PlayerManager extends MongoBase {
private int getFiveStarHeroNum;
//探索
private Map<Integer,ExplorerInfo> explorer = new HashMap<>(); //<teamId,队伍数据>
/**
*
*/

View File

@ -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;
}
}

View File

@ -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();

View File

@ -143,4 +143,8 @@ public enum GameEvent {
HOME_TASK_UPDATE,//家园任务更新进度
HOME_TASK_REWARD,// 家园任务奖励
DONGHAIXUNXIAN_INIT,//东海寻仙,任务初始化
DONGHAIXUNXIAN_UPDATE,//东海寻仙,任务进度更新
DONGHAIXUNXIAN_REWARD,//东海寻仙,任务奖励
}

View File

@ -15,7 +15,7 @@ public enum GameMisionType {
ENDLESS_MISSION(12),
MISTY_TRIP_MISSION(13),//缥缈之旅
HOME_MISSION(14),//家园任务
DONGHAIXUNXIAN_MISSION(15),//东海寻仙
;
private int type;

View File

@ -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 1001
*/

View File

@ -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;

View File

@ -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 {

View File

@ -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);
}
}

View File

@ -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
* IDstarlevelnum
*/
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);
}
}

View File

@ -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);
}
}

View File

@ -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
* qualitynum
*/
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);
}
}

View File

@ -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
* qualitynum
*/
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);
}
}

View File

@ -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);
}
}

View File

@ -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());

View File

@ -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();
}
}

View File

@ -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);
}
}
}

View File

@ -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){

View File

@ -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);
}
}

View File

@ -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;
}