mission & store

back_recharge
wangyuan 2019-07-24 13:46:40 +08:00
parent 26270ae6da
commit 030e0f728e
16 changed files with 167 additions and 16 deletions

View File

@ -83,6 +83,8 @@ public class SGameSetting implements BaseConfig {
private int[] treasurePrice;
private int incidentalBossCd;
@ -234,4 +236,8 @@ public class SGameSetting implements BaseConfig {
public int[] getTreasurePrice() {
return treasurePrice;
}
public int getIncidentalBossCd() {
return incidentalBossCd;
}
}

View File

@ -239,6 +239,7 @@ public class MapLogic {
}
LOGGER.info("enterMap() uid=>{} mapId =>{}", uid, mapManager.getCurMapId());
LOGGER.info("进图临时背包{}",mapEnterResponse.getTemporaryItems().toString());
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,SChallengeConfig.sChallengeConfigs.get(mapId).getType(),1);
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
}
@ -874,6 +875,12 @@ public class MapLogic {
}
public static void main(String[] args) {
long diff = (1565920800000L - 1563242400000L)/1000/60/60/24;
System.out.println(diff);
}
private boolean onlyLevelMap(User user, boolean needTemporaryItem) throws Exception {
MapManager mapManager = user.getMapManager();
if (mapManager.getMapInfo() == null) {
@ -1606,6 +1613,7 @@ public class MapLogic {
mapSweepResponse.addDrop(dropBuilder);
}
user.getUserMissionManager().onGameEvent(user, GameEvent.STORY_FIGHT, mapId,1,count);
user.getUserMissionManager().onGameEvent(user, GameEvent.PlAY_STORY, type,count);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapSweepResponse.build(), true);
}

View File

