新增任务类型 戒灵秘宝积分

zhangshanxue 2020-06-04 19:10:32 +08:00
parent 26c1259480
commit e553272029
28 changed files with 433 additions and 25 deletions

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.Expedition;
import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig;
import com.ljsd.jieling.config.clazzStaticCfg.PlayStaticConfig;
import com.ljsd.jieling.config.clazzStaticCfg.WorldBossTreasureStaticConfig;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
@ -18,13 +19,12 @@ import com.ljsd.jieling.protocols.Expedition;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SExpeditionNodeConfig;
import config.SExpeditionSetting;
import config.SWorldBossTreasureConfig;
import manager.STableManager;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* Description: TOFIX
@ -99,6 +99,9 @@ public class TakeLayRewardHandler extends BaseHandler<Expedition.TakeExpeditionB
int[][] fourthOpenRule = sExpeditionSetting.getFourthOpenRule();
SExpeditionNodeConfig sExpeditionNodeConfig = STableManager.getConfig(SExpeditionNodeConfig.class).get(nodeInfo.getType());
int[][] taskScore = sExpeditionNodeConfig.getTaskScore();
int score;
if(expeditionManager.getExpeditionLeve()==2){
objects.add(3);
expeditionManager.setExpeditionLeve(expeditionManager.getExpeditionLeve()+1);
@ -110,17 +113,26 @@ public class TakeLayRewardHandler extends BaseHandler<Expedition.TakeExpeditionB
}
ExpeditionManager manager = user.getExpeditionManager();
manager.clearExpeditionNodeInfos();
score= taskScore[1][1];
}else if(expeditionManager.getExpeditionLeve()==1){
expeditionManager.setExpeditionLeve(expeditionManager.getExpeditionLeve()+1);
objects.add(2);
ExpeditionManager manager = user.getExpeditionManager();
manager.clearExpeditionNodeInfos();
score= taskScore[0][1];
}else {
score= taskScore[2][1];
}
if(expeditionManager.getExpeditionLeve()==3){
expeditionManager.setPassTimes(expeditionManager.getPassTimes()+1);
}
user.getExpeditionManager().addRewardBox(laycfg);
user.getExpeditionManager().addScore(score);
Map<Integer, Integer> rewardStatusMap = user.getExpeditionManager().getWorldTreasureReward().getRewardStatusMap();
ExpeditionLogic.sendTreasureRewardUpdate(iSession,user.getExpeditionManager().getWorldTreasureReward().getScore(),rewardStatusMap);
Expedition.TakeExpeditionBoxRewardResponse builder = Expedition.TakeExpeditionBoxRewardResponse.newBuilder().setDrop(drop).addAllLeve(objects).build();
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_TAKE_BOXREWARD_RESONSE_VALUE, builder, true);

View File

@ -235,6 +235,7 @@ public class BehaviorUtil {
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
.setProperty(property.substring(0, property.length()-1))
.setPosition(teamPosHeroInfo.getPosition())
.setStar(hero.getStar())
.build();
heroFightInfos.add(heroFightInfo);
}
@ -275,6 +276,7 @@ public class BehaviorUtil {
.setUnitId(Integer.toString(hero.getTemplateId()))
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
.setProperty(property.substring(0, property.length()-1))
.setStar(hero.getStar())
.build();
heroFightInfos.add(heroFightInfo);
}
@ -319,6 +321,7 @@ public class BehaviorUtil {
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
.setProperty(property.substring(0, property.length()-1))
.setPosition(++i)
.setStar(hero.getStar())
.build();
heroFightInfos.add(heroFightInfo);
}
@ -363,6 +366,7 @@ public class BehaviorUtil {
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
.setProperty(property.substring(0, property.length()-1))
.setPosition(++i)
.setStar(heroStar)
.build();
heroFightInfos.add(heroFightInfo);
}

View File

@ -118,6 +118,7 @@ public class BloodLogic {
.setUnitSkillIds(heroSkill)//.substring(0, heroSkill.length() - 1)
.setProperty(property.substring(0, property.length() - 1))
.setPosition(++index)
.setStar(entry.getValue().getStar())
.build();
heroDefendFightInfos.add(heroFightInfo);
}

View File

@ -132,6 +132,16 @@ public class CumulationData {
public Map<Integer,Integer> servenGiftTimes = new HashMap<>();//每日登陆次数
public Map<Integer,Integer> dailyChallengeMap = new HashMap<>();//每日挑战副本
public int card_random_type;//使用普通召唤num次十连抽num计10
public Map<Integer,Integer> guild_give_time ;//使用level级别0不限、1普通、2钻石小、3钻石大的公会捐献num次
public int ten_challenge_time;// 挑战十绝阵num次
// public Map<Integer,Integer> finisin_daily_challenge_times;//完成type0不限、1金币、2武将经验、3武将碎片、4兵魂、5谋略的日常副本num次
public int six_random_times;//使用6灵阁召唤num次
public Map<Integer,Integer> expedition_floor_times;//猎妖之路通过floor层num次
public int decompose_times;//献祭武将次数
public int death_path_times;// 击杀过关十绝阵num次
public int jewl_all_leve;//全体上阵成员法宝等级达到level需求人数6人不满上阵不计完成度
public Result updateData(MissionType missionType, Object...parm) throws Exception {

View File

@ -963,6 +963,7 @@ public class ExpeditionLogic {
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
.setProperty(property.substring(0, property.length()-1))
.setPosition(teamPosHeroInfo.getPosition())
.setStar(hero.getStar())
.build();
heroFightInfos.add(heroFightInfo);
}

View File

@ -2029,6 +2029,22 @@ public class HeroLogic{
}
//妖灵师是否在阵容中
public Set<Integer> isInTeam(User user,String heroId){
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = user.getTeamPosManager().getTeamPosForHero();
Set<Integer> collect = teamPosForHero.entrySet().stream().filter(integerListEntry ->
{
for (TeamPosHeroInfo teamPos : integerListEntry.getValue()) {
if (teamPos.getHeroId().equals(heroId)) {
return true;
}
}
return false;
}).map(Map.Entry::getKey).collect(Collectors.toSet());
return collect;
}
//妖灵师是否在阵容中
public boolean isBattleArray (User user,String heroId){
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = user.getTeamPosManager().getTeamPosForHero();

View File

@ -470,7 +470,7 @@ public class ItemLogic {
if(b){
hero.updateEspecial(hero.getEspecialEquipLevel()+1);
Poster.getPoster().dispatchEvent(new EspecialEquipUpEvent(user.getId(),especialEquipId, hero.getEspecialEquipLevel()));
user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP,hero.getEspecialEquipLevel());
user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP,hero.getEspecialEquipLevel(),heroId);
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true);
if(hero.getEspecialEquipLevel()>=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_rankup_equiptalisman_content_parm)){
SItem sItem = SItem.getsItemMap().get(especialEquipId);
@ -480,6 +480,7 @@ public class ItemLogic {
String message = SErrorCodeEerverConfig.getI18NMessage("lamp_rankup_equiptalisman_content", new Object[]{user.getPlayerInfoManager().getNickName(), sItem.getName(),hero.getEspecialEquipLevel()});
ChatLogic.getInstance().sendSysChatMessage(message,Global.DILIGENT,sItem.getId(),0,0,0,0,0);
}
}else{
throw new ErrorCodeException(ErrorCode.ITEM_ESPECIAL_EQUIP_UP_ITEM_NOT);
}

View File

@ -775,6 +775,22 @@ public class MissionLoigc {
count = cumulationData.dailyChallengeMap.get(missionSubType[0]);
}
break;
case CARD_RANDOM_TYPE:
count = cumulationData.card_random_type;
break;
case GUILD_GIVE_TIME:
count = cumulationData.guild_give_time.get(missionSubType[0]);
break;
case TEN_CHALLENGE_TIME:
count = cumulationData.ten_challenge_time;
break;
case SIX_RANDOM_TIMES:
count = cumulationData.six_random_times;
break;
case EXPEDITION_FLOOR_TIMES:
count = cumulationData.expedition_floor_times.get(missionSubType[0]);
break;
//100以后类型继承 AbstractDataManager
default:
count = 0;
break;

View File

@ -88,13 +88,20 @@ public enum MissionType {
COMHERO_STORY_PASS(72), //通关剧情副本或精英副本%s次
LOGIN_TIMES(73), //当日登录%s次
REARGE_TOTAL(74), //累计充值
CARD_RANDOM_TYPE(75),// 使用普通召唤num次十连抽num计10
FINISH_MISSING_ROOM(76),//完成迷宫寻宝%品质%次
REFRESH_MISSING_ROOM(77),//刷新迷宫寻宝%s次
SPECIAL_EQUIP_LEVEL_UP(78),//法宝提升到%s级
GUILD_GIVE_TIME(79),//使用level级别0不限、1普通、2钻石小、3钻石大的公会捐献num次
TEN_CHALLENGE_TIME(80),//挑战十绝阵num次
LUCKY_WHEELS_TIMES(83),//幸运探宝%次
FINISH_EXPEDITION_HERO_TIMES(84),//完成猎妖之路次数达到
SEVEN_GIFT_BUY(86),//购买7日狂欢福利礼包%s次七日狂欢积分
FINISIN_DAILY_CHALLENGE_TIMES(87),//完成%s类型0为不限类型的日常副本%s次
SIX_RANDOM_TIMES(88),//使用6灵阁召唤num次
EXPEDITION_FLOOR_TIMES(89),//猎妖之路通过第floor层的首领节点每层最多一个num次
DECOMPOSE_TIMES(100),//献祭武将num个

View File

@ -0,0 +1,22 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
public abstract class AbstractDataManager implements BaseDataManager,IBaseDataCheck{
@Override
public boolean ishit(User user, CumulationData data, int[] missionSubType,Object... parm) {
return true;
}
@Override
public boolean isFinish(User user,CumulationData data,int[][] cfgValue, Object... parm) {
return false;
}
@Override
public int getprocess(User user, CumulationData data, int[] missionSubType) {
return 0;
}
}

View File

@ -1,9 +1,16 @@
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.GameEvent;
import com.ljsd.jieling.logic.mission.MissionType;
/**
*
* fix 1 IBaseDataCheck
*
* TODO fix使
*/
public interface BaseDataManager {
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object ...parm);
CumulationData.Result updateData(CumulationData data, MissionType missionType, Object ...parm);
}

View File

@ -0,0 +1,12 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
public class CarRandomTimeManager implements BaseDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.card_random_type++;
return new CumulationData.Result(missionType);
}
}

