MCPcopy Create free account
hub / github.com/e2wugui/zeze / updateRank

Method updateRank

ZezeJava/ZezeJava/src/main/java/Zeze/Game/Rank.java:269–300  ·  view source on GitHub ↗

根据 value 设置到排行榜中

(int hash, BConcurrentKey keyHint, long roleId, Bean value)

Source from the content-addressed store, hash-verified

267 * 根据 value 设置到排行榜中
268 */
269 @RedirectHash(ConcurrentLevelSource = "getConcurrentLevel(keyHint.getRankType())")
270 public RedirectFuture<Long> updateRank(int hash, BConcurrentKey keyHint, long roleId, Bean value) {
271 beanFactory.register(value);
272 var outExist = new OutObject<BRankValue>();
273 var rank = _removeRank(hash, keyHint, roleId, outExist);
274 int maxCount = getComputeCount(keyHint.getRankType());
275 // insert if in rank. 使用binarySearch会造成相同分数不稳定。
276 for (int i = 0; i < rank.getRankList().size(); ++i) {
277 var c = compactor.compare(rank.getRankList().get(i).getDynamic().getBean(), value);
278 if (c < 0) {
279 BRankValue tempVar = new BRankValue();
280 tempVar.setRoleId(roleId);
281 tempVar.getDynamic().setBean(value);
282 rank.getRankList().add(i, tempVar);
283 if (rank.getRankList().size() > maxCount) {
284 rank.getRankList().remove(rank.getRankList().size() - 1);
285 }
286 return RedirectFuture.finish(0L);
287 }
288 }
289 // A: 如果排行的Value可能减少,那么当它原来存在,但现在处于队尾时,不要再进榜。
290 // 因为此时可能存在未进榜但比它大的Value。
291 // B: 但是在进榜玩家比榜单数量少的时候,如果不进榜,队尾的玩家更新还在队尾就会消失。
292 if (rank.getRankList().size() < getRankSize(keyHint.getRankType())
293 || (rank.getRankList().size() < maxCount && null == outExist.value)) {
294 BRankValue tempVar2 = new BRankValue();
295 tempVar2.setRoleId(roleId);
296 tempVar2.getDynamic().setBean(value);
297 rank.getRankList().add(tempVar2);
298 }
299 return RedirectFuture.finish(0L);
300 }
301
302 private BRankList merge(BRankList left, BRankList right) {
303 BRankList result = new BRankList();

Callers 1

testRankMethod · 0.45

Calls 15

_removeRankMethod · 0.95
getComputeCountMethod · 0.95
getDynamicMethod · 0.95
setRoleIdMethod · 0.95
finishMethod · 0.95
getRankSizeMethod · 0.95
getRankTypeMethod · 0.80
getRankListMethod · 0.80
sizeMethod · 0.65
getBeanMethod · 0.65
getMethod · 0.65
addMethod · 0.65

Tested by 1

testRankMethod · 0.36