孙龙宝藏修改

lvxinran 2019-10-19 16:49:38 +08:00
parent 1cd0fe5ce7
commit 138af14f00
13 changed files with 194 additions and 172 deletions

View File

@ -26,7 +26,7 @@ public class SSpecialConfig implements BaseConfig {
public static final String EQUIPSIGN_LIMIT = "EquipSign_limit";//仓库中的魂印上限 public static final String EQUIPSIGN_LIMIT = "EquipSign_limit";//仓库中的魂印上限
public static final String FRIENDAMOUNT_LIMIT = "FriendAmount_limit";//好友上限 public static final String FRIENDAMOUNT_LIMIT = "FriendAmount_limit";//好友上限
public static final String FRIENDAPPLYAMOUNT_LIMIT = "FriendApplyAmount_limit";//好友申请上限 public static final String FRIENDAPPLYAMOUNT_LIMIT = "FriendApplyAmount_limit";//好友申请上限
public static final String SUNLONG_DAILYTASKS = "Sunlong_DailyTasks";//孙龙的宝藏每日、每周、每月任务个数
@Override @Override
public void init() throws Exception { public void init() throws Exception {
@ -53,6 +53,15 @@ public class SSpecialConfig implements BaseConfig {
} }
return Integer.valueOf(value); return Integer.valueOf(value);
} }
public static int[] getOnceArrayValue(String key){
String value = enumers.get(key);
String[] array = value.split("#");
int[] arrayNum = new int[array.length];
for (int i = 0 ; i < array.length;i++) {
arrayNum[i] = Integer.parseInt(array[i]);
}
return arrayNum;
}
public int getId() { public int getId() {

View File

@ -3,57 +3,69 @@ package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table; import com.ljsd.jieling.logic.Table;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Table(name ="TreasureSunlongConfig") @Table(name ="TreasureSunlongConfig")
public class STreasureSunlongConfig implements BaseConfig { public class STreasureSunlongConfig implements BaseConfig {
private int id; private int id;
private int activityId; private int activityId;
private int type; private int type;
private int level; private int level;
private int integral; private int[][] integral;
private int[][] reward; private int[][] reward;
private int[][] treasureReward; private int[][] treasureReward;
public static Map<Integer,STreasureSunlongConfig> treasureSunlongConfigMap;
@Override
public static Map<Integer,STreasureSunlongConfig> levelTreasureConfigMap;
@Override
public void init() throws Exception { public void init() throws Exception {
treasureSunlongConfigMap=STableManager.getConfig(STreasureSunlongConfig.class);
levelTreasureConfigMap= new HashMap<>(treasureSunlongConfigMap.size());
for(Map.Entry<Integer,STreasureSunlongConfig> entry:treasureSunlongConfigMap.entrySet()){
STreasureSunlongConfig config = entry.getValue();
if(config.getActivityId()!=40){
continue;
}
levelTreasureConfigMap.put(config.getLevel(), config);
}
} }
public int getId() { public int getId() {
return id; return id;
} }
public int getActivityId() { public int getActivityId() {
return activityId; return activityId;
} }
public int getType() { public int getType() {
return type; return type;
} }
public int getLevel() { public int getLevel() {
return level; return level;
} }
public int getIntegral() { public int[][] getIntegral() {
return integral; return integral;
} }
public int[][] getReward() { public int[][] getReward() {
return reward; return reward;
} }
public int[][] getTreasureReward() { public int[][] getTreasureReward() {
return treasureReward; return treasureReward;
} }

View File

@ -37,7 +37,7 @@ public class STreasureSunlongTaskConfig implements BaseConfig {
if(!taskTypeMap.containsKey(entry.getValue().getType())){ if(!taskTypeMap.containsKey(entry.getValue().getType())){
taskTypeMap.put(entry.getValue().getType(),new ArrayList<>()); taskTypeMap.put(entry.getValue().getType(),new ArrayList<>());
} }
taskTypeMap.get(entry.getValue()).add(entry.getKey()); taskTypeMap.get(entry.getValue().getType()).add(entry.getKey());
} }
} }

View File

@ -152,4 +152,6 @@ public interface BIReason {
int FAMILY_SET_ICON = 1037;//工会修改图腾 int FAMILY_SET_ICON = 1037;//工会修改图腾
int TREASURE_LEVEL_UP_CONCUME = 1038;//孙龙宝藏等级提升消耗
} }

