wangyuan 2020-04-27 18:32:58 +08:00
parent 47d60b8588
commit 49ff1455f0
26 changed files with 265 additions and 10 deletions

View File

@ -7,6 +7,7 @@ import com.ljsd.jieling.logic.dao.ExpeditionNodeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.Expedition;
@ -67,6 +68,7 @@ public class ReCoverExpeditionHeroRequestHandler extends BaseHandler<Expedition.
});
Expedition.ReCoverExpeditionHeroResponse.Builder build = Expedition.ReCoverExpeditionHeroResponse.newBuilder().addAllHeroInfo(set);
user.getUserMissionManager().onGameEvent(user, GameEvent.EXPEDITION_TIMES);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_RECOVER_HERO_RESONSE_VALUE, build.build(), true);
}
}

View File

@ -8,6 +8,7 @@ import com.ljsd.jieling.logic.dao.ExpeditionNodeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
@ -83,6 +84,7 @@ public class ReliveExpeditionHeroRequest extends BaseHandler<Expedition.ReliveEx
Expedition.ReliveExpeditionHeroResponse build = Expedition.ReliveExpeditionHeroResponse.newBuilder()
.setHeroInfo(CommonProto.ExpeditionSimpleHeroInfo.newBuilder().setHeroId(heroId).setRemainHp(1d).build()).build();
user.getUserMissionManager().onGameEvent(user, GameEvent.EXPEDITION_TIMES);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_RELIVE_HERO_RESONSE_VALUE, build, true);
}

View File

@ -9,6 +9,7 @@ import com.ljsd.jieling.logic.dao.ExpeditionNodeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.Expedition;
@ -83,6 +84,7 @@ public class TakeHolyEquipRequest extends BaseHandler<Expedition.TakeHolyEquipRe
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_NOINFO_INDICATION_VALUE, builder.build(), true);
Expedition.TakeHolyEquipResponse.Builder build = Expedition.TakeHolyEquipResponse.newBuilder().setEquipId(expeditionItem.getId());
user.getUserMissionManager().onGameEvent(user, GameEvent.EXPEDITION_TIMES);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_TAKE_HOLY_EQUIP_RESONSE_VALUE, build.build(), true);
}

View File

@ -11,6 +11,7 @@ import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.question.QuestionLogic;
import com.ljsd.jieling.logic.store.BuyGoodsLogic;
@ -66,6 +67,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
PlayerManager playerInfoManager = user.getPlayerInfoManager();
ActivityLogic.getInstance().flushForLogin(user,iSession);
GlobalDataManaager.checkNeedReFlush(iSession,user,null);
user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0);
playerInfoManager.setLoginTime(TimeUtils.now());
Map<Integer, Integer> guidePoints = playerInfoManager.getGuidePoints();
Map<Integer, VipInfo> vipInfo = playerInfoManager.getVipInfo();

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -18,5 +19,6 @@ public class ServerFiveHandler extends BaseHandler{
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
GlobalDataManaager.checkNeedReFlush(iSession, UserManager.getUser(iSession.getUid()), PlayerInfoProto.FivePlayerUpdateIndication.newBuilder());
}
}

View File

@ -17,6 +17,7 @@ import com.ljsd.jieling.logic.activity.event.LuckWheelEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -58,6 +59,7 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(proto.getActivityId());
SDialRewardSetting sDialRewardSetting = SDialRewardSetting.getsDialRewardSettingMapByType().get(sGlobalActivity.getType());
int reson = sGlobalActivity.getType() == 30 ? BIReason.LUCK_WHEEL : BIReason.LUCK_WHEEL_ADVANCE;
//checkAndUpdate cost
LuckWheelMission luckWheelMission = ActivityLogic.getInstance().getLuckWheel(user.getActivityManager(),sGlobalActivity.getType());
@ -122,6 +124,7 @@ public class GetLuckWheelRandHandler extends BaseHandler<PlayerInfoProto.GetLuck
builder.setActivityId(proto.getActivityId());
builder.setDrop(drop);
builder.addAllPosInfos(rewardPosInfoList);
user.getUserMissionManager().onGameEvent(user, GameEvent.LUCK_WHEEL_TIMES,reson);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_LUCKWHEEL_RANDREWARD_RESPONSE_VALUE, builder.build(), true);
}

