AStarDebugBase class

Пакет: com.hypixel.hytale.server.npc.navigation

Файл: com/hypixel/hytale/server/npc/navigation/AStarDebugBase.java

Поля (62)

МодификаторыТипИмя
final char CENTER
break
AStarNode var1
var1
var1
int var10
var10
var10
var10
int var11
var11
int var12
var12
ObjectIterator var13
var13
AStarNode var14
int var15
int var16
boolean var17
String var18
String var19
int var2
StringBuilder[] var20
int var22
List var23
int var24
int var25
List var3
int var3
int var30
int var31
int var32
AStarNode var33
int var34
var34
var34
int var4
var4
List var4
long var4
AStarNode var5
var5
var5
int var6
boolean var6
var6
Long2ObjectMap var6
AStarNode var7
int var7
var7
var7
var7
int var7
int var8
var8
var8
var8
int var8
int var9
var9
var9
var9

Методы (27)

МодификаторыВозвратСигнатура
protected void drawMapFinishvoid drawMapFinish(StringBuilder[] var1, int var2, int var3)
public void dumpMapvoid dumpMap(boolean var1, MotionController var2)
public void dumpMapvoid dumpMap(@Nullable AStarNode var1, boolean var2, MotionController var3)
public void dumpOpensvoid dumpOpens(MotionController var1)
public void dumpPathvoid dumpPath()
for for(int var5 = 0; var5 < var2; var5++)
for for(int var7 = 0; var7 < var2; var7++)
for for(int var21 = 0; var21 < var30; var21 += 2)
for for(StringBuilder var26 : var20)
protected int getDumpMapRegionXint getDumpMapRegionX(int var1)
protected int getDumpMapRegionZint getDumpMapRegionZ(int var1)
if if(var6 > var4)
if if(var1)
if if(var7 != null)
if if(var11 < var12)
if if(var11 < var12)
if if(var15 < var7)
if if(var15 > var8)
if if(var16 < var9)
if if(var16 > var10)
if if(var21 + 1 < var30)
if if(var1 != null)
if if(var25 > 51)
protected void plotvoid plot(long var1, char var3, @Nonnull StringBuilder[] var4, int var5, int var6)
while while(var1 != null)
while while(var1 != null)
while while(--var24 >= 0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.navigation;

class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap.Entry;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import java.util.List;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class AStarDebugBase {
   class="kw">public class="kw">static class="kw">final char CENTER = ' ';
   class="kw">public class="kw">static class="kw">final char CROSS = '\u253c';
   class="kw">public class="kw">static class="kw">final char HLINE = '\u2500';
   class="kw">public class="kw">static class="kw">final char VLINE = '\u2502';
   class="kw">public class="kw">static class="kw">final char OPEN_NODE = '\u25c6';
   class="kw">public class="kw">static class="kw">final char CLOSED_NODE = '\u25c7';
   class="kw">public class="kw">static class="kw">final char CLOSED_PATH_NODE = '\u25ef';
   class="kw">public class="kw">static class="kw">final char OPEN_PATH_NODE = '\u25c9';
   class="kw">public class="kw">static class="kw">final char BLOCKED_NODE = '\u00d7';
   class="kw">public class="kw">static class="kw">final char START_POSITION = '@';
   class="kw">public class="kw">static class="kw">final char END_POSITION = '\u03a9';
   class="kw">public class="kw">static class="kw">final String BORDER_PATTERN = "\u2500\u253c".repeat(1025);
   class="kw">public class="kw">static class="kw">final String CENTER_PATTERN = " \u2502".repeat(1025);
   class="kw">protected AStarBase aStarBase;
   class="kw">protected HytaleLogger logger;
   class="kw">protected HytaleLogger.Api loggerInfo;

   class="kw">public AStarDebugBase(AStarBase var1, @Nonnull HytaleLogger var2) {
      this.aStarBase = var1;
      this.logger = var2;
      this.loggerInfo = var2.at(Level.INFO);
   }

   class="kw">public void dumpOpens(MotionController var1) {
      int var2 = this.aStarBase.getOpenCount();
      List var3 = this.aStarBase.getOpenNodes();
      int var4 = -1;

      for (int var5 = 0; var5 < var2; var5++) {
         int var6 = var3.get(var5).getLength();
         if (var6 > var4) {
            var4 = var6;
         }
      }

      this.loggerInfo
         .log(
            "== A* iter=%s opens=%s total=%s maxLength=%s %s",
            this.aStarBase.getIterations(),
            var2,
            this.aStarBase.getVisitedBlocks().size(),
            var4,
            this.getExtraLogString(var1)
         );

      for (int var7 = 0; var7 < var2; var7++) {
         this.loggerInfo.log("%2d %s", var7, var3.get(var7).toString());
      }
   }

   class="kw">public void dumpPath() {
      AStarNode var1 = this.aStarBase.getPath();
      this.loggerInfo
         .log("== A* Path iter=%s opens=%s total=%s", this.aStarBase.getIterations(), this.aStarBase.getOpenCount(), this.aStarBase.getVisitedBlocks().size());

      while (var1 != null) {
         this.loggerInfo.log("%s", var1.toString());
         var1 = var1.getNextPathNode();
      }
   }

   class="kw">public void dumpMap(boolean var1, MotionController var2) {
      int var3 = this.aStarBase.getOpenCount();
      List var4 = this.aStarBase.getOpenNodes();
      AStarNode var5 = null;
      boolean var6 = false;
      if (var1) {
         AStarNode var7 = this.aStarBase.getPath();
         if (var7 != null) {
            var5 = var7;
            var6 = true;
         } else if (var3 > 0) {
            var5 = var4.get(var3 - 1);
         }
      }

      this.dumpMap(var5, var6, var2);
   }

   class="kw">public void dumpMap(@Nullable AStarNode var1, boolean var2, MotionController var3) {
      long var4 = this.aStarBase.getStartPositionIndex();
      Long2ObjectMap var6 = this.aStarBase.getVisitedBlocks();
      int var11 = AStarBase.xFromIndex(var4);
      int var12 = this.getDumpMapRegionX(var11);
      int var7;
      int var8;
      if (var11 < var12) {
         var7 = var11;
         var8 = var12;
      } else {
         var7 = var12;
         var8 = var11;
      }

      var11 = AStarBase.zFromIndex(var4);
      var12 = this.getDumpMapRegionZ(var11);
      int var9;
      int var10;
      if (var11 < var12) {
         var9 = var11;
         var10 = var12;
      } else {
         var9 = var12;
         var10 = var11;
      }

      ObjectIterator var13 = Long2ObjectMaps.fastIterator(var6);

      while (var13.hasNext()) {
         AStarNode var14 = (AStarNode)((Entry)var13.next()).getValue();
         int var15 = AStarBase.xFromIndex(var14.getPositionIndex());
         int var16 = AStarBase.zFromIndex(var14.getPositionIndex());
         if (var15 < var7) {
            var7 = var15;
         }

         if (var15 > var8) {
            var8 = var15;
         }

         if (var16 < var9) {
            var9 = var16;
         }

         if (var16 > var10) {
            var10 = var16;
         }
      }

      int var30 = var10 - var9 + 1;
      int var31 = var8 - var7 + 1;
      int var32 = var7 & 1;
      boolean var17 = (var9 & 1) == 0;
      String var18 = "'" + (var17 ? CENTER_PATTERN : BORDER_PATTERN).substring(var32, var32 + var31) + "'";
      String var19 = "'" + (var17 ? BORDER_PATTERN : CENTER_PATTERN).substring(var32, var32 + var31) + "'";
      StringBuilder[] var20 = new StringBuilder[var30];

      for (int var21 = 0; var21 < var30; var21 += 2) {
         var20[var21] = new StringBuilder(var18);
         if (var21 + 1 < var30) {
            var20[var21 + 1] = new StringBuilder(var19);
         }
      }

      var13 = Long2ObjectMaps.fastIterator(var6);

      while (var13.hasNext()) {
         AStarNode var33 = (AStarNode)((Entry)var13.next()).getValue();
         this.plot(var33.getPositionIndex(), (char)(var33.isInvalid() ? '\u00d7' : (var33.isOpen() ? '\u25c6' : '\u25c7')), var20, var7, var9);
      }

      int var22 = this.aStarBase.getOpenCount();
      int var34;
      if (var1 != null) {
         var34 = var1.getLength();

         while (var1 != null) {
            this.plot(var1.getPositionIndex(), (char)(var1.isOpen() ? '\u25c9' : '\u25ef'), var20, var7, var9);
            var1 = var2 ? var1.getNextPathNode() : var1.getPredecessor();
         }
      } else {
         List var23 = this.aStarBase.getOpenNodes();
         int var24 = var22;
         var34 = 0;

         while (--var24 >= 0) {
            int var25 = var22 - var24;
            if (var25 > 51) {
               break;
            }

            this.plot(var23.get(var24).getPositionIndex(), (char)(var25 >= 26 ? var25 - 26 + 97 : var25 + 65), var20, var7, var9);
         }
      }

      this.plot(var4, '@', var20, var7, var9);
      this.drawMapFinish(var20, var7, var9);
      this.loggerInfo
         .log("== A* iter=%s, opens=%s total=%s maxLength=%s %s", this.aStarBase.getIterations(), var22, var6.size(), var34, this.getExtraLogString(var3));

      for (StringBuilder var26 : var20) {
         this.loggerInfo.log("%s", var26.toString());
      }
   }

   class="kw">protected void plot(long var1, char var3, @Nonnull StringBuilder[] var4, int var5, int var6) {
      int var7 = AStarBase.zFromIndex(var1) - var6;
      int var8 = AStarBase.xFromIndex(var1) - var5 + 1;
      var4[var7].setCharAt(var8, var3);
   }

   class="kw">protected void drawMapFinish(StringBuilder[] var1, int var2, int var3) {
   }

   class="kw">protected int getDumpMapRegionZ(int var1) {
      class="kw">return var1;
   }

   class="kw">protected int getDumpMapRegionX(int var1) {
      class="kw">return var1;
   }

   @Nonnull
   class="kw">protected String getExtraLogString(MotionController var1) {
      class="kw">return "";
   }
}