View File

@ -330,7 +330,7 @@ public class GMRequestHandler extends BaseHandler{
} }
public void treasureScore(ISession session,int score) throws Exception { public void treasureScore(ISession session,int score) throws Exception {
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
user.getPlayerInfoManager().setTreasureScore(score); // user.getPlayerInfoManager().setTreasureScore(score);
} }
} }

View File

@ -150,7 +150,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
.addAllTowerReceivedReward(towerFloorReceivedReward) .addAllTowerReceivedReward(towerFloorReceivedReward)
.addAllGoodsTypeDuration(goodsTypeDurations) .addAllGoodsTypeDuration(goodsTypeDurations)
.setHadBuyTreasure(playerInfoManager.getHadBuyTreasure()) .setHadBuyTreasure(playerInfoManager.getHadBuyTreasure())
.setTreasureScore(playerInfoManager.getTreasureScore()) .setTreasureLevel(playerInfoManager.getTreasureLevel())
.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(playerInfoManager.getSign()+1).setState(playerInfoManager.getSignTotay()).build()) .setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(playerInfoManager.getSign()+1).setState(playerInfoManager.getSignTotay()).build())
.setMonsterAttackTime(user.getMapManager().getLastMonsterAttack()) .setMonsterAttackTime(user.getMapManager().getLastMonsterAttack())
.setFirstTenth(user.getHeroManager().getFirstTenth()) .setFirstTenth(user.getHeroManager().getFirstTenth())

View File