View File

@ -341,6 +341,7 @@ public class GlobalDataManaager implements IManager {
byte[] byteBuf = MessageUtil.wrappedBuffer(session.getUid(), session.getToken(), indicationIndex,1, MessageTypeProto.MessageType.FIVE_PLAYER_REFLUSH_INDICATION_VALUE, fBuilder.build());
session.setFiveByteBuf(byteBuf);
}
user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0);
}else {
user.getPlayerInfoManager().setIsdayFirst(0);
}

View File

@ -47,7 +47,6 @@ class MissSearchExpectRankActivity extends ExpectRankActivity {
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
System.out.print(activityMission.toString());
sendActivityProgress(sessionByUid, activityMission, null);
}

View File

@ -118,8 +118,19 @@ public class CumulationData {
public int friendApplyCount;//提出好友申请次数
public int rechargeTotal; //累計充值
public int refreshMrTimes; //刷新迷宫寻宝次数
public Map<Integer,Integer> luckyWheelTimes = new HashMap<>(); //幸运探宝次数
public int expeditinoTimes; // 猎妖之路次数
public Map<Integer,Integer> especialEquipStar = new HashMap<>();//法宝升到%s星级的数量为
public Map<Integer,Integer> finishMissionTimes = new HashMap<>();//完成迷宫寻宝%品质%次
public Map<Integer,Integer> loginTimesDay = new HashMap<>();//每日登陆次数
public Map<Integer,Integer> servenGiftTimes = new HashMap<>();//每日登陆次数
public Result updateData(MissionType missionType, Object...parm) throws Exception {

View File

@ -371,6 +371,9 @@ public class UserMissionManager extends MongoBase {
if(!sevenHappyMissionType.getDoingMissionIds().isEmpty() ){
List<STreasureTaskConfig> sTreasureTaskConfigs = STableManager.getFigureConfig(TaskStaticConfig.class).getsTreasureTaskConfigListByTypeMap().get(missionType.getMissionTypeValue());
if(sTreasureTaskConfigs!=null && user.getActivityManager().getSenvenTime()>System.currentTimeMillis()){
if(missionType == MissionType.LOGIN_TIMES){
parm=new Object[]{TimeUtils.differentDays(user.getActivityManager().getSenvenTime(),System.currentTimeMillis())};
}
CumulationData.Result result = sevenHappyCumulationData.updateData(missionType, parm);
if(result!=null){
sevenHappyMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.SEVENMISSION),sevenHappyCumulationData);

View File

@ -23,7 +23,7 @@ public enum GameEvent {
USER_FORCE_CHANGE,
CONSUMER_MATERIAL,//道具消耗
WORKSHOP_LEVELUP,//炼造等级达到
GET_EQUIP,//获取新英雄
GET_EQUIP,//获取装备
STORY_FIGHT, //副本挑战
SECRETBOX,// 秘盒抽取
KILLINVASIONBOSS,// 外敌入侵击杀次数
@ -74,5 +74,12 @@ public enum GameEvent {
JOIN_FAMILY,//加入公会次数
FRIEND_APPLY,//提出好友申请次数
COPY_COHERO_TIMES//通关剧情副本和精英本
LOGIN_GAME,//登陆游戏
COPY_COHERO_TIMES,//通关剧情副本和精英本
RECHARGE_TOTAL,//累計充值
MAZE_TREASURE_TIMES,//寻宝
LUCK_WHEEL_TIMES,//幸运探宝
EXPEDITION_TIMES,//完成猎妖之路节点
BUY_SEVEN_GIFT,//购买七日礼包
}

View File

@ -107,6 +107,9 @@ public class MissionLoigc {
Set<Integer> finishMissionIds = sevenHappyMissionType.getFinishMissionIds();
int missionType = GameMisionType.SEVENMISSION.getType();
for(STreasureTaskConfig sTreasureTaskConfig:sTreasureTaskConfigs){
if(sTreasureTaskConfig.getTaskType() == MissionType.SEVEN_GIFT_BUY.getMissionTypeValue()){
continue;
}
int state = 2;
int missionId = sTreasureTaskConfig.getId();
int progrss = sTreasureTaskConfig.getTaskValue()[1][0];
@ -723,6 +726,37 @@ public class MissionLoigc {
case FRIEND_APPLY:
count = cumulationData.friendApplyCount;
break;
case LOGIN_TIMES:
count = cumulationData.loginTimesDay.get(missionSubType[0]);
break;
case REARGE_TOTAL:
count = cumulationData.rechargeTotal;
break;
case FINISH_MISSING_ROOM:
count = cumulationData.finishMissionTimes.get(missionSubType[0]);
break;
case REFRESH_MISSING_ROOM:
count = cumulationData.refreshMrTimes;
break;
//todo
case SPECIAL_EQUIP_LEVEL_UP:
// count = cumulationData.friendApplyCount;
break;
case LUCKY_WHEELS_TIMES:
if(missionSubType[0] == 0){
for(int value : cumulationData.luckyWheelTimes.values()){
count+=value;
}
}else{
count = cumulationData.luckyWheelTimes.get(missionSubType[0]);
}
break;
case FINISH_EXPEDITION_HERO_TIMES:
count = cumulationData.expeditinoTimes;
break;
case SEVEN_GIFT_BUY:
count = cumulationData.servenGiftTimes.get(missionSubType[0]);
break;
default:
count = 0;
break;
@ -739,6 +773,7 @@ public class MissionLoigc {
missingRoomMissionType.heroSend(user,hero,missionId);
Poster.getPoster().dispatchEvent(new MissingRoomBestEvent(SMazeTreasure.sMazeTreasureMap.get(missionId%10_000).getTaskType(),user.getId()));
user.getUserMissionManager().updateString("missingRoomMissionType",missingRoomMissionType);
user.getUserMissionManager().onGameEvent(user,GameEvent.MAZE_TREASURE_TIMES,SMazeTreasure.sMazeTreasureMap.get(missionId%10_000).getTaskType());
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
}
//迷宫寻宝加速

View File

@ -1,8 +1,5 @@
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品质的妖灵师数量
@ -86,9 +83,14 @@ public enum MissionType {
JOIN_FAMILY(69),
FRIEND_APPLY(71),//提出%s次好友申请
COMHERO_STORY_PASS(72), //通关剧情副本或精英副本%s次
LOGIN_TIMES(73), //当日登录%s次
REARGE_TOTAL(74), //累计充值
FINISH_MISSING_ROOM(76),//完成迷宫寻宝%品质%次
REFRESH_MISSING_ROOM(77),//刷新迷宫寻宝%s次
SPECIAL_EQUIP_LEVEL_UP(78),//法宝提升到%s级
LUCKY_WHEELS_TIMES(83),//幸运探宝%次
FINISH_EXPEDITION_HERO_TIMES(84),//完成猎妖之路次数达到
SEVEN_GIFT_BUY(86),//购买7日狂欢福利礼包%s次七日狂欢积分
;
@ -238,6 +240,22 @@ public enum MissionType {
return FRIEND_APPLY;
case 72:
return COMHERO_STORY_PASS;
case 73:
return LOGIN_TIMES;
case 74:
return REARGE_TOTAL;
case 76:
return FINISH_MISSING_ROOM;
case 77:
return REFRESH_MISSING_ROOM;
case 78:
return SPECIAL_EQUIP_LEVEL_UP;
case 83:
return LUCKY_WHEELS_TIMES;
case 84:
return FINISH_EXPEDITION_HERO_TIMES;
case 86:
return SEVEN_GIFT_BUY;
default:
return null;
}

View File

@ -110,6 +110,14 @@ public class DataManagerDistributor {
judges.put(MissionType.JOIN_FAMILY,new JoinFamilyCountManager());
judges.put(MissionType.FRIEND_APPLY,new FriendApplyManager());
judges.put(MissionType.REARGE_TOTAL,new RechargeTotalManger());
judges.put(MissionType.FINISH_MISSING_ROOM,new FinishMissionRoomManager());
judges.put(MissionType.REFRESH_MISSING_ROOM,new RefreshMissionRoomMamager());
judges.put(MissionType.LUCKY_WHEELS_TIMES,new LuckyWheelTimesManager());
judges.put(MissionType.FINISH_EXPEDITION_HERO_TIMES,new ExpeditionManager());
judges.put(MissionType.LOGIN_TIMES,new LoginTimeManager());
judges.put(MissionType.SEVEN_GIFT_BUY,new SevenGiftManager());
}

View File

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

View File

@ -0,0 +1,13 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
public class FinishMissionRoomManager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int type = (int) parm[0];
data.finishMissionTimes.put(type,data.finishMissionTimes.getOrDefault(type,0)+1);
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,13 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
public class LoginTimeManager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int dayTh = (int) parm[0];
data.loginTimesDay.put(dayTh, data.loginTimesDay.getOrDefault(dayTh,0) + 1);
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,15 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
public class LuckyWheelTimesManager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int type = (int) parm[0];
type = type == BIReason.LUCK_WHEEL?1:2;
data.luckyWheelTimes.put(type,data.luckyWheelTimes.getOrDefault(type,0)+1);
return new CumulationData.Result(missionType);
}
}

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 RechargeTotalManger implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.rechargeTotal +=(int)parm[0];
return new CumulationData.Result(missionType);
}
}

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 RefreshMissionRoomMamager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
data.refreshMrTimes++;
return new CumulationData.Result(missionType);
}
}

View File

@ -0,0 +1,14 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
public class SevenGiftManager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int storeId=(int)parm[0];
int times=(int)parm[1];
data.servenGiftTimes.put(storeId,data.servenGiftTimes.getOrDefault(storeId,0) + times);
return new CumulationData.Result(missionType);
}
}

View File

@ -297,9 +297,45 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.COPY_COHERO_TIMES,typeList);
eventProcessor.put(GameEvent.COPY_COHERO_TIMES,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.REARGE_TOTAL);
eventEnumListMap.put(GameEvent.RECHARGE_TOTAL,typeList);
eventProcessor.put(GameEvent.RECHARGE_TOTAL,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.FINISH_MISSING_ROOM);
eventEnumListMap.put(GameEvent.MAZE_TREASURE_TIMES,typeList);
eventProcessor.put(GameEvent.MAZE_TREASURE_TIMES,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.REFRESH_MISSING_ROOM);
eventEnumListMap.put(GameEvent.MISSING_ROOM_REFRESH,typeList);
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.LUCKY_WHEELS_TIMES);
eventEnumListMap.put(GameEvent.LUCK_WHEEL_TIMES,typeList);
eventProcessor.put(GameEvent.LUCK_WHEEL_TIMES,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.FINISH_EXPEDITION_HERO_TIMES);
eventEnumListMap.put(GameEvent.EXPEDITION_TIMES,typeList);
eventProcessor.put(GameEvent.EXPEDITION_TIMES,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.LOGIN_TIMES);
eventEnumListMap.put(GameEvent.LOGIN_GAME,typeList);
eventProcessor.put(GameEvent.LOGIN_GAME,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.SEVEN_GIFT_BUY);
eventEnumListMap.put(GameEvent.BUY_SEVEN_GIFT,typeList);
eventProcessor.put(GameEvent.BUY_SEVEN_GIFT,new CumulationDataEventProcessor());
}
private static final ThreadLocal<Map<GameMisionType, List<MissionStateChangeInfo>>> threadMissionChangeList =
public static final ThreadLocal<Map<GameMisionType, List<MissionStateChangeInfo>>> threadMissionChangeList =
new ThreadLocal<>();
private static final ThreadLocal<Boolean> threadUseFlag =
new ThreadLocal<Boolean>();

