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));
      }
   }
}