View File

@ -117,9 +117,15 @@ public class DataManagerDistributor {
judges.put(MissionType.FINISH_EXPEDITION_HERO_TIMES,new ExpeditionManager());
judges.put(MissionType.LOGIN_TIMES,new LoginTimeManager());
judges.put(MissionType.SEVEN_GIFT_BUY,new SevenGiftManager());
judges.put(MissionType.CARD_RANDOM_TYPE,new CarRandomTimeManager());
judges.put(MissionType.GUILD_GIVE_TIME,new GuildGiveTypeManger());
judges.put(MissionType.FINISIN_DAILY_CHALLENGE_TIMES,new FinishDailyChallengeManger());
judges.put(MissionType.SIX_RANDOM_TIMES,new SixRandomTimes());
judges.put(MissionType.EXPEDITION_FLOOR_TIMES,new ExpeditionPassManger());
judges.put(MissionType.DECOMPOSE_TIMES,new DecomposeTimes());
judges.put(MissionType.DEATH_PATH_TIMES,new DeathPathTimes());
judges.put(MissionType.JEWL_ALL_LEVE,new UpJewlDataManager());
}
@ -130,4 +136,8 @@ public class DataManagerDistributor {
}
return updater.updateData(data, missionType,parm);
}
public static BaseDataManager getMissTypeData( MissionType missionType) {
return judges.get(missionType);
}
}