@ -151,6 +151,7 @@ public class ActivityLogic {
List<int[][]> dropList = new ArrayList<>(10);
boolean canTakeFinalReward = true;
STreasureConfig finalSTreasureConfig = null;
Map<Integer,ActivityProgressInfo> willUpdateAcP = new HashMap<>();
for(Map.Entry<Integer,ActivityProgressInfo> activityProgressInfoItem: activityMission.getActivityProgressInfoMap().entrySet()){
Integer mineMision = activityProgressInfoItem.getKey();
STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision);
@ -168,14 +169,18 @@ public class ActivityLogic {
if(changeState == ActivityType.FINISH_TAKED){
dropList.add(sTreasureConfigTmp.getTreasureReward());
}
value.setState(changeState);
activityMission.updateProgressInfo(missionId,value);
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,mineMision);
willUpdateAcP.put(mineMision,value);
}else{
canTakeFinalReward = false;
}
}
if(canTakeFinalReward){
for(Map.Entry<Integer,ActivityProgressInfo> item : willUpdateAcP.entrySet()){
ActivityProgressInfo value = item.getValue();
value.setState(changeState);
activityMission.updateProgressInfo(missionId,value);
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,item.getKey());
}
if(canTakeFinalReward && finalSTreasureConfig!=null){
ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(finalSTreasureConfig.getId());
int stateTmp = activityProgressInfo.getState();
if(changeState!=stateTmp){
@ -187,6 +192,7 @@ public class ActivityLogic {
}
activityProgressInfo.setState(changeState);
activityMission.updateProgressInfo(missionId,activityProgressInfo);
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent,activityId,finalSTreasureConfig.getId());
}
}
if(dropList.isEmpty()){

View File

@ -12,12 +12,14 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CheckFight;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.ArenaInfoProto;
import com.ljsd.jieling.protocols.CommonProto;
@ -583,6 +585,16 @@ public class ArenaLogic {
String value = item.getValue();
int uid = Integer.parseInt(value);
User user = UserManager.getUser(uid);
if(type == GlobalsDef.ARENA_DAILY_REWARD){
MissionEventDistributor.requestStart();
user.getUserMissionManager().onGameEvent(user,GameEvent.ARENA_UPDATE_RANK,-rank);
ISession sessionByUid = OnlineUserManager.getSessionByUid(uid);
if(sessionByUid!=null){
MissionEventDistributor.requestEnd(sessionByUid,true);
}
}
String rewardByRank = getRewardByRank(rank++, type);
if(!"".equals(rewardByRank)){
MailLogic.getInstance().sendMail(user.getId(),title,content,rewardByRank,nowTime, Global.MAIL_EFFECTIVE_TIME);

View File

@ -16,6 +16,7 @@ public class CumulationData {
// private Map<Integer,Integer> randomCountMap = new HashMap<>(); // 抽卡次数统计
private int recruitmentRands; //群英征募 群英招募次数
public int elementRands; //群英征募 群英招募次数
/**
@ -74,6 +75,11 @@ public class CumulationData {
public int copyMaxLevel; // 试炼层数达到
public int copyStoryTimes; // 参与试炼副本次数
public int heroStoryPlayTimes;//累计挑战精英副本次数达到:(不论成败)
public int invasionbossPlayTimes;//累计挑战外敌入侵次数达到:(不论成败)
public int fastAdventurerewardTimes;//累计秘境快速探索次数达到
public int arenaRank = 0;//竞技场排名进入排行榜前:
//任务重置
public void reset(){
recruitmentRands=0;
@ -89,7 +95,22 @@ public class CumulationData {
finsihDayilyTimes=0;
copyMaxLevel=0;
copyStoryTimes=0;
elementRands =0;
heroStoryPlayTimes=0;
invasionbossPlayTimes=0;
fastAdventurerewardTimes=0;
arenaRank=0;
exploreFight.clear();
storyFightInfo.clear();
heroLevleCountMap.clear();
clearArray(sEquipQualityCount);
clearArray(heroQualityCount);
}
private void clearArray(int[] source){
for(int i =0;i<source.length;i++){
source[i]=0;
}
}

View File

@ -350,17 +350,18 @@ public class CombatLogic {
if(position == 1 && user.getAdventureManager().getTakeFirst() == 0){
adventureFastReward = getAdventureFastReward(user,SGameSetting.getGameSetting().getAdventureRefresh());
user.getAdventureManager().setTakeFirst(1);
user.getUserMissionManager().onGameEvent(user,GameEvent.ADVENTURE_TAKEREWARD,1);
}else{
adventureFastReward = getAdventureReward(user, position,false,0);
}
}else{
String err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1);
if (!"".equals(err)){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,err);
return;
}
adventureFastReward = getAdventureFastReward(user, SGameSetting.getGameSetting().getAdventureFastBattle());
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1);
}
FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder().setDrop(adventureFastReward.get(1)).setRandomDrop(adventureFastReward.get(2)).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true);
@ -749,6 +750,7 @@ public class CombatLogic {
.setBossRemainHp(adventureBoss.getRemainHp())
.build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,build,true);
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,999,i);
}catch (Exception e){
LOGGER.error("the exception={}",e);
}finally {

View File

@ -293,9 +293,9 @@ public class HeroLogic {
int orderBoxContinue = sLotterySetting.getOrderBoxContinue();
long now = System.currentTimeMillis();
ServerConfig serverConfig = GameApplication.serverConfig;
int diffHours = (int)((now - serverConfig.getCacheOpenTime())/1000/60/60%( (orderBoxContinue + orderBoxContinue)));
int diffSeaseon = (int)((now - serverConfig.getCacheOpenTime())/1000/60/60/( (orderBoxContinue + orderBoxContinue)));
if(diffHours<=orderBoxOpenTime){
int diffHours = (int)((now - serverConfig.getCacheOpenTime())/1000/60/60%( (orderBoxOpenTime + orderBoxContinue)));
int diffSeaseon = (int)((now - serverConfig.getCacheOpenTime())/1000/60/60/( (orderBoxOpenTime + orderBoxContinue)));
if(diffHours>=orderBoxOpenTime){
return orderBoxPool[diffSeaseon%orderBoxPool.length];
}
return 0;
@ -973,9 +973,8 @@ public class HeroLogic {
combinedAttribute(effect,heroAllAttribute);
}
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE));
calInteractAdd(heroAllAttribute);
//装备战力保存
heroAllAttribute.put(HeroAttributeEnum.EquipForce.getPropertyId(),equipForce);
return heroAllAttribute;

View File

@ -10,6 +10,7 @@ public enum GameEvent {
POKEMON_ADVANCED, //异妖激活
POKEMON_UPLEVEL, //异妖升级 影响战力
ARENA_CHALLENGE, //竞技场挑战
ARENA_UPDATE_RANK, //竞技场RANK
USER_LEVELUP,
USER_FORCE_CHANGE,
CONSUMER_MATERIAL,//道具消耗
@ -29,4 +30,7 @@ public enum GameEvent {
COPY_TOWER_TIMES, //参与试炼副本次数
COPY_TOWER_LEVEL, //试炼层数达到
PlAY_STORY, //玩副本
}

View File

@ -72,12 +72,23 @@ public class MissionLoigc {
}
int finishParm = sTreasureTaskConfig.getTaskValue()[1][0];
int doingProgress = getDoingProgress(user,treasureCumulationData,sTreasureTaskConfig.getTaskType(),sTreasureTaskConfig.getTaskValue()[0]);
sendProgress = (doingProgress - takeTimes * finishParm) / finishParm;
if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){
sendProgress =1;
}else{
sendProgress = (doingProgress - takeTimes * finishParm) / finishParm;
}
int times = sTreasureTaskConfig.getTimes();
if(sendProgress>times){
sendProgress =times;
}
if(sendProgress>0){
state=1;
}else{
state=0;
}
}
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(treasuremissionType).setProgress(sendProgress).setTakeTimes(takeTimes).build());
}
@ -393,6 +404,21 @@ public class MissionLoigc {
case COPY_STORY_TIMES:
count=cumulationData.copyStoryTimes;
break;
case ELEMENT_RANDOM_TIMES:
count=cumulationData.elementRands;
break;
case HERO_STORY_PLAY_TIMES:
count=cumulationData.heroStoryPlayTimes;
break;
case INVASIONBOSS_PLAY_TIMES:
count=cumulationData.invasionbossPlayTimes;
break;
case FAST_ADVENTUREREWARD_TIMES:
count=cumulationData.fastAdventurerewardTimes;
break;
case ARENA_RANK:
count=-1*cumulationData.arenaRank;
break;
default:
count = 0;
break;

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;
public class ArenaRankManager implements BaseDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
if (missionType == MissionType.ARENA_RANK) {
int rank = (int) parm[0];
if (data.arenaRank < rank) {
data.arenaRank = rank;
return new CumulationData.Result(missionType);
}
}
return null;
}
}

View File

@ -11,6 +11,7 @@ public class DataManagerDistributor {
public static void init(){
judges.put(MissionType.RECRUITMENT_RANDOM_HEROES,new RandomHeroDataManager());
judges.put(MissionType.ELEMENT_RANDOM_TIMES,new RandomHeroDataManager());
judges.put(MissionType.COLLECT_QUALITY_HERO,new GetHeroManager());
judges.put(MissionType.HERO_LEVLE_COUNT,new HeroLevelUpManager());
@ -22,6 +23,8 @@ public class DataManagerDistributor {
judges.put(MissionType.ARENA_CHALLENEGE_NUMS,new ArenaChallengeManager());
judges.put(MissionType.ARENA_SCORE,new ArenaChallengeManager());
judges.put(MissionType.ARENA_RANK,new ArenaRankManager());
judges.put(MissionType.USER_LEVEL,new DefaultDataManager());
judges.put(MissionType.USER_FORCE,new DefaultDataManager());
@ -48,6 +51,10 @@ public class DataManagerDistributor {
judges.put(MissionType.HERO_STORY_TIMES,new FightDataManager());
judges.put(MissionType.LEVEL_STORY_TIMES,new FightDataManager());
judges.put(MissionType.HERO_STORY_PLAY_TIMES,new FightPlayDataManager());
judges.put(MissionType.INVASIONBOSS_PLAY_TIMES,new FightPlayDataManager());
judges.put(MissionType.FAST_ADVENTUREREWARD_TIMES,new FightPlayDataManager());
judges.put(MissionType.HERO_LEVLE_TIMES,new HeroLevelUpManager());
judges.put(MissionType.ARENA_FIGHTSUCCES_TIMES,new ArenaChallengeManager());

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;
public class FightPlayDataManager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int type = (int)parm[0];
if(type == 3 && missionType == MissionType.HERO_STORY_PLAY_TIMES){
data.heroStoryPlayTimes+=(int)parm[1];
}else if(type == 999 && missionType == MissionType.INVASIONBOSS_PLAY_TIMES){
data.invasionbossPlayTimes+=(int)parm[1];
}else if(type == 9999 && missionType == MissionType.FAST_ADVENTUREREWARD_TIMES){
data.fastAdventurerewardTimes+=(int)parm[1];
}
return new CumulationData.Result(missionType);
}
}

View File

@ -12,6 +12,9 @@ public class RandomHeroDataManager implements BaseDataManager{
if(type == 1 && missionType == MissionType.RECRUITMENT_RANDOM_HEROES){
data.setRecruitmentRands(data.getRecruitmentRands() + count);
result = new CumulationData.Result(missionType);
}else if(type == 2 && missionType == MissionType.ELEMENT_RANDOM_TIMES){
data.elementRands+=count;
result = new CumulationData.Result(missionType);
}
return result;
}

View File

@ -69,6 +69,11 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.ARENA_CHALLENGE,typeList);
eventProcessor.put(GameEvent.ARENA_CHALLENGE,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.ARENA_RANK);
eventEnumListMap.put(GameEvent.ARENA_UPDATE_RANK,typeList);
eventProcessor.put(GameEvent.ARENA_UPDATE_RANK,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.USER_LEVEL);
@ -110,6 +115,10 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.STORY_FIGHT,typeList);
eventProcessor.put(GameEvent.STORY_FIGHT,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.HERO_STORY_PLAY_TIMES);
eventProcessor.put(GameEvent.PlAY_STORY,new CumulationDataEventProcessor());
typeList = new ArrayList<>();
typeList.add(MissionType.KILL_INVASIONBOSS);

View File

@ -31,6 +31,9 @@ public class TreasureMissionType extends AbstractMissionType{
takeTimes = 0;
}
int reallyTakeTimes = (doingProgress - takeTimes * finishParm) / finishParm;
if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){
reallyTakeTimes =1;
}
if(reallyTakeTimes>0){
this.takeTimes.put(missionId,takeTimes+reallyTakeTimes);
if(sTreasureTaskConfig.getTimes()>0 && this.takeTimes.get(missionId)>sTreasureTaskConfig.getTimes()){
@ -67,9 +70,11 @@ public class TreasureMissionType extends AbstractMissionType{
int times = sTreasureTaskConfig.getTimes();
//完成
int finishParm = sTreasureTaskConfig.getTaskValue()[1][0];
if(times!=0 && doingProgress/finishParm>times){
if(times!=0 && (doingProgress/finishParm>times || (doingProgress!=0 && finishParm<0 && doingProgress>finishParm) )){
doingMissionIds.remove(id);
getFinishMissionIds().add(id);
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,times);
missionStateChangeInfos.add(missionStateChangeInfo);
continue;
}
Integer takeTimes = this.takeTimes.get(id);

View File

@ -41,10 +41,10 @@ public class StoreLogic {
long startTime = 0;
long endTime = 0;
if (!sStoreTypeConfig.getStartTime().equals("0")){
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), "YYYYMMdd hhmmss");
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), TimeUtils.Stand_CeHua_Data_format);
}
if (!sStoreTypeConfig.getEndTime().equals("0")){
endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), "YYYYMMdd hhmmss");
endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), TimeUtils.Stand_CeHua_Data_format);
}
if(startTime!=0 && endTime!=0 && now > startTime && now<endTime && !openStoreInfo.contains(sStoreTypeConfig.getId())){
for(ISession session : OnlineUserManager.sessionMap.values()){
@ -141,6 +141,11 @@ public class StoreLogic {
if(sStoreTypeConfig.getStoreOpenRule() == 2 ){
endTime =Integer.parseInt(sStoreTypeConfig.getEndTime())*60*1000 + now;
}
if(sStoreTypeConfig.getStoreOpenRule() == 3 ){
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), TimeUtils.Stand_CeHua_Data_format);
endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), TimeUtils.Stand_CeHua_Data_format);
System.out.println(new Date(endTime));
}
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);
sendStoreUpdateIndication(user.getId(),storeManager.getStoreInfoMap().get(sStoreTypeConfig.getId()));
@ -186,10 +191,10 @@ public class StoreLogic {
long startTime = 0;
long endTime = 0;
if (!sStoreTypeConfig.getStartTime().equals("0")){
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), "YYYYMMdd hhmmss");
startTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getStartTime(), TimeUtils.Stand_CeHua_Data_format);
}
if (!sStoreTypeConfig.getEndTime().equals("0")){
endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), "YYYYMMdd hhmmss");
endTime = TimeUtils.parseTimeToMiles(sStoreTypeConfig.getEndTime(), TimeUtils.Stand_CeHua_Data_format);
}
storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);
}