Walk class
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.ui
Файл: com/hypixel/hytale/builtin/adventure/worldevents/ui/StageProgress.java
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private static final int |
MAX_NODES |
|
|
break |
|
private final Reference2IntMap<Stage> |
depths |
|
private final Reference2IntMap<Stage> |
remaining |
|
Stage |
var11 |
|
Stage |
var12 |
|
Stage |
var14 |
|
int |
var15 |
|
|
var15 |
|
List |
var2 |
|
int |
var2 |
|
Deque |
var3 |
|
int |
var4 |
|
Stage |
var5 |
|
int |
var6 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var4 <= 0) |
|
|
if if(var11 != null) |
|
|
if if(var12 != null) |
|
StageProgress |
progressOfStageProgress progressOf(@Nonnull Stage var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.ui;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Fork;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Stage;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap;
class="kw">import java.util.ArrayDeque;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Deque;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
record StageProgress(int position, int count) {
StageProgress {
}
@Nullable
class="kw">static StageProgress of(@Nonnull WorldEvent var0) {
class="kw">return var0.stage.id() != -1 && var0.root != Stage.EMPTY ? new StageProgress.Walk(var0.root).progressOf(var0.stage) : null;
}
@Nonnull
class="kw">static Stage rootOf(@Nonnull WorldEvent var0) {
class="kw">return var0.root != Stage.EMPTY ? var0.root : var0.stage;
}
@Nonnull
Message label(@Nonnull String var1, int var2) {
class="kw">return Message.translation(var1).param("index", this.position).param("total", this.count).param("id", var2);
}
class="kw">static class="kw">final class Walk {
class="kw">private class="kw">static class="kw">final int MAX_NODES = 4096;
class="kw">private class="kw">final Reference2IntMap<Stage> depths = new Reference2IntOpenHashMap();
class="kw">private class="kw">final Reference2IntMap<Stage> remaining = new Reference2IntOpenHashMap();
Walk(@Nonnull Stage var1) {
this.depths.defaultReturnValue(-1);
List var2 = new ArrayList<>();
Deque var3 = new ArrayDeque<>();
this.depths.put(var1, 0);
var3.push(var1);
int var4 = 4096;
while (!var3.isEmpty()) {
Stage var5 = var3.pop();
var2.add(var5);
int var6 = this.depths.getInt(var5) + 1;
for (Fork var10 : var5.forks()) {
if (var4 <= 0) {
break;
}
Stage var11 = var10.next();
if (var11 != null) {
var4--;
this.depths.put(var11, var6);
var3.push(var11);
}
}
}
for (int var13 = var2.size() - 1; var13 >= 0; var13--) {
Stage var14 = var2.get(var13);
int var15 = 0;
for (Fork var19 : var14.forks()) {
Stage var12 = var19.next();
if (var12 != null) {
var15 = Math.max(var15, this.remaining.getInt(var12) + 1);
}
}
this.remaining.put(var14, var15);
}
}
@Nullable
StageProgress progressOf(@Nonnull Stage var1) {
int var2 = this.depths.getInt(var1);
class="kw">return var2 < 0 ? null : new StageProgress(var2 + 1, var2 + 1 + this.remaining.getInt(var1));
}
}
}