back_recharge
wangyuan 2019-07-31 17:48:16 +08:00
parent 52f8538e99
commit fdc0501110
17 changed files with 191 additions and 53 deletions

View File

@ -89,6 +89,8 @@ public class SGameSetting implements BaseConfig {
private int endlessMinLevel;
private int[][] sevenDaysLastReward;
private static SGameSetting gameSetting;
@ -252,4 +254,8 @@ public class SGameSetting implements BaseConfig {
public int getEndlessMinLevel() {
return endlessMinLevel;
}
public int[][] getSevenDaysLastReward() {
return sevenDaysLastReward;
}
}

View File

@ -23,6 +23,10 @@ public class STreasureTaskConfig implements BaseConfig {
private int times;
private int dayNum;
private int[][] reward;
public static Map<Integer, List<STreasureTaskConfig>> sTreasureTaskConfigListByActivityMap;
public static Map<Integer, List<STreasureTaskConfig>> sTreasureTaskConfigListByTypeMap;
public static Map<Integer, STreasureTaskConfig> sTreasureTaskConfigMap;
@ -75,5 +79,11 @@ public class STreasureTaskConfig implements BaseConfig {
return times;
}
public int getDayNum() {
return dayNum;
}
public int[][] getRewward() {
return reward;
}
}

View File

@ -1072,8 +1072,6 @@ public class MapLogic {
int teamId = mapManager.getTeamId();
List<TeamPosHeroInfo> team = user.getTeamPosManager().getTeamPosForHero().get(teamId);
for (TeamPosHeroInfo teamPosHeroInfo : team) {
// Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId());
// hero.setCurHp(checkResult[teamPosHeroInfo.getPosition()]);
mapManager.updateHeroOneAttribute(teamPosHeroInfo.getHeroId(), HeroAttributeEnum.CurHP.getPropertyId(), checkResult[teamPosHeroInfo.getPosition()+1]);
}
@ -1276,14 +1274,19 @@ public class MapLogic {
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==2){
fightEndResponse.setLastTowerTime((int)(mapManager.getCurrTowerTime()/1000));
}
if(sOptionConfig!=null && sOptionConfig.getJumpType() == 11){
Cell cell = mapManager.getMapInfo().get(triggerXY);
if (cell != null ) {
nextEventId = getNextEventId(user, cell, sOptionConfig);
cell.setEventId(nextEventId);
mapManager.addOrUpdateCell(triggerXY, cell);
fightEndResponse.setEventId(nextEventId);
if(sOptionConfig!=null){
int[][] jumpTypeValues = sOptionConfig.getJumpTypeValues();
SOptionAddCondition sOptionAddConditions = SOptionAddCondition.sOptionAddConditionMap.get(jumpTypeValues[1][1]);
if(sOptionAddConditions!=null && sOptionAddConditions.getType() == 7){
Cell cell = mapManager.getMapInfo().get(triggerXY);
if (cell != null ) {
nextEventId = getNextEventId(user, cell, sOptionConfig);
cell.setEventId(nextEventId);
mapManager.addOrUpdateCell(triggerXY, cell);
fightEndResponse.setEventId(nextEventId);
}
}
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
return;

View File

@ -162,10 +162,18 @@ public class ActivityLogic {
break;
case ActivityType.BLESSACTIVITY:
blessInfoInit(user.getActivityManager(),sGlobalActivity.getId());
break;
case ActivityType.SERVERHAPPY:
initServenHappy(user,sGlobalActivity);
}
}
public void initServenHappy(User user, SGlobalActivity sGlobalActivity) throws Exception {
user.getUserMissionManager().onGameEvent(user,GameEvent.SERVENHAPPY_REFRESH,sGlobalActivity.getId());
user.getActivityManager().addActivity(sGlobalActivity.getId(),new ActivityMission());
}
public static ActivityLogic getInstance() {
return ActivityLogic.Instance.instance;
@ -387,7 +395,7 @@ public class ActivityLogic {
Integer activityId = activityState.getKey();
ActivityMission activityMission = activityState.getValue();
//todo 活动未初始化成功
if(activityMission == null){
if(activityMission == null || activityMission.getActivityProgressInfoMap().isEmpty()){
continue;
}
int activityStatus = activityMission.getActivityState();

View File

@ -74,6 +74,7 @@ public class CumulationData {
public int arenaFightsuccesTimes; //竞技场胜利胜利场次
public int finsihDayilyTimes; //完成每日任务数量
public int copyMaxLevel; // 试炼层数达到
public int copyStoryTimes; // 参与试炼副本次数
@ -82,6 +83,8 @@ public class CumulationData {
public int fastAdventurerewardTimes;//累计秘境快速探索次数达到
public int arenaRank = 0;//竞技场排名进入排行榜前:
public int senvenScores; //七日狂欢分数
//任务重置
public void reset(){
recruitmentRands=0;
@ -106,6 +109,7 @@ public class CumulationData {
storyFightInfo.clear();
heroLevleCountMap.clear();
levlePassMap.clear();
senvenScores = 0;
clearArray(sEquipQualityCount);
clearArray(heroQualityCount);
}

View File

@ -8,6 +8,9 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.*;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.logic.mission.main.*;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.MessageUtil;
import java.util.List;
import java.util.Map;
@ -18,12 +21,12 @@ public class UserMissionManager extends MongoBase {
private VipMissionIdsType vipMissionIdsType=new VipMissionIdsType();
private DailyMissionIdsType dailyMissionIdsType=new DailyMissionIdsType();
private TreasureMissionType treasureMissionIdsType=new TreasureMissionType();
private ServerHappyMissionType serverHappyMissionType=new ServerHappyMissionType();
private TreasureMissionType sevenHappyMissionType =new TreasureMissionType();
//数据累加项
private CumulationData cumulationData = new CumulationData();
private CumulationData dailyCumulationData = new CumulationData();
private CumulationData treasureCumulationData = new CumulationData();
private CumulationData serverHappyCumulationData = new CumulationData();
private CumulationData sevenHappyCumulationData = new CumulationData();
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm){
switch (event){
@ -66,6 +69,22 @@ public class UserMissionManager extends MongoBase {
updateString("treasureMissionIdsType",treasureMissionIdsType);
updateString("treasureCumulationData",treasureCumulationData);
break;
case SERVENHAPPY_REFRESH:
sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
sevenHappyMissionType.getDoingMissionIds().clear();
sevenHappyMissionType.getFinishMissionIds().clear();
sevenHappyMissionType.getRewardedMissionIds().clear();
sevenHappyMissionType.getTakeTimes().clear();
List<MissionStateChangeInfo> servenMissionmStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){
sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
servenMissionmStateChangeInfos.add(new MissionStateChangeInfo(sTreasureTaskConfig.getId(), MissionState.DOING,0));
}
sevenHappyCumulationData.reset();
updateString("sevenHappyMissionType", sevenHappyMissionType);
updateString("sevenHappyCumulationData", sevenHappyCumulationData);
break;
}
}
@ -87,6 +106,18 @@ public class UserMissionManager extends MongoBase {
updateString("treasureMissionIdsType",treasureMissionIdsType);
}
break;
case SEVENHAPPY_MISSION_REWARD:{
int missionId = (int) parm[0];
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
sevenHappyMissionType.rewardMission(user,missionId, missionStateChangeInfos);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
int takeTimes = missionStateChangeInfos.get(0).getProgress();
missionStateChangeInfos.get(0).setProgress(0);
int score = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId).getPoints() * takeTimes;
calCumulationDataResult(user,MissionType.SENVER_HAPPY,missionTypeEnumListMap,score);
}
}
break;
}
}
@ -120,6 +151,18 @@ public class UserMissionManager extends MongoBase {
}
}
/* if(!sevenHappyMissionType.getDoingMissionIds().isEmpty() ){
List<STreasureTaskConfig> sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByTypeMap.get(missionType.getMissionTypeValue());
if(sTreasureTaskConfigs!=null){
CumulationData.Result result = sevenHappyCumulationData.updateData(missionType, parm);
if(result!=null){
sevenHappyMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.SEVENMISSION),sevenHappyCumulationData);
updateString("sevenHappyCumulationData",sevenHappyCumulationData);
updateString("sevenHappyMissionType",sevenHappyMissionType);
}
}
}*/
CumulationData.Result result = cumulationData.updateData(missionType, parm);
if(result!=null){
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
@ -157,4 +200,12 @@ public class UserMissionManager extends MongoBase {
public CumulationData getTreasureCumulationData() {
return treasureCumulationData;
}
public TreasureMissionType getSevenHappyMissionType() {
return sevenHappyMissionType;
}
public CumulationData getSevenHappyCumulationData() {
return sevenHappyCumulationData;
}
}

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.logic.dao.root;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
public class FamilyInfo {
private int id;
private String name;
private String announce;
private int joinType ; //加入类型 1:直接加入 2:申请加入 3:禁止加入
private Map<Integer, Set<Integer>> members = new ConcurrentHashMap();
private long createTime;
}

View File

@ -0,0 +1,19 @@
package com.ljsd.jieling.logic.family;
import com.ljsd.jieling.network.session.ISession;
public class FamilyLogic {
public static void createFamily(ISession session,String familyName,String announce){
}
public static void recommendFamily(ISession session){
}
public static void applyFamily(ISession session){
}
}

View File

@ -358,13 +358,15 @@ public class CombatLogic {
adventureFastReward = getAdventureReward(user, position,false,0);
}
}else{
String err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1);
if(!"".equals(err)){
String err ="";
if(position == 0){
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1);
}else{
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10015,1);
if (!"".equals(err)){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,err);
return;
}
}
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);

View File

@ -4,6 +4,8 @@ public enum GameEvent {
VIP_LEVLUP, //vip等级提升
DAILY_REFRESH,//日常任务刷新
TREASH_REFRESH,//孙龙的宝藏
SERVENHAPPY_REFRESH,//七日狂欢
RANDOM_HERO,// 抽卡
GET_HERO,//获取新英雄
HERO_LEVEL_UP, //英雄等级提升
@ -22,6 +24,7 @@ public enum GameEvent {
VIP_MISSION_REWARD, //vip任务领取事件
DAILY_MISSION_REWARD, //每日任务领取事件
TREASURE_MISSION_REWARD,// 领取孙龙的宝藏
SEVENHAPPY_MISSION_REWARD,// 领取孙龙的宝藏
WORKSHOP_CREATE_EQUIP,//打造装备
ADVENTURE_TAKEREWARD, //收取秘境奖励

View File

@ -5,6 +5,7 @@ public enum GameMisionType {
DAILYMISSION(2),
COPYMISSION(3),
TREASUREMISSION(4),
SEVENMISSION(5),
;
private int type;

View File

@ -13,10 +13,7 @@ import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mission.main.DailyMissionIdsType;
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
import com.ljsd.jieling.logic.mission.main.TreasureMissionType;
import com.ljsd.jieling.logic.mission.main.VipMissionIdsType;
import com.ljsd.jieling.logic.mission.main.*;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
@ -38,16 +35,17 @@ public class MissionLoigc {
getDailyMission(user,missionList);
getVipMission(user,missionList);
getCopyMission(user,missionList);
getTreasureMission(user,missionList);
getTreasureMission(user,missionList,ActivityType.TREASURE);
// getTreasureMission(user,missionList,ActivityType.SERVERHAPPY);
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
}
private static void getTreasureMission(User user, List<CommonProto.UserMissionInfo> missionList) {
private static void getTreasureMission(User user, List<CommonProto.UserMissionInfo> missionList,int activityType) {
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
int treasureActivityId = 0;
for(Integer activityId : activityMissionMap.keySet()){
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.TREASURE){
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == activityType){
treasureActivityId = activityId;
}
}
@ -56,23 +54,27 @@ public class MissionLoigc {
}
TreasureMissionType treasureMissionIdsType = user.getUserMissionManager().getTreasureMissionIdsType();
CumulationData treasureCumulationData = user.getUserMissionManager().getTreasureCumulationData();
int treasuremissionType = GameMisionType.TREASUREMISSION.getType();
if(activityType == ActivityType.SERVERHAPPY){
treasureMissionIdsType = user.getUserMissionManager().getSevenHappyMissionType();
treasureCumulationData = user.getUserMissionManager().getSevenHappyCumulationData();
treasuremissionType = GameMisionType.SEVENMISSION.getType();
}
BitSet rewardedMissionIds = treasureMissionIdsType.getRewardedMissionIds();
Map<Integer, Integer> takeTimesMap = treasureMissionIdsType.getTakeTimes();
List<STreasureTaskConfig> sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get(treasureActivityId);
int treasuremissionType = GameMisionType.TREASUREMISSION.getType();
for(STreasureTaskConfig sTreasureTaskConfig:sTreasureTaskConfigs){
int state = 2;
int missionId = sTreasureTaskConfig.getId();
int sendProgress =0;
Integer takeTimes = null;
if(!rewardedMissionIds.get(missionId)){
takeTimes = takeTimesMap.get(missionId);
takeTimes = takeTimesMap.get(missionId);
if(takeTimes == null){
takeTimes=0;
}
int finishParm = sTreasureTaskConfig.getTaskValue()[1][0];
int doingProgress = getDoingProgress(user,treasureCumulationData,sTreasureTaskConfig.getTaskType(),sTreasureTaskConfig.getTaskValue()[0]);
if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){
sendProgress =1;
}else{
@ -82,7 +84,6 @@ public class MissionLoigc {
if( (sendProgress + takeTimes)>times){
sendProgress =times-takeTimes;
}
if(sendProgress>0){
state=1;
}else{
@ -249,6 +250,16 @@ public class MissionLoigc {
}
}
if(type == GameMisionType.SEVENMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setTreasureScore(user.getPlayerInfoManager().getTreasureScore()).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
return;
}
}
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();

View File

@ -49,6 +49,7 @@ public enum MissionType {
INVASIONBOSS_PLAY_TIMES(35),//累计挑战外敌入侵次数达到:(不论成败)
FAST_ADVENTUREREWARD_TIMES(36),//累计秘境快速探索次数达到:
ARENA_RANK(37),//竞技场排名进入排行榜前:
SENVER_HAPPY(38),//七日狂欢
;

View File

@ -65,6 +65,8 @@ public class DataManagerDistributor {
judges.put(MissionType.COPY_STORY_LEVLE,new CopyTowerManager());
judges.put(MissionType.COPY_STORY_TIMES,new CopyTowerManager());
judges.put(MissionType.SENVER_HAPPY,new FinishSenvenHappyManager());
}
public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception {

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

View File

@ -32,6 +32,7 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.VIP_LEVLUP,new VipLevelUpEventProcessor());
eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess());
eventProcessor.put(GameEvent.TREASH_REFRESH,new TreasureRefreshEventProcess());
eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new TreasureRefreshEventProcess());
List<MissionType> typeList = new ArrayList<>();
typeList.add(MissionType.RECRUITMENT_RANDOM_HEROES);
@ -192,11 +193,13 @@ public class MissionEventDistributor {
missionTypeEnumListMap.put(GameMisionType.DAILYMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.COPYMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.TREASUREMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.SEVENMISSION, new ArrayList<>());
} else {
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.DAILYMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.COPYMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.SEVENMISSION).clear();
}
threadMissionChangeList.set(missionTypeEnumListMap);
}
@ -225,7 +228,7 @@ public class MissionEventDistributor {
MissionState missionState = missionStateChangeInfo.getMissionState();
int state = missionState.getState();
int progress = 0;
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION){
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION || gameMisionType == GameMisionType.SEVENMISSION){
progress = missionStateChangeInfo.getProgress();
}
if(missionState == MissionState.DOING){

View File

@ -1,23 +0,0 @@
package com.ljsd.jieling.logic.mission.main;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
import java.util.List;
public class ServerHappyMissionType extends AbstractMissionType {
@Override
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
}
@Override
public int[][] reward(int missionId) {
return new int[0][];
}
@Override
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) {
}
}