@ -283,6 +283,7 @@ public class GlobalDataManaager {
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder); PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
PlayerLogic.getInstance().flushUserdataEvery(user,fBuilder); PlayerLogic.getInstance().flushUserdataEvery(user,fBuilder);
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0); user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0);
user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH,0);
user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0); user.getUserMissionManager().onGameEvent(user, GameEvent.BLOODY_REFRESH,0);
FriendLogic.getInstance().refreshState(session); FriendLogic.getInstance().refreshState(session);
int sendDays = user.getPlayerInfoManager().getSendDays(); int sendDays = user.getPlayerInfoManager().getSendDays();

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SGlobalActivity; import com.ljsd.jieling.config.SGlobalActivity;
import com.ljsd.jieling.config.STreasureConfig; import com.ljsd.jieling.config.STreasureConfig;
import com.ljsd.jieling.config.STreasureSunlongConfig;
import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.ktbeans.KtEventUtils; import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
@ -31,15 +32,12 @@ public class TreasureActivity extends AbstractActivity {
@Override @Override
public void initActivity(User user) throws Exception { public void initActivity(User user) throws Exception {
LOGGER.info("戒灵秘宝初始化...");
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, sGlobalActivity.getId()); user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_MONTH_REFRESH, sGlobalActivity.getId());
ActivityMission activityMission = new ActivityMission(); ActivityMission activityMission = new ActivityMission();
List<STreasureConfig> sTreasureConfigs = STreasureConfig.configByActivityIdMap.get(sGlobalActivity.getId()); List<Integer> levels = new ArrayList<>(STreasureSunlongConfig.levelTreasureConfigMap.keySet());
List<Integer> misionIds = new ArrayList<>(sTreasureConfigs.size()); activityMission.initOtherMission(levels);
for (STreasureConfig sTreasureConfig : sTreasureConfigs) {
misionIds.add(sTreasureConfig.getId());
}
activityMission.initOtherMission(misionIds);
long endTime = sGlobalActivity.getTimeLong(user.getPlayerInfoManager().getCreateTime(), 2) - 24 * 3600 * 1000; long endTime = sGlobalActivity.getTimeLong(user.getPlayerInfoManager().getCreateTime(), 2) - 24 * 3600 * 1000;
user.getActivityManager().setTrsendTime(endTime); user.getActivityManager().setTrsendTime(endTime);
user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission); user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission);
@ -67,93 +65,123 @@ public class TreasureActivity extends AbstractActivity {
if (hadBuyTreasure == 1) { if (hadBuyTreasure == 1) {
changeState = ActivityType.FINISH_TAKED; changeState = ActivityType.FINISH_TAKED;
} }
int treasureScore = playerInfoManager.getTreasureScore(); List<int[][]> dropList = new ArrayList<>(2);
CommonProto.Drop.Builder drop = null; if(missionId==-1){
if (missionId == -1) { for (Map.Entry<Integer, ActivityProgressInfo> entry : activityMission.getActivityProgressInfoMap().entrySet()) {
List<int[][]> dropList = new ArrayList<>(10); if(entry.getKey()<user.getPlayerInfoManager().getTreasureLevel()){
boolean canTakeFinalReward = true; int state =entry.getValue().getState();
STreasureConfig finalSTreasureConfig = null; if(state==changeState||state==ActivityType.FINISH_TAKED) {
Map<Integer, ActivityProgressInfo> willUpdateAcP = new HashMap<>(); continue;
for (Map.Entry<Integer, ActivityProgressInfo> activityProgressInfoItem : activityMission.getActivityProgressInfoMap().entrySet()) {
Integer mineMision = activityProgressInfoItem.getKey();
STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(mineMision);
if (sTreasureConfig.getType() == 2) {
finalSTreasureConfig = sTreasureConfig;
continue;
}
ActivityProgressInfo value = activityProgressInfoItem.getValue();
int stateTmp = value.getState();
if (treasureScore >= sTreasureConfig.getPoints()) {
if (changeState != stateTmp) {
STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision);
if (stateTmp == ActivityType.WILL_TAKE) {
dropList.add(sTreasureConfigTmp.getReward());
}
if (changeState == ActivityType.FINISH_TAKED) {
dropList.add(sTreasureConfigTmp.getTreasureReward());
}
willUpdateAcP.put(mineMision, value);
} }
} else { dropByState(dropList,state,changeState,missionId);
canTakeFinalReward = false;
} }
} }
for (Map.Entry<Integer, ActivityProgressInfo> item : willUpdateAcP.entrySet()) { }else{
ActivityProgressInfo value = item.getValue(); int state = activityMission.getActivityProgressInfoMap().get(missionId).getState();
value.setState(changeState); if(state==changeState||state==ActivityType.FINISH_TAKED){
activityMission.updateProgressInfo(item.getKey(), value); MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"该奖励已领取过");
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) {
if (stateTmp == ActivityType.WILL_TAKE) {
dropList.add(finalSTreasureConfig.getReward());
}
if (changeState == ActivityType.FINISH_TAKED) {
dropList.add(finalSTreasureConfig.getTreasureReward());
}
activityProgressInfo.setState(changeState);
activityMission.updateProgressInfo(finalSTreasureConfig.getId(), activityProgressInfo);
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, finalSTreasureConfig.getId());
}
}
if (dropList.isEmpty()) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "no one can take");
return; return;
} }
drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD); dropByState(dropList,state,changeState,missionId);
} else {
STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId);
int type = sTreasureConfig.getType();
ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId);
int state = activityProgressInfo.getState();
if (state == changeState) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked");
return;
}
if (type == 1) {
List<int[][]> dropList = new ArrayList<>(2);
if (treasureScore < sTreasureConfig.getPoints()) {
MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish");
return;
}
if (state == ActivityType.WILL_TAKE) {
dropList.add(sTreasureConfig.getReward());
}
if (changeState == ActivityType.FINISH_TAKED) {
dropList.add(sTreasureConfig.getTreasureReward());
}
drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD);
activityProgressInfo.setState(changeState);
activityMission.updateProgressInfo(missionId, activityProgressInfo);
KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, missionId);
}
} }
// if (missionId == -1) {
// 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);
// if (sTreasureConfig.getType() == 2) {
// finalSTreasureConfig = sTreasureConfig;
// continue;
// }
// ActivityProgressInfo value = activityProgressInfoItem.getValue();
// int stateTmp = value.getState();
// if (treasureScore >= sTreasureConfig.getPoints()) {
// if (changeState != stateTmp) {
// STreasureConfig sTreasureConfigTmp = STreasureConfig.configMap.get(mineMision);
// if (stateTmp == ActivityType.WILL_TAKE) {
// dropList.add(sTreasureConfigTmp.getReward());
// }
// if (changeState == ActivityType.FINISH_TAKED) {
// dropList.add(sTreasureConfigTmp.getTreasureReward());
// }
// willUpdateAcP.put(mineMision, value);
// }
// } else {
// canTakeFinalReward = false;
// }
// }
// for (Map.Entry<Integer, ActivityProgressInfo> item : willUpdateAcP.entrySet()) {
// ActivityProgressInfo value = item.getValue();
// value.setState(changeState);
// activityMission.updateProgressInfo(item.getKey(), 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) {
// if (stateTmp == ActivityType.WILL_TAKE) {
// dropList.add(finalSTreasureConfig.getReward());
// }
// if (changeState == ActivityType.FINISH_TAKED) {
// dropList.add(finalSTreasureConfig.getTreasureReward());
// }
// activityProgressInfo.setState(changeState);
// activityMission.updateProgressInfo(finalSTreasureConfig.getId(), activityProgressInfo);
// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, finalSTreasureConfig.getId());
// }
// }
// if (dropList.isEmpty()) {
// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "no one can take");
// return;
// }
// drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD);
// } else {
// STreasureConfig sTreasureConfig = STreasureConfig.configMap.get(missionId);
// int type = sTreasureConfig.getType();
// ActivityProgressInfo activityProgressInfo = activityMission.getActivityProgressInfoMap().get(missionId);
// int state = activityProgressInfo.getState();
// if (state == changeState) {
// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "had taked");
// return;
// }
// if (type == 1) {
// List<int[][]> dropList = new ArrayList<>(2);
// if (treasureScore < sTreasureConfig.getPoints()) {
// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "not finish");
// return;
// }
// if (state == ActivityType.WILL_TAKE) {
// dropList.add(sTreasureConfig.getReward());
// }
// if (changeState == ActivityType.FINISH_TAKED) {
// dropList.add(sTreasureConfig.getTreasureReward());
// }
// activityProgressInfo.setState(changeState);
// activityMission.updateProgressInfo(missionId, activityProgressInfo);
// KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, activityId, missionId);
// }
// }
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList, BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
} }
private void dropByState(List<int[][]> dropList,int curState,int targetState,int missionId){
STreasureSunlongConfig rewardConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(missionId);
if(curState==ActivityType.WILL_TAKE){
dropList.add(rewardConfig.getReward());
if(targetState == ActivityType.FINISH_TAKED){
dropList.add(rewardConfig.getTreasureReward());
}
}else if(curState==ActivityType.HAD_TAKED){
if(targetState == ActivityType.FINISH_TAKED){
dropList.add(rewardConfig.getTreasureReward());
}
}
}
} }

