Files
runelite/runescape-client/src/main/java/UserComparator8.java
Owain van Brakel e6be88fbeb project: rev 199
2021-08-25 13:49:53 +02:00

741 lines
27 KiB
Java

import java.util.Date;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("cz")
@Implements("UserComparator8")
public class UserComparator8 extends AbstractUserComparator {
@ObfuscatedName("z")
@ObfuscatedSignature(
descriptor = "Loi;"
)
static IndexedSprite field1312;
@ObfuscatedName("n")
@Export("reversed")
final boolean reversed;
public UserComparator8(boolean var1) {
this.reversed = var1;
}
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(Lmm;Lmm;B)I",
garbageValue = "-77"
)
@Export("compareBuddy")
int compareBuddy(Buddy var1, Buddy var2) {
if (Client.worldId == var1.world) {
if (var2.world != Client.worldId) {
return this.reversed ? -1 : 1;
}
} else if (var2.world == Client.worldId) {
return this.reversed ? 1 : -1;
}
return this.compareUser(var1, var2);
}
public int compare(Object var1, Object var2) {
return this.compareBuddy((Buddy)var1, (Buddy)var2);
}
@ObfuscatedName("c")
@Export("base37DecodeLong")
public static String base37DecodeLong(long var0) {
if (var0 > 0L && var0 < 6582952005840035281L) {
if (var0 % 37L == 0L) {
return null;
} else {
int var2 = 0;
for (long var3 = var0; 0L != var3; var3 /= 37L) {
++var2;
}
StringBuilder var5;
char var8;
for (var5 = new StringBuilder(var2); var0 != 0L; var5.append(var8)) {
long var6 = var0;
var0 /= 37L;
var8 = class320.base37Table[(int)(var6 - 37L * var0)];
if (var8 == '_') {
int var9 = var5.length() - 1;
var5.setCharAt(var9, Character.toUpperCase(var5.charAt(var9)));
var8 = 160;
}
}
var5.reverse();
var5.setCharAt(0, Character.toUpperCase(var5.charAt(0)));
return var5.toString();
}
} else {
return null;
}
}
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(CI)Z",
garbageValue = "739349389"
)
@Export("isAlphaNumeric")
public static boolean isAlphaNumeric(char var0) {
return var0 >= '0' && var0 <= '9' || var0 >= 'A' && var0 <= 'Z' || var0 >= 'a' && var0 <= 'z';
}
@ObfuscatedName("at")
@ObfuscatedSignature(
descriptor = "(ILbg;ZI)I",
garbageValue = "-1021871509"
)
static int method2398(int var0, Script var1, boolean var2) {
String var3;
int var9;
if (var0 == ScriptOpcodes.APPEND_NUM) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
var9 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + var9;
return 1;
} else {
String var4;
if (var0 == ScriptOpcodes.APPEND) {
Interpreter.Interpreter_stringStackSize -= 2;
var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize];
var4 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + var4;
return 1;
} else if (var0 == ScriptOpcodes.APPEND_SIGNNUM) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
var9 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + EnumComposition.intToString(var9, true);
return 1;
} else if (var0 == ScriptOpcodes.LOWERCASE) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.toLowerCase();
return 1;
} else {
int var6;
int var10;
if (var0 == ScriptOpcodes.FROMDATE) {
var10 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
long var13 = 86400000L * ((long)var10 + 11745L);
Interpreter.Interpreter_calendar.setTime(new Date(var13));
var6 = Interpreter.Interpreter_calendar.get(5);
int var17 = Interpreter.Interpreter_calendar.get(2);
int var8 = Interpreter.Interpreter_calendar.get(1);
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var6 + "-" + Interpreter.Interpreter_MONTHS[var17] + "-" + var8;
return 1;
} else if (var0 != ScriptOpcodes.TEXT_GENDER) {
if (var0 == ScriptOpcodes.TOSTRING) {
var10 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Integer.toString(var10);
return 1;
} else if (var0 == ScriptOpcodes.COMPARE) {
Interpreter.Interpreter_stringStackSize -= 2;
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = WorldMapEvent.method3949(class122.compareStrings(Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize], Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1], class323.clientLanguage));
return 1;
} else {
int var5;
byte[] var11;
Font var12;
if (var0 == ScriptOpcodes.PARAHEIGHT) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
class240.Interpreter_intStackSize -= 2;
var9 = Interpreter.Interpreter_intStack[class240.Interpreter_intStackSize];
var5 = Interpreter.Interpreter_intStack[class240.Interpreter_intStackSize + 1];
var11 = class391.archive13.takeFile(var5, 0);
var12 = new Font(var11);
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = var12.lineCount(var3, var9);
return 1;
} else if (var0 == ScriptOpcodes.PARAWIDTH) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
class240.Interpreter_intStackSize -= 2;
var9 = Interpreter.Interpreter_intStack[class240.Interpreter_intStackSize];
var5 = Interpreter.Interpreter_intStack[class240.Interpreter_intStackSize + 1];
var11 = class391.archive13.takeFile(var5, 0);
var12 = new Font(var11);
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = var12.lineWidth(var3, var9);
return 1;
} else if (var0 == ScriptOpcodes.TEXT_SWITCH) {
Interpreter.Interpreter_stringStackSize -= 2;
var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize];
var4 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1];
if (Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize] == 1) {
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3;
} else {
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4;
}
return 1;
} else if (var0 == ScriptOpcodes.ESCAPE) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = AbstractFont.escapeBrackets(var3);
return 1;
} else if (var0 == ScriptOpcodes.APPEND_CHAR) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
var9 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + (char)var9;
return 1;
} else if (var0 == ScriptOpcodes.CHAR_ISPRINTABLE) {
var10 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = Players.isCharPrintable((char)var10) ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.CHAR_ISALPHANUMERIC) {
var10 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = isAlphaNumeric((char)var10) ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.CHAR_ISALPHA) {
var10 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = class29.isCharAlphabetic((char)var10) ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.CHAR_ISNUMERIC) {
var10 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = FaceNormal.isDigit((char)var10) ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.STRING_LENGTH) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
if (var3 != null) {
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = var3.length();
} else {
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = 0;
}
return 1;
} else if (var0 == ScriptOpcodes.SUBSTRING) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
class240.Interpreter_intStackSize -= 2;
var9 = Interpreter.Interpreter_intStack[class240.Interpreter_intStackSize];
var5 = Interpreter.Interpreter_intStack[class240.Interpreter_intStackSize + 1];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.substring(var9, var5);
return 1;
} else if (var0 == ScriptOpcodes.REMOVETAGS) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
StringBuilder var15 = new StringBuilder(var3.length());
boolean var16 = false;
for (var6 = 0; var6 < var3.length(); ++var6) {
char var7 = var3.charAt(var6);
if (var7 == '<') {
var16 = true;
} else if (var7 == '>') {
var16 = false;
} else if (!var16) {
var15.append(var7);
}
}
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.toString();
return 1;
} else if (var0 == ScriptOpcodes.STRING_INDEXOF_CHAR) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
var9 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = var3.indexOf(var9);
return 1;
} else if (var0 == ScriptOpcodes.STRING_INDEXOF_STRING) {
Interpreter.Interpreter_stringStackSize -= 2;
var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize];
var4 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1];
var5 = Interpreter.Interpreter_intStack[--class240.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++class240.Interpreter_intStackSize - 1] = var3.indexOf(var4, var5);
return 1;
} else if (var0 == 4122) {
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.toUpperCase();
return 1;
} else {
return 2;
}
}
} else {
Interpreter.Interpreter_stringStackSize -= 2;
var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize];
var4 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1];
if (class129.localPlayer.appearance != null && class129.localPlayer.appearance.isFemale) {
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4;
} else {
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3;
}
return 1;
}
}
}
}
@ObfuscatedName("gc")
@ObfuscatedSignature(
descriptor = "(IIIIB)V",
garbageValue = "-37"
)
@Export("drawEntities")
static final void drawEntities(int var0, int var1, int var2, int var3) {
++Client.viewportDrawCount;
if (class129.localPlayer.x >> 7 == Client.destinationX && class129.localPlayer.y >> 7 == Client.destinationY) {
Client.destinationX = 0;
}
WorldMapLabelSize.method3387();
GrandExchangeOfferOwnWorldComparator.method1134();
ClanMate.addNpcsToScene(true);
DynamicObject.method1955();
ClanMate.addNpcsToScene(false);
int var6;
for (Projectile var4 = (Projectile)Client.projectiles.last(); var4 != null; var4 = (Projectile)Client.projectiles.previous()) {
if (var4.plane == class391.Client_plane && Client.cycle <= var4.cycleEnd) {
if (Client.cycle >= var4.cycleStart) {
if (var4.targetIndex > 0) {
NPC var31 = Client.npcs[var4.targetIndex - 1];
if (var31 != null && var31.x >= 0 && var31.x < 13312 && var31.y >= 0 && var31.y < 13312) {
var4.setDestination(var31.x, var31.y, GraphicsObject.getTileHeight(var31.x, var31.y, var4.plane) - var4.endHeight, Client.cycle);
}
}
if (var4.targetIndex < 0) {
var6 = -var4.targetIndex - 1;
Player var34;
if (var6 == Client.localPlayerIndex) {
var34 = class129.localPlayer;
} else {
var34 = Client.players[var6];
}
if (var34 != null && var34.x >= 0 && var34.x < 13312 && var34.y >= 0 && var34.y < 13312) {
var4.setDestination(var34.x, var34.y, GraphicsObject.getTileHeight(var34.x, var34.y, var4.plane) - var4.endHeight, Client.cycle);
}
}
var4.advance(Client.field764);
CollisionMap.scene.drawEntity(class391.Client_plane, (int)var4.x, (int)var4.y, (int)var4.z, 60, var4, var4.yaw, -1L, false);
}
} else {
var4.remove();
}
}
for (GraphicsObject var32 = (GraphicsObject)Client.graphicsObjects.last(); var32 != null; var32 = (GraphicsObject)Client.graphicsObjects.previous()) {
if (var32.plane == class391.Client_plane && !var32.isFinished) {
if (Client.cycle >= var32.cycleStart) {
var32.advance(Client.field764);
if (var32.isFinished) {
var32.remove();
} else {
CollisionMap.scene.drawEntity(var32.plane, var32.x, var32.y, var32.height, 60, var32, 0, -1L, false);
}
}
} else {
var32.remove();
}
}
class9.setViewportShape(var0, var1, var2, var3, true);
var0 = Client.viewportOffsetX;
var1 = Client.viewportOffsetY;
var2 = Client.viewportWidth;
var3 = Client.viewportHeight;
Rasterizer2D.Rasterizer2D_setClip(var0, var1, var0 + var2, var3 + var1);
Rasterizer3D.Rasterizer3D_setClipFromRasterizer2D();
int var5;
int var28;
if (!Client.isCameraLocked) {
var28 = Client.camAngleX;
if (Client.field483 / 256 > var28) {
var28 = Client.field483 / 256;
}
if (Client.field736[4] && Client.field738[4] + 128 > var28) {
var28 = Client.field738[4] + 128;
}
var5 = Client.camAngleY & 2047;
class1.method14(WorldMapID.oculusOrbFocalPointX, ClanSettings.field1473, WorldMapRectangle.oculusOrbFocalPointY, var28, var5, AccessFile.method6644(var28), var3);
}
int var7;
int var8;
int var9;
int var10;
int var11;
int var12;
int var13;
int var14;
if (!Client.isCameraLocked) {
if (VarbitComposition.clientPreferences.roofsHidden) {
var5 = class391.Client_plane;
} else {
label650: {
var6 = 3;
if (ApproximateRouteStrategy.cameraPitch < 310) {
if (Client.oculusOrbState == 1) {
var7 = WorldMapID.oculusOrbFocalPointX >> 7;
var8 = WorldMapRectangle.oculusOrbFocalPointY >> 7;
} else {
var7 = class129.localPlayer.x >> 7;
var8 = class129.localPlayer.y >> 7;
}
var9 = WorldMapSection2.cameraX >> 7;
var10 = DevicePcmPlayerProvider.cameraZ >> 7;
if (var9 < 0 || var10 < 0 || var9 >= 104 || var10 >= 104) {
var5 = class391.Client_plane;
break label650;
}
if (var7 < 0 || var8 < 0 || var7 >= 104 || var8 >= 104) {
var5 = class391.Client_plane;
break label650;
}
if ((Tiles.Tiles_renderFlags[class391.Client_plane][var9][var10] & 4) != 0) {
var6 = class391.Client_plane;
}
if (var7 > var9) {
var11 = var7 - var9;
} else {
var11 = var9 - var7;
}
if (var8 > var10) {
var12 = var8 - var10;
} else {
var12 = var10 - var8;
}
if (var11 > var12) {
var13 = var12 * 65536 / var11;
var14 = 32768;
while (var9 != var7) {
if (var9 < var7) {
++var9;
} else if (var9 > var7) {
--var9;
}
if ((Tiles.Tiles_renderFlags[class391.Client_plane][var9][var10] & 4) != 0) {
var6 = class391.Client_plane;
}
var14 += var13;
if (var14 >= 65536) {
var14 -= 65536;
if (var10 < var8) {
++var10;
} else if (var10 > var8) {
--var10;
}
if ((Tiles.Tiles_renderFlags[class391.Client_plane][var9][var10] & 4) != 0) {
var6 = class391.Client_plane;
}
}
}
} else if (var12 > 0) {
var13 = var11 * 65536 / var12;
var14 = 32768;
while (var8 != var10) {
if (var10 < var8) {
++var10;
} else if (var10 > var8) {
--var10;
}
if ((Tiles.Tiles_renderFlags[class391.Client_plane][var9][var10] & 4) != 0) {
var6 = class391.Client_plane;
}
var14 += var13;
if (var14 >= 65536) {
var14 -= 65536;
if (var9 < var7) {
++var9;
} else if (var9 > var7) {
--var9;
}
if ((Tiles.Tiles_renderFlags[class391.Client_plane][var9][var10] & 4) != 0) {
var6 = class391.Client_plane;
}
}
}
}
}
if (class129.localPlayer.x >= 0 && class129.localPlayer.y >= 0 && class129.localPlayer.x < 13312 && class129.localPlayer.y < 13312) {
if ((Tiles.Tiles_renderFlags[class391.Client_plane][class129.localPlayer.x >> 7][class129.localPlayer.y >> 7] & 4) != 0) {
var6 = class391.Client_plane;
}
var5 = var6;
} else {
var5 = class391.Client_plane;
}
}
}
var28 = var5;
} else {
if (VarbitComposition.clientPreferences.roofsHidden) {
var5 = class391.Client_plane;
} else {
var6 = GraphicsObject.getTileHeight(WorldMapSection2.cameraX, DevicePcmPlayerProvider.cameraZ, class391.Client_plane);
if (var6 - SpotAnimationDefinition.cameraY < 800 && (Tiles.Tiles_renderFlags[class391.Client_plane][WorldMapSection2.cameraX >> 7][DevicePcmPlayerProvider.cameraZ >> 7] & 4) != 0) {
var5 = class391.Client_plane;
} else {
var5 = 3;
}
}
var28 = var5;
}
var5 = WorldMapSection2.cameraX;
var6 = SpotAnimationDefinition.cameraY;
var7 = DevicePcmPlayerProvider.cameraZ;
var8 = ApproximateRouteStrategy.cameraPitch;
var9 = Fonts.cameraYaw;
for (var10 = 0; var10 < 5; ++var10) {
if (Client.field736[var10]) {
var11 = (int)(Math.random() * (double)(Client.field484[var10] * 2 + 1) - (double)Client.field484[var10] + Math.sin((double)Client.field686[var10] / 100.0D * (double)Client.field740[var10]) * (double)Client.field738[var10]);
if (var10 == 0) {
WorldMapSection2.cameraX += var11;
}
if (var10 == 1) {
SpotAnimationDefinition.cameraY += var11;
}
if (var10 == 2) {
DevicePcmPlayerProvider.cameraZ += var11;
}
if (var10 == 3) {
Fonts.cameraYaw = var11 + Fonts.cameraYaw & 2047;
}
if (var10 == 4) {
ApproximateRouteStrategy.cameraPitch += var11;
if (ApproximateRouteStrategy.cameraPitch < 128) {
ApproximateRouteStrategy.cameraPitch = 128;
}
if (ApproximateRouteStrategy.cameraPitch > 383) {
ApproximateRouteStrategy.cameraPitch = 383;
}
}
}
}
var10 = MouseHandler.MouseHandler_x;
var11 = MouseHandler.MouseHandler_y;
if (MouseHandler.MouseHandler_lastButton != 0) {
var10 = MouseHandler.MouseHandler_lastPressedX;
var11 = MouseHandler.MouseHandler_lastPressedY;
}
if (var10 >= var0 && var10 < var0 + var2 && var11 >= var1 && var11 < var3 + var1) {
var12 = var10 - var0;
var13 = var11 - var1;
ViewportMouse.ViewportMouse_x = var12;
ViewportMouse.ViewportMouse_y = var13;
ViewportMouse.ViewportMouse_isInViewport = true;
ViewportMouse.ViewportMouse_entityCount = 0;
ViewportMouse.ViewportMouse_false0 = false;
} else {
class133.method2654();
}
class1.playPcmPlayers();
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var2, var3, 0);
class1.playPcmPlayers();
var12 = Rasterizer3D.Rasterizer3D_zoom;
Rasterizer3D.Rasterizer3D_zoom = Client.viewportZoom;
CollisionMap.scene.draw(WorldMapSection2.cameraX, SpotAnimationDefinition.cameraY, DevicePcmPlayerProvider.cameraZ, ApproximateRouteStrategy.cameraPitch, Fonts.cameraYaw, var28);
Rasterizer3D.Rasterizer3D_zoom = var12;
class1.playPcmPlayers();
CollisionMap.scene.clearTempGameObjects();
Client.overheadTextCount = 0;
boolean var33 = false;
var14 = -1;
int var15 = -1;
int var16 = Players.Players_count;
int[] var17 = Players.Players_indices;
int var18;
for (var18 = 0; var18 < var16 + Client.npcCount; ++var18) {
Object var30;
if (var18 < var16) {
var30 = Client.players[var17[var18]];
if (var17[var18] == Client.combatTargetPlayerIndex) {
var33 = true;
var14 = var18;
continue;
}
if (var30 == class129.localPlayer) {
var15 = var18;
continue;
}
} else {
var30 = Client.npcs[Client.npcIndices[var18 - var16]];
}
class17.drawActor2d((Actor)var30, var18, var0, var1, var2, var3);
}
if (Client.renderSelf && var15 != -1) {
class17.drawActor2d(class129.localPlayer, var15, var0, var1, var2, var3);
}
if (var33) {
class17.drawActor2d(Client.players[Client.combatTargetPlayerIndex], var14, var0, var1, var2, var3);
}
for (var18 = 0; var18 < Client.overheadTextCount; ++var18) {
int var19 = Client.overheadTextXs[var18];
int var20 = Client.overheadTextYs[var18];
int var21 = Client.overheadTextXOffsets[var18];
int var22 = Client.overheadTextAscents[var18];
boolean var23 = true;
while (var23) {
var23 = false;
for (int var29 = 0; var29 < var18; ++var29) {
if (var20 + 2 > Client.overheadTextYs[var29] - Client.overheadTextAscents[var29] && var20 - var22 < Client.overheadTextYs[var29] + 2 && var19 - var21 < Client.overheadTextXs[var29] + Client.overheadTextXOffsets[var29] && var21 + var19 > Client.overheadTextXs[var29] - Client.overheadTextXOffsets[var29] && Client.overheadTextYs[var29] - Client.overheadTextAscents[var29] < var20) {
var20 = Client.overheadTextYs[var29] - Client.overheadTextAscents[var29];
var23 = true;
}
}
}
Client.viewportTempX = Client.overheadTextXs[var18];
Client.viewportTempY = Client.overheadTextYs[var18] = var20;
String var24 = Client.overheadText[var18];
if (Client.chatEffects == 0) {
int var25 = 16776960;
if (Client.overheadTextColors[var18] < 6) {
var25 = Client.field707[Client.overheadTextColors[var18]];
}
if (Client.overheadTextColors[var18] == 6) {
var25 = Client.viewportDrawCount % 20 < 10 ? 16711680 : 16776960;
}
if (Client.overheadTextColors[var18] == 7) {
var25 = Client.viewportDrawCount % 20 < 10 ? 255 : '\uffff';
}
if (Client.overheadTextColors[var18] == 8) {
var25 = Client.viewportDrawCount % 20 < 10 ? '뀀' : 8454016;
}
int var26;
if (Client.overheadTextColors[var18] == 9) {
var26 = 150 - Client.overheadTextCyclesRemaining[var18];
if (var26 < 50) {
var25 = var26 * 1280 + 16711680;
} else if (var26 < 100) {
var25 = 16776960 - (var26 - 50) * 327680;
} else if (var26 < 150) {
var25 = (var26 - 100) * 5 + 65280;
}
}
if (Client.overheadTextColors[var18] == 10) {
var26 = 150 - Client.overheadTextCyclesRemaining[var18];
if (var26 < 50) {
var25 = var26 * 5 + 16711680;
} else if (var26 < 100) {
var25 = 16711935 - (var26 - 50) * 327680;
} else if (var26 < 150) {
var25 = (var26 - 100) * 327680 + 255 - (var26 - 100) * 5;
}
}
if (Client.overheadTextColors[var18] == 11) {
var26 = 150 - Client.overheadTextCyclesRemaining[var18];
if (var26 < 50) {
var25 = 16777215 - var26 * 327685;
} else if (var26 < 100) {
var25 = (var26 - 50) * 327685 + 65280;
} else if (var26 < 150) {
var25 = 16777215 - (var26 - 100) * 327680;
}
}
if (Client.overheadTextEffects[var18] == 0) {
class11.fontBold12.drawCentered(var24, var0 + Client.viewportTempX, Client.viewportTempY + var1, var25, 0);
}
if (Client.overheadTextEffects[var18] == 1) {
class11.fontBold12.drawCenteredWave(var24, var0 + Client.viewportTempX, Client.viewportTempY + var1, var25, 0, Client.viewportDrawCount);
}
if (Client.overheadTextEffects[var18] == 2) {
class11.fontBold12.drawCenteredWave2(var24, var0 + Client.viewportTempX, Client.viewportTempY + var1, var25, 0, Client.viewportDrawCount);
}
if (Client.overheadTextEffects[var18] == 3) {
class11.fontBold12.drawCenteredShake(var24, var0 + Client.viewportTempX, Client.viewportTempY + var1, var25, 0, Client.viewportDrawCount, 150 - Client.overheadTextCyclesRemaining[var18]);
}
if (Client.overheadTextEffects[var18] == 4) {
var26 = (150 - Client.overheadTextCyclesRemaining[var18]) * (class11.fontBold12.stringWidth(var24) + 100) / 150;
Rasterizer2D.Rasterizer2D_expandClip(var0 + Client.viewportTempX - 50, var1, var0 + Client.viewportTempX + 50, var3 + var1);
class11.fontBold12.draw(var24, var0 + Client.viewportTempX + 50 - var26, Client.viewportTempY + var1, var25, 0);
Rasterizer2D.Rasterizer2D_setClip(var0, var1, var0 + var2, var3 + var1);
}
if (Client.overheadTextEffects[var18] == 5) {
var26 = 150 - Client.overheadTextCyclesRemaining[var18];
int var27 = 0;
if (var26 < 25) {
var27 = var26 - 25;
} else if (var26 > 125) {
var27 = var26 - 125;
}
Rasterizer2D.Rasterizer2D_expandClip(var0, Client.viewportTempY + var1 - class11.fontBold12.ascent - 1, var0 + var2, Client.viewportTempY + var1 + 5);
class11.fontBold12.drawCentered(var24, var0 + Client.viewportTempX, var27 + Client.viewportTempY + var1, var25, 0);
Rasterizer2D.Rasterizer2D_setClip(var0, var1, var0 + var2, var3 + var1);
}
} else {
class11.fontBold12.drawCentered(var24, var0 + Client.viewportTempX, Client.viewportTempY + var1, 16776960, 0);
}
}
if (Client.hintArrowType == 2) {
Login.worldToScreen((Client.hintArrowX - FloorOverlayDefinition.baseX << 7) + Client.hintArrowSubX, (Client.hintArrowY - class320.baseY << 7) + Client.hintArrowSubY, Client.hintArrowHeight * 2);
if (Client.viewportTempX > -1 && Client.cycle % 20 < 10) {
class7.headIconHintSprites[0].drawTransBgAt(var0 + Client.viewportTempX - 12, Client.viewportTempY + var1 - 28);
}
}
((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).animate(Client.field764);
GameBuild.method5073(var0, var1, var2, var3);
WorldMapSection2.cameraX = var5;
SpotAnimationDefinition.cameraY = var6;
DevicePcmPlayerProvider.cameraZ = var7;
ApproximateRouteStrategy.cameraPitch = var8;
Fonts.cameraYaw = var9;
if (Client.isLoading && Strings.method5088(true, false) == 0) {
Client.isLoading = false;
}
if (Client.isLoading) {
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var2, var3, 0);
WorldMapData_1.drawLoadingMessage("Loading - please wait.", false);
}
}
}