玲珑宝阁,奖池分活动

back_recharge
duhui 2021-10-29 17:19:44 +08:00
parent 3524c6ea23
commit cdd3b6b7dd
2 changed files with 23 additions and 9 deletions

View File

@ -1769,10 +1769,10 @@ public class ActivityLogic implements IEventHandler{
List<int[]> list = new ArrayList<>();
for (int i = 0; i < num; i++) {
// 小圈抽奖,根据返回判断是否需要抽外圈
boolean result = qiMenRandom(user,2, list, hits);
boolean result = qiMenRandom(user,2, list, hits, activityId);
if (result){
// 大圈/外圈抽奖
qiMenRandom(user, 1, list, hits);
qiMenRandom(user, 1, list, hits, activityId);
}
}
// 处理奖励
@ -1811,11 +1811,17 @@ public class ActivityLogic implements IEventHandler{
* @param hits id
* @return true: false:
*/
private boolean qiMenRandom(User user, int type, List<int[]> list, List<Integer> hits){
private boolean qiMenRandom(User user, int type, List<int[]> list, List<Integer> hits, int activityId){
boolean result = false;
// 根据类型获取卡池
List<SLingLongPool> smallPool = new ArrayList<>(SLingLongPool.map.get(type));
List<SLingLongPool> smallPool = Optional.ofNullable(SLingLongPool.map)
.map(v -> v.get(activityId))
.map(v -> v.get(type))
.orElse(new ArrayList<>());
if(smallPool.isEmpty()){
return false;
}
// 玩家身上记录已抽中的索引id
Map<Integer, List<Integer>> doubleRewardPoolInfo = user.getActivityManager().getDoubleRewardPoolInfo();
List<Integer> rewardPool = doubleRewardPoolInfo.getOrDefault(type,new ArrayList<>());
@ -1846,7 +1852,7 @@ public class ActivityLogic implements IEventHandler{
}
// 外圈抽奖用,抽中全部
if (rewardPool.size() >= SLingLongPool.map.get(type).size()){
if (rewardPool.size() >= smallPool.size()){
rewardPool.clear();
}

View File

@ -22,17 +22,25 @@ public class SLingLongPool implements BaseConfig {
private int position;
/**
* key: id value: list
* key : id
* value
* key: id
* value: list
*/
public static Map<Integer, List<SLingLongPool>> map = new HashMap<>();
public static Map<Integer,Map<Integer, List<SLingLongPool>>> map = new HashMap<>();
@Override
public void init() throws Exception {
Map<Integer, SLingLongPool> config = STableManager.getConfig(SLingLongPool.class);
config.values().forEach(v->{
List<SLingLongPool> longPools = map.getOrDefault(v.getPosition(), new ArrayList<>());
// 根据活动获取本期的奖池
Map<Integer, List<SLingLongPool>> activityMap = map.getOrDefault(v.getActivityId(), new HashMap<>());
// 根据大小圈获取具体的奖励列表
List<SLingLongPool> longPools = activityMap.getOrDefault(v.getPosition(), new ArrayList<>());
longPools.add(v);
map.put(v.getPosition(),longPools);
// 赋值
activityMap.put(v.getPosition(),longPools);
map.put(v.getActivityId(),activityMap);
});
}