View File

@ -62,7 +62,7 @@ public class PlayerManager extends MongoBase {
private int headFrame; private int headFrame;
private int treasureScore; //孙龙的宝藏分数 private int treasureLevel; //孙龙的宝藏等级
private int hadBuyTreasure; //是否已购 private int hadBuyTreasure; //是否已购
@ -92,18 +92,18 @@ public class PlayerManager extends MongoBase {
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
} }
public int getTreasureScore() { public int getTreasureLevel() {
return treasureScore; return treasureLevel;
} }
public void addTreasureScore(int treasureScore) { public void addTreasureLevel() {
this.treasureScore += treasureScore; this.treasureLevel++;
setTreasureScore(this.treasureScore); setTreasureLevel(this.treasureLevel);
} }
public void setTreasureScore(int treasureScore){ public void setTreasureLevel(int treasureLevel){
this.treasureScore = treasureScore; this.treasureLevel = treasureLevel;
updateString("treasureScore", treasureScore); updateString("treasureLevel", treasureLevel);
} }
public int getHadBuyTreasure() { public int getHadBuyTreasure() {

View File

@ -61,9 +61,13 @@ public class UserMissionManager extends MongoBase {
resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData); resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData);
break; break;
case TREASH_WEEK_REFRESH: case TREASH_WEEK_REFRESH:
resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData);
resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData); resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData);
break; break;
case TREASH_MONTH_REFRESH: case TREASH_MONTH_REFRESH:
System.out.println("戒灵秘宝月任务初始化");
resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData);
resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData);
resetTreasureTaskInfo(3,missionTypeEnumListMap,treasureMonthCumulationData); resetTreasureTaskInfo(3,missionTypeEnumListMap,treasureMonthCumulationData);
break; break;
case SERVENHAPPY_REFRESH: case SERVENHAPPY_REFRESH:
@ -218,6 +222,7 @@ public class UserMissionManager extends MongoBase {
private void resetTreasureTaskInfo(int type,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap,CumulationData treasureCumulationData){ private void resetTreasureTaskInfo(int type,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap,CumulationData treasureCumulationData){
int[] typeMissionNum = SSpecialConfig.getOnceArrayValue(SSpecialConfig.SUNLONG_DAILYTASKS);
List<Integer> taskTypeMap = STreasureSunlongTaskConfig.taskTypeMap.get(type); List<Integer> taskTypeMap = STreasureSunlongTaskConfig.taskTypeMap.get(type);
for(Integer treasure:taskTypeMap){ for(Integer treasure:taskTypeMap){
if(treasureMissionIdsType.getDoingMissionIds().contains(treasure)){ if(treasureMissionIdsType.getDoingMissionIds().contains(treasure)){
@ -234,10 +239,10 @@ public class UserMissionManager extends MongoBase {
for(int i = 0 ; i<randomTask.length;i++){ for(int i = 0 ; i<randomTask.length;i++){
int [] temp=new int[2]; int [] temp=new int[2];
temp[0] = taskTypeMap.get(i); temp[0] = taskTypeMap.get(i);
temp[1] = STreasureSunlongTaskConfig.treasureTaskConfig.get(taskTypeMap.get(i)).getweight(); temp[1] = STreasureSunlongTaskConfig.treasureTaskConfig.get(taskTypeMap.get(i)).getWeight();
randomTask[i] = temp; randomTask[i] = temp;
} }
int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask, 5); int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask, typeMissionNum[type-1]);
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION); List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION);
for(Integer task:tasks){ for(Integer task:tasks){
treasureMissionIdsType.getDoingMissionIds().add(task); treasureMissionIdsType.getDoingMissionIds().add(task);

View File

@ -349,14 +349,11 @@ public class MissionLoigc {
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
int takeTimes = missionStateChangeInfos.get(0).getProgress();
missionStateChangeInfos.get(0).setProgress(0); // ItemUtil.drop(user,STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId).getIntegral(),BIReason.TREASURE_SCORE);
// int score = STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId). * takeTimes;
// user.getPlayerInfoManager().addTreasureScore(score);
ItemUtil.drop(user,STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId).getIntegral(),BIReason.TREASURE_SCORE);
KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId); KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,""); Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,"");
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setTreasureScore(user.getPlayerInfoManager().getTreasureScore()).build(); PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
return; return;
} }

View File

@ -34,7 +34,7 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess()); eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess());
eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess()); eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess());
eventProcessor.put(GameEvent.TREASH_REFRESH,new TreasureRefreshEventProcess()); eventProcessor.put(GameEvent.TREASH_MONTH_REFRESH,new TreasureRefreshEventProcess());
eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new TreasureRefreshEventProcess()); eventProcessor.put(GameEvent.SERVENHAPPY_REFRESH,new TreasureRefreshEventProcess());
eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor()); eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor());

