Merge branch 'master_test_gn' of http://60.1.1.230/backend/jieling_server into master_test_gn

back_recharge
jiahuiwen 2021-10-31 16:17:24 +08:00
commit 3388120fa1
3 changed files with 26 additions and 10 deletions

View File

@ -19,7 +19,7 @@ public class Cmd_xuanyuan extends GmRoleAbstract {
}
User user = getUser();
Map<Integer, Integer> pass = user.getPlayerInfoManager().getSituationPass();
pass.put(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
pass.put(Integer.parseInt(split[0]),Integer.parseInt(split[1]));
user.getPlayerInfoManager().updateSituationPass(pass);
return true;
}

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,19 @@ 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> lingLongPools = Optional.ofNullable(SLingLongPool.map)
.map(v -> v.get(activityId))
.map(v -> v.get(type))
.orElse(new ArrayList<>());
if(lingLongPools.isEmpty()){
return false;
}
// 有删除操作,所以需要一个新得对象,不能直接在原对象上操作
List<SLingLongPool> smallPool = new ArrayList<>(lingLongPools);
// 玩家身上记录已抽中的索引id
Map<Integer, List<Integer>> doubleRewardPoolInfo = user.getActivityManager().getDoubleRewardPoolInfo();
List<Integer> rewardPool = doubleRewardPoolInfo.getOrDefault(type,new ArrayList<>());
@ -1846,7 +1854,7 @@ public class ActivityLogic implements IEventHandler{
}
// 外圈抽奖用,抽中全部
if (rewardPool.size() >= SLingLongPool.map.get(type).size()){
if (rewardPool.size() >= lingLongPools.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);
});
}