View File

@ -33,7 +33,7 @@ public abstract class AbstractMissionType {
missionTypeEnumListMap.add(stateChangeInfo);
}
public abstract void calCumulationDataResult(User user,CumulationData.Result result,List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData);
public abstract void calCumulationDataResult(User user,CumulationData.Result result,List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception;
public boolean checkIsNew(int missionId){
if(doingMissionIds.contains(missionId)){

View File

@ -3,13 +3,17 @@ package com.ljsd.jieling.logic.mission.main;
import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
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.event.MissionEventDistributor;
import config.STreasureTaskConfig;
import manager.STableManager;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ServenMissionIdsType extends AbstractMissionType{
@ -27,7 +31,7 @@ public class ServenMissionIdsType extends AbstractMissionType{
}
@Override
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) {
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
List<STreasureTaskConfig> sTaskConfigs = STableManager.getFigureConfig(TaskStaticConfig.class).getsTreasureTaskConfigListByTypeMap().get(result.subType.getMissionTypeValue());
if (sTaskConfigs == null) {
@ -36,13 +40,17 @@ public class ServenMissionIdsType extends AbstractMissionType{
checkAndUpdateMision(user,sTaskConfigs,missionStateChangeInfos,cumulationData);
}
public void checkAndUpdateMision(User user,List<STreasureTaskConfig> sTaskConfigs, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData){
public void checkAndUpdateMision(User user,List<STreasureTaskConfig> sTaskConfigs, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
Set<Integer> doingMissionIds = getDoingMissionIds();
for (STreasureTaskConfig sTaskConfig : sTaskConfigs) {
int missionId = sTaskConfig.getId();
if (!doingMissionIds.contains(missionId)) {
continue;
}
if(sTaskConfig.getTaskType() == MissionType.SEVEN_GIFT_BUY.getMissionTypeValue()){
processSpecailMissionType(user,sTaskConfig,cumulationData);
continue;
}
int finishParm = sTaskConfig.getTaskValue()[1][0];
int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]);
if((doingProgress!=0 && finishParm<0 && ( doingProgress)>=finishParm)){
@ -70,6 +78,7 @@ public class ServenMissionIdsType extends AbstractMissionType{
}
continue;
}
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(missionId,
MissionState.FINISH, finishParm);
Iterator<MissionStateChangeInfo> iterator = missionStateChangeInfos.iterator();
@ -84,4 +93,18 @@ public class ServenMissionIdsType extends AbstractMissionType{
getFinishMissionIds().add(missionId);
}
}
public void processSpecailMissionType(User user,STreasureTaskConfig sTaskConfig, CumulationData cumulationData) throws Exception {
int doingProgress = MissionLoigc.getDoingProgress(user, cumulationData, sTaskConfig.getTaskType(), sTaskConfig.getTaskValue()[0]);
boolean isFinish = doingProgress >= sTaskConfig.getTaskValue()[1][0];
int missionId = sTaskConfig.getId();
if (isFinish) {
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = MissionEventDistributor.threadMissionChangeList.get();
int score = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId).getPoints();
user.getUserMissionManager().calCumulationDataResult(user,MissionType.SENVER_HAPPY,gameMisionTypeListMap,score);
getDoingMissionIds().remove(missionId);
getFinishMissionIds().add(missionId);
}
}
}

View File

@ -20,7 +20,9 @@ import com.ljsd.jieling.logic.dao.VipInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -223,6 +225,10 @@ public class BuyGoodsLogic {
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, user.getPlayerInfoManager().getRechargedaily());
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FIND_FAIRY_FESTIVAL, price);
AyyncWorker ayyncWorker = new AyyncWorker(user, true, new AynMissionWorker(GameEvent.RECHARGE_TOTAL,price)) ;
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
ISession session = OnlineUserManager.getSessionByUid(uid);
//vip 等级更新和推送

View File

@ -436,6 +436,9 @@ public class StoreLogic implements IEventHandler {
if(!storeGiftType.contains(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() )){
user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum,SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType());
}
if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() == 10){
user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_SEVEN_GIFT,storeId,itemNum);
}
if(itemId==10005){
Poster.getPoster().dispatchEvent(new GoldEvent(user.getId(),itemNum));
}