View File

@ -1,11 +1,15 @@
package com.ljsd.jieling.logic.mission.main; package com.ljsd.jieling.logic.mission.main;
import com.ljsd.jieling.config.STreasureSunlongConfig;
import com.ljsd.jieling.config.STreasureSunlongTaskConfig;
import com.ljsd.jieling.config.STreasureTaskConfig; import com.ljsd.jieling.config.STreasureTaskConfig;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.CumulationData; import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionLoigc; import com.ljsd.jieling.logic.mission.MissionLoigc;
import com.ljsd.jieling.logic.mission.MissionState; import com.ljsd.jieling.logic.mission.MissionState;
import com.ljsd.jieling.logic.mission.MissionType; import com.ljsd.jieling.logic.mission.MissionType;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MathUtils; import com.ljsd.jieling.util.MathUtils;
import java.util.HashMap; import java.util.HashMap;
@ -22,57 +26,21 @@ public class TreasureMissionType extends AbstractMissionType{
} }
public void rewardMission(User user,int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap, CumulationData cumulationData){ public void rewardMission(User user,int missionId, List<MissionStateChangeInfo> missionTypeEnumListMap, CumulationData cumulationData) throws Exception {
STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId); STreasureSunlongTaskConfig taskConfig = STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId);
if(sTreasureTaskConfig == null){return;} if(taskConfig == null){return;}
int doingProgress = MissionLoigc.getDoingProgress(user,cumulationData, sTreasureTaskConfig.getTaskType(), sTreasureTaskConfig.getTaskValue()[0]); int doingProgress = MissionLoigc.getDoingProgress(user,cumulationData, taskConfig.getTaskType(), taskConfig.getTaskValue()[0]);
//完成 //完成
int finishParm = sTreasureTaskConfig.getTaskValue()[1][0]; int finishParm = taskConfig.getTaskValue()[1][0];
Integer takeTimes = this.takeTimes.get(missionId); if(doingProgress<finishParm){
if(takeTimes == null){ return;
takeTimes = 0;
} }
int reallyTakeTimes = (doingProgress - takeTimes * finishParm) / finishParm; STreasureSunlongConfig levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(user.getPlayerInfoManager().getTreasureLevel());
if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){ if(ItemUtil.itemCost(user,levelConfig.getIntegral(), BIReason.TREASURE_LEVEL_UP_CONCUME,1)){
reallyTakeTimes =1; user.getPlayerInfoManager().addTreasureLevel();
}
if(reallyTakeTimes>0){
if(sTreasureTaskConfig.getTimes()>0){
reallyTakeTimes = MathUtils.setBetweenWithMax(reallyTakeTimes,0,sTreasureTaskConfig.getTimes() - takeTimes);
}
int hadTakes = takeTimes + reallyTakeTimes;
if(sTreasureTaskConfig.getTimes()>0 && hadTakes>=sTreasureTaskConfig.getTimes()){
hadTakes = sTreasureTaskConfig.getTimes();
}
int[][] rewward = sTreasureTaskConfig.getRewward();
int[][] rewardFinal = new int[rewward.length][];
if(rewward.length>0){
for(int i=0;i<rewward.length;i++){
rewardFinal[i] = new int[2];
rewardFinal[i][0] = rewward[i][0];
rewardFinal[i][1] = rewward[i][1] * reallyTakeTimes;
}
}
this.takeTimes.put(missionId,hadTakes);
if(sTreasureTaskConfig.getTimes()>0 && this.takeTimes.get(missionId)>=sTreasureTaskConfig.getTimes()){
getRewardedMissionIds().set(missionId);
getDoingMissionIds().remove(missionId);
getFinishMissionIds().remove(missionId);
MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.REWARD,reallyTakeTimes,hadTakes);
if(rewward.length>0){
stateChangeInfo.setRewwards(rewardFinal);
}
missionTypeEnumListMap.add(stateChangeInfo);
return;
}else{
MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.DOING,reallyTakeTimes,hadTakes);
if(rewward.length>0){
stateChangeInfo.setRewwards(rewardFinal);
}
missionTypeEnumListMap.add(stateChangeInfo);
}
} }
MissionStateChangeInfo stateChangeInfo = new MissionStateChangeInfo(missionId, MissionState.REWARD,taskConfig.getIntegral());
missionTypeEnumListMap.add(stateChangeInfo);
} }