孙龙宝藏重置
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 DIRECT_BUY = 52; // 直购
|
||||
int TREASURE_SCORE = 53;//孙龙宝藏获得积分
|
||||
|
||||
|
||||
//道具消耗原因 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.event.MissionEventDistributor;
|
||||
import com.ljsd.jieling.logic.mission.main.*;
|
||||
import com.ljsd.jieling.util.MathUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -26,6 +28,8 @@ public class UserMissionManager extends MongoBase {
|
|||
private CumulationData beginCumulationData = new CumulationData();
|
||||
|
||||
private CumulationData treasureCumulationData = new CumulationData();
|
||||
private CumulationData treasureWeekCumulationData = new CumulationData();
|
||||
private CumulationData treasureMonthCumulationData = new CumulationData();
|
||||
private CumulationData sevenHappyCumulationData = new CumulationData();
|
||||
|
||||
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm){
|
||||
|
@ -54,24 +58,17 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("dailyMissionIdsType",dailyMissionIdsType);
|
||||
break;
|
||||
case TREASH_REFRESH:
|
||||
List<STreasureTaskConfig> sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
|
||||
treasureMissionIdsType.getDoingMissionIds().clear();
|
||||
treasureMissionIdsType.getFinishMissionIds().clear();
|
||||
treasureMissionIdsType.getRewardedMissionIds().clear();
|
||||
treasureMissionIdsType.getTakeTimes().clear();
|
||||
List<MissionStateChangeInfo> missionStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION);
|
||||
for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){
|
||||
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);
|
||||
resetTreasureTaskInfo(1,missionTypeEnumListMap,treasureCumulationData);
|
||||
break;
|
||||
case TREASH_WEEK_REFRESH:
|
||||
resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData);
|
||||
break;
|
||||
case TREASH_MONTH_REFRESH:
|
||||
resetTreasureTaskInfo(3,missionTypeEnumListMap,treasureMonthCumulationData);
|
||||
break;
|
||||
|
||||
case SERVENHAPPY_REFRESH:
|
||||
sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
|
||||
List<STreasureTaskConfig> sTreasureTaskConfigs = null;
|
||||
sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get((int) parm[0]);
|
||||
sevenHappyMissionType.getDoingMissionIds().clear();
|
||||
sevenHappyMissionType.getFinishMissionIds().clear();
|
||||
sevenHappyMissionType.getRewardedMissionIds().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) {
|
||||
updateString("vipMissionIdsType",vipMissionIdsType);
|
||||
this.vipMissionIdsType = vipMissionIdsType;
|
||||
|
@ -274,4 +303,12 @@ public class UserMissionManager extends MongoBase {
|
|||
public BloodyMissionIdsType getBloodyMissionIdsType() {
|
||||
return bloodyMissionIdsType;
|
||||
}
|
||||
|
||||
public CumulationData getTreasureWeekCumulationData() {
|
||||
return treasureWeekCumulationData;
|
||||
}
|
||||
|
||||
public CumulationData getTreasureMonthCumulationData() {
|
||||
return treasureMonthCumulationData;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@ public enum GameEvent {
|
|||
DAILY_REFRESH,//日常任务刷新
|
||||
BLOODY_REFRESH,//血战任务刷新
|
||||
TREASH_REFRESH,//孙龙的宝藏
|
||||
TREASH_WEEK_REFRESH,//孙龙的宝藏周任务
|
||||
TREASH_MONTH_REFRESH,//孙龙的宝藏月任务
|
||||
SERVENHAPPY_REFRESH,//七日狂欢
|
||||
BEGINNER,//新手
|
||||
|
||||
|
|
|
@ -143,54 +143,41 @@ public class MissionLoigc {
|
|||
}
|
||||
TreasureMissionType treasureMissionIdsType = user.getUserMissionManager().getTreasureMissionIdsType();
|
||||
CumulationData treasureCumulationData = user.getUserMissionManager().getTreasureCumulationData();
|
||||
CumulationData treasureWeekCumulationData = user.getUserMissionManager().getTreasureWeekCumulationData();
|
||||
CumulationData treasureMonthCumulationData = user.getUserMissionManager().getTreasureMonthCumulationData();
|
||||
|
||||
int treasuremissionType = GameMisionType.TREASUREMISSION.getType();
|
||||
if(activityType == ActivityType.SERVERHAPPY){
|
||||
getServenMision(user,treasureActivityId,missionList);
|
||||
return;
|
||||
}
|
||||
BitSet rewardedMissionIds = treasureMissionIdsType.getRewardedMissionIds();
|
||||
Map<Integer, Integer> takeTimesMap = treasureMissionIdsType.getTakeTimes();
|
||||
List<STreasureTaskConfig> sTreasureTaskConfigs = STreasureTaskConfig.sTreasureTaskConfigListByActivityMap.get(treasureActivityId);
|
||||
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);
|
||||
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{
|
||||
sendProgress = (doingProgress - takeTimes * finishParm) / finishParm;
|
||||
}
|
||||
int times = sTreasureTaskConfig.getTimes();
|
||||
if( (sendProgress + takeTimes)>times){
|
||||
sendProgress =times-takeTimes;
|
||||
}
|
||||
if(sendProgress>0){
|
||||
state=1;
|
||||
}else{
|
||||
state=0;
|
||||
}
|
||||
if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){
|
||||
sendProgress = doingProgress;
|
||||
}
|
||||
|
||||
}else{
|
||||
takeTimes = takeTimesMap.get(missionId);
|
||||
for(Integer id:treasureMissionIdsType.getDoingMissionIds()){
|
||||
STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(id);
|
||||
int progress = config.getTaskValue()[1][0];
|
||||
switch (config.getType()){
|
||||
case 1:
|
||||
progress = getDoingProgress(user,treasureCumulationData,id,config.getTaskValue()[0]);
|
||||
break;
|
||||
case 2:
|
||||
progress = getDoingProgress(user,treasureWeekCumulationData,id,config.getTaskValue()[0]);
|
||||
break;
|
||||
case 3:
|
||||
progress = getDoingProgress(user,treasureMonthCumulationData,id,config.getTaskValue()[0]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(takeTimes == null){
|
||||
takeTimes=0;
|
||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(id).setState(0).setType(treasuremissionType).setProgress(progress).setTakeTimes(0).build());
|
||||
}
|
||||
for(Integer id:treasureMissionIdsType.getFinishMissionIds()){
|
||||
STreasureSunlongTaskConfig config = STreasureSunlongTaskConfig.treasureTaskConfig.get(id);
|
||||
int progress = config.getTaskValue()[1][0];
|
||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(id).setState(1).setType(treasuremissionType).setProgress(progress).setTakeTimes(0).build());
|
||||
}
|
||||
for(Map.Entry<Integer,STreasureSunlongTaskConfig> taskId:STreasureSunlongTaskConfig.treasureTaskConfig.entrySet()){
|
||||
if(treasureMissionIdsType.getRewardedMissionIds().get(taskId.getKey())){
|
||||
missionList.add(CommonProto.UserMissionInfo.newBuilder().setMissionId(taskId.getKey()).setState(2).setType(treasuremissionType).setProgress(taskId.getValue().getTaskValue()[1][0]).setTakeTimes(0).build());
|
||||
}
|
||||
|
||||
|
||||
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()){
|
||||
int takeTimes = missionStateChangeInfos.get(0).getProgress();
|
||||
missionStateChangeInfos.get(0).setProgress(0);
|
||||
int score = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionId).getPoints() * takeTimes;
|
||||
user.getPlayerInfoManager().addTreasureScore(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);
|
||||
Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,"");
|
||||
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setTreasureScore(user.getPlayerInfoManager().getTreasureScore()).build();
|
||||
|
|
|
@ -50,7 +50,7 @@ public abstract class AbstractMissionType {
|
|||
}
|
||||
|
||||
public Set<Integer> getDoingMissionIds() {
|
||||
return doingMissionIds;
|
||||
return doingMissionIds;
|
||||
}
|
||||
|
||||
public void addFinishMissionId(int missionId) {
|
||||
|
|
Loading…
Reference in New Issue