牛气冲天
parent
4c0ce0872c
commit
55dc3c50af
|
@ -247,7 +247,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
|||
/**
|
||||
* 领奖后更新奖励进度
|
||||
*/
|
||||
private void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, int missionId) {
|
||||
public void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, int missionId) {
|
||||
activityProgressInfo.setState(ActivityType.HAD_TAKED);
|
||||
activityMission.getActivityMissionMap().put(missionId, activityProgressInfo);
|
||||
}
|
||||
|
|
|
@ -78,7 +78,8 @@ public interface ActivityType {
|
|||
int ITEMS_STORE= 6000;//百宝商会
|
||||
int TRIAL_EXPERT = 70;//幻境达人
|
||||
int SHEJI_ACTIVITY = 60;//社稷大典
|
||||
int GOOD_LUCK= 61;//扭转乾坤
|
||||
int GOOD_LUCK= 61;//扭转乾坤
|
||||
int COW_FLY_SKY = 62;//牛气冲天
|
||||
|
||||
int SUB_ACTIVITY = 8000;//易经宝库
|
||||
int SKIN_RECHARGE_ACTIVITY = 71;
|
||||
|
|
|
@ -66,6 +66,7 @@ public enum ActivityTypeEnum {
|
|||
DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new),
|
||||
NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new),
|
||||
GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new),
|
||||
COW_FLY_SKY(ActivityType.COW_FLY_SKY,CowFlySkyActivity::new),
|
||||
|
||||
;
|
||||
private int type;
|
||||
|
@ -95,16 +96,16 @@ public enum ActivityTypeEnum {
|
|||
return abstractActivity;
|
||||
}
|
||||
|
||||
//相同类型不同活动id需要处理处理多次事件
|
||||
/**
|
||||
* 相同类型不同活动id需要处理处理多次事件
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public static AbstractActivity getActicityType(int id) {
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// for (ActivityTypeEnum activityType:ActivityTypeEnum.values()) {
|
||||
// if(activityType.getType()==sGlobalActivity.getType()){
|
||||
// return activityType.toActivity(id);
|
||||
// }
|
||||
// }
|
||||
if (activityEnumMap.containsKey(sGlobalActivity.getType()))
|
||||
if (activityEnumMap.containsKey(sGlobalActivity.getType())){
|
||||
return activityEnumMap.get(sGlobalActivity.getType()).toActivity(id);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.dao.Item;
|
||||
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.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SActivityRewardConfig;
|
||||
import config.SArroGantFly;
|
||||
import config.SGlobalActivity;
|
||||
import manager.STableManager;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CowFlySkyActivity extends AbstractActivity {
|
||||
|
||||
CowFlySkyActivity(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
ActivityMission mission = new ActivityMission();
|
||||
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
ArrayList<Integer> integers = new ArrayList<>(rewardConfigs.size());
|
||||
rewardConfigs.forEach(v->integers.add(v.getId()));
|
||||
ActivityLogic.getInstance().initOtherMission(mission, integers);
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.COW_FLY_SKY_REFRESH, id);
|
||||
LOGGER.info("牛气冲天活动刷新...");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
//checkAndUpdate cfg
|
||||
SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
if (config == null || config.getActivityId() != id) {
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL,"功能不存在:"+missionId);
|
||||
}
|
||||
|
||||
// 验证数据库中 任务信息是否正确
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if (mission == null){
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE,"数据错误");
|
||||
}
|
||||
if (mission.getActivityState() != ActivityType.OPEN_STATE || mission.getOpenType() == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN,"活动未开启");
|
||||
}
|
||||
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
|
||||
if (progressInfo == null || progressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
|
||||
}
|
||||
|
||||
// 是否满足领取条件值
|
||||
if (!checkValue(user,config.getValues())) {
|
||||
LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", session.getUid(), config.getId(), progressInfo.getProgrss(), config.getValues());
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("未达到领取条件"));
|
||||
}
|
||||
// 更改任务状态
|
||||
checkAndSetProgress(mission,progressInfo,missionId);
|
||||
//up miss
|
||||
int[][] reward = config.getReward();
|
||||
// reward
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
// 状态推送
|
||||
sendActivityProgress(session, mission, null);
|
||||
// 打点上报
|
||||
reportTakeActivityReward(user,reward,missionId);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean checkValue(User user,int[][] value){
|
||||
Item item = user.getItemManager().getItem(value[0][0]);
|
||||
return item.getItemNum() >= value[1][0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityEndOnMySelf(User user) throws Exception {
|
||||
// 牛气冲天 活动结束会清空道具
|
||||
int removeItemId = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0).getValues()[0][0];
|
||||
Item item = user.getItemManager().getItem(removeItemId);
|
||||
if (item != null) {
|
||||
int[][] cost = new int[1][];
|
||||
cost[0] = new int[]{item.getItemId(), (int) item.getItemNum()};
|
||||
ItemUtil.itemCost(user, cost, BIReason.EXCHANGE_ACTIVITY_CLOSE, id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -47,13 +47,6 @@ public class DefaultEmptyActivity extends AbstractActivity{
|
|||
sevenHappyMissionType.getFinishMissionIds().remove(sTreasureTaskConfig.getId());
|
||||
sevenHappyMissionType.getRewardedMissionIds().set(sTreasureTaskConfig.getId());
|
||||
user.getUserMissionManager().setSevenHappyMissionType(sevenHappyMissionType);
|
||||
/* SSevenDaysScore sSevenDaysScore = SSevenDaysScore.SSevenDaysScoreByActivityIdAndScoreMap.get(id).get(senvenScores);
|
||||
if(null!=sSevenDaysScore){
|
||||
String mailReward = ItemUtil.getMailReward(sSevenDaysScore.getReward());
|
||||
String title= SErrorCodeEerverConfig.getI18NMessage("opencarnival_activity_"+id+"_title");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("opencarnival_activity_"+id+"_txt",new String[]{Integer.toString(senvenScores)});
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int)(System.currentTimeMillis()/1000), Global.MAIL_EFFECTIVE_TIME);
|
||||
}*/
|
||||
}
|
||||
}else if(sGlobalActivity.getType() == ActivityType.EXCHANGEANDDROP || sGlobalActivity.getType() == ActivityType.NEW_GENERAL_ATTACK){
|
||||
// 限时兑换和新将来袭活动结束会清空道具
|
||||
|
|
|
@ -54,7 +54,10 @@ public class UserMissionManager extends MongoBase {
|
|||
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
|
||||
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
|
||||
private AchieveMissionIdsType achievementMissionTypMap = new AchieveMissionIdsType();
|
||||
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();//破阵诛仙任务
|
||||
//破阵诛仙任务
|
||||
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();
|
||||
// 牛气冲天活动任务
|
||||
private CowFlySkyMissionType cowFlySkyMissionType = new CowFlySkyMissionType();
|
||||
|
||||
//数据累加项
|
||||
private CumulationData cumulationData = new CumulationData();
|
||||
|
@ -69,87 +72,97 @@ public class UserMissionManager extends MongoBase {
|
|||
private CumulationData jadeDynastyCumulationData = new CumulationData();//破阵诛仙日数据
|
||||
private CumulationData jadeDynastyWeekCumulationData = new CumulationData();//破阵诛仙周数据
|
||||
|
||||
//触发任务上身
|
||||
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm) throws Exception {
|
||||
ISession session= OnlineUserManager.getSessionByUid(user.getId());
|
||||
switch (event){
|
||||
case VIP_LEVLUP:{
|
||||
int vipLevle= (int)parm[0];
|
||||
/**
|
||||
* 触发任务上身
|
||||
* @param user
|
||||
* @param event
|
||||
* @param missionTypeEnumListMap
|
||||
* @param parm
|
||||
* @throws Exception
|
||||
*/
|
||||
public void openMission(User user, GameEvent event, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm) throws Exception {
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
switch (event) {
|
||||
case VIP_LEVLUP: {
|
||||
int vipLevle = (int) parm[0];
|
||||
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevle);
|
||||
int[] openRules = sVipLevelConfig.getOpenRules();
|
||||
for(int missionId:openRules){
|
||||
vipMissionIdsType.openMission(user,missionId,missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
|
||||
for (int missionId : openRules) {
|
||||
vipMissionIdsType.openMission(user, missionId, missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
|
||||
}
|
||||
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||
updateString("vipMissionIdsType", vipMissionIdsType);
|
||||
break;
|
||||
}
|
||||
case DAILY_REFRESH:
|
||||
Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
|
||||
int type = (int)parm[0];
|
||||
if(type == 0){
|
||||
int type = (int) parm[0];
|
||||
if (type == 0) {
|
||||
dailyMissionIdsType.getDoingMissionIds().clear();
|
||||
dailyMissionIdsType.getFinishMissionIds().clear();
|
||||
dailyMissionIdsType.getRewardedMissionIds().clear();
|
||||
dailyCumulationData = new CumulationData();
|
||||
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
|
||||
updateString("dailyCumulationData",dailyCumulationData);
|
||||
updateString("dailyCumulationData", dailyCumulationData);
|
||||
}
|
||||
updateString("dailyMissionIdsType",dailyMissionIdsType);
|
||||
updateString("dailyMissionIdsType", dailyMissionIdsType);
|
||||
break;
|
||||
case TREASH_REFRESH:
|
||||
int activityId = (int) parm[0];//当前轮次青龙秘宝的活动ID
|
||||
int[] refreshIds = resetTreasureTaskInfo(1,activityId,missionTypeEnumListMap,treasureCumulationData);
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int activityId = (int) parm[0];
|
||||
|
||||
int[] refreshIds = resetTreasureTaskInfo(1, activityId, missionTypeEnumListMap, treasureCumulationData);
|
||||
treasureCumulationData = new CumulationData();
|
||||
int dayRefreshTime=(int) (TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0,false)/1000);
|
||||
int dayRefreshTime = (int) (TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0, false) / 1000);
|
||||
CommonProto.RefreshTask.Builder task = treasureIndicationBuild(1, refreshIds).setRefreshTime(dayRefreshTime);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication1 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task.build()).build();
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication1,true);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication1, true);
|
||||
break;
|
||||
case TREASH_WEEK_REFRESH:
|
||||
int aId = (int) parm[0];//当前轮次青龙秘宝的活动ID
|
||||
int[] weekRefreshIds = resetTreasureTaskInfo(2,aId,missionTypeEnumListMap,treasureWeekCumulationData);
|
||||
if(weekRefreshIds != null){
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int aId = (int) parm[0];
|
||||
int[] weekRefreshIds = resetTreasureTaskInfo(2, aId, missionTypeEnumListMap, treasureWeekCumulationData);
|
||||
if (weekRefreshIds != null) {
|
||||
treasureWeekCumulationData = new CumulationData();
|
||||
int weekRefreshTime = (int)(TimeUtils.getNextWeekendStartTime(1,0)/1000);
|
||||
int weekRefreshTime = (int) (TimeUtils.getNextWeekendStartTime(1, 0) / 1000);
|
||||
user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.DRAGON_TREASURE_SUPPLY);
|
||||
CommonProto.RefreshTask.Builder task2= treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime);
|
||||
CommonProto.RefreshTask.Builder task2 = treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task2.build()).build();
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication2,true);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication2, true);
|
||||
}
|
||||
break;
|
||||
case TREASH_MONTH_REFRESH:
|
||||
int aid = (int) parm[0];//当前轮次青龙秘宝的活动ID
|
||||
//当前轮次青龙秘宝的活动ID
|
||||
int aid = (int) parm[0];
|
||||
user.getPlayerInfoManager().setTreasureLevel(0);
|
||||
Item item = user.getItemManager().getItem(Global.TREASURE_SCORE);
|
||||
if(item!=null){
|
||||
if(item.getItemNum()!=0){
|
||||
Map<Integer,Integer> treasureScore = new HashMap<>();
|
||||
treasureScore.put(Global.TREASURE_SCORE, (int)item.getItemNum());
|
||||
if (item != null) {
|
||||
if (item.getItemNum() != 0) {
|
||||
Map<Integer, Integer> treasureScore = new HashMap<>();
|
||||
treasureScore.put(Global.TREASURE_SCORE, (int) item.getItemNum());
|
||||
try {
|
||||
ItemUtil.itemCost(user,treasureScore, BIReason.TREASURE_RESET_CONSUME,1);
|
||||
ItemUtil.itemCost(user, treasureScore, BIReason.TREASURE_RESET_CONSUME, 1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
treasureMonthCumulationData = new CumulationData();
|
||||
int[] monthRefreshIds1 = resetTreasureTaskInfo(3,aid,missionTypeEnumListMap,treasureMonthCumulationData);
|
||||
int[] monthRefreshIds1 = resetTreasureTaskInfo(3, aid, missionTypeEnumListMap, treasureMonthCumulationData);
|
||||
|
||||
// CommonProto.RefreshTask.Builder task3 = treasureIndicationBuild(1, dailyRefreshIds1);
|
||||
// CommonProto.RefreshTask.Builder task4 = treasureIndicationBuild(2, weekRefreshIds1);
|
||||
CommonProto.RefreshTask.Builder task5 = treasureIndicationBuild(3, monthRefreshIds1);
|
||||
PlayerInfoProto.TreasureRefreshIndication indication3 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task5.build()).build();
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication3,true);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication3, true);
|
||||
break;
|
||||
case JADE_DYNASTY_REFRESH:
|
||||
int jadeAId = (int) parm[0];//当前轮次破阵诛仙的活动ID
|
||||
int[] mIds = resetJadeDynastyTaskInfo(1,jadeAId,missionTypeEnumListMap,jadeDynastyCumulationData);
|
||||
jadeDynastyCumulationData = new CumulationData();
|
||||
//当前轮次破阵诛仙的活动ID
|
||||
int jadeAId = (int) parm[0];
|
||||
resetJadeDynastyTaskInfo(1, jadeAId, missionTypeEnumListMap, jadeDynastyCumulationData);
|
||||
break;
|
||||
case JADE_DYNASTY_WEEK_REFRESH:
|
||||
int jadeAid = (int) parm[0];//当前轮次破阵诛仙的活动ID
|
||||
int[] weekMIds = resetJadeDynastyTaskInfo(2,jadeAid,missionTypeEnumListMap,jadeDynastyWeekCumulationData);
|
||||
if(weekMIds != null){
|
||||
//当前轮次破阵诛仙的活动ID
|
||||
int jadeAid = (int) parm[0];
|
||||
int[] weekMIds = resetJadeDynastyTaskInfo(2, jadeAid, missionTypeEnumListMap, jadeDynastyWeekCumulationData);
|
||||
if (weekMIds != null) {
|
||||
jadeDynastyWeekCumulationData = new CumulationData();
|
||||
}
|
||||
break;
|
||||
|
@ -160,98 +173,107 @@ public class UserMissionManager extends MongoBase {
|
|||
sevenHappyMissionType.getFinishMissionIds().clear();
|
||||
sevenHappyMissionType.getRewardedMissionIds().clear();
|
||||
List<MissionStateChangeInfo> servenMissionmStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
|
||||
for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){
|
||||
for (STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs) {
|
||||
sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
|
||||
}
|
||||
sevenHappyCumulationData= new CumulationData();
|
||||
sevenHappyMissionType.checkAndUpdateMision(user,sTreasureTaskConfigs,servenMissionmStateChangeInfos,sevenHappyCumulationData);
|
||||
sevenHappyCumulationData = new CumulationData();
|
||||
sevenHappyMissionType.checkAndUpdateMision(user, sTreasureTaskConfigs, servenMissionmStateChangeInfos, sevenHappyCumulationData);
|
||||
updateString("sevenHappyMissionType", sevenHappyMissionType);
|
||||
updateString("sevenHappyCumulationData", sevenHappyCumulationData);
|
||||
break;
|
||||
case BEGINNER:
|
||||
for(Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()){
|
||||
for (Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()) {
|
||||
beginerTaskIdsType.addDoingMission(id);
|
||||
}
|
||||
beginCumulationData= new CumulationData();
|
||||
beginCumulationData = new CumulationData();
|
||||
updateString("beginerTaskIdsType", beginerTaskIdsType);
|
||||
updateString("beginCumulationData", beginCumulationData);
|
||||
break;
|
||||
|
||||
case BLOODY_REFRESH:
|
||||
Set<Integer> bloodyMissionIds =STableManager.getConfig(SBloodyBattleTask.class).keySet();
|
||||
Set<Integer> bloodyMissionIds = STableManager.getConfig(SBloodyBattleTask.class).keySet();
|
||||
bloodyMissionIdsType.getDoingMissionIds().clear();
|
||||
bloodyMissionIdsType.getFinishMissionIds().clear();
|
||||
bloodyMissionIdsType.getRewardedMissionIds().clear();
|
||||
bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds);
|
||||
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
|
||||
updateString("bloodyMissionIdsType", bloodyMissionIdsType);
|
||||
break;
|
||||
case ACHIEVE_REFRESH:
|
||||
Set<Integer> ds =STableManager.getConfig(SAchievementConfig.class).keySet();
|
||||
Set<Integer> ds = STableManager.getConfig(SAchievementConfig.class).keySet();
|
||||
achievementMissionTypMap.getDoingMissionIds().clear();
|
||||
achievementMissionTypMap.getFinishMissionIds().clear();
|
||||
achievementMissionTypMap.getRewardedMissionIds().clear();
|
||||
achievementMissionTypMap.getDoingMissionIds().addAll(ds);
|
||||
achievementMap =new CumulationData();
|
||||
updateString("achievementMissionTypMap",achievementMissionTypMap);
|
||||
updateString("achievementMap",achievementMap);
|
||||
achievementMap = new CumulationData();
|
||||
updateString("achievementMissionTypMap", achievementMissionTypMap);
|
||||
updateString("achievementMap", achievementMap);
|
||||
|
||||
break;
|
||||
case MISSING_ROOM_REFRESH://天宫寻宝
|
||||
Map<Integer,Integer> mustAppear = new HashMap<>();
|
||||
|
||||
case COW_FLY_SKY_REFRESH:
|
||||
// 牛气冲天
|
||||
Set<Integer> arro = STableManager.getConfig(SArroGantFly.class).keySet();
|
||||
cowFlySkyMissionType.getDoingMissionIds().clear();
|
||||
cowFlySkyMissionType.getFinishMissionIds().clear();
|
||||
cowFlySkyMissionType.getRewardedMissionIds().clear();
|
||||
cowFlySkyMissionType.getDoingMissionIds().addAll(arro);
|
||||
updateString("cowFlySkyMissionType", cowFlySkyMissionType);
|
||||
break;
|
||||
case MISSING_ROOM_REFRESH:
|
||||
//天宫寻宝
|
||||
Map<Integer, Integer> mustAppear = new HashMap<>();
|
||||
List<Integer> mustMissions = new ArrayList<>();
|
||||
List<Integer> lockMissions = new ArrayList<>();
|
||||
if((int)parm[0]==1){
|
||||
if ((int) parm[0] == 1) {
|
||||
//删除已经领取奖励的
|
||||
missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1);
|
||||
missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1);
|
||||
|
||||
missingRoomMissionType.getFinishMissionIds().removeIf(value -> missingRoomMissionType.getAllMissingTime().get(value) == -1);
|
||||
missingRoomMissionType.getAllMissingTime().values().removeIf(value -> value == -1);
|
||||
// 任务全部锁定
|
||||
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
|
||||
if (lockMissionIds.size() >= 6){
|
||||
if (lockMissionIds.size() >= 6) {
|
||||
throw new ErrorCodeException(ErrorCode.LOCK_FILL);
|
||||
}
|
||||
|
||||
// 读表
|
||||
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
|
||||
boolean result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if(!result){
|
||||
if (!result) {
|
||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if(!result){
|
||||
if (!result) {
|
||||
int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP());
|
||||
int[][] cost = sMazeTreasureSetting.getCost();
|
||||
int count = (int)MathUtils.calABX(coinRefreshCount, cost[1]);
|
||||
int count = (int) MathUtils.calABX(coinRefreshCount, cost[1]);
|
||||
result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if(!result){
|
||||
if (!result) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(),1);
|
||||
user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(), 1);
|
||||
}
|
||||
//高级特权
|
||||
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getHighDailyPrivilege(),mustAppear);
|
||||
missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getHighDailyPrivilege(), mustAppear);
|
||||
//豪华特权
|
||||
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getLuxuryDailyPrivilege(),mustAppear);
|
||||
missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getLuxuryDailyPrivilege(), mustAppear);
|
||||
//非免费抽取次数必出
|
||||
missingRoomMissionType.notFreeRefreshMust(user,sMazeTreasureSetting.getRefreshHighTypeNum(),mustAppear);
|
||||
missingRoomMissionType.notFreeRefreshMust(user, sMazeTreasureSetting.getRefreshHighTypeNum(), mustAppear);
|
||||
// 刷新次数+1
|
||||
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount()+1);
|
||||
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount() + 1);
|
||||
}
|
||||
|
||||
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
|
||||
doingMissionIds.forEach((doing)->{
|
||||
if (lockMissionIds.contains(doing)){
|
||||
doingMissionIds.forEach((doing) -> {
|
||||
if (lockMissionIds.contains(doing)) {
|
||||
lockMissions.add(doing);
|
||||
}
|
||||
});
|
||||
|
||||
missingRoomMissionType.getDoingMissionIds().clear();
|
||||
}else{
|
||||
for(int firstTask:SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()){
|
||||
} else {
|
||||
for (int firstTask : SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()) {
|
||||
mustMissions.add(firstTask);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新最大长度限制6条
|
||||
if (lockMissions.size() + mustAppear.size() > 6){
|
||||
if (lockMissions.size() + mustAppear.size() > 6) {
|
||||
// 锁定的不能动,获取特权任务数量
|
||||
int num = 6 - lockMissions.size();
|
||||
// 特权的key
|
||||
|
@ -261,20 +283,20 @@ public class UserMissionManager extends MongoBase {
|
|||
// 赋值
|
||||
sortSet.addAll(keys);
|
||||
// 遍历,如果数量满足,停止,不满足则删除等级小的任务
|
||||
for (Integer ints:sortSet){
|
||||
if (mustAppear.size() == num){
|
||||
for (Integer ints : sortSet) {
|
||||
if (mustAppear.size() == num) {
|
||||
break;
|
||||
}
|
||||
mustAppear.remove(ints);
|
||||
}
|
||||
}
|
||||
|
||||
if(!mustAppear.isEmpty()){
|
||||
for(Map.Entry<Integer,Integer> entry:mustAppear.entrySet()){
|
||||
if (!mustAppear.isEmpty()) {
|
||||
for (Map.Entry<Integer, Integer> entry : mustAppear.entrySet()) {
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
List<int[]> mustList = new ArrayList<>();
|
||||
for(SMazeTreasure maze :sMazeTreasures){
|
||||
if(mustMissions.contains(maze.getId())){
|
||||
for (SMazeTreasure maze : sMazeTreasures) {
|
||||
if (mustMissions.contains(maze.getId())) {
|
||||
continue;
|
||||
}
|
||||
int[] refreshWeight = new int[2];
|
||||
|
@ -283,52 +305,45 @@ public class UserMissionManager extends MongoBase {
|
|||
mustList.add(refreshWeight);
|
||||
}
|
||||
int[][] mustArray = mustList.toArray(new int[mustList.size()][]);
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
|
||||
Arrays.stream(missions).forEach(mission->mustMissions.add(mission));
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
|
||||
Arrays.stream(missions).forEach(mission -> mustMissions.add(mission));
|
||||
}
|
||||
}
|
||||
int[][] qualityRate = SMazeTreasureSetting.sMazeTreasureSetting.getQualityRate();
|
||||
// List<int[]> missingRoomMission = new ArrayList<>();
|
||||
// for(Map.Entry<Integer,SMazeTreasure> entry:SMazeTreasure.sMazeTreasureMap.entrySet()){
|
||||
// int[] refreshWeight = new int[2];
|
||||
// refreshWeight[0] = entry.getKey();
|
||||
// refreshWeight[1] = entry.getValue().getTaskRefreshProbability();
|
||||
// missingRoomMission.add(refreshWeight);
|
||||
// }
|
||||
|
||||
//根据品质来随机
|
||||
int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - (mustMissions.size() + lockMissions.size()));
|
||||
Map<Integer,Integer> qualityNum = new HashMap<>();
|
||||
for(int quality:qualityArray){
|
||||
qualityNum.put(quality,qualityNum.getOrDefault(quality,0)+1);
|
||||
Map<Integer, Integer> qualityNum = new HashMap<>();
|
||||
for (int quality : qualityArray) {
|
||||
qualityNum.put(quality, qualityNum.getOrDefault(quality, 0) + 1);
|
||||
}
|
||||
for(Map.Entry<Integer,Integer> entry:qualityNum.entrySet()){
|
||||
for (Map.Entry<Integer, Integer> entry : qualityNum.entrySet()) {
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
int[][] treasures = new int[sMazeTreasures.size()][];
|
||||
for(int i = 0 ; i<sMazeTreasures.size();i++){
|
||||
for (int i = 0; i < sMazeTreasures.size(); i++) {
|
||||
|
||||
treasures[i] = new int[2];
|
||||
treasures[i][0] = sMazeTreasures.get(i).getId();
|
||||
treasures[i][1] = 1;
|
||||
}
|
||||
int[] ids = MathUtils.randomFromWeightWithTaking(treasures, entry.getValue());
|
||||
// int missionId = sMazeTreasures.get(MathUtils.randomInt(sMazeTreasures.size())).getId();
|
||||
for(int id:ids){
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+id);
|
||||
for (int id : ids) {
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + id);
|
||||
}
|
||||
}
|
||||
// 必须任务
|
||||
for(int mission:mustMissions){
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
|
||||
for (int mission : mustMissions) {
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + mission);
|
||||
}
|
||||
// 上锁任务
|
||||
for(int mission:lockMissions){
|
||||
for (int mission : lockMissions) {
|
||||
missingRoomMissionType.addDoingMission(mission);
|
||||
}
|
||||
updateString("missingRoomMissionType",missingRoomMissionType);
|
||||
updateString("missingRoomMissionType", missingRoomMissionType);
|
||||
break;
|
||||
default:{
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -391,8 +406,10 @@ public class UserMissionManager extends MongoBase {
|
|||
missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION));
|
||||
updateString("missingRoomMissionType",missingRoomMissionType);
|
||||
}
|
||||
|
||||
|
||||
case COW_FLY_SKY_REWEARD:{
|
||||
cowFlySkyMissionType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION));
|
||||
updateString("cowFlySkyMissionType",cowFlySkyMissionType);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -517,11 +534,16 @@ public class UserMissionManager extends MongoBase {
|
|||
|
||||
}
|
||||
|
||||
// 公用任务类型,累计次数形式
|
||||
CumulationData.Result result = cumulationData.updateData(missionType, parm);
|
||||
if(result!=null){
|
||||
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
|
||||
updateString("cumulationData",cumulationData);
|
||||
// vip任务
|
||||
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
|
||||
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||
// 牛气冲天任务
|
||||
cowFlySkyMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION),cumulationData);
|
||||
updateString("cowFlySkyMissionType",cowFlySkyMissionType);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -742,4 +764,12 @@ public class UserMissionManager extends MongoBase {
|
|||
public CumulationData getJadeDynastyWeekCumulationData() {
|
||||
return jadeDynastyWeekCumulationData;
|
||||
}
|
||||
|
||||
public CowFlySkyMissionType getCowFlySkyMissionType() {
|
||||
return cowFlySkyMissionType;
|
||||
}
|
||||
|
||||
public void setCowFlySkyMissionType(CowFlySkyMissionType cowFlySkyMissionType) {
|
||||
this.cowFlySkyMissionType = cowFlySkyMissionType;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,4 +108,7 @@ public enum GameEvent {
|
|||
|
||||
HONGMENG_RESONANCE_LATTICE,//鸿蒙阵共鸣格子
|
||||
HONGMENG_TABLET_LEVEL,//鸿蒙碑等级
|
||||
|
||||
COW_FLY_SKY_REFRESH,//牛气冲天刷新
|
||||
COW_FLY_SKY_REWEARD,//牛气冲天奖励
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ public enum GameMisionType {
|
|||
MISSINGROOMMISSION(8),
|
||||
ACHIEVEMISSION(9),
|
||||
JADE_DYNASTY_MISSION(10),//破阵诛仙任务
|
||||
COWFLYSKYMISSION(11),//牛气冲天
|
||||
|
||||
;
|
||||
private int type;
|
||||
|
|
|
@ -55,6 +55,7 @@ public class MissionLoigc {
|
|||
getMissingRoomMission(user,missionList);
|
||||
getAchieveMission(user,missionList);
|
||||
getJadeDynastyMission(user, missionList);
|
||||
getCowFlySkyMission(user,missionList);
|
||||
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
|
||||
}
|
||||
|
@ -334,6 +335,40 @@ public class MissionLoigc {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取牛气冲天活动任务信息
|
||||
* @param user
|
||||
* @param missionList
|
||||
*/
|
||||
public static void getCowFlySkyMission(User user ,List<CommonProto.UserMissionInfo> missionList){
|
||||
CowFlySkyMissionType missionType = user.getUserMissionManager().getCowFlySkyMissionType();
|
||||
|
||||
// 进行中
|
||||
Set<Integer> doingMissionIds = missionType.getDoingMissionIds();
|
||||
// 可领取
|
||||
Set<Integer> finishMissionIds = missionType.getFinishMissionIds();
|
||||
// 已领取
|
||||
BitSet rewardedMissionIds = missionType.getRewardedMissionIds();
|
||||
|
||||
Collection<SArroGantFly> values = STableManager.getConfig(SArroGantFly.class).values();
|
||||
values.forEach(v->{
|
||||
int id = v.getId();
|
||||
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
||||
info.setMissionId(id);
|
||||
info.setType(GameMisionType.COWFLYSKYMISSION.getType());
|
||||
if (doingMissionIds.contains(id)){
|
||||
info.setState(MissionState.DOING.getState());
|
||||
}
|
||||
if (finishMissionIds.contains(id)){
|
||||
info.setState(MissionState.FINISH.getState());
|
||||
}
|
||||
if (rewardedMissionIds.get(id)){
|
||||
info.setState(MissionState.REWARD.getState());
|
||||
}
|
||||
missionList.add(info.build());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取天宫寻宝任务列表
|
||||
* @param user
|
||||
|
@ -399,12 +434,22 @@ public class MissionLoigc {
|
|||
|
||||
|
||||
}
|
||||
public static void takeMissionReward(ISession session,int type,int missionId) throws Exception {
|
||||
|
||||
/**
|
||||
* 领取任务奖励
|
||||
* @param session
|
||||
* @param type
|
||||
* @param missionId
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void takeMissionReward(ISession session,int type,int missionId) throws Exception {
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
UserMissionManager userMissionManager = user.getUserMissionManager();
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = null;
|
||||
if(type == GameMisionType.BLOODYMISSION.getType()){ //vip 任务
|
||||
|
||||
//BLOODY 任务
|
||||
if(type == GameMisionType.BLOODYMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BLOODY_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BLOODYMISSION);
|
||||
if(missionStateChangeInfos.isEmpty()){
|
||||
|
@ -414,16 +459,16 @@ public class MissionLoigc {
|
|||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{rewardGroup}, 1.0f, 0, BIReason.TAKE_MISSION_REWARD);
|
||||
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
|
||||
// KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
|
||||
// Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,"");
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),missionId,GameMisionType.BLOODYMISSION.toString());
|
||||
return;
|
||||
}
|
||||
if(type == GameMisionType.VIPMISSION.getType()){ //vip 任务
|
||||
//vip 任务
|
||||
if(type == GameMisionType.VIPMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.VIP_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.VIPMISSION);
|
||||
}
|
||||
if(type == GameMisionType.DAILYMISSION.getType()){ //日常 任务
|
||||
//日常 任务
|
||||
if(type == GameMisionType.DAILYMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION);
|
||||
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId);
|
||||
|
@ -431,12 +476,13 @@ public class MissionLoigc {
|
|||
user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD);
|
||||
}
|
||||
}
|
||||
|
||||
if(type == GameMisionType.BEGINNERMISSION.getType()){ //新手 任务
|
||||
//新手 任务
|
||||
if(type == GameMisionType.BEGINNERMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BEGINNER_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BEGINNERMISSION);
|
||||
}
|
||||
if(type == GameMisionType.COPYMISSION.getType()){ //副本 任务
|
||||
//副本 任务
|
||||
if(type == GameMisionType.COPYMISSION.getType()){
|
||||
Set<Integer> takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards();
|
||||
if(takeCopyMisionRewards.contains(missionId)){
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("had taked reward"));
|
||||
|
@ -460,8 +506,8 @@ public class MissionLoigc {
|
|||
return;
|
||||
}
|
||||
|
||||
// 藏宝任务
|
||||
if(type == GameMisionType.TREASUREMISSION.getType()){
|
||||
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION);
|
||||
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
|
||||
|
@ -476,8 +522,9 @@ public class MissionLoigc {
|
|||
}
|
||||
}
|
||||
|
||||
// 破阵诛仙任务
|
||||
if(type == GameMisionType.JADE_DYNASTY_MISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.JADE_DYNASTY_MISSION_REWARD, missionId);
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.JADE_DYNASTY_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.JADE_DYNASTY_MISSION);
|
||||
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
|
||||
|
@ -489,15 +536,25 @@ public class MissionLoigc {
|
|||
}
|
||||
}
|
||||
|
||||
// 牛气冲天 活动任务
|
||||
if (type == GameMisionType.COWFLYSKYMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.COW_FLY_SKY_REWEARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.COWFLYSKYMISSION);
|
||||
}
|
||||
|
||||
// 七日 任务
|
||||
if(type == GameMisionType.SEVENMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION);
|
||||
}
|
||||
|
||||
// 天宫寻宝 任务
|
||||
if(type==GameMisionType.MISSINGROOMMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.MISSING_ROOM_MISSION_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION);
|
||||
}
|
||||
|
||||
// 成就 任务
|
||||
if(type==GameMisionType.ACHIEVEMISSION.getType()){
|
||||
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.ACHIEVE_REWARD, missionId);
|
||||
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.ACHIEVEMISSION);
|
||||
|
@ -505,14 +562,10 @@ public class MissionLoigc {
|
|||
|
||||
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD);
|
||||
// user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,missionId,user);
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type);
|
||||
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
|
||||
// KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
|
||||
// Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,"");
|
||||
}else{
|
||||
//MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,"mission can not get reward");
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("mission can not get reward"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,7 +134,7 @@ public enum MissionType {
|
|||
return missionType;
|
||||
}
|
||||
|
||||
private MissionType(int missionType) {
|
||||
MissionType(int missionType) {
|
||||
this.missionType = missionType;
|
||||
}
|
||||
|
||||
|
|
|
@ -142,6 +142,7 @@ public class DataManagerDistributor {
|
|||
judges.put(MissionType.CHAMPIONSHIP_RANK, new ChampionshipRankManager());
|
||||
judges.put(MissionType.PLAY_MINI_GAME_TIMES, new PlayMiniGameTimesManager());
|
||||
|
||||
// 鸿蒙阵
|
||||
judges.put(MissionType.HONGMENG_RESONANCE_LATTICE, new HongMengResonanceDataManager());
|
||||
judges.put(MissionType.HONGMENG_TABLET_LEVEL, new HongMengLevelDataManager());
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ public class GetHeroManager implements BaseDataManager {
|
|||
int heroStar = (int)parm[1];
|
||||
CumulationData.Result result = null;
|
||||
if(missionType == MissionType.COLLECT_QUALITY_HERO){
|
||||
SCHero scHero = SCHero.getsCHero().get(heroTid);
|
||||
data.updateHeroQualityCount(heroStar);
|
||||
result = new CumulationData.Result(missionType);
|
||||
}else if(missionType == MissionType.COLLECT_DIFFERENT_HEROS){
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
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.main.MissionStateChangeInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class CowFlySkyEventProcess implements BaseGameEventProcessor {
|
||||
@Override
|
||||
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
|
||||
user.getUserMissionManager().openMission(user,event,misionTypeListMap,parm);
|
||||
}
|
||||
}
|
|
@ -29,7 +29,7 @@ public class MissionEventDistributor {
|
|||
|
||||
public static void init(){
|
||||
|
||||
|
||||
// 刷新任务
|
||||
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor());
|
||||
eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess());
|
||||
|
@ -41,7 +41,7 @@ public class MissionEventDistributor {
|
|||
eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_REFRESH,new JadeDynastyRefreshEventProcess());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_WEEK_REFRESH,new JadeDynastyRefreshEventProcess());
|
||||
|
||||
eventProcessor.put(GameEvent.COW_FLY_SKY_REFRESH,new CowFlySkyEventProcess());
|
||||
|
||||
List<MissionType> typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.REFRESH_MISSING_ROOM);
|
||||
|
@ -182,7 +182,7 @@ public class MissionEventDistributor {
|
|||
eventEnumListMap.put(GameEvent.ADVENTURE_TAKEREWARD,typeList);
|
||||
eventProcessor.put(GameEvent.ADVENTURE_TAKEREWARD,new CumulationDataEventProcessor());
|
||||
|
||||
|
||||
// 领取奖励
|
||||
eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.DAILY_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.TREASURE_MISSION_REWARD,new RewardEventProcessor());
|
||||
|
@ -192,7 +192,7 @@ public class MissionEventDistributor {
|
|||
eventProcessor.put(GameEvent.MISSING_ROOM_MISSION_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.ACHIEVE_REWARD,new RewardEventProcessor());
|
||||
eventProcessor.put(GameEvent.JADE_DYNASTY_MISSION_REWARD,new RewardEventProcessor());
|
||||
|
||||
eventProcessor.put(GameEvent.COW_FLY_SKY_REWEARD,new RewardEventProcessor());
|
||||
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.RING_FIREA_DVANCED);
|
||||
|
@ -417,6 +417,7 @@ public class MissionEventDistributor {
|
|||
eventEnumListMap.put(GameEvent.PLAY_MINI_GAME, typeList);
|
||||
eventProcessor.put(GameEvent.PLAY_MINI_GAME, new CumulationDataEventProcessor());
|
||||
|
||||
// 鸿蒙碑
|
||||
typeList = new ArrayList<>();
|
||||
typeList.add(MissionType.HONGMENG_RESONANCE_LATTICE);
|
||||
eventEnumListMap.put(GameEvent.HONGMENG_RESONANCE_LATTICE, typeList);
|
||||
|
@ -455,7 +456,7 @@ public class MissionEventDistributor {
|
|||
missionTypeEnumListMap.put(GameMisionType.MISSINGROOMMISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.ACHIEVEMISSION, new ArrayList<>());
|
||||
missionTypeEnumListMap.put(GameMisionType.JADE_DYNASTY_MISSION, new ArrayList<>());
|
||||
|
||||
missionTypeEnumListMap.put(GameMisionType.COWFLYSKYMISSION, new ArrayList<>());
|
||||
|
||||
} else {
|
||||
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
|
||||
|
@ -468,7 +469,7 @@ public class MissionEventDistributor {
|
|||
missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION).clear();
|
||||
missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION).clear();
|
||||
|
||||
missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION).clear();
|
||||
|
||||
}
|
||||
threadMissionChangeList.set(missionTypeEnumListMap);
|
||||
|
@ -504,7 +505,10 @@ public class MissionEventDistributor {
|
|||
if(gameMisionType==GameMisionType.MISSINGROOMMISSION){
|
||||
continue;
|
||||
}
|
||||
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION || gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION|| gameMisionType == GameMisionType.ACHIEVEMISSION || gameMisionType == GameMisionType.JADE_DYNASTY_MISSION){
|
||||
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION
|
||||
|| gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION
|
||||
|| gameMisionType == GameMisionType.ACHIEVEMISSION || gameMisionType == GameMisionType.JADE_DYNASTY_MISSION
|
||||
|| gameMisionType == GameMisionType.COWFLYSKYMISSION ){
|
||||
progress = missionStateChangeInfo.getProgress();
|
||||
}
|
||||
if(missionState == MissionState.DOING){
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
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.SArroGantFly;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CowFlySkyMissionType extends AbstractMissionType {
|
||||
|
||||
@Override
|
||||
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[][] reward(int missionId) {
|
||||
SArroGantFly arroGantFly = STableManager.getConfig(SArroGantFly.class).get(missionId);
|
||||
return arroGantFly.getReward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
|
||||
// 进行中得任务
|
||||
Set<Integer> doingMissionIds = getDoingMissionIds();
|
||||
|
||||
Collection<SArroGantFly> values = STableManager.getConfig(SArroGantFly.class).values();
|
||||
for (SArroGantFly fly : values) {
|
||||
// 任务子id
|
||||
int id = fly.getId();
|
||||
// 不在执行中
|
||||
if(!doingMissionIds.contains(id)){
|
||||
continue;
|
||||
}
|
||||
// 获取任务进度
|
||||
int num = MissionLoigc.getDoingProgress(user, cumulationData, fly.getValues(), fly.getValuesII()[0]);
|
||||
// 是否完成
|
||||
boolean isFinish = num >= fly.getValuesII()[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, fly.getReward());
|
||||
missionStateChangeInfos.add(finishInfo);
|
||||
// 任务列表更新
|
||||
doingMissionIds.remove(id);
|
||||
getFinishMissionIds().add(id);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -186,11 +186,9 @@ public class MissingRoomMissionType extends AbstractMissionType{
|
|||
* @param mustAppear
|
||||
*/
|
||||
public void notFreeRefreshMust(User user, int[][] refreshHighTypeNum,Map<Integer,Integer> mustAppear){
|
||||
int refreshTotalCount = user.getUserMissionManager().getMissingRoomMissionType().getRefreshTotalCount();
|
||||
int count = user.getUserMissionManager().getMissingRoomMissionType().getRefreshTotalCount();
|
||||
for(int[] refresh:refreshHighTypeNum){
|
||||
if(refreshTotalCount==0||refreshTotalCount%refresh[0]!=0){
|
||||
continue;
|
||||
}else{
|
||||
if(count!=0 && count%refresh[0]==0){
|
||||
mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package config;
|
||||
|
||||
import manager.STableManager;
|
||||
import manager.Table;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Table(name ="ArroGantFly")
|
||||
public class SArroGantFly implements BaseConfig {
|
||||
|
||||
private int id;
|
||||
|
||||
private int activityId;
|
||||
|
||||
private int values;
|
||||
|
||||
private int[][] valuesII;
|
||||
|
||||
private int[][] reward;
|
||||
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getActivityId() {
|
||||
return activityId;
|
||||
}
|
||||
|
||||
public int getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public int[][] getValuesII() {
|
||||
return valuesII;
|
||||
}
|
||||
|
||||
public int[][] getReward() {
|
||||
return reward;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue