package com.cwa.ladder.selector;
import com.cwa.ladder.Ladder;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
* 骐骥大航海项目的挑战者筛选器。
* 假设玩家的名次是n:
* 如果n属于[ 1,100],则选择n-1,n-2...
* 如果n属于[101,200],则选择n-2,n-3...
* 以此类推,
*/
public class QijiUserSelector implements UserSelector {
@Override
public Map<Integer, Integer> select(Ladder ladder, int challenger, int n) {
List<Integer> uidList = ladder.getUidList();
int idxOfUser = ladder.getUidList().indexOf(challenger);
// 玩家不在天梯系统中
if (idxOfUser < 0) {
return Collections.EMPTY_MAP;
}
// 玩家已经是天梯第一名了
if (idxOfUser == 0) {
return Collections.EMPTY_MAP;
}
int gap = idxOfUser/100;
int fromIdx = Math.max(0, idxOfUser - n - gap);
int toIdx = idxOfUser - gap;
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = fromIdx; i < toIdx; i++) {
map.put(uidList.get(i), i + 1);
}
return map;
}
}