孙龙宝藏重置
parent
c2be0dc3f8
commit
1cd0fe5ce7
|
@ -0,0 +1,61 @@
|
||||||
|
package com.ljsd.jieling.config;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.logic.STableManager;
|
||||||
|
import com.ljsd.jieling.logic.Table;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Table(name ="TreasureSunlongConfig")
|
||||||
|
public class STreasureSunlongConfig implements BaseConfig {
|
||||||
|
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
private int activityId;
|
||||||
|
|
||||||
|
private int type;
|
||||||
|
|
||||||
|
private int level;
|
||||||
|
|
||||||
|
private int integral;
|
||||||
|
|
||||||
|
private int[][] reward;
|
||||||
|
|
||||||
|
private int[][] treasureReward;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() throws Exception {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getActivityId() {
|
||||||
|
return activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLevel() {
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIntegral() {
|
||||||
|
return integral;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[][] getReward() {
|
||||||
|
return reward;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[][] getTreasureReward() {
|
||||||
|
return treasureReward;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package com.ljsd.jieling.config;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.logic.STableManager;
|
||||||
|
import com.ljsd.jieling.logic.Table;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Table(name ="TreasureSunlongTaskConfig")
|
||||||
|
public class STreasureSunlongTaskConfig implements BaseConfig {
|
||||||
|
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
private int activityId;
|
||||||
|
|
||||||
|
private int type;
|
||||||
|
|
||||||
|
private int taskType;
|
||||||
|
|
||||||
|
private int[][] taskValue;
|
||||||
|
|
||||||
|
private int[][] integral;
|
||||||
|
|
||||||
|
private int weight;
|
||||||
|
|
||||||
|
public static Map<Integer,STreasureSunlongTaskConfig> treasureTaskConfig;
|
||||||
|
|
||||||
|
public static Map<Integer, List<Integer>> taskTypeMap;
|
||||||
|
@Override
|
||||||
|
public void init() throws Exception {
|
||||||
|
treasureTaskConfig = STableManager.getConfig(STreasureSunlongTaskConfig.class);
|
||||||
|
taskTypeMap = new HashMap<>();
|
||||||
|
for(Map.Entry<Integer,STreasureSunlongTaskConfig> entry:treasureTaskConfig.entrySet()){
|
||||||
|
entry.getValue();
|
||||||
|
if(!taskTypeMap.containsKey(entry.getValue().getType())){
|
||||||
|
taskTypeMap.put(entry.getValue().getType(),new ArrayList<>());
|
||||||
|
}
|
||||||
|
taskTypeMap.get(entry.getValue()).add(entry.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getActivityId() {
|
||||||
|
return activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTaskType() {
|
||||||
|
return taskType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[][] getTaskValue() {
|
||||||
|
return taskValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[][] getIntegral() {
|
||||||
|
return integral;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWeight() {
|
||||||
|
return weight;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -83,6 +83,7 @@ public interface BIReason {
|
||||||
int RANDOM_SOULEQUIP = 51;//占星
|
int RANDOM_SOULEQUIP = 51;//占星
|
||||||
|
|
||||||
int DIRECT_BUY = 52; // 直购
|
int DIRECT_BUY = 52; // 直购
|
||||||
|
int TREASURE_SCORE = 53;//孙龙宝藏获得积分
|
||||||
|
|
||||||
|
|
||||||
//道具消耗原因 1000开头
|
//道具消耗原因 1000开头
|
||||||
|
|
|
@ -6,7 +6,9 @@ import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.mission.*;
|
import com.ljsd.jieling.logic.mission.*;
|
||||||
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
||||||
import com.ljsd.jieling.logic.mission.main.*;
|
import com.ljsd.jieling.logic.mission.main.*;
|
||||||
|
import com.ljsd.jieling.util.MathUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -26,6 +28,8 @@ public class UserMissionManager extends MongoBase {
|
||||||
private CumulationData beginCumulationData = new CumulationData();
|
private CumulationData beginCumulationData = new CumulationData();
|
||||||
|
|
||||||
private CumulationData treasureCumulationData = new CumulationData();
|
private CumulationData treasureCumulationData = new CumulationData();
|
||||||
|
private CumulationData treasureWeekCumulationData = new CumulationData();
|
||||||
|
private CumulationData treasureMonthCumulationData = new CumulationData();
|
||||||
private CumulationData sevenHappyCumulationData = new CumulationData();
|
private CumulationData sevenHappyCumulationData = new CumulationData();
|
||||||
|
|
||||||
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm){
|
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm){
|
||||||
|
@ -54,23 +58,16 @@ public class UserMissionManager extends MongoBase {
|
||||||
updateString("dailyMissionIdsType",dailyMissionIdsType);
|
updateString("dailyMissionIdsType",dailyMissionIdsType);
|
||||||
break;
|
break;
|
||||||
case TREASH_REFRESH:
|
case TREASH_REFRESH:
|
||||||
List<STreasureTaskConfig> sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
|
resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData);
|
||||||
treasureMissionIdsType.getDoingMissionIds().clear();
|
break;
|
||||||
treasureMissionIdsType.getFinishMissionIds().clear();
|
case TREASH_WEEK_REFRESH:
|
||||||
treasureMissionIdsType.getRewardedMissionIds().clear();
|
resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData);
|
||||||
treasureMissionIdsType.getTakeTimes().clear();
|
break;
|
||||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION);
|
case TREASH_MONTH_REFRESH:
|
||||||
for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){
|
resetTreasureTaskInfo(3,missionTypeEnumListMap,treasureMonthCumulationData);
|
||||||
treasureMissionIdsType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
|
|
||||||
missionStateChangeInfos.add(new MissionStateChangeInfo(sTreasureTaskConfig.getId(), MissionState.DOING,0));
|
|
||||||
}
|
|
||||||
user.getPlayerInfoManager().setTreasureScore(0);
|
|
||||||
treasureCumulationData.reset();
|
|
||||||
updateString("treasureMissionIdsType",treasureMissionIdsType);
|
|
||||||
updateString("treasureCumulationData",treasureCumulationData);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SERVENHAPPY_REFRESH:
|
case SERVENHAPPY_REFRESH:
|
||||||
|
List<STreasureTaskConfig> sTreasureTaskConfigs = null;
|
||||||
sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
|
sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
|
||||||
sevenHappyMissionType.getDoingMissionIds().clear();
|
sevenHappyMissionType.getDoingMissionIds().clear();
|
||||||
sevenHappyMissionType.getFinishMissionIds().clear();
|
sevenHappyMissionType.getFinishMissionIds().clear();
|
||||||
|
@ -219,6 +216,38 @@ public class UserMissionManager extends MongoBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void resetTreasureTaskInfo(int type,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap,CumulationData treasureCumulationData){
|
||||||
|
List<Integer> taskTypeMap = STreasureSunlongTaskConfig.taskTypeMap.get(type);
|
||||||
|
for(Integer treasure:taskTypeMap){
|
||||||
|
if(treasureMissionIdsType.getDoingMissionIds().contains(treasure)){
|
||||||
|
treasureMissionIdsType.getDoingMissionIds().remove(treasure);
|
||||||
|
}
|
||||||
|
if(treasureMissionIdsType.getFinishMissionIds().contains(treasure)){
|
||||||
|
treasureMissionIdsType.getFinishMissionIds().remove(treasure);
|
||||||
|
}
|
||||||
|
if(treasureMissionIdsType.getRewardedMissionIds().get(treasure)){
|
||||||
|
treasureMissionIdsType.getRewardedMissionIds().clear(treasure);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int[][] randomTask = new int[taskTypeMap.size()][];
|
||||||
|
for(int i = 0 ; i<randomTask.length;i++){
|
||||||
|
int [] temp=new int[2];
|
||||||
|
temp[0] = taskTypeMap.get(i);
|
||||||
|
temp[1] = STreasureSunlongTaskConfig.treasureTaskConfig.get(taskTypeMap.get(i)).getweight();
|
||||||
|
randomTask[i] = temp;
|
||||||
|
}
|
||||||
|
int[] tasks= MathUtils.randomFromWeightWithTaking(randomTask, 5);
|
||||||
|
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION);
|
||||||
|
for(Integer task:tasks){
|
||||||
|
treasureMissionIdsType.getDoingMissionIds().add(task);
|
||||||
|
missionStateChangeInfos.add(new MissionStateChangeInfo(task, MissionState.DOING,0));
|
||||||
|
}
|
||||||
|
treasureCumulationData.reset();
|
||||||
|
updateString("treasureMissionIdsType",treasureMissionIdsType);
|
||||||
|
updateString("treasureCumulationData",treasureCumulationData);
|
||||||
|
|
||||||
|
}
|
||||||
public void setVipMissionIdsType(VipMissionIdsType vipMissionIdsType) {
|
public void setVipMissionIdsType(VipMissionIdsType vipMissionIdsType) {
|
||||||
updateString("vipMissionIdsType",vipMissionIdsType);
|
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||||
this.vipMissionIdsType = vipMissionIdsType;
|
this.vipMissionIdsType = vipMissionIdsType;
|
||||||
|
@ -274,4 +303,12 @@ public class UserMissionManager extends MongoBase {
|
||||||
public BloodyMissionIdsType getBloodyMissionIdsType() {
|
public BloodyMissionIdsType getBloodyMissionIdsType() {
|
||||||
return bloodyMissionIdsType;
|
return bloodyMissionIdsType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CumulationData getTreasureWeekCumulationData() {
|
||||||
|
return treasureWeekCumulationData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CumulationData getTreasureMonthCumulationData() {
|
||||||
|
return treasureMonthCumulationData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ public enum GameEvent {
|
||||||
DAILY_REFRESH,//日常任务刷新
|
DAILY_REFRESH,//日常任务刷新
|
||||||
BLOODY_REFRESH,//血战任务刷新
|
BLOODY_REFRESH,//血战任务刷新
|
||||||
TREASH_REFRESH,//孙龙的宝藏
|
TREASH_REFRESH,//孙龙的宝藏
|
||||||
|
TREASH_WEEK_REFRESH,//孙龙的宝藏周任务
|
||||||
|
TREASH_MONTH_REFRESH,//孙龙的宝藏月任务
|
||||||
SERVENHAPPY_REFRESH,//七日狂欢
|
SERVENHAPPY_REFRESH,//七日狂欢
|
||||||
BEGINNER,//新手
|
BEGINNER,//新手
|
||||||
|
|
||||||
|
|
|
@ -143,54 +143,41 @@ public class MissionLoigc {
|
||||||
}
|
}
|
||||||
TreasureMissionType treasureMissionIdsType = user.getUserMissionManager().getTreasureMissionIdsType();
|
TreasureMissionType treasureMissionIdsType = user.getUserMissionManager().getTreasureMissionIdsType();
|
||||||
CumulationData treasureCumulationData = user.getUserMissionManager().getTreasureCumulationData();
|
CumulationData treasureCumulationData = user.getUserMissionManager().getTreasureCumulationData();
|
||||||
|
CumulationData treasureWeekCumulationData = user.getUserMissionManager().getTreasureWeekCumulationData();
|
||||||
|
CumulationData treasureMonthCumulationData = user.getUserMissionManager().getTreasureMonthCumulationData();
|
||||||
|
|
||||||
int treasuremissionType = GameMisionType.TREASUREMISSION.getType();
|
int treasuremissionType = GameMisionType.TREASUREMISSION.getType();
|
||||||
if(activityType == ActivityType.SERVERHAPPY){
|
if(activityType == ActivityType.SERVERHAPPY){
|
||||||
getServenMision(user,treasureActivityId,missionList);
|
getServenMision(user,treasureActivityId,missionList);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BitSet rewardedMissionIds = treasureMissionIdsType.getRewardedMissionIds();
|
for(Integer id:treasureMissionIdsType.getDoingMissionIds()){
|
||||||
Map<Integer, Integer> takeTimesMap = treasureMissionIdsType.getTakeTimes();
|
STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(id);
|
||||||
List<STreasureTaskConfig> sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get(treasureActivityId);
|
int progress = config.getTaskValue()[1][0];
|
||||||
for(STreasureTaskConfig sTreasureTaskConfig:sTreasureTaskConfigs){
|
switch (config.getType()){
|
||||||
int state = 2;
|
case 1:
|
||||||
int missionId = sTreasureTaskConfig.getId();
|
progress = getDoingProgress(user,treasureCumulationData,id,config.getTaskValue()[0]);
|
||||||
int sendProgress =0;
|
break;
|
||||||
Integer takeTimes = null;
|
case 2:
|
||||||
if(!rewardedMissionIds.get(missionId)){
|
progress = getDoingProgress(user,treasureWeekCumulationData,id,config.getTaskValue()[0]);
|
||||||
takeTimes = takeTimesMap.get(missionId);
|
break;
|
||||||
if(takeTimes == null){
|
case 3:
|
||||||
takeTimes=0;
|
progress = getDoingProgress(user,treasureMonthCumulationData,id,config.getTaskValue()[0]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
int finishParm = sTreasureTaskConfig.getTaskValue()[1][0];
|
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(id).setState(0).setType(treasuremissionType).setProgress(progress).setTakeTimes(0).build());
|
||||||
int doingProgress = getDoingProgress(user,treasureCumulationData,sTreasureTaskConfig.getTaskType(),sTreasureTaskConfig.getTaskValue()[0]);
|
|
||||||
if(doingProgress!=0 && finishParm<0 && doingProgress>finishParm){
|
|
||||||
sendProgress =1;
|
|
||||||
}else{
|
|
||||||
sendProgress = (doingProgress - takeTimes * finishParm) / finishParm;
|
|
||||||
}
|
}
|
||||||
int times = sTreasureTaskConfig.getTimes();
|
for(Integer id:treasureMissionIdsType.getFinishMissionIds()){
|
||||||
if( (sendProgress + takeTimes)>times){
|
STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(id);
|
||||||
sendProgress =times-takeTimes;
|
int progress = config.getTaskValue()[1][0];
|
||||||
|
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(id).setState(1).setType(treasuremissionType).setProgress(progress).setTakeTimes(0).build());
|
||||||
}
|
}
|
||||||
if(sendProgress>0){
|
for(Map.Entry<Integer,STreasureSunlongTaskConfig> taskId:STreasureSunlongTaskConfig.treasureTaskConfig.entrySet()){
|
||||||
state=1;
|
if(treasureMissionIdsType.getRewardedMissionIds().get(taskId.getKey())){
|
||||||
}else{
|
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(taskId.getKey()).setState(2).setType(treasuremissionType).setProgress(taskId.getValue().getTaskValue()[1][0]).setTakeTimes(0).build());
|
||||||
state=0;
|
|
||||||
}
|
}
|
||||||
if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){
|
|
||||||
sendProgress = doingProgress;
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
takeTimes = takeTimesMap.get(missionId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(takeTimes == null){
|
|
||||||
takeTimes=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionId).setState(state).setType(treasuremissionType).setProgress(sendProgress).setTakeTimes(takeTimes).build());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,8 +351,9 @@ public class MissionLoigc {
|
||||||
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
|
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
|
||||||
int takeTimes = missionStateChangeInfos.get(0).getProgress();
|
int takeTimes = missionStateChangeInfos.get(0).getProgress();
|
||||||
missionStateChangeInfos.get(0).setProgress(0);
|
missionStateChangeInfos.get(0).setProgress(0);
|
||||||
int score = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId).getPoints() * takeTimes;
|
// int score = STreasureSunlongTaskConfig.treasureTaskConfig.get(missionId). * takeTimes;
|
||||||
user.getPlayerInfoManager().addTreasureScore(score);
|
// 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().setTreasureScore(user.getPlayerInfoManager().getTreasureScore()).build();
|
||||||
|
|
Loading…
Reference in New Issue