View File

@ -0,0 +1,28 @@
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;
/**
* Description: num
* Author: zsx
* CreateDate: 2020/6/4 4:21
*/
public class DeathPathTimes extends AbstractDataManager {
@Override
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
return data.death_path_times>cfgValue[1][0];
}
@Override
public int getprocess(User user, CumulationData data, int[] missionSubType) {
return data.death_path_times;
}
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.death_path_times+=(int)(parm[0]);
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,28 @@
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;
/**
* Description: num
* Author: zsx
* CreateDate: 2020/6/4 4:21
*/
public class DecomposeTimes extends AbstractDataManager {
@Override
public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) {
return data.decompose_times>cfgValue[1][0];
}
@Override
public int getprocess(User user, CumulationData data, int[] missionSubType) {
return data.decompose_times;
}
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.decompose_times+=(int)(parm[0]);
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,19 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
/**
* Description: floornum
* Author: zsx
* CreateDate: 2020/6/1 14:13
*/
public class ExpeditionPassManger implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int type = (int) parm[0];
data.expedition_floor_times.put(type,data.expedition_floor_times.getOrDefault(type, 0)+1);
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,19 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
/**
* Description: 使level0123num
* Author: zsx
* CreateDate: 2020/6/1 14:13
*/
public class GuildGiveTypeManger implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int type = (int) parm[0];
data.guild_give_time.put(type,data.guild_give_time.getOrDefault(type, 0)+1);
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,27 @@
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;
/**
*
* fix 1
*/
public interface IBaseDataCheck {
/**
* TODO
*/
boolean ishit(User user, CumulationData data, int[] missionSubType,Object... parm);
/**
*
*/
boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm);
/**
*
*/
int getprocess(User user, CumulationData cumulationData, int[] missionSubType);
}

View File

@ -0,0 +1,17 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
/**
* Description: 使6num
* Author: zsx
* CreateDate: 2020/6/1 14:13
*/
public class SixRandomTimes implements BaseDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.six_random_times++;
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,18 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
/**
* Description: num
* Author: zsx
* CreateDate: 2020/6/1 14:13
*/
public class TenPassManager implements BaseDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.ten_challenge_time++;
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,56 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mission.MissionType;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Description: level6
* Author: zsx
* CreateDate: 2020/6/1 12:03
*/
public class UpJewlDataManager extends AbstractDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
return new CumulationData.Result(missionType);
}
@Override
public boolean ishit(User user, CumulationData data, int[] missionSubType,Object... parm) {
return super.ishit(user, data, missionSubType);
}
@Override
public boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm) {
for (Map.Entry<Integer, List<TeamPosHeroInfo>> entry:user.getTeamPosManager().getTeamPosForHero().entrySet()){
List<TeamPosHeroInfo> teamPosHeroInfos =entry.getValue();
if(teamPosHeroInfos.size()!=6){
continue;
}
for (TeamPosHeroInfo info:teamPosHeroInfos){
Hero hero = user.getHeroManager().getHero(info.getHeroId());
if( hero.getEspecialEquipLevel()<cfgValue[1][0]){
return false;
}
}
}
data.jewl_all_leve=1;
return true;
}
@Override
public int getprocess(User user, CumulationData data, int[] missionSubType) {
return data.jewl_all_leve;
}
}

View File

@ -274,6 +274,7 @@ public class MissionEventDistributor {
typeList = new ArrayList<>();
typeList.add(MissionType.ESPECIAL_EQUIP);
typeList.add(MissionType.JEWL_ALL_LEVE);
eventEnumListMap.put(GameEvent.ESPECIAL_EQUIP,typeList);
eventProcessor.put(GameEvent.ESPECIAL_EQUIP,new CumulationDataEventProcessor());

View File

@ -5,6 +5,9 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionLoigc;
import com.ljsd.jieling.logic.mission.MissionState;
import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.logic.mission.data.AbstractDataManager;
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import config.SAchievementConfig;
import config.SBloodyBattleTask;
import config.STreasureSunlongTaskConfig;
@ -42,11 +45,23 @@ public class AchieveMissionIdsType extends AbstractMissionType{
continue;
}
int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sAchievementConfig.getType(), sAchievementConfig.getValues()[0]);
//完成
int finishParm = sAchievementConfig.getValues()[1][0];
if (doingProgress<finishParm) {
boolean isfinish;
int doingProgress;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(result.subType);
if(missTypeData instanceof AbstractDataManager&&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sAchievementConfig.getValues())){
doingProgress = ((AbstractDataManager) missTypeData).getprocess(user,cumulationData,sAchievementConfig.getValues()[0]);
isfinish=true;
}else {
doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sAchievementConfig.getType(), sAchievementConfig.getValues()[0]);
//完成
isfinish = doingProgress<finishParm;
}
if (isfinish) {
boolean flag = false;
for (MissionStateChangeInfo missionStateChangeInfo : missionStateChangeInfos) {
if (missionStateChangeInfo.getMissionId() == id) {

View File

@ -4,6 +4,9 @@ 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 com.ljsd.jieling.logic.mission.data.AbstractDataManager;
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import config.SBeginnerTask;
import java.util.Iterator;
@ -30,18 +33,24 @@ public class BeginerTaskIdsType extends AbstractMissionType{
if (sBeginnerTasks == null) {
return;
}
checkAndUpdateMision(user,sBeginnerTasks,missionStateChangeInfos,cumulationData);
}
public void checkAndUpdateMision(User user, List<SBeginnerTask> sBeginnerTasks , List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData){
Set<Integer> doingMissionIds = getDoingMissionIds();
for (SBeginnerTask sBeginnerTask : sBeginnerTasks) {
int missionId = sBeginnerTask.getId();
if (!doingMissionIds.contains(missionId)) {
continue;
}
boolean isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sBeginnerTask.getTaskType(), sBeginnerTask.getTaskValue()[0]) >= sBeginnerTask.getTaskValue()[1][0];
if (!isFinish) {
boolean isfinish;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(result.subType);
if(missTypeData instanceof AbstractDataManager ){
isfinish=((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sBeginnerTask.getTaskValue());
}else {
//完成
isfinish = MissionLoigc.getDoingProgress(user, cumulationData, sBeginnerTask.getTaskType(), sBeginnerTask.getTaskValue()[0]) >= sBeginnerTask.getTaskValue()[1][0];
}
if (!isfinish) {
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
MissionState.DOING, null);
boolean flag = false;

View File

@ -4,6 +4,9 @@ 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 com.ljsd.jieling.logic.mission.data.AbstractDataManager;
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import config.SDailyTasksConfig;
import java.util.Iterator;
@ -31,17 +34,23 @@ public class DailyMissionIdsType extends AbstractMissionType{
if (sTaskConfigs == null) {
return;
}
checkAndUpdateMision(user,sTaskConfigs,missionStateChangeInfos,cumulationData);
}
public void checkAndUpdateMision(User user, List<SDailyTasksConfig> sTaskConfigs, List<MissionStateChangeInfo> missionStateChangeInfos,CumulationData cumulationData){
Set<Integer> doingMissionIds = getDoingMissionIds();
for (SDailyTasksConfig sTaskConfig : sTaskConfigs) {
int missionId = sTaskConfig.getId();
if (!doingMissionIds.contains(missionId)) {
continue;
}
boolean isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getType(), sTaskConfig.getValues()[0]) >= sTaskConfig.getValues()[1][0];
boolean isFinish;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(result.subType);
if(missTypeData instanceof AbstractDataManager){
isFinish=((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getValues());
}else {
//完成
isFinish = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getType(), sTaskConfig.getValues()[0]) >= sTaskConfig.getValues()[1][0];
}
if (!isFinish) {
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
MissionState.DOING, null);

View File

@ -7,6 +7,9 @@ import com.ljsd.jieling.logic.mission.GameMisionType;
import com.ljsd.jieling.logic.mission.MissionLoigc;
import com.ljsd.jieling.logic.mission.MissionState;
import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.logic.mission.data.AbstractDataManager;
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import config.STreasureTaskConfig;
import manager.STableManager;
@ -51,8 +54,20 @@ public class ServenMissionIdsType extends AbstractMissionType{
processSpecailMissionType(user,sTaskConfig,cumulationData);
continue;
}
int finishParm = sTaskConfig.getTaskValue()[1][0];
int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]);
boolean isFinish;
int doingProgress;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(MissionType.findByMissionId(sTaskConfig.getTaskType()));
if(missTypeData instanceof AbstractDataManager &&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getTaskValue())){
doingProgress = ((AbstractDataManager) missTypeData).getprocess(user,cumulationData,sTaskConfig.getTaskValue()[0]);
isFinish=true;
}else {
doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]);
isFinish = doingProgress >= sTaskConfig.getTaskValue()[1][0];
}
if((doingProgress!=0 && finishParm<0 && ( doingProgress)>=finishParm)){
doingMissionIds.remove(sTaskConfig.getId());
getFinishMissionIds().add(sTaskConfig.getId());
@ -63,7 +78,7 @@ public class ServenMissionIdsType extends AbstractMissionType{
if(finishParm<0){
continue;
}
boolean isFinish = doingProgress >= sTaskConfig.getTaskValue()[1][0];
if (!isFinish) {
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
MissionState.DOING, doingProgress);

View File

@ -5,6 +5,9 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionLoigc;
import com.ljsd.jieling.logic.mission.MissionState;
import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.logic.mission.data.AbstractDataManager;
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import config.STreasureSunlongTaskConfig;
import java.util.HashMap;
@ -72,10 +75,23 @@ public class TreasureMissionType extends AbstractMissionType{
if(sTreasureTaskConfig.getType()!=result.getMissionTimeType()){
continue;
}
int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]);
//完成
int finishParm = sTreasureTaskConfig.getTaskValue()[1][0];
if( doingProgress>=finishParm){
boolean isFinish;
int doingProgress;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(MissionType.findByMissionId(sTreasureTaskConfig.getTaskType()));
if(missTypeData instanceof AbstractDataManager &&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTreasureTaskConfig.getTaskValue())){
doingProgress = ((AbstractDataManager) missTypeData).getprocess(user,cumulationData,sTreasureTaskConfig.getTaskValue()[0]);
isFinish=true;
}else {
doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]);
isFinish =doingProgress>=finishParm;
}
if( isFinish){
doingMissionIds.remove(id);
getFinishMissionIds().add(id);
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,doingProgress,0);

View File

@ -4,6 +4,10 @@ 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 com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.logic.mission.data.AbstractDataManager;
import com.ljsd.jieling.logic.mission.data.BaseDataManager;
import com.ljsd.jieling.logic.mission.data.DataManagerDistributor;
import config.STaskConfig;
import java.util.Iterator;
@ -56,7 +60,15 @@ public class VipMissionIdsType extends AbstractMissionType{
if(!doingMissionIds.contains(missionId)){
continue;
}
boolean isFinish = MissionLoigc.getDoingProgress(user,cumulationData,sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1][0];
boolean isFinish;
BaseDataManager missTypeData = DataManagerDistributor.getMissTypeData(MissionType.findByMissionId(sTaskConfig.getTaskType()));
if(missTypeData instanceof AbstractDataManager &&((AbstractDataManager) missTypeData).isFinish(user,cumulationData, sTaskConfig.getTaskValue())){
isFinish=true;
}else {
isFinish = MissionLoigc.getDoingProgress(user,cumulationData,sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0])>=sTaskConfig.getTaskValue()[1][0];
}
if(!isFinish){
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(missionId,
MissionState.DOING, null);