刷新必出
parent
f0ae6a5c13
commit
73d07c8754
|
@ -164,6 +164,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
.addAllPlayedMapTypes(mapManager.getPlayedMapType())
|
||||
.setAmount(rechargeInfo.getSaveAmt())
|
||||
.setVipDaily(playerInfoManager.getHadTakeDailyBoxVip())
|
||||
.setMissingRefreshCount(user.getUserMissionManager().getMissingRoomMissionType().getCoinRefreshCount())
|
||||
.build();
|
||||
try {
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true);
|
||||
|
|
|
@ -23,6 +23,8 @@ import manager.STableManager;
|
|||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
public class UserMissionManager extends MongoBase {
|
||||
|
@ -158,17 +160,30 @@ public class UserMissionManager extends MongoBase {
|
|||
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
|
||||
break;
|
||||
case MISSING_ROOM_REFRESH:
|
||||
Map<Integer,Integer> mustAppear = new HashMap<>();
|
||||
if((int)parm[0]==1){
|
||||
//删除已经领取奖励的
|
||||
missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1);
|
||||
missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1);
|
||||
boolean result;
|
||||
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSettingMap.get(1);
|
||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if(!result){
|
||||
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
if(!result){
|
||||
int coinRefreshCount = missingRoomMissionType.getCoinRefreshCount();
|
||||
int[][] refreshHighTypeNum = SMazeTreasureSetting.sMazeTreasureSettingMap.get(1).getRefreshHighTypeNum();
|
||||
for(int[] refresh:refreshHighTypeNum){
|
||||
if(coinRefreshCount==0||coinRefreshCount%refresh[0]!=0){
|
||||
continue;
|
||||
}else{
|
||||
mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1));
|
||||
}
|
||||
}
|
||||
int[][] cost = sMazeTreasureSetting.getCost();
|
||||
int count = (int)MathUtils.calABX(missingRoomMissionType.getCoinRefreshCount(), cost[1]);
|
||||
int count = (int)MathUtils.calABX(coinRefreshCount, cost[1]);
|
||||
result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
|
||||
|
||||
missingRoomMissionType.setCoinRefreshCount(coinRefreshCount +1);
|
||||
}
|
||||
}
|
||||
if(!result){
|
||||
|
@ -176,17 +191,39 @@ public class UserMissionManager extends MongoBase {
|
|||
}
|
||||
missingRoomMissionType.getDoingMissionIds().clear();
|
||||
}
|
||||
int[][] missingRoomMission = new int[SMazeTreasure.sMazeTreasureMap.size()][];
|
||||
List<Integer> mustMissions = new ArrayList<>();
|
||||
if(!mustAppear.isEmpty()){
|
||||
for(Map.Entry<Integer,Integer> entry:mustAppear.entrySet()){
|
||||
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
|
||||
List<int[]> mustList = new ArrayList<>();
|
||||
for(SMazeTreasure maze :sMazeTreasures){
|
||||
if(mustMissions.contains(maze.getId())){
|
||||
continue;
|
||||
}
|
||||
int[] refreshWeight = new int[2];
|
||||
refreshWeight[0] = maze.getId();
|
||||
refreshWeight[1] = maze.getTaskRefreshProbability();
|
||||
mustList.add(refreshWeight);
|
||||
}
|
||||
int[][] mustArray = mustList.toArray(new int[mustList.size()][]);
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
|
||||
Arrays.stream(missions).forEach(mission->mustMissions.add(mission));
|
||||
}
|
||||
}
|
||||
List<int[]> missingRoomMission = new ArrayList<>();
|
||||
for(Map.Entry<Integer,SMazeTreasure> entry:SMazeTreasure.sMazeTreasureMap.entrySet()){
|
||||
int[] refreshWeight = new int[2];
|
||||
refreshWeight[0] = entry.getKey();
|
||||
refreshWeight[1] = entry.getValue().getTaskRefreshProbability();
|
||||
missingRoomMission[entry.getKey()-1] =refreshWeight;
|
||||
missingRoomMission.add(refreshWeight);
|
||||
}
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(missingRoomMission, 6);
|
||||
int[] missions = MathUtils.randomFromWeightWithTaking(missingRoomMission.toArray(new int[missingRoomMission.size()][]), 6-mustMissions.size());
|
||||
for(int mission:missions){
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
|
||||
}
|
||||
for(int mission:mustMissions){
|
||||
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
|
||||
}
|
||||
updateString("missingRoomMissionType",missingRoomMissionType);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -298,9 +298,13 @@ public class MissionLoigc {
|
|||
for(Integer missionId:missingRoomMissionType.getFinishMissionIds()){
|
||||
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
|
||||
int missingTime = missingRoomMissionType.getMissingTime(missionId);
|
||||
List<String> heroesInfo = missingRoomMissionType.getHerosInfo(missionId);
|
||||
info.setMissionId(missionId).setState(missingTime>0?0:missingTime==0?1:2)
|
||||
.setType(GameMisionType.MISSINGROOMMISSION.getType())
|
||||
.setProgress(missingTime).addAllHeroId(missingRoomMissionType.getHerosInfo(missionId));
|
||||
.setProgress(missingTime);
|
||||
if(heroesInfo!=null&&!heroesInfo.isEmpty()){
|
||||
info.addAllHeroId(heroesInfo);
|
||||
}
|
||||
missionList.add(info.build());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,8 +21,11 @@ import java.util.*;
|
|||
*/
|
||||
public class MissingRoomMissionType extends AbstractMissionType{
|
||||
private Map<Integer,Integer> missingTime = new HashMap<>();
|
||||
|
||||
private Map<Integer,List<String>> heroesInfo = new HashMap<>();
|
||||
|
||||
private int missionIndex;
|
||||
|
||||
private int coinRefreshCount;
|
||||
|
||||
@Override
|
||||
|
@ -36,7 +39,7 @@ public class MissingRoomMissionType extends AbstractMissionType{
|
|||
|
||||
@Override
|
||||
public int[][] reward(int missionId) {
|
||||
|
||||
heroesInfo.remove(missionId);
|
||||
int realId = missionId % 10000;
|
||||
return SMazeTreasure.sMazeTreasureMap.get(realId).getReward();
|
||||
}
|
||||
|
@ -126,6 +129,9 @@ public class MissingRoomMissionType extends AbstractMissionType{
|
|||
heroesInfo.put(missionId,heroes);
|
||||
}
|
||||
|
||||
public Map<Integer,Integer> getAllMissingTime(){
|
||||
return missingTime;
|
||||
}
|
||||
public int getMissingTime(int missionId) {
|
||||
return missingTime.get(missionId);
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@ package config;
|
|||
import manager.STableManager;
|
||||
import manager.Table;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
|
@ -29,9 +32,15 @@ public class SMazeTreasure implements BaseConfig {
|
|||
|
||||
public static Map<Integer,SMazeTreasure> sMazeTreasureMap;
|
||||
|
||||
public static Map<Integer, List<SMazeTreasure>> mazeMapByTaskType;
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
sMazeTreasureMap = STableManager.getConfig(SMazeTreasure.class);
|
||||
mazeMapByTaskType = new HashMap<>();
|
||||
for (Map.Entry<Integer,SMazeTreasure> entry:sMazeTreasureMap.entrySet()){
|
||||
mazeMapByTaskType.computeIfAbsent(entry.getValue().getTaskType(),v->new ArrayList<>()).add(entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue