From 9e3365bfc4ba8833e51a395fe0cda5e4a0815a49 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 8 Jun 2019 06:30:50 +0200 Subject: [PATCH 01/19] RSApi --- .../net/runelite/rs/api/RSAbstractFont.java | 18 + .../runelite/rs/api/RSAbstractIndexCache.java | 10 + .../rs/api/RSAbstractRasterProvider.java | 50 ++ .../java/net/runelite/rs/api/RSActor.java | 124 +++-- .../rs/api/{RSFrame.java => RSAnimation.java} | 16 +- .../net/runelite/rs/api/RSBoundaryObject.java | 41 ++ .../java/net/runelite/rs/api/RSBuddy.java | 14 + .../java/net/runelite/rs/api/RSBuffer.java | 30 +- .../net/runelite/rs/api/RSBufferProvider.java | 46 -- .../java/net/runelite/rs/api/RSCanvas.java | 5 + .../net/runelite/rs/api/RSChatChannel.java | 18 + .../net/runelite/rs/api/RSChatLineBuffer.java | 45 -- .../net/runelite/rs/api/RSChatPlayer.java | 38 -- .../java/net/runelite/rs/api/RSClanChat.java | 12 + .../java/net/runelite/rs/api/RSClanMate.java | 7 + .../net/runelite/rs/api/RSClanMember.java | 31 -- .../runelite/rs/api/RSClanMemberManager.java | 36 -- .../java/net/runelite/rs/api/RSClassInfo.java | 41 -- .../java/net/runelite/rs/api/RSClient.java | 502 +++++++++--------- .../runelite/rs/api/RSClientPreferences.java | 15 + .../net/runelite/rs/api/RSCollisionData.java | 34 -- .../net/runelite/rs/api/RSCollisionMap.java | 10 + .../net/runelite/rs/api/RSCombatInfo1.java | 36 -- .../net/runelite/rs/api/RSCombatInfoList.java | 36 -- .../rs/api/RSCombatInfoListHolder.java | 36 -- .../runelite/rs/api/RSDecorativeObject.java | 60 --- .../java/net/runelite/rs/api/RSDeque.java | 36 -- .../{RSCacheableNode.java => RSDualNode.java} | 4 +- .../net/runelite/rs/api/RSDynamicObject.java | 32 +- .../api/{RSRenderable.java => RSEntity.java} | 8 +- .../main/java/net/runelite/rs/api/RSEnum.java | 49 -- .../net/runelite/rs/api/RSEnumDefinition.java | 25 + .../rs/api/RSEvictingDualNodeHashTable.java | 22 + .../net/runelite/rs/api/RSFileOnDisk.java | 28 +- .../runelite/rs/api/RSFloorDecoration.java | 23 + .../main/java/net/runelite/rs/api/RSFont.java | 27 +- .../net/runelite/rs/api/RSFontTypeFace.java | 42 -- .../java/net/runelite/rs/api/RSFrames.java | 6 +- .../java/net/runelite/rs/api/RSFriend.java | 26 +- .../runelite/rs/api/RSFriendContainer.java | 29 - .../net/runelite/rs/api/RSFriendManager.java | 40 -- .../net/runelite/rs/api/RSFriendSystem.java | 16 + .../net/runelite/rs/api/RSFriendsList.java | 5 + .../net/runelite/rs/api/RSGameCanvas.java | 29 - .../net/runelite/rs/api/RSGameObject.java | 42 +- .../{RSGameEngine.java => RSGameShell.java} | 8 +- .../runelite/rs/api/RSGrandExchangeOffer.java | 34 +- .../net/runelite/rs/api/RSGraphicsObject.java | 30 +- .../net/runelite/rs/api/RSGroundItem.java | 36 ++ .../net/runelite/rs/api/RSGroundItemPile.java | 34 ++ .../net/runelite/rs/api/RSGroundObject.java | 47 -- .../java/net/runelite/rs/api/RSHashTable.java | 41 -- .../java/net/runelite/rs/api/RSHealthBar.java | 44 +- .../rs/api/RSHealthBarDefinition.java | 20 + .../runelite/rs/api/RSHealthBarUpdate.java | 12 + .../java/net/runelite/rs/api/RSIgnore.java | 31 -- .../runelite/rs/api/RSIgnoreContainer.java | 29 - .../net/runelite/rs/api/RSIgnoreList.java | 5 + .../java/net/runelite/rs/api/RSIgnored.java | 7 + .../net/runelite/rs/api/RSIndexCache.java | 9 + .../java/net/runelite/rs/api/RSIndexData.java | 33 -- .../net/runelite/rs/api/RSIndexDataBase.java | 34 -- .../net/runelite/rs/api/RSIndexedSprite.java | 48 +- .../net/runelite/rs/api/RSIntegerNode.java | 28 +- .../main/java/net/runelite/rs/api/RSItem.java | 60 --- .../runelite/rs/api/RSItemComposition.java | 92 ---- .../net/runelite/rs/api/RSItemContainer.java | 28 +- .../net/runelite/rs/api/RSItemDefinition.java | 63 +++ .../java/net/runelite/rs/api/RSItemLayer.java | 58 -- .../runelite/rs/api/RSIterableHashTable.java | 35 -- .../runelite/rs/api/RSIterableNodeDeque.java | 9 + .../rs/api/RSIterableNodeHashTable.java | 11 + .../net/runelite/rs/api/RSJagexLoginType.java | 30 -- .../runelite/rs/api/RSKeyFocusListener.java | 33 -- .../net/runelite/rs/api/RSKeyHandler.java | 9 + .../java/net/runelite/rs/api/RSLoginType.java | 5 + .../runelite/rs/api/RSMainBufferProvider.java | 43 -- .../runelite/rs/api/RSMapElementConfig.java | 35 -- .../java/net/runelite/rs/api/RSMessage.java | 38 ++ .../net/runelite/rs/api/RSMessageNode.java | 62 --- .../java/net/runelite/rs/api/RSModel.java | 40 +- .../java/net/runelite/rs/api/RSModelData.java | 40 +- .../net/runelite/rs/api/RSMouseHandler.java | 9 + .../net/runelite/rs/api/RSMouseInput.java | 33 -- .../net/runelite/rs/api/RSMouseRecorder.java | 33 +- .../runelite/rs/api/RSMouseWheelHandler.java | 24 - .../main/java/net/runelite/rs/api/RSNPC.java | 28 +- .../net/runelite/rs/api/RSNPCComposition.java | 78 --- .../net/runelite/rs/api/RSNPCDefinition.java | 54 ++ .../java/net/runelite/rs/api/RSNameable.java | 37 -- .../runelite/rs/api/RSNameableContainer.java | 55 -- .../main/java/net/runelite/rs/api/RSNode.java | 4 +- .../java/net/runelite/rs/api/RSNodeCache.java | 46 -- .../java/net/runelite/rs/api/RSNodeDeque.java | 12 + .../net/runelite/rs/api/RSNodeHashTable.java | 17 + .../runelite/rs/api/RSObjectComposition.java | 59 -- .../runelite/rs/api/RSObjectDefinition.java | 35 ++ .../net/runelite/rs/api/RSPacketBuffer.java | 24 - .../java/net/runelite/rs/api/RSPlayer.java | 16 +- .../runelite/rs/api/RSPlayerAppearance.java | 25 + .../runelite/rs/api/RSPlayerComposition.java | 49 -- .../net/runelite/rs/api/RSPreferences.java | 39 -- .../net/runelite/rs/api/RSProjectile.java | 60 ++- .../net/runelite/rs/api/RSRasterProvider.java | 47 ++ .../runelite/rs/api/RSReflectionCheck.java | 17 + .../net/runelite/rs/api/RSRenderOverview.java | 77 --- .../net/runelite/rs/api/RSRunException.java | 26 +- .../java/net/runelite/rs/api/RSScene.java | 42 +- .../net/runelite/rs/api/RSSceneTileModel.java | 87 --- .../net/runelite/rs/api/RSSceneTilePaint.java | 55 -- .../java/net/runelite/rs/api/RSScript.java | 28 +- .../net/runelite/rs/api/RSScriptEvent.java | 34 +- .../java/net/runelite/rs/api/RSSequence.java | 51 -- .../runelite/rs/api/RSSequenceDefinition.java | 27 + .../api/{RSFrameMap.java => RSSkeleton.java} | 6 +- .../net/runelite/rs/api/RSSoundEffect.java | 24 - .../java/net/runelite/rs/api/RSSprite.java | 59 +- .../net/runelite/rs/api/RSSpritePixels.java | 62 --- .../java/net/runelite/rs/api/RSTexture.java | 26 +- .../runelite/rs/api/RSTextureProvider.java | 30 +- .../main/java/net/runelite/rs/api/RSTile.java | 58 +- .../java/net/runelite/rs/api/RSTileModel.java | 63 +++ .../java/net/runelite/rs/api/RSTilePaint.java | 31 ++ .../main/java/net/runelite/rs/api/RSUser.java | 13 + .../java/net/runelite/rs/api/RSUserList.java | 31 ++ .../rs/api/{RSName.java => RSUsername.java} | 4 +- .../java/net/runelite/rs/api/RSVarbit.java | 39 -- .../runelite/rs/api/RSVarbitDefinition.java | 15 + .../java/net/runelite/rs/api/RSVarcs.java | 26 +- .../net/runelite/rs/api/RSWallDecoration.java | 36 ++ .../net/runelite/rs/api/RSWallObject.java | 65 --- .../java/net/runelite/rs/api/RSWidget.java | 160 +++--- .../runelite/rs/api/RSWidgetGroupParent.java | 11 + .../net/runelite/rs/api/RSWidgetNode.java | 35 -- .../java/net/runelite/rs/api/RSWorld.java | 36 +- .../java/net/runelite/rs/api/RSWorldMap.java | 53 ++ .../net/runelite/rs/api/RSWorldMapArea.java | 10 + .../net/runelite/rs/api/RSWorldMapData.java | 34 -- .../runelite/rs/api/RSWorldMapElement.java | 11 + .../runelite/rs/api/RSWorldMapManager.java | 30 +- 140 files changed, 1691 insertions(+), 3526 deletions(-) create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSAbstractFont.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSAbstractIndexCache.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSAbstractRasterProvider.java rename runescape-api/src/main/java/net/runelite/rs/api/{RSFrame.java => RSAnimation.java} (88%) create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSBoundaryObject.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSBuddy.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSCanvas.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSChatChannel.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSChatLineBuffer.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSChatPlayer.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSClanChat.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSClanMate.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSClanMember.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSClanMemberManager.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSClassInfo.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSClientPreferences.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSCollisionMap.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoList.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSDeque.java rename runescape-api/src/main/java/net/runelite/rs/api/{RSCacheableNode.java => RSDualNode.java} (95%) rename runescape-api/src/main/java/net/runelite/rs/api/{RSRenderable.java => RSEntity.java} (93%) delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSEnum.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSEnumDefinition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSEvictingDualNodeHashTable.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSFontTypeFace.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSFriendManager.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSFriendSystem.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSFriendsList.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSGameCanvas.java rename runescape-api/src/main/java/net/runelite/rs/api/{RSGameEngine.java => RSGameShell.java} (92%) create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSGroundItem.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSGroundItemPile.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSHashTable.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarDefinition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarUpdate.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIgnore.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreContainer.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreList.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIgnored.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIndexCache.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIndexData.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIndexDataBase.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSItem.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIterableHashTable.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeHashTable.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSKeyFocusListener.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSLoginType.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSMouseHandler.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSMouseInput.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNPCDefinition.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNameable.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNodeCache.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSNodeHashTable.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSObjectDefinition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSPlayerAppearance.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSReflectionCheck.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSRenderOverview.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSSceneTileModel.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSSceneTilePaint.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSSequence.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java rename runescape-api/src/main/java/net/runelite/rs/api/{RSFrameMap.java => RSSkeleton.java} (94%) delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSTileModel.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSTilePaint.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSUser.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSUserList.java rename runescape-api/src/main/java/net/runelite/rs/api/{RSName.java => RSUsername.java} (95%) delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSVarbit.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSVarbitDefinition.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWidgetGroupParent.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWidgetNode.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapArea.java delete mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java create mode 100644 runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapElement.java diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractFont.java b/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractFont.java new file mode 100644 index 0000000000..41e96907fb --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractFont.java @@ -0,0 +1,18 @@ +package net.runelite.rs.api; + +import net.runelite.api.FontTypeFace; +import net.runelite.mapping.Import; + +public interface RSAbstractFont extends FontTypeFace +{ + @Import("stringWidth") + @Override + int getTextWidth(String text); + + @Import("ascent") + @Override + int getBaseline(); + + @Import("draw") + void drawTextLeftAligned(String text, int x, int y, int fontColor, int shadowColor); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractIndexCache.java b/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractIndexCache.java new file mode 100644 index 0000000000..f561f1e562 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractIndexCache.java @@ -0,0 +1,10 @@ +package net.runelite.rs.api; + +import net.runelite.api.IndexDataBase; +import net.runelite.mapping.Import; + +public interface RSAbstractIndexCache extends IndexDataBase +{ + @Import("takeRecord") + byte[] getConfigData(int archiveId, int fileId); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractRasterProvider.java b/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractRasterProvider.java new file mode 100644 index 0000000000..c84af22d51 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSAbstractRasterProvider.java @@ -0,0 +1,50 @@ +/* + * BSD 2-Clause License + * + * Copyright (c) 2019, ThatGamerBlue + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.rs.api; + +import net.runelite.api.BufferProvider; +import net.runelite.mapping.Import; + +public interface RSAbstractRasterProvider extends BufferProvider +{ + @Import("pixels") + @Override + int[] getPixels(); + + @Import("width") + @Override + int getWidth(); + + @Import("height") + @Override + int getHeight(); + + @Import("apply") + void setRaster(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java b/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java index 801cf4413a..24cc729f68 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSActor.java @@ -27,19 +27,23 @@ package net.runelite.rs.api; import net.runelite.api.Actor; import net.runelite.mapping.Import; -public interface RSActor extends RSRenderable, Actor +public interface RSActor extends RSEntity, Actor { - @Import("interacting") + @Import("targetIndex") int getRSInteracting(); - @Import("overhead") + // Overhead text + + @Import("overheadText") @Override String getOverheadText(); - @Import("overhead") + @Import("overheadText") @Override void setOverheadText(String overheadText); + // Coord stuff + @Import("x") int getX(); @@ -52,76 +56,88 @@ public interface RSActor extends RSRenderable, Actor @Import("pathY") int[] getPathY(); - @Import("animation") + // Animation + + @Import("sequence") @Override int getAnimation(); - @Import("animation") + @Import("sequence") @Override void setAnimation(int animation); - @Import("graphic") + @Import("sequenceFrame") @Override - int getGraphic(); + int getActionFrame(); - @Import("graphic") + @Import("sequenceFrame") @Override - void setGraphic(int graphic); + void setActionFrame(int frame); - @Import("combatInfoList") - RSCombatInfoList getCombatInfoList(); + @Import("sequenceFrameCycle") + @Override + int getActionFrameCycle(); + + // Spot animation (aka graphic) + + @Import("spotAnimation") + @Override + int getSpotAnimation(); + + @Import("spotAnimation") + @Override + void setSpotAnimation(int id); + + @Import("spotAnimationFrame") + int getSpotAnimationFrame(); + + @Import("spotAnimationFrame") + @Override + void setSpotAnimationFrame(int id); + + @Import("spotAnimationFrameCycle") + int getSpotAnimationFrameCycle(); + + // Idle animation + + @Import("idleSequence") + @Override + void setIdlePoseAnimation(int animation); + + // Movement animation (aka poseAnimation) + + @Import("movementSequence") + @Override + void setPoseAnimation(int animation); + + @Import("movementFrame") + int getPoseFrame(); + + @Import("movementFrame") + void setPoseFrame(int frame); + + @Import("movementFrameCycle") + int getPoseFrameCycle(); + + @Import("defaultHeight") + @Override + int getLogicalHeight(); @Import("orientation") @Override int getOrientation(); - @Import("logicalHeight") - @Override - int getLogicalHeight(); + // Health stuff - @Import("idlePoseAnimation") - @Override - void setIdlePoseAnimation(int animation); + @Import("healthBars") + RSIterableNodeDeque getHealthBars(); - @Import("poseAnimation") - @Override - void setPoseAnimation(int animation); - - @Import("actionFrame") - int getActionFrame(); - - @Import("actionFrame") - @Override - void setActionFrame(int frame); - - @Import("actionFrameCycle") - int getActionFrameCycle(); - - @Import("poseFrame") - int getPoseFrame(); - - @Import("poseFrame") - void setPoseFrame(int frame); - - @Import("poseFrameCycle") - int getPoseFrameCycle(); - - @Import("spotAnimFrame") - int getSpotAnimFrame(); - - @Import("spotAnimFrame") - @Override - void setSpotAnimFrame(int frame); - - @Import("spotAnimFrameCycle") - int getSpotAnimFrameCycle(); - - @Import("hitsplatValues") + @Import("hitSplatValues") int[] getHitsplatValues(); - @Import("hitsplatTypes") + @Import("hitSplatTypes") int[] getHitsplatTypes(); - @Import("hitsplatCycles") + @Import("hitSplatCycles") int[] getHitsplatCycles(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFrame.java b/runescape-api/src/main/java/net/runelite/rs/api/RSAnimation.java similarity index 88% rename from runescape-api/src/main/java/net/runelite/rs/api/RSFrame.java rename to runescape-api/src/main/java/net/runelite/rs/api/RSAnimation.java index 6169518500..86df180557 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFrame.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSAnimation.java @@ -26,26 +26,26 @@ package net.runelite.rs.api; import net.runelite.mapping.Import; -public interface RSFrame +public interface RSAnimation { - @Import("skin") - RSFrameMap getSkin(); + @Import("skeleton") + RSSkeleton getSkin(); @Import("transformCount") int getTransformCount(); - @Import("transformTypes") + @Import("transformSkeletonLabels") int[] getTransformTypes(); - @Import("translator_x") + @Import("transformXs") int[] getTranslatorX(); - @Import("translator_y") + @Import("transformYs") int[] getTranslatorY(); - @Import("translator_z") + @Import("transformZs") int[] getTranslatorZ(); - @Import("showing") + @Import("hasAlphaTransform") boolean isShowing(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSBoundaryObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSBoundaryObject.java new file mode 100644 index 0000000000..650ee24834 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSBoundaryObject.java @@ -0,0 +1,41 @@ +package net.runelite.rs.api; + +import net.runelite.api.WallObject; +import net.runelite.mapping.Import; + +public interface RSBoundaryObject extends WallObject +{ + @Import("tag") + @Override + long getHash(); + + @Import("x") + @Override + int getX(); + + @Import("y") + @Override + int getY(); + + @Import("orientationA") + @Override + int getOrientationA(); + + @Import("orientationB") + @Override + int getOrientationB(); + + @Import("entity1") + @Override + RSEntity getRenderable1(); + + @Import("entity2") + @Override + RSEntity getRenderable2(); + + @Import("flags") + @Override + int getConfig(); + + void setPlane(int plane); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSBuddy.java b/runescape-api/src/main/java/net/runelite/rs/api/RSBuddy.java new file mode 100644 index 0000000000..8904aed13d --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSBuddy.java @@ -0,0 +1,14 @@ +package net.runelite.rs.api; + +import net.runelite.api.ChatPlayer; +import net.runelite.mapping.Import; + +public interface RSBuddy extends ChatPlayer, RSUser +{ + @Import("world") + @Override + int getWorld(); + + @Import("rank") + int getRSRank(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java index 0c357c3fee..93fdebb463 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java @@ -1,36 +1,12 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.mapping.Import; public interface RSBuffer extends RSNode { - @Import("payload") + @Import("array") byte[] getPayload(); - @Import("offset") + @Import("index") int getOffset(); -} +} \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java b/runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java deleted file mode 100644 index c46cfa6b7c..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.BufferProvider; -import net.runelite.mapping.Import; - -public interface RSBufferProvider extends BufferProvider -{ - @Import("pixels") - @Override - int[] getPixels(); - - @Import("width") - @Override - int getWidth(); - - @Import("height") - @Override - int getHeight(); - - @Import("setRaster") - void setRaster(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCanvas.java b/runescape-api/src/main/java/net/runelite/rs/api/RSCanvas.java new file mode 100644 index 0000000000..f0295a0770 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSCanvas.java @@ -0,0 +1,5 @@ +package net.runelite.rs.api; + +public interface RSCanvas +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSChatChannel.java b/runescape-api/src/main/java/net/runelite/rs/api/RSChatChannel.java new file mode 100644 index 0000000000..1adc2a9483 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSChatChannel.java @@ -0,0 +1,18 @@ +package net.runelite.rs.api; + +import net.runelite.api.ChatLineBuffer; +import net.runelite.mapping.Import; + +public interface RSChatChannel extends ChatLineBuffer +{ + @Import("messages") + @Override + RSMessage[] getLines(); + + @Import("count") + @Override + int getLength(); + + @Import("count") + void setLength(int length); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSChatLineBuffer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSChatLineBuffer.java deleted file mode 100644 index 9aa9b35c3b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSChatLineBuffer.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2017. l2- - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package net.runelite.rs.api; - -import net.runelite.api.ChatLineBuffer; -import net.runelite.api.MessageNode; -import net.runelite.mapping.Import; - -public interface RSChatLineBuffer extends ChatLineBuffer -{ - @Import("lines") - @Override - MessageNode[] getLines(); - - @Import("length") - @Override - int getLength(); - - @Import("length") - void setLength(int length); -} \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSChatPlayer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSChatPlayer.java deleted file mode 100644 index 8bf5cffe1d..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSChatPlayer.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2016-2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.ChatPlayer; -import net.runelite.mapping.Import; - -public interface RSChatPlayer extends ChatPlayer, RSNameable -{ - @Import("world") - @Override - int getWorld(); - - @Import("rank") - int getRSRank(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClanChat.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClanChat.java new file mode 100644 index 0000000000..4b13f47147 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClanChat.java @@ -0,0 +1,12 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSClanChat extends RSUserList +{ + @Import("owner") + String getClanOwner(); + + @Import("name") + String getClanChatName(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClanMate.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClanMate.java new file mode 100644 index 0000000000..1bcfb5b6df --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClanMate.java @@ -0,0 +1,7 @@ +package net.runelite.rs.api; + +import net.runelite.api.ClanMember; + +public interface RSClanMate extends RSBuddy, ClanMember +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClanMember.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClanMember.java deleted file mode 100644 index ba65238fa4..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClanMember.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.ClanMember; - -public interface RSClanMember extends RSChatPlayer, ClanMember -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClanMemberManager.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClanMemberManager.java deleted file mode 100644 index 36a486c28b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClanMemberManager.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSClanMemberManager extends RSNameableContainer -{ - @Import("clanOwner") - String getClanOwner(); - - @Import("clanChatName") - String getClanChatName(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClassInfo.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClassInfo.java deleted file mode 100644 index 52dbd172d1..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClassInfo.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.runelite.mapping.Import; - -public interface RSClassInfo -{ - @Import("methods") - Method[] getMethods(); - - @Import("fields") - Field[] getFields(); - - @Import("args") - byte[][][] getArgs(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index f5e9d4c139..8e0ebf9e97 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -1,60 +1,64 @@ /* - * Copyright (c) 2016-2017, Adam + * BSD 2-Clause License + * + * Copyright (c) 2019, ThatGamerBlue * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package net.runelite.rs.api; -import java.util.Map; import net.runelite.api.Client; -import net.runelite.api.SpritePixels; +import net.runelite.api.Sprite; import net.runelite.api.World; import net.runelite.api.widgets.Widget; +import java.util.Map; import net.runelite.mapping.Construct; import net.runelite.mapping.Import; -public interface RSClient extends RSGameEngine, Client +public interface RSClient extends RSGameShell, Client { @Import("cameraX") @Override int getCameraX(); - @Import("cameraY") + @Import("cameraZ") // <--- This is correct! @Override int getCameraY(); - @Import("cameraZ") + @Import("cameraY") // <--- This is correct! @Override int getCameraZ(); - @Import("cameraX2") + @Import("Scene_cameraX") @Override int getCameraX2(); - @Import("cameraY2") + @Import("Scene_cameraY") @Override int getCameraY2(); - @Import("cameraZ2") + @Import("Scene_cameraZ") @Override int getCameraZ2(); @@ -73,33 +77,33 @@ public interface RSClient extends RSGameEngine, Client @Override int getCameraYaw(); - @Import("world") + @Import("worldId") int getWorld(); - @Import("FPS") + @Import("fps") @Override int getFPS(); - @Import("mapAngle") + @Import("minimapOrientation") @Override int getMapAngle(); - @Import("tileHeights") + @Import("Tiles_heights") @Override int[][][] getTileHeights(); - @Import("tileSettings") + @Import("Tiles_renderFlags") @Override byte[][][] getTileSettings(); - @Import("clientVarps") + @Import("Varps_main") @Override int[] getVarps(); @Import("varcs") RSVarcs getVarcs(); - @Import("energy") + @Import("runEnergy") @Override int getEnergy(); @@ -115,15 +119,15 @@ public interface RSClient extends RSGameEngine, Client @Override int getBaseY(); - @Import("boostedSkillLevels") + @Import("currentLevels") @Override int[] getBoostedSkillLevels(); - @Import("realSkillLevels") + @Import("levels") @Override int[] getRealSkillLevels(); - @Import("skillExperiences") + @Import("experience") @Override int[] getSkillExperiences(); @@ -143,33 +147,33 @@ public interface RSClient extends RSGameEngine, Client @Override void setCheckClick(boolean checkClick); - @Import("mouseX2") + @Import("Scene_selectedScreenX") void setMouseCanvasHoverPositionX(int x); - @Import("mouseY2") + @Import("Scene_selectedScreenY") void setMouseCanvasHoverPositionY(int y); - @Import("mouseCurrentButton") + @Import("MouseHandler_currentButton") @Override int getMouseCurrentButton(); - @Import("selectedSceneTileX") + @Import("Scene_selectedX") int getSelectedSceneTileX(); - @Import("selectedSceneTileX") + @Import("Scene_selectedX") void setSelectedSceneTileX(int selectedSceneTileX); - @Import("selectedSceneTileY") + @Import("Scene_selectedY") int getSelectedSceneTileY(); - @Import("selectedSceneTileY") + @Import("Scene_selectedY") void setSelectedSceneTileY(int selectedSceneTileY); - @Import("draggingWidget") + @Import("isDraggingWidget") @Override boolean isDraggingWidget(); - @Import("draggedWidget") + @Import("clickedWidget") @Override RSWidget getDraggedWidget(); @@ -189,7 +193,7 @@ public interface RSClient extends RSGameEngine, Client * * @param groupId the group ID * @return the widget group - * @see net.runelite.api.widgets.WidgetID + * @see api.widgets.WidgetID */ RSWidget[] getGroup(int groupId); @@ -201,66 +205,58 @@ public interface RSClient extends RSGameEngine, Client @Override RSPlayer getLocalPlayer(); - @Import("npcIndexesCount") + @Import("npcCount") int getNpcIndexesCount(); @Import("npcIndices") int[] getNpcIndices(); - @Import("cachedNPCs") + @Import("npcs") @Override RSNPC[] getCachedNPCs(); @Import("collisionMaps") - RSCollisionData[] getCollisionMaps(); + RSCollisionMap[] getCollisionMaps(); - @Import("playerIndexesCount") + @Import("Players_count") int getPlayerIndexesCount(); - @Import("playerIndices") + @Import("Players_indices") int[] getPlayerIndices(); - @Import("cachedPlayers") + @Import("players") @Override RSPlayer[] getCachedPlayers(); - @Import("localInteractingIndex") + @Import("combatTargetPlayerIndex") int getLocalInteractingIndex(); - @Import("groundItemDeque") - RSDeque[][][] getGroundItemDeque(); + @Import("groundItems") + RSNodeDeque[][][] getGroundItemDeque(); @Import("projectiles") - RSDeque getProjectilesDeque(); + RSNodeDeque getProjectilesDeque(); - @Import("graphicsObjectDeque") - RSDeque getGraphicsObjectDeque(); + @Import("graphicsObjects") + RSNodeDeque getGraphicsObjectDeque(); - @Import("username") + @Import("Login_username") @Override String getUsername(); - @Import("username") + @Import("Login_username") @Override void setUsername(String username); - @Import("password") + @Import("Login_password") @Override void setPassword(String password); - @Import("otp") - @Override - void setOtp(String otp); - @Import("currentLoginField") @Override int getCurrentLoginField(); - @Import("loginIndex") - @Override - int getLoginIndex(); - - @Import("playerOptions") + @Import("playerMenuActions") @Override String[] getPlayerOptions(); @@ -268,20 +264,20 @@ public interface RSClient extends RSGameEngine, Client @Override boolean[] getPlayerOptionsPriorities(); - @Import("playerMenuTypes") + @Import("playerMenuOpcodes") @Override int[] getPlayerMenuTypes(); - @Import("mouseX") + @Import("MouseHandler_x0") int getMouseX(); - @Import("mouseY") + @Import("MouseHandler_y0") int getMouseY(); - @Import("mouseX2") + @Import("Scene_selectedScreenX") int getMouseX2(); - @Import("mouseY2") + @Import("Scene_selectedScreenY") int getMouseY2(); @Import("containsBounds") @@ -290,34 +286,34 @@ public interface RSClient extends RSGameEngine, Client @Import("checkClick") boolean isCheckClick(); - @Import("menuOptionCount") + @Import("menuOptionsCount") int getMenuOptionCount(); - @Import("menuOptionCount") + @Import("menuOptionsCount") void setMenuOptionCount(int menuOptionCount); - @Import("menuOptions") + @Import("menuActions") String[] getMenuOptions(); - @Import("menuTargets") + @Import("menuTargetNames") String[] getMenuTargets(); - @Import("menuIdentifiers") + @Import("menuArguments0") int[] getMenuIdentifiers(); - @Import("menuTypes") + @Import("menuOpcodes") int[] getMenuTypes(); - @Import("menuActionParams0") + @Import("menuArguments1") int[] getMenuActionParams0(); - @Import("menuActionParams1") + @Import("menuArguments2") int[] getMenuActionParams1(); - @Import("menuForceLeftClick") + @Import("menuShiftClick") boolean[] getMenuForceLeftClick(); - @Import("worldList") + @Import("worlds") @Override RSWorld[] getWorldList(); @@ -326,13 +322,13 @@ public interface RSClient extends RSGameEngine, Client @Override @Import("getObjectDefinition") - RSObjectComposition getObjectDefinition(int objectId); + RSObjectDefinition getObjectDefinition(int objectId); @Override @Import("getNpcDefinition") - RSNPCComposition getNpcDefinition(int npcId); + RSNPCDefinition getNpcDefinition(int npcId); - @Import("scale") + @Import("viewportZoom") @Override int getScale(); @@ -352,36 +348,37 @@ public interface RSClient extends RSGameEngine, Client @Override int getViewportWidth(); - @Import("Viewport_xOffset") + @Import("viewportOffsetX") @Override int getViewportXOffset(); - @Import("Viewport_yOffset") + @Import("viewportOffsetY") @Override int getViewportYOffset(); - @Import("isResized") + @Import("isResizable") @Override boolean isResized(); - @Import("widgetPositionX") + @Import("rootWidgetXs") @Override int[] getWidgetPositionsX(); - @Import("widgetPositionY") + @Import("rootWidgetYs") @Override int[] getWidgetPositionsY(); @Import("itemContainers") - RSHashTable getItemContainers(); + RSNodeHashTable getItemContainers(); @Import("getItemDefinition") @Override - RSItemComposition getItemDefinition(int itemId); + RSItemDefinition getItemDefinition(int itemId); - @Import("createSprite") - RSSpritePixels createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted); + @Import("getItemSprite") + RSSprite createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted); + @Import("menuAction") @Override void invokeMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7); @@ -409,11 +406,11 @@ public interface RSClient extends RSGameEngine, Client @Import("indexedSpriteOffsetYs") void setIndexedSpriteOffsetYs(int[] indexedSpriteOffsetYs); - @Import("indexSpriteWidths") - int[] getIndexSpriteWidths(); + @Import("indexedSpriteWidths") + int[] getIndexedSpriteWidths(); - @Import("indexSpriteWidths") - void setIndexSpriteWidths(int[] indexSpriteWidths); + @Import("indexedSpriteWidths") + void setIndexedSpriteWidths(int[] indexedSpriteWidths); @Import("indexedSpriteHeights") int[] getIndexedSpriteHeights(); @@ -431,23 +428,23 @@ public interface RSClient extends RSGameEngine, Client int[] getIndexedSpritePalette(); @Import("indexedSpritePalette") - void setIndexSpritePalette(int[] indexSpritePalette); + void setIndexedSpritePalette(int[] indexedSpritePalette); - @Import("indexSprites") + @Import("indexCache8") @Override - RSIndexDataBase getIndexSprites(); + RSAbstractIndexCache getIndexSprites(); - @Import("indexScripts") + @Import("indexCache12") @Override - RSIndexDataBase getIndexScripts(); + RSAbstractIndexCache getIndexScripts(); - @Import("widgetFlags") + @Import("widgetClickMasks") @Override - RSHashTable getWidgetFlags(); + RSNodeHashTable getWidgetFlags(); - @Import("componentTable") + @Import("widgetGroupParents") @Override - RSHashTable getComponentTable(); + RSNodeHashTable getComponentTable(); @Import("grandExchangeOffers") RSGrandExchangeOffer[] getGrandExchangeOffers(); @@ -456,30 +453,31 @@ public interface RSClient extends RSGameEngine, Client @Override boolean isMenuOpen(); - @Import("gameCycle") + @Import("cycle") @Override int getGameCycle(); - @Import("packetHandler") - void packetHandler(); + // unused + //@Import("packetHandler") + //void packetHandler(); - @Import("chatLineMap") + @Import("Messages_channels") @Override Map getChatLineMap(); - @Import("messages") + @Import("Messages_hashTable") @Override - RSIterableHashTable getMessages(); + RSIterableNodeHashTable getMessages(); @Import("revision") @Override int getRevision(); - @Import("mapRegions") + @Import("regions") @Override int[] getMapRegions(); - @Import("instanceTemplateChunks") + @Import("instanceChunkTemplates") @Override int[][][] getInstanceTemplateChunks(); @@ -507,29 +505,29 @@ public interface RSClient extends RSGameEngine, Client * * @return */ - @Import("widgetRoot") + @Import("rootWidgetGroup") int getWidgetRoot(); - @Import("mapElementConfigs") + @Import("WorldMapElement_cached") @Override - RSMapElementConfig[] getMapElementConfigs(); + RSWorldMapElement[] getMapElementConfigs(); - @Import("mapscene") + @Import("mapSceneSprites") @Override RSIndexedSprite[] getMapScene(); @Import("mapIcons") @Override - RSSpritePixels[] getMapIcons(); + RSSprite[] getMapIcons(); - @Import("mapDots") - RSSpritePixels[] getMapDots(); + @Import("mapDotSprites") + RSSprite[] getMapDots(); - @Import("modIcons") + @Import("modIconSprites") @Override RSIndexedSprite[] getModIcons(); - @Import("modIcons") + @Import("modIconSprites") void setRSModIcons(RSIndexedSprite[] modIcons); @Construct @@ -538,7 +536,7 @@ public interface RSClient extends RSGameEngine, Client @Construct @Override - RSSpritePixels createSpritePixels(int[] pixels, int width, int height); + RSSprite createSprite(int[] pixels, int width, int height); @Import("destinationX") int getDestinationX(); @@ -546,10 +544,10 @@ public interface RSClient extends RSGameEngine, Client @Import("destinationY") int getDestinationY(); - @Import("audioEffects") + @Import("soundEffects") RSSoundEffect[] getAudioEffects(); - @Import("queuedSoundEffectIDs") + @Import("soundEffectIds") int[] getQueuedSoundEffectIDs(); @Import("soundLocations") @@ -561,88 +559,88 @@ public interface RSClient extends RSGameEngine, Client @Import("queuedSoundEffectDelays") int[] getQueuedSoundEffectDelays(); - @Import("queuedSoundEffectCount") + @Import("soundEffectCount") int getQueuedSoundEffectCount(); - @Import("queuedSoundEffectCount") + @Import("soundEffectCount") void setQueuedSoundEffectCount(int queuedSoundEffectCount); @Import("rasterProvider") @Override - RSBufferProvider getBufferProvider(); + RSAbstractRasterProvider getBufferProvider(); - @Import("mouseIdleTicks") + @Import("MouseHandler_idleCycles") @Override int getMouseIdleTicks(); - @Import("mouseLastPressedTimeMillis") + @Import("MouseHandler_lastPressedTimeMillis") @Override long getMouseLastPressedMillis(); - @Import("keyboardIdleTicks") + @Import("KeyHandler_idleCycles") @Override int getKeyboardIdleTicks(); - @Import("lowMemory") + @Import("isLowDetail") void setLowMemory(boolean lowMemory); - @Import("sceneLowMemory") + @Import("Scene_isLowDetail") void setSceneLowMemory(boolean lowMemory); - @Import("audioHighMemory") + @Import("isStereo") void setAudioHighMemory(boolean highMemory); - @Import("objectCompositionLowDetail") - void setObjectCompositionLowDetail(boolean lowDetail); + @Import("ObjectDefinition_isLowDetail") + void setObjectDefinitionLowDetail(boolean lowDetail); @Construct - RSItem createItem(); + RSGroundItem createItem(); - @Import("intStackSize") + @Import("Interpreter_intStackSize") @Override int getIntStackSize(); - @Import("intStackSize") + @Import("Interpreter_intStackSize") @Override void setIntStackSize(int stackSize); - @Import("intStack") + @Import("Interpreter_intStack") @Override int[] getIntStack(); - @Import("scriptStringStackSize") + @Import("Interpreter_stringStackSize") @Override int getStringStackSize(); - @Import("scriptStringStackSize") + @Import("Interpreter_stringStackSize") @Override void setStringStackSize(int stackSize); - @Import("scriptStringStack") + @Import("Interpreter_stringStack") @Override String[] getStringStack(); - @Import("friendManager") - RSFriendManager getFriendManager(); + @Import("friendSystem") + RSFriendSystem getFriendManager(); - @Import("clanMemberManager") - RSClanMemberManager getClanMemberManager(); + @Import("clanChat") + RSClanChat getClanMemberManager(); @Import("loginType") - RSJagexLoginType getLoginType(); + RSLoginType getLoginType(); @Construct - RSName createName(String name, RSJagexLoginType type); + RSUsername createName(String name, RSLoginType type); @Import("getVarbit") int getVarbit(int varbitId); - @Import("varbits") - RSNodeCache getVarbitCache(); + @Import("VarbitDefinition_cached") + RSEvictingDualNodeHashTable getVarbitCache(); - @Import("preferences") + @Import("clientPreferences") @Override - RSPreferences getPreferences(); + RSClientPreferences getPreferences(); /** * This is the pitch the user has set the camera to. @@ -658,16 +656,16 @@ public interface RSClient extends RSGameEngine, Client @Import("cameraPitchTarget") void setCameraPitchTarget(int pitch); - @Import("pitchSin") + @Import("Scene_cameraPitchSine") void setPitchSin(int v); - @Import("pitchCos") + @Import("Scene_cameraPitchCosine") void setPitchCos(int v); - @Import("yawSin") + @Import("Scene_cameraYawSine") void setYawSin(int v); - @Import("yawCos") + @Import("Scene_cameraYawCosine") void setYawCos(int v); @Import("Rasterizer3D_zoom") @@ -693,16 +691,16 @@ public interface RSClient extends RSGameEngine, Client @Override int getRasterizer3D_clipMidY2(); - @Import("centerX") + @Import("Rasterizer3D_clipMidX") @Override int getCenterX(); - @Import("centerY") + @Import("Rasterizer3D_clipMidY") @Override int getCenterY(); - @Import("renderOverview") - RSRenderOverview getRenderOverview(); + @Import("worldMap0") + RSWorldMap getRenderOverview(); @Import("changeWorld") @Override @@ -712,23 +710,23 @@ public interface RSClient extends RSGameEngine, Client @Override RSWorld createWorld(); - @Import("animOffsetX") + @Import("Model_transformTempX") void setAnimOffsetX(int animOffsetX); - @Import("animOffsetY") + @Import("Model_transformTempY") void setAnimOffsetY(int animOffsetY); - @Import("animOffsetZ") + @Import("Model_transformTempZ") void setAnimOffsetZ(int animOffsetZ); @Import("getFrames") RSFrames getFrames(int frameId); - @Import("minimapSprite") - RSSpritePixels getMinimapSprite(); + @Import("sceneMinimapSprite") + RSSprite getMinimapSprite(); - @Import("minimapSprite") - void setMinimapSprite(SpritePixels spritePixels); + @Import("sceneMinimapSprite") + void setMinimapSprite(Sprite spritePixels); @Import("drawObject") void drawObject(int z, int x, int y, int randomColor1, int randomColor2); @@ -736,13 +734,13 @@ public interface RSClient extends RSGameEngine, Client @Construct RSScriptEvent createScriptEvent(); - @Import("runScript") + @Import("runScript0") void runScript(RSScriptEvent ev, int ex); - @Import("hintArrowTargetType") + @Import("hintArrowType") void setHintArrowTargetType(int value); - @Import("hintArrowTargetType") + @Import("hintArrowType") int getHintArrowTargetType(); @Import("hintArrowX") @@ -757,48 +755,47 @@ public interface RSClient extends RSGameEngine, Client @Import("hintArrowY") int getHintArrowY(); - @Import("hintArrowOffsetX") + @Import("hintArrowSubX") void setHintArrowOffsetX(int value); - @Import("hintArrowOffsetY") + @Import("hintArrowSubY") void setHintArrowOffsetY(int value); - @Import("hintArrowNpcTargetIdx") + @Import("hintArrowNpcIndex") void setHintArrowNpcTargetIdx(int value); - @Import("hintArrowNpcTargetIdx") + @Import("hintArrowNpcIndex") int getHintArrowNpcTargetIdx(); - @Import("hintArrowPlayerTargetIdx") + @Import("hintArrowPlayerIndex") void setHintArrowPlayerTargetIdx(int value); - @Import("hintArrowPlayerTargetIdx") + @Import("hintArrowPlayerIndex") int getHintArrowPlayerTargetIdx(); - @Import("isDynamicRegion") + @Import("isInInstance") @Override boolean isInInstancedRegion(); - @Import("itemPressedDuration") - @Override + @Import("itemDragDuration") int getItemPressedDuration(); - @Import("itemPressedDuration") + @Import("itemDragDuration") void setItemPressedDuration(int duration); - @Import("flags") + @Import("worldProperties") int getFlags(); @Import("compass") - void setCompass(SpritePixels spritePixels); + void setCompass(Sprite spritePixels); @Import("widgetSpriteCache") @Override - RSNodeCache getWidgetSpriteCache(); + RSEvictingDualNodeHashTable getWidgetSpriteCache(); - @Import("items") + @Import("ItemDefinition_cached") @Override - RSNodeCache getItemCompositionCache(); + RSEvictingDualNodeHashTable getItemDefinitionCache(); @Import("oculusOrbState") @Override @@ -812,96 +809,93 @@ public interface RSClient extends RSGameEngine, Client @Override void setOculusOrbNormalSpeed(int state); - @Import("lookingAtX") + @Import("oculusOrbFocalPointX") @Override int getOculusOrbFocalPointX(); - @Import("lookingAtY") + @Import("oculusOrbFocalPointY") @Override int getOculusOrbFocalPointY(); - RSItem getLastItemDespawn(); + RSGroundItem getLastItemDespawn(); - void setLastItemDespawn(RSItem lastItemDespawn); + void setLastItemDespawn(RSGroundItem lastItemDespawn); @Construct RSWidget createWidget(); - @Import("revalidateWidget") + @Import("alignWidget") void revalidateWidget(Widget w); @Import("revalidateWidgetScroll") void revalidateWidgetScroll(Widget[] group, Widget w, boolean postEvent); - @Import("menuAction") - void menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7); - - @Import("Viewport_entityCountAtMouse") + @Import("ViewportMouse_entityCount") int getEntitiesAtMouseCount(); - @Import("Viewport_entityCountAtMouse") + @Import("ViewportMouse_entityCount") void setEntitiesAtMouseCount(int i); - @Import("Viewport_entitiesAtMouse") + @Import("ViewportMouse_entityTags") long[] getEntitiesAtMouse(); - @Import("Viewport_mouseX") + @Import("ViewportMouse_x") int getViewportMouseX(); - @Import("Viewport_mouseY") + @Import("ViewportMouse_y") int getViewportMouseY(); @Import("textureProvider") @Override RSTextureProvider getTextureProvider(); - @Import("occupiedTilesTick") + @Import("tileLastDrawnActor") int[][] getOccupiedTilesTick(); - @Import("cachedModels2") - RSNodeCache getCachedModels2(); + @Import("ObjectDefinition_cachedModels") + RSEvictingDualNodeHashTable getCachedModels2(); - @Import("cycle") + @Import("Scene_drawnCount") int getCycle(); - @Import("cycle") + @Import("Scene_drawnCount") void setCycle(int cycle); - @Import("visibilityMaps") + @Import("visibilityMap") boolean[][][][] getVisibilityMaps(); - @Import("renderArea") + @Import("visibleTiles") void setRenderArea(boolean[][] renderArea); - @Import("cameraX2") + @Import("Scene_cameraX") void setCameraX2(int cameraX2); - @Import("cameraY2") + @Import("Scene_cameraY") void setCameraY2(int cameraY2); - @Import("cameraZ2") + @Import("Scene_cameraZ") void setCameraZ2(int cameraZ2); - @Import("screenCenterX") + @Import("Scene_cameraXTile") void setScreenCenterX(int screenCenterX); - @Import("screenCenterZ") - void setScreenCenterZ(int screenCenterZ); + @Import("Scene_cameraYTile") + void setScreenCenterZ(int screenCenterZ); // <-- This is correct! @Import("Scene_plane") void setScenePlane(int scenePlane); - @Import("minTileX") + @Import("Scene_cameraXTileMin") void setMinTileX(int i); - @Import("minTileZ") - void setMinTileZ(int i); + @Import("Scene_cameraYTileMin") + void setMinTileZ(int i); // <-- This is correct! - @Import("maxTileX") + @Import("Scene_cameraXTileMax") void setMaxTileX(int i); - @Import("maxTileZ") - void setMaxTileZ(int i); + @Import("Scene_cameraYTileMax") + void setMaxTileZ(int i); // <-- This is correct! @Import("tileUpdateCount") int getTileUpdateCount(); @@ -909,47 +903,39 @@ public interface RSClient extends RSGameEngine, Client @Import("tileUpdateCount") void setTileUpdateCount(int tileUpdateCount); - @Import("Viewport_containsMouse") + @Import("ViewportMouse_isInViewport") boolean getViewportContainsMouse(); - @Import("graphicsPixels") + @Import("Rasterizer2D_pixels") int[] getGraphicsPixels(); - @Import("graphicsPixelsWidth") + @Import("Rasterizer2D_width") int getGraphicsPixelsWidth(); - @Import("graphicsPixelsHeight") + @Import("Rasterizer2D_height") int getGraphicsPixelsHeight(); - @Import("fillRectangle") - void RasterizerFillRectangle(int x, int y, int w, int h, int rgb); + @Import("Rasterizer2D_fillRectangle") + void rasterizerFillRectangle(int x, int y, int w, int h, int rgb); - @Import("startX") + @Import("Rasterizer2D_xClipStart") int getStartX(); - @Import("startY") + @Import("Rasterizer2D_yClipStart") int getStartY(); - @Import("endX") + @Import("Rasterizer2D_xClipEnd") int getEndX(); - @Import("endY") + @Import("Rasterizer2D_yClipEnd") int getEndY(); - @Import("if1DraggedWidget") - @Override - RSWidget getIf1DraggedWidget(); - - @Import("if1DraggedItemIndex") - @Override - int getIf1DraggedItemIndex(); - - @Import("spellSelected") + @Import("isSpellSelected") @Override void setSpellSelected(boolean selected); @Import("getEnum") - RSEnum getRsEnum(int id); + RSEnumDefinition getRsEnum(int id); @Import("menuX") int getMenuX(); @@ -966,35 +952,31 @@ public interface RSClient extends RSGameEngine, Client @Import("fontBold12") RSFont getFontBold12(); - @Import("drawHorizontalLine") - void RasterizerDrawHorizontalLine(int x, int y, int w, int rgb); + @Import("Rasterizer2D_drawHorizontalLine") + void rasterizerDrawHorizontalLine(int x, int y, int w, int rgb); - @Import("drawVerticalLine") - void RasterizerDrawVerticalLine(int x, int y, int h, int rgb); + @Import("Rasterizer2D_drawVerticalLine") + void rasterizerDrawVerticalLine(int x, int y, int h, int rgb); @Import("drawGradient") - void RasterizerDrawGradient(int x, int y, int w, int h, int rgbTop, int rgbBottom); + void rasterizerDrawGradient(int x, int y, int w, int h, int rgbTop, int rgbBottom); - @Import("fillRectangleAlpha") - void RasterizerFillRectangleAlpha(int x, int y, int w, int h, int rgb, int a); + @Import("Rasterizer2D_drawRectangleAlpha") + void rasterizerFillRectangleAlpha(int x, int y, int w, int h, int rgb, int a); - @Import("drawRectangle") - void RasterizerDrawRectangle(int x, int y, int w, int h, int rgb); + @Import("Rasterizer2D_drawRectangle") + void rasterizerDrawRectangle(int x, int y, int w, int h, int rgb); @Import("drawCircle") - void RasterizerDrawCircle(int x, int y, int r, int rgb); + void rasterizerDrawCircle(int x, int y, int r, int rgb); - @Import("healthbarCache") + @Import("HealthBarDefinition_cached") @Override - RSNodeCache getHealthBarCache(); - + RSEvictingDualNodeHashTable getHealthBarCache(); + @Import("renderSelf") - void toggleRenderSelf(); - + void setRenderSelf(boolean enabled); + @Import("mouseRecorder") RSMouseRecorder getMouseRecorder(); - - @Import("printMenuActions") - void setPrintMenuActions(boolean b); - } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClientPreferences.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClientPreferences.java new file mode 100644 index 0000000000..e9a5e09e55 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClientPreferences.java @@ -0,0 +1,15 @@ +package net.runelite.rs.api; + +import net.runelite.api.Preferences; +import net.runelite.mapping.Import; + +public interface RSClientPreferences extends Preferences +{ + @Import("rememberedUsername") + @Override + String getRememberedUsername(); + + @Import("rememberedUsername") + @Override + void setRememberedUsername(String username); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java b/runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java deleted file mode 100644 index 8df6236650..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.CollisionData; -import net.runelite.mapping.Import; - -public interface RSCollisionData extends CollisionData -{ - @Import("flags") - int[][] getFlags(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCollisionMap.java b/runescape-api/src/main/java/net/runelite/rs/api/RSCollisionMap.java new file mode 100644 index 0000000000..926f303b0b --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSCollisionMap.java @@ -0,0 +1,10 @@ +package net.runelite.rs.api; + +import net.runelite.api.CollisionData; +import net.runelite.mapping.Import; + +public interface RSCollisionMap extends CollisionData +{ + @Import("flags") + int[][] getFlags(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java b/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java deleted file mode 100644 index 7f9519718b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSCombatInfo1 -{ - @Import("healthRatio") - int getHealthRatio(); - - @Import("health") - int getHealth(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoList.java b/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoList.java deleted file mode 100644 index 297556f8ec..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoList.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -/** - * Created by bold on 2/2/17. - */ -public interface RSCombatInfoList -{ - @Import("node") - RSNode getNode(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java b/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java deleted file mode 100644 index dcfab0d976..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSCombatInfoListHolder extends RSNode -{ - @Import("combatInfo1") - RSCombatInfoList getCombatInfo1(); - - @Import("healthBar") - RSHealthBar getHealthBar(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java deleted file mode 100644 index 910c5acc1b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.DecorativeObject; -import net.runelite.mapping.Import; - -public interface RSDecorativeObject extends DecorativeObject -{ - @Import("hash") - @Override - long getHash(); - - @Import("x") - int getX(); - - @Import("y") - int getY(); - - @Import("offsetX") - int getXOffset(); - - @Import("offsetY") - int getYOffset(); - - @Import("rotation") - int getOrientation(); - - @Import("renderable1") - @Override - RSRenderable getRenderable(); - - @Import("renderable2") - @Override - RSRenderable getRenderable2(); - - void setPlane(int plane); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSDeque.java b/runescape-api/src/main/java/net/runelite/rs/api/RSDeque.java deleted file mode 100644 index 9a0c2aa303..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSDeque.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSDeque -{ - @Import("current") - RSNode getCurrent(); - - @Import("head") - RSNode getHead(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSCacheableNode.java b/runescape-api/src/main/java/net/runelite/rs/api/RSDualNode.java similarity index 95% rename from runescape-api/src/main/java/net/runelite/rs/api/RSCacheableNode.java rename to runescape-api/src/main/java/net/runelite/rs/api/RSDualNode.java index 44d7b876cc..034a2e144d 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSCacheableNode.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSDualNode.java @@ -26,8 +26,8 @@ package net.runelite.rs.api; import net.runelite.mapping.Import; -public interface RSCacheableNode extends RSNode +public interface RSDualNode extends RSNode { - @Import("unlinkDual") + @Import("removeDual") void unlinkDual(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java index 4d18bdd26a..44dd3cadf5 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java @@ -1,43 +1,19 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.Renderable; import net.runelite.mapping.Import; -public interface RSDynamicObject extends Renderable, RSRenderable +public interface RSDynamicObject extends RSEntity, Renderable { @Import("id") int getId(); - @Import("animFrame") + @Import("frame") int getAnimFrame(); - @Import("animFrame") + @Import("frame") void setAnimFrame(int frame); - @Import("animCycleCount") + @Import("cycleStart") int getAnimCycleCount(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSRenderable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSEntity.java similarity index 93% rename from runescape-api/src/main/java/net/runelite/rs/api/RSRenderable.java rename to runescape-api/src/main/java/net/runelite/rs/api/RSEntity.java index 398c68088a..89229d0fb6 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSRenderable.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSEntity.java @@ -27,12 +27,12 @@ package net.runelite.rs.api; import net.runelite.api.Renderable; import net.runelite.mapping.Import; -public interface RSRenderable extends RSNode, Renderable +public interface RSEntity extends RSNode, Renderable { - @Import("modelHeight") + @Import("height") int getModelHeight(); - @Import("modelHeight") + @Import("height") @Override void setModelHeight(int modelHeight); @@ -40,7 +40,7 @@ public interface RSRenderable extends RSNode, Renderable @Override RSModel getModel(); - @Import("draw") + @Import("renderDraw") @Override void draw(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSEnum.java b/runescape-api/src/main/java/net/runelite/rs/api/RSEnum.java deleted file mode 100644 index afad5c131e..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSEnum.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.EnumComposition; -import net.runelite.mapping.Import; - -public interface RSEnum extends EnumComposition, RSCacheableNode -{ - @Import("keys") - @Override - int[] getKeys(); - - @Import("intVals") - @Override - int[] getIntVals(); - - @Import("stringVals") - @Override - String[] getStringVals(); - - @Import("defaultInt") - int getDefaultInt(); - - @Import("defaultString") - String getDefaultString(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSEnumDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSEnumDefinition.java new file mode 100644 index 0000000000..0e4206e29a --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSEnumDefinition.java @@ -0,0 +1,25 @@ +package net.runelite.rs.api; + +import net.runelite.api.EnumDefinition; +import net.runelite.mapping.Import; + +public interface RSEnumDefinition extends EnumDefinition, RSDualNode +{ + @Import("keys") + @Override + int[] getKeys(); + + @Import("intVals") + @Override + int[] getIntVals(); + + @Import("stringVals") + @Override + String[] getStringVals(); + + @Import("defaultInt") + int getDefaultInt(); + + @Import("defaultString") + String getDefaultString(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSEvictingDualNodeHashTable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSEvictingDualNodeHashTable.java new file mode 100644 index 0000000000..3f59cdaa47 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSEvictingDualNodeHashTable.java @@ -0,0 +1,22 @@ +package net.runelite.rs.api; + +import net.runelite.api.NodeCache; +import net.runelite.mapping.Import; + +public interface RSEvictingDualNodeHashTable extends NodeCache +{ + @Import("get") + RSDualNode get(long id); + + @Import("clear") + @Override + void reset(); + + @Import("capacity") + @Override + void setCapacity(int capacity); + + @Import("remainingCapacity") + @Override + void setRemainingCapacity(int remainingCapacity); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFileOnDisk.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFileOnDisk.java index e7f07e34ee..8f73327bae 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFileOnDisk.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFileOnDisk.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import java.io.RandomAccessFile; @@ -32,9 +8,9 @@ public interface RSFileOnDisk @Import("file") RandomAccessFile getFile(); - @Import("position") + @Import("index") long getPosition(); - @Import("length") + @Import("capacity") long getLength(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java new file mode 100644 index 0000000000..e20c1056d7 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFloorDecoration.java @@ -0,0 +1,23 @@ +package net.runelite.rs.api; + +import net.runelite.api.GroundObject; +import net.runelite.mapping.Import; + +public interface RSFloorDecoration extends GroundObject +{ + @Import("tag") + @Override + long getHash(); + + @Import("x") + int getX(); + + @Import("y") + int getY(); + + @Import("entity") + @Override + RSEntity getRenderable(); + + void setPlane(int plane); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFont.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFont.java index 243193302a..b12c97d946 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFont.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFont.java @@ -1,30 +1,5 @@ -/* - * Copyright (c) 2019, Ron Young - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - package net.runelite.rs.api; -public interface RSFont extends RSFontTypeFace +public interface RSFont extends RSAbstractFont { } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFontTypeFace.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFontTypeFace.java deleted file mode 100644 index 36fe246e0f..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFontTypeFace.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2018 Abex - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.FontTypeFace; -import net.runelite.mapping.Import; - -public interface RSFontTypeFace extends FontTypeFace -{ - @Import("getTextWidth") - @Override - int getTextWidth(String text); - - @Import("verticalSpace") - @Override - int getBaseline(); - - @Import("drawTextLeftAligned") - void drawTextLeftAligned(String text, int x, int y, int fontColor, int shadowColor); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFrames.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFrames.java index 947549248d..69b065d90f 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFrames.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFrames.java @@ -26,8 +26,8 @@ package net.runelite.rs.api; import net.runelite.mapping.Import; -public interface RSFrames extends RSCacheableNode +public interface RSFrames extends RSDualNode { - @Import("skeletons") - RSFrame[] getFrames(); + @Import("frames") + RSAnimation[] getFrames(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFriend.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFriend.java index 0948c5fc85..3b4e047066 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFriend.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFriend.java @@ -1,31 +1,7 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.Friend; -public interface RSFriend extends Friend, RSChatPlayer +public interface RSFriend extends Friend, RSBuddy { } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java deleted file mode 100644 index 2b3793f478..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -public interface RSFriendContainer extends RSNameableContainer -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFriendManager.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFriendManager.java deleted file mode 100644 index 4ff789bc5b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFriendManager.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.FriendManager; -import net.runelite.mapping.Import; - -public interface RSFriendManager extends FriendManager -{ - @Import("friendContainer") - RSFriendContainer getFriendContainer(); - - @Import("ignoreContainer") - RSIgnoreContainer getIgnoreContainer(); - - @Import("isFriended") - boolean isFriended(RSName var1, boolean var2); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFriendSystem.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFriendSystem.java new file mode 100644 index 0000000000..017971b308 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFriendSystem.java @@ -0,0 +1,16 @@ +package net.runelite.rs.api; + +import net.runelite.api.FriendManager; +import net.runelite.mapping.Import; + +public interface RSFriendSystem extends FriendManager +{ + @Import("friendsList") + RSFriendsList getFriendContainer(); + + @Import("ignoreList") + RSIgnoreList getIgnoreContainer(); + + @Import("isFriended") + boolean isFriended(RSUsername var1, boolean var2); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFriendsList.java b/runescape-api/src/main/java/net/runelite/rs/api/RSFriendsList.java new file mode 100644 index 0000000000..5617d00bc0 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSFriendsList.java @@ -0,0 +1,5 @@ +package net.runelite.rs.api; + +public interface RSFriendsList extends RSUserList +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGameCanvas.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGameCanvas.java deleted file mode 100644 index f23456261a..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGameCanvas.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -public interface RSGameCanvas -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java index b77453c325..068cce5e3f 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.GameObject; @@ -29,29 +5,29 @@ import net.runelite.mapping.Import; public interface RSGameObject extends GameObject { - @Import("renderable") - RSRenderable getRenderable(); + @Import("entity") + RSEntity getRenderable(); @Import("plane") int getPlane(); - @Import("relativeX") + @Import("startX") int getRelativeX(); - @Import("relativeY") + @Import("startY") int getRelativeY(); - @Import("offsetX") + @Import("endX") int getOffsetX(); - @Import("offsetY") + @Import("endY") int getOffsetY(); - @Import("x") + @Import("centerX") @Override int getX(); - @Import("y") + @Import("centerY") @Override int getY(); @@ -61,7 +37,7 @@ public interface RSGameObject extends GameObject @Import("orientation") int getRsOrientation(); - @Import("hash") + @Import("tag") @Override long getHash(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGameEngine.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java similarity index 92% rename from runescape-api/src/main/java/net/runelite/rs/api/RSGameEngine.java rename to runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java index 87bc24ca15..969e4f4cb3 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGameEngine.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java @@ -24,11 +24,11 @@ */ package net.runelite.rs.api; +import net.runelite.api.GameShell; import java.awt.Canvas; -import net.runelite.api.GameEngine; import net.runelite.mapping.Import; -public interface RSGameEngine extends GameEngine +public interface RSGameShell extends GameShell { @Import("canvas") Canvas getCanvas(); @@ -46,10 +46,10 @@ public interface RSGameEngine extends GameEngine @Import("resizeCanvasNextFrame") void setResizeCanvasNextFrame(boolean resize); - @Import("replaceCanvasNextFrame") + @Import("isCanvasInvalid") boolean isReplaceCanvasNextFrame(); - @Import("replaceCanvasNextFrame") + @Import("isCanvasInvalid") void setReplaceCanvasNextFrame(boolean replace); @Import("maxCanvasWidth") diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGrandExchangeOffer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGrandExchangeOffer.java index d88e582ef7..3998a383eb 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGrandExchangeOffer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGrandExchangeOffer.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.GrandExchangeOffer; @@ -29,11 +5,11 @@ import net.runelite.mapping.Import; public interface RSGrandExchangeOffer extends GrandExchangeOffer { - @Import("quantitySold") + @Import("currentQuantity") @Override int getQuantitySold(); - @Import("itemId") + @Import("id") @Override int getItemId(); @@ -41,16 +17,14 @@ public interface RSGrandExchangeOffer extends GrandExchangeOffer @Override int getTotalQuantity(); - @Import("price") + @Import("unitPrice") @Override int getPrice(); - @Import("spent") + @Import("currentPrice") @Override int getSpent(); @Import("state") byte getRSState(); - - } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGraphicsObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGraphicsObject.java index 2edde942f1..74fc9bccd2 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGraphicsObject.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGraphicsObject.java @@ -1,33 +1,9 @@ -/* - * Copyright (c) 2018, Woox - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.GraphicsObject; import net.runelite.mapping.Import; -public interface RSGraphicsObject extends GraphicsObject, RSRenderable +public interface RSGraphicsObject extends GraphicsObject, RSEntity { @Import("id") @Override @@ -39,11 +15,11 @@ public interface RSGraphicsObject extends GraphicsObject, RSRenderable @Import("y") int getY(); - @Import("startCycle") + @Import("cycleStart") @Override int getStartCycle(); - @Import("level") + @Import("plane") @Override int getLevel(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGroundItem.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGroundItem.java new file mode 100644 index 0000000000..f4823f14b0 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGroundItem.java @@ -0,0 +1,36 @@ +package net.runelite.rs.api; + +import net.runelite.api.Item; +import net.runelite.api.Tile; +import net.runelite.mapping.Import; + +public interface RSGroundItem extends RSEntity, Item +{ + @Import("id") + @Override + int getId(); + + @Import("id") + void setId(int id); + + @Import("quantity") + @Override + int getQuantity(); + + @Import("quantity") + void setQuantity(int quantity); + + int getX(); + + void setX(int x); + + int getY(); + + void setY(int y); + + /** + * Get the tile this item is on + * @return + */ + Tile getTile(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGroundItemPile.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGroundItemPile.java new file mode 100644 index 0000000000..b96870fcb3 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGroundItemPile.java @@ -0,0 +1,34 @@ +package net.runelite.rs.api; + +import net.runelite.api.ItemLayer; +import net.runelite.mapping.Import; + +public interface RSGroundItemPile extends ItemLayer +{ + @Import("x") + int getX(); + + @Import("y") + int getY(); + + @Import("tag") + @Override + long getHash(); + + @Import("height") + int getHeight(); + + @Import("third") + @Override + RSEntity getBottom(); + + @Import("second") + @Override + RSEntity getMiddle(); + + @Import("first") + @Override + RSEntity getTop(); + + void setPlane(int plane); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java deleted file mode 100644 index efd272cdff..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.GroundObject; -import net.runelite.mapping.Import; - -public interface RSGroundObject extends GroundObject -{ - @Import("hash") - @Override - long getHash(); - - @Import("x") - int getX(); - - @Import("y") - int getY(); - - @Import("renderable") - @Override - RSRenderable getRenderable(); - - void setPlane(int plane); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSHashTable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSHashTable.java deleted file mode 100644 index e1462ce1dd..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSHashTable.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.HashTable; -import net.runelite.mapping.Import; - -public interface RSHashTable extends HashTable -{ - @Import("get") - @Override - RSNode get(long value); - - @Import("size") - int getSize(); - - @Import("buckets") - RSNode[] getBuckets(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBar.java b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBar.java index 758bf8cb83..248ec7d624 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBar.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBar.java @@ -1,46 +1,12 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; -import net.runelite.api.HealthBar; import net.runelite.mapping.Import; -public interface RSHealthBar extends RSCacheableNode, HealthBar +public interface RSHealthBar extends RSNode { - @Import("healthScale") - int getHealthScale(); + @Import("updates") + RSIterableNodeDeque getUpdates(); // "combatinfolist" but only thing it has is getNode so this works - @Import("getHealthBarFrontSprite") - @Override - RSSpritePixels getHealthBarFrontSprite(); - - @Import("getHealthBarBackSprite") - @Override - RSSpritePixels getHealthBarBackSprite(); - - @Import("healthBarPadding") - @Override - void setPadding(int padding); + @Import("definition") + RSHealthBarDefinition getDefinition(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarDefinition.java new file mode 100644 index 0000000000..377a0934a1 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarDefinition.java @@ -0,0 +1,20 @@ +package net.runelite.rs.api; + +import net.runelite.api.HealthBar; +import net.runelite.mapping.Import; + +public interface RSHealthBarDefinition extends RSDualNode, HealthBar +{ + @Import("width") + int getHealthScale(); + + @Import("getSprite1") + RSSprite getHealthBarFrontSprite(); + + @Import("getSprite2") + RSSprite getHealthBarBackSprite(); + + @Import("widthPadding") + @Override + void setPadding(int padding); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarUpdate.java b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarUpdate.java new file mode 100644 index 0000000000..6541b7f328 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarUpdate.java @@ -0,0 +1,12 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSHealthBarUpdate +{ + @Import("health") + int getHealthRatio(); + + @Import("health2") // not sure about that one but it isn't used and I am sure about the other one + int getHealth(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIgnore.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIgnore.java deleted file mode 100644 index f4c3c8150b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIgnore.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.Ignore; - -public interface RSIgnore extends Ignore, RSNameable -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreContainer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreContainer.java deleted file mode 100644 index 74fb4d5f37..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreContainer.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -public interface RSIgnoreContainer extends RSNameableContainer -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreList.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreList.java new file mode 100644 index 0000000000..802fe122a0 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIgnoreList.java @@ -0,0 +1,5 @@ +package net.runelite.rs.api; + +public interface RSIgnoreList extends RSUserList +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIgnored.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIgnored.java new file mode 100644 index 0000000000..5fcca27e00 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIgnored.java @@ -0,0 +1,7 @@ +package net.runelite.rs.api; + +import net.runelite.api.Ignore; + +public interface RSIgnored extends Ignore, RSUser +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexCache.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIndexCache.java new file mode 100644 index 0000000000..bf68b6cba4 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIndexCache.java @@ -0,0 +1,9 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSIndexCache extends RSAbstractIndexCache +{ + @Import("index") + int getIndex(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexData.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIndexData.java deleted file mode 100644 index 6ec1b9d3b6..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexData.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSIndexData extends RSIndexDataBase -{ - @Import("index") - int getIndex(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexDataBase.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIndexDataBase.java deleted file mode 100644 index 26a5a507df..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexDataBase.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.IndexDataBase; -import net.runelite.mapping.Import; - -public interface RSIndexDataBase extends IndexDataBase -{ - @Import("getConfigData") - byte[] getConfigData(int archiveId, int fileId); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexedSprite.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIndexedSprite.java index 01988e04cc..c2b13deffa 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIndexedSprite.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIndexedSprite.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.IndexedSprite; @@ -45,51 +21,51 @@ public interface RSIndexedSprite extends IndexedSprite @Override void setPalette(int[] palette); - @Import("originalWidth") + @Import("width") @Override int getOriginalWidth(); - @Import("originalWidth") + @Import("width") @Override void setOriginalWidth(int originalWidth); - @Import("originalHeight") + @Import("height") @Override int getOriginalHeight(); - @Import("originalHeight") + @Import("height") @Override void setOriginalHeight(int originalHeight); - @Import("height") + @Import("subHeight") @Override int getHeight(); - @Import("height") + @Import("subHeight") @Override void setHeight(int height); - @Import("offsetX") + @Import("xOffset") @Override int getOffsetX(); - @Import("offsetX") + @Import("xOffset") @Override void setOffsetX(int offsetX); - @Import("offsetY") + @Import("yOffset") @Override int getOffsetY(); - @Import("offsetY") + @Import("yOffset") @Override void setOffsetY(int offsetY); - @Import("width") + @Import("subWidth") @Override int getWidth(); - @Import("width") + @Import("subWidth") @Override void setWidth(int width); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIntegerNode.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIntegerNode.java index 2f31190951..2a5e5bb3bb 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIntegerNode.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIntegerNode.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.IntegerNode; @@ -29,11 +5,11 @@ import net.runelite.mapping.Import; public interface RSIntegerNode extends RSNode, IntegerNode { - @Import("value") + @Import("integer") @Override int getValue(); - @Import("value") + @Import("integer") @Override void setValue(int value); } \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItem.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItem.java deleted file mode 100644 index 4f451cf028..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSItem.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.Item; -import net.runelite.api.Tile; -import net.runelite.mapping.Import; - -public interface RSItem extends RSRenderable, Item -{ - @Import("id") - @Override - int getId(); - - @Import("id") - void setId(int id); - - @Import("quantity") - @Override - int getQuantity(); - - @Import("quantity") - void setQuantity(int quantity); - - int getX(); - - void setX(int x); - - int getY(); - - void setY(int y); - - /** - * Get the tile this item is on - * @return - */ - Tile getTile(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java deleted file mode 100644 index fcc649ca72..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSItemComposition.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.ItemComposition; -import net.runelite.mapping.Import; - -/** - * ItemComposition is an interface that represents the various properties of an - * item. Imports several values from runescape-client/ItemComposition, and allows - * direct access to them by calling these methods. - */ -public interface RSItemComposition extends ItemComposition -{ - @Import("name") - @Override - String getName(); - - @Import("id") - @Override - int getId(); - - @Import("notedTemplate") - @Override - int getNote(); - - @Import("note") - @Override - int getLinkedNoteId(); - - @Import("placeholderId") - @Override - int getPlaceholderId(); - - @Import("placeholderTemplateId") - @Override - int getPlaceholderTemplateId(); - - @Import("price") - @Override - int getPrice(); - - @Import("isMembers") - @Override - boolean isMembers(); - - @Import("isTradable") - @Override - boolean isTradeable(); - - /** - * You probably want {@link #isStackable} - *

- * This is the {@code int} that client code uses internally to represent this true/false value. It appears to only ever be set to 1 or 0 - * @return 0 when this type of item isn't stackable, 1 otherwise - */ - @Import("isStackable") - int getIsStackable(); - - @Import("maleModel") - int getMaleModel(); - - @Import("inventoryActions") - @Override - String[] getInventoryActions(); - - @Import("getShiftClickActionIndex") - @Override - int getShiftClickActionIndex(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItemContainer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItemContainer.java index d84a50971b..abbad17e57 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSItemContainer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSItemContainer.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.ItemContainer; @@ -29,9 +5,9 @@ import net.runelite.mapping.Import; public interface RSItemContainer extends RSNode, ItemContainer { - @Import("itemIds") + @Import("ids") int[] getItemIds(); - @Import("stackSizes") + @Import("quantities") int[] getStackSizes(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java new file mode 100644 index 0000000000..67c0cdb459 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSItemDefinition.java @@ -0,0 +1,63 @@ +package net.runelite.rs.api; + +import net.runelite.api.ItemDefinition; +import net.runelite.mapping.Import; + +public interface RSItemDefinition extends ItemDefinition +{ + @Import("name") + @Override + String getName(); + + @Import("id") + @Override + int getId(); + + @Import("noteTemplate") + @Override + int getNote(); + + @Import("notedId") + @Override + int getLinkedNoteId(); + + @Import("placeholder") + @Override + int getPlaceholderId(); + + @Import("placeholderTemplate") + @Override + int getPlaceholderTemplateId(); + + @Import("price") + @Override + int getPrice(); + + @Import("isMembersOnly") + @Override + boolean isMembers(); + + @Import("isTradable") + @Override + boolean isTradeable(); + + /** + * You probably want {@link #isStackable} + *

+ * This is the {@code int} that client code uses internally to represent this true/false value. It appears to only ever be set to 1 or 0 + * @return 0 when this type of item isn't stackable, 1 otherwise + */ + @Import("isStackable") + int getIsStackable(); + + @Import("maleModel") + int getMaleModel(); + + @Import("inventoryActions") + @Override + String[] getInventoryActions(); + + @Import("getShiftClickIndex") + @Override + int getShiftClickActionIndex(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java deleted file mode 100644 index 4afd479296..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.ItemLayer; -import net.runelite.mapping.Import; - -public interface RSItemLayer extends ItemLayer -{ - @Import("x") - int getX(); - - @Import("y") - int getY(); - - @Import("hash") - @Override - long getHash(); - - @Import("height") - int getHeight(); - - @Import("bottom") - @Override - RSRenderable getBottom(); - - @Import("middle") - @Override - RSRenderable getMiddle(); - - @Import("top") - @Override - RSRenderable getTop(); - - void setPlane(int plane); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIterableHashTable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIterableHashTable.java deleted file mode 100644 index 404f2c32bb..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSIterableHashTable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.IterableHashTable; -import net.runelite.mapping.Import; - -public interface RSIterableHashTable extends IterableHashTable -{ - @Import("get") - @Override - RSNode get(long hash); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java new file mode 100644 index 0000000000..6068b7380a --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java @@ -0,0 +1,9 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSIterableNodeDeque +{ + @Import("current") + RSNode getCurrent(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeHashTable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeHashTable.java new file mode 100644 index 0000000000..3d8c5efab0 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeHashTable.java @@ -0,0 +1,11 @@ +package net.runelite.rs.api; + +import net.runelite.api.IterableHashTable; +import net.runelite.mapping.Import; + +public interface RSIterableNodeHashTable extends IterableHashTable +{ + @Import("get") + @Override + RSNode get(long hash); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java b/runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java deleted file mode 100644 index 5446d5d4bb..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -public interface RSJagexLoginType -{ - -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSKeyFocusListener.java b/runescape-api/src/main/java/net/runelite/rs/api/RSKeyFocusListener.java deleted file mode 100644 index 9ef296251b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSKeyFocusListener.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import java.awt.event.FocusListener; -import java.awt.event.KeyListener; -import net.runelite.api.KeyFocusListener; - -public interface RSKeyFocusListener extends KeyListener, FocusListener, KeyFocusListener -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java b/runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java new file mode 100644 index 0000000000..c683aa129a --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java @@ -0,0 +1,9 @@ +package net.runelite.rs.api; + +import net.runelite.api.KeyFocusListener; +import java.awt.event.FocusListener; +import java.awt.event.KeyListener; + +public interface RSKeyHandler extends KeyListener, FocusListener, KeyFocusListener +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSLoginType.java b/runescape-api/src/main/java/net/runelite/rs/api/RSLoginType.java new file mode 100644 index 0000000000..ecbde757f7 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSLoginType.java @@ -0,0 +1,5 @@ +package net.runelite.rs.api; + +public interface RSLoginType +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java deleted file mode 100644 index 8b27911a27..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import java.awt.Component; -import java.awt.Image; -import net.runelite.api.MainBufferProvider; -import net.runelite.mapping.Import; - -public interface RSMainBufferProvider extends RSBufferProvider, MainBufferProvider -{ - @Import("image") - @Override - Image getImage(); - - @Import("image") - void setImage(Image image); - - @Import("canvas") - Component getCanvas(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java deleted file mode 100644 index 028f5269a5..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.MapElementConfig; -import net.runelite.mapping.Import; - -public interface RSMapElementConfig extends RSCacheableNode, MapElementConfig -{ - @Import("getMapIcon") - @Override - RSSpritePixels getMapIcon(boolean var1); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java new file mode 100644 index 0000000000..4bbbfb74a0 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java @@ -0,0 +1,38 @@ +package net.runelite.rs.api; + +import net.runelite.api.MessageNode; +import net.runelite.mapping.Import; + +public interface RSMessage extends MessageNode +{ + @Import("count") + @Override + int getId(); + + @Import("type") + int getRSType(); + + @Import("prefix") + @Override + String getName(); + + @Import("prefix") + @Override + void setName(String name); + + @Import("sender") + @Override + String getSender(); + + @Import("sender") + @Override + void setSender(String sender); + + @Import("text") + @Override + String getValue(); + + @Import("text") + @Override + void setValue(String value); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java deleted file mode 100644 index f673e58c7a..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.MessageNode; -import net.runelite.mapping.Import; - -public interface RSMessageNode extends MessageNode -{ - @Import("id") - @Override - int getId(); - - @Import("type") - int getRSType(); - - @Import("name") - @Override - String getName(); - - @Import("name") - @Override - void setName(String name); - - @Import("sender") - @Override - String getSender(); - - @Import("sender") - @Override - void setSender(String sender); - - @Import("value") - @Override - String getValue(); - - @Import("value") - @Override - void setValue(String value); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSModel.java b/runescape-api/src/main/java/net/runelite/rs/api/RSModel.java index a447b080c1..e05e02599e 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSModel.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSModel.java @@ -24,11 +24,11 @@ */ package net.runelite.rs.api; -import java.awt.Polygon; import net.runelite.api.Model; +import java.awt.Polygon; import net.runelite.mapping.Import; -public interface RSModel extends RSRenderable, Model +public interface RSModel extends RSEntity, Model { @Import("verticesCount") @Override @@ -74,7 +74,7 @@ public interface RSModel extends RSRenderable, Model @Override int[] getFaceColors3(); - @Import("triangleTransparencies") + @Import("faceAlphas") @Override byte[] getTriangleTransparencies(); @@ -82,70 +82,70 @@ public interface RSModel extends RSRenderable, Model @Override byte[] getFaceRenderPriorities(); - @Import("vertexGroups") + @Import("vertexLabels") int[][] getVertexGroups(); - @Import("modelHeight") + @Import("height") @Override int getModelHeight(); - @Import("animate") + @Import("transform") void animate(int type, int[] list, int x, int y, int z); @Import("calculateBoundsCylinder") @Override void calculateBoundsCylinder(); - @Import("calculateExtreme") + @Import("calculateBoundingBox") @Override void calculateExtreme(int orientation); @Import("resetBounds") void resetBounds(); - @Import("toSharedModel") + @Import("toSharedSequenceModel") RSModel toSharedModel(boolean b); - @Import("toSharedSpotAnimModel") + @Import("toSharedSpotAnimationModel") RSModel toSharedSpotAnimModel(boolean b); @Import("rotateY90Ccw") void rotateY90Ccw(); - @Import("rotateY180Ccw") + @Import("rotateY180") void rotateY180Ccw(); @Import("rotateY270Ccw") void rotateY270Ccw(); - @Import("isClickable") - boolean isClickable(); + @Import("isSingleTile") + boolean isSingleTile(); @Import("radius") @Override int getRadius(); - @Import("centerX") + @Import("xMid") @Override int getCenterX(); - @Import("centerY") + @Import("yMid") @Override int getCenterY(); - @Import("centerZ") + @Import("zMid") @Override int getCenterZ(); - @Import("extremeX") + @Import("xMidOffset") @Override int getExtremeX(); - @Import("extremeY") + @Import("yMidOffset") @Override int getExtremeY(); - @Import("extremeZ") + @Import("zMidOffset") @Override int getExtremeZ(); @@ -153,12 +153,12 @@ public interface RSModel extends RSRenderable, Model @Override short[] getFaceTextures(); - @Import("XYZMag") + @Import("xzRadius") @Override int getXYZMag(); void interpolateFrames(RSFrames frames, int frameId, RSFrames nextFrames, int nextFrameId, int interval, - int intervalCount); + int intervalCount); /** * Compute the convex hull of this model diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSModelData.java b/runescape-api/src/main/java/net/runelite/rs/api/RSModelData.java index 4503e75729..77eaf9ce9c 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSModelData.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSModelData.java @@ -1,52 +1,28 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.mapping.Import; -public interface RSModelData extends RSRenderable +public interface RSModelData extends RSEntity { - @Import("triangleFaceCount") + @Import("faceCount") int getTriangleFaceCount(); - @Import("trianglePointsX") + @Import("indices1") int[] getTrianglePointsX(); - @Import("trianglePointsY") + @Import("indices2") int[] getTrianglePointsY(); - @Import("trianglePointsZ") + @Import("indices3") int[] getTrianglePointsZ(); - @Import("vertexX") + @Import("verticesX") int[] getVertexX(); - @Import("vertexY") + @Import("verticesY") int[] getVertexY(); - @Import("vertexZ") + @Import("verticesZ") int[] getVertexZ(); @Import("texTriangleX") diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseHandler.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseHandler.java new file mode 100644 index 0000000000..b89b833c85 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseHandler.java @@ -0,0 +1,9 @@ +package net.runelite.rs.api; + +import java.awt.event.FocusListener; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; + +public interface RSMouseHandler extends MouseListener, MouseMotionListener, FocusListener +{ +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseInput.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseInput.java deleted file mode 100644 index 7db688d071..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseInput.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import java.awt.event.FocusListener; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; - -public interface RSMouseInput extends MouseListener, MouseMotionListener, FocusListener -{ -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseRecorder.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseRecorder.java index 8cbbe545f7..d7eeba34d1 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseRecorder.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseRecorder.java @@ -1,28 +1,3 @@ -/* - * Copyright (c) 2019, ThatGamerBlue - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - package net.runelite.rs.api; import net.runelite.api.MouseRecorder; @@ -30,17 +5,15 @@ import net.runelite.mapping.Import; public interface RSMouseRecorder extends MouseRecorder { - @Import("xs") int[] getXs(); - + @Import("ys") int[] getYs(); - + @Import("millis") long[] getMillis(); - + @Import("index") int getIndex(); - } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseWheelHandler.java b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseWheelHandler.java index bd50e7a428..2add3af142 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSMouseWheelHandler.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSMouseWheelHandler.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import java.awt.event.MouseWheelListener; diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java index fc4bfcc714..c34ce43381 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.NPC; @@ -29,9 +5,9 @@ import net.runelite.mapping.Import; public interface RSNPC extends RSActor, NPC { - @Import("composition") + @Import("definition") @Override - RSNPCComposition getComposition(); + RSNPCDefinition getDefinition(); @Override int getIndex(); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java deleted file mode 100644 index 87c781cea8..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNPCComposition.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.NPCComposition; -import net.runelite.mapping.Import; - -public interface RSNPCComposition extends NPCComposition -{ - @Import("name") - @Override - String getName(); - - @Import("models") - @Override - int[] getModels(); - - @Import("actions") - @Override - String[] getActions(); - - @Import("isClickable") - @Override - boolean isClickable(); - - @Import("isMinimapVisible") - @Override - boolean isMinimapVisible(); - - @Import("isVisible") - @Override - boolean isVisible(); - - @Import("id") - @Override - int getId(); - - @Import("combatLevel") - @Override - int getCombatLevel(); - - @Import("configs") - @Override - int[] getConfigs(); - - @Import("transform") - @Override - RSNPCComposition transform(); - - @Import("size") - @Override - int getSize(); - - @Import("headIcon") - int getRsOverheadIcon(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNPCDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNPCDefinition.java new file mode 100644 index 0000000000..fef328c669 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNPCDefinition.java @@ -0,0 +1,54 @@ +package net.runelite.rs.api; + +import net.runelite.api.NPCDefinition; +import net.runelite.mapping.Import; + +public interface RSNPCDefinition extends NPCDefinition +{ + @Import("name") + @Override + String getName(); + + @Import("archives") + @Override + int[] getModels(); + + @Import("actions") + @Override + String[] getActions(); + + @Import("isClickable") + @Override + boolean isClickable(); + + @Import("drawMapDot") + @Override + boolean isMinimapVisible(); + + @Import("isVisible") + @Override + boolean isVisible(); + + @Import("id") + @Override + int getId(); + + @Import("combatLevel") + @Override + int getCombatLevel(); + + @Import("transforms") + @Override + int[] getConfigs(); + + @Import("transform") + @Override + RSNPCDefinition transform(); + + @Import("size") + @Override + int getSize(); + + @Import("headIconPrayer") + int getRsOverheadIcon(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNameable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNameable.java deleted file mode 100644 index 6b7feef4ab..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNameable.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.Nameable; -import net.runelite.mapping.Import; - -public interface RSNameable extends Nameable, Comparable -{ - @Import("name") - RSName getRsName(); - - @Import("prevName") - RSName getRsPrevName(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java deleted file mode 100644 index 33f2070048..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNameableContainer.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSNameableContainer -{ - @Import("count") - int getCount(); - - @Import("nameables") - T[] getNameables(); - - @Import("isMember") - boolean isMember(RSName var1); - - @Import("findByName") - T findByName(RSName name); - - /** - * Method called by the container when an element is added - * @param name - * @param prevName - */ - void rl$add(RSName name, RSName prevName); - - /** - * Method called by the container when an element is removed - * @param nameable - */ - void rl$remove(RSNameable nameable); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNode.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNode.java index ab24b70dda..80dc2b7c2f 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNode.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNode.java @@ -33,7 +33,7 @@ public interface RSNode extends Node @Override RSNode getNext(); - @Import("hash") + @Import("key") @Override long getHash(); @@ -41,7 +41,7 @@ public interface RSNode extends Node @Override RSNode getPrevious(); - @Import("unlink") + @Import("remove") void unlink(); /** diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNodeCache.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeCache.java deleted file mode 100644 index 6a7eb9e2ec..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNodeCache.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.NodeCache; -import net.runelite.mapping.Import; - -public interface RSNodeCache extends NodeCache -{ - @Import("get") - RSCacheableNode get(long id); - - @Import("reset") - @Override - void reset(); - - @Import("capacity") - @Override - void setCapacity(int capacity); - - @Import("remainingCapacity") - @Override - void setRemainingCapacity(int remainingCapacity); -} \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java new file mode 100644 index 0000000000..c903f20f8c --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java @@ -0,0 +1,12 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSNodeDeque +{ + @Import("current") + RSNode getCurrent(); + + @Import("sentinel") + RSNode getHead(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNodeHashTable.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeHashTable.java new file mode 100644 index 0000000000..e93b478531 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeHashTable.java @@ -0,0 +1,17 @@ +package net.runelite.rs.api; + +import net.runelite.api.HashTable; +import net.runelite.mapping.Import; + +public interface RSNodeHashTable extends HashTable +{ + @Import("get") + @Override + RSNode get(long value); + + @Import("size") + int getSize(); + + @Import("buckets") + RSNode[] getBuckets(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java deleted file mode 100644 index 3df00175f5..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.ObjectComposition; -import net.runelite.mapping.Import; - -public interface RSObjectComposition extends ObjectComposition -{ - @Import("id") - @Override - int getId(); - - @Import("name") - @Override - String getName(); - - @Import("actions") - @Override - String[] getActions(); - - @Import("mapSceneId") - @Override - int getMapSceneId(); - - @Import("mapIconId") - @Override - int getMapIconId(); - - @Import("impostorIds") - @Override - int[] getImpostorIds(); - - @Import("getImpostor") - @Override - RSObjectComposition getImpostor(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectDefinition.java new file mode 100644 index 0000000000..7bd9db4f4e --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectDefinition.java @@ -0,0 +1,35 @@ +package net.runelite.rs.api; + +import net.runelite.api.ObjectDefinition; +import net.runelite.mapping.Import; + +public interface RSObjectDefinition extends ObjectDefinition +{ + @Import("id") + @Override + int getId(); + + @Import("name") + @Override + String getName(); + + @Import("actions") + @Override + String[] getActions(); + + @Import("mapSceneId") + @Override + int getMapSceneId(); + + @Import("mapIconId") + @Override + int getMapIconId(); + + @Import("transforms") + @Override + int[] getImpostorIds(); + + @Import("transform") + @Override + RSObjectDefinition getImpostor(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPacketBuffer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPacketBuffer.java index 2a79d8983b..614734671d 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSPacketBuffer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSPacketBuffer.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.PacketBuffer; diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java index ec8db1f005..33b4c5e51a 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java @@ -29,21 +29,21 @@ import net.runelite.mapping.Import; public interface RSPlayer extends RSActor, Player { - @Import("name") - RSName getRsName(); + @Import("username") + RSUsername getRsName(); - @Import("playerId") + @Import("index") int getPlayerId(); - @Import("composition") + @Import("appearance") @Override - RSPlayerComposition getPlayerComposition(); + RSPlayerAppearance getPlayerAppearance(); @Import("combatLevel") @Override int getCombatLevel(); - @Import("totalLevel") + @Import("skillLevel") int getTotalLevel(); @Import("team") @@ -58,9 +58,9 @@ public interface RSPlayer extends RSActor, Player @Override boolean isFriend(); - @Import("overheadIcon") + @Import("headIconPrayer") int getRsOverheadIcon(); - @Import("skullIcon") + @Import("headIconPk") int getRsSkullIcon(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayerAppearance.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayerAppearance.java new file mode 100644 index 0000000000..3f084e3114 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayerAppearance.java @@ -0,0 +1,25 @@ +package net.runelite.rs.api; + +import net.runelite.api.PlayerAppearance; +import net.runelite.mapping.Import; + +public interface RSPlayerAppearance extends PlayerAppearance +{ + @Import("isFemale") + boolean isFemale(); + + @Import("bodyColors") + int[] getBodyPartColours(); + + @Import("equipment") + @Override + int[] getEquipmentIds(); + + @Import("npcTransformId") + @Override + void setTransformedNpcId(int id); + + @Import("setHash") + @Override + void setHash(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java deleted file mode 100644 index 15a3fb0e58..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.PlayerComposition; -import net.runelite.mapping.Import; - -public interface RSPlayerComposition extends PlayerComposition -{ - @Import("isFemale") - boolean isFemale(); - - @Import("bodyPartColours") - int[] getBodyPartColours(); - - @Import("equipmentIds") - @Override - int[] getEquipmentIds(); - - @Import("transformedNpcId") - @Override - void setTransformedNpcId(int id); - - @Import("setHash") - @Override - void setHash(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java b/runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java deleted file mode 100644 index eca6b3d5bb..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSPreferences.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2018, Lotto - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.Preferences; -import net.runelite.mapping.Import; - -public interface RSPreferences extends Preferences -{ - @Import("rememberedUsername") - @Override - String getRememberedUsername(); - - @Import("rememberedUsername") - @Override - void setRememberedUsername(String username); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSProjectile.java b/runescape-api/src/main/java/net/runelite/rs/api/RSProjectile.java index db90a83067..ae8ab12836 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSProjectile.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSProjectile.java @@ -1,42 +1,46 @@ /* - * Copyright (c) 2016-2017, Adam + * BSD 2-Clause License + * + * Copyright (c) 2019, ThatGamerBlue * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package net.runelite.rs.api; import net.runelite.api.Projectile; import net.runelite.mapping.Import; -public interface RSProjectile extends RSRenderable, Projectile +public interface RSProjectile extends RSEntity, Projectile { @Import("id") @Override int getId(); - @Import("interacting") + @Import("targetIndex") int getRsInteracting(); - @Import("height") + @Import("sourceZ") @Override int getHeight(); @@ -44,23 +48,23 @@ public interface RSProjectile extends RSRenderable, Projectile @Override int getEndHeight(); - @Import("x1") + @Import("sourceX") @Override int getX1(); - @Import("y1") + @Import("sourceY") @Override int getY1(); - @Import("floor") + @Import("plane") @Override int getFloor(); - @Import("startMovementCycle") + @Import("cycleStart") @Override int getStartMovementCycle(); - @Import("endCycle") + @Import("cycleEnd") @Override int getEndCycle(); @@ -84,19 +88,19 @@ public interface RSProjectile extends RSRenderable, Projectile @Override double getZ(); - @Import("scalar") + @Import("speed") @Override double getScalar(); - @Import("velocityX") + @Import("speedX") @Override double getVelocityX(); - @Import("velocityY") + @Import("speedY") @Override double getVelocityY(); - @Import("velocityZ") + @Import("speedZ") @Override double getVelocityZ(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java b/runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java new file mode 100644 index 0000000000..5ef9913681 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java @@ -0,0 +1,47 @@ +/* + * BSD 2-Clause License + * + * Copyright (c) 2019, ThatGamerBlue + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.rs.api; + +import net.runelite.api.MainBufferProvider; +import java.awt.Component; +import java.awt.Image; +import net.runelite.mapping.Import; + +public interface RSRasterProvider extends RSAbstractRasterProvider, MainBufferProvider +{ + @Import("image") + @Override + Image getImage(); + + @Import("image") + void setImage(Image image); + + @Import("component0") + Component getCanvas(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSReflectionCheck.java b/runescape-api/src/main/java/net/runelite/rs/api/RSReflectionCheck.java new file mode 100644 index 0000000000..616206cd71 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSReflectionCheck.java @@ -0,0 +1,17 @@ +package net.runelite.rs.api; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import net.runelite.mapping.Import; + +public interface RSReflectionCheck +{ + @Import("methods") + Method[] getMethods(); + + @Import("fields") + Field[] getFields(); + + @Import("arguments") + byte[][][] getArgs(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSRenderOverview.java b/runescape-api/src/main/java/net/runelite/rs/api/RSRenderOverview.java deleted file mode 100644 index ddc348a11b..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSRenderOverview.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.RenderOverview; -import net.runelite.api.WorldMapData; -import net.runelite.mapping.Import; - -public interface RSRenderOverview extends RenderOverview -{ - @Import("worldMapX") - int getWorldMapX(); - - @Import("worldMapY") - int getWorldMapY(); - - @Import("worldMapZoom") - float getWorldMapZoom(); - - @Import("worldMapTargetX") - int getWorldMapTargetX(); - - @Import("worldMapTargetY") - int getWorldMapTargetY(); - - @Import("worldMapDisplayWidth") - int getWorldMapDisplayWidth(); - - @Import("worldMapDisplayHeight") - int getWorldMapDisplayHeight(); - - @Import("worldMapDisplayX") - int getWorldMapDisplayX(); - - @Import("worldMapDisplayY") - int getWorldMapDisplayY(); - - @Import("setWorldMapPosition") - void setWorldMapPosition(int worldMapX, int worldMapY, boolean changedSurface); - - @Import("setWorldMapPositionTargetWorldPoint") - void setWorldMapPositionTarget(int worldPointX, int worldPointY); - - @Import("worldMapManager") - @Override - RSWorldMapManager getWorldMapManager(); - - @Import("initializeWorldMap") - @Override - void initializeWorldMap(WorldMapData var1); - - @Import("worldMapData") - @Override - RSWorldMapData getWorldMapData(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSRunException.java b/runescape-api/src/main/java/net/runelite/rs/api/RSRunException.java index de6f6e670b..872d1a9f90 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSRunException.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSRunException.java @@ -1,33 +1,9 @@ -/* - * Copyright (c) 2018, Lotto - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.mapping.Import; public interface RSRunException { - @Import("parent") + @Import("throwable") Throwable getParent(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSScene.java b/runescape-api/src/main/java/net/runelite/rs/api/RSScene.java index 3cfeed4fe5..facd9897e0 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSScene.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSScene.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.Scene; @@ -30,34 +6,34 @@ import net.runelite.mapping.Import; public interface RSScene extends Scene { - @Import("objects") - RSGameObject[] getObjects(); + //@Import("Scene_gameObjects") --- unused and causing trouble + //RSGameObject[] getObjects(); @Import("tiles") @Override RSTile[][][] getTiles(); - @Import("draw") + @Import("drawTile") void draw(Tile tile, boolean var2); @Import("tileHeights") int[][][] getTileHeights(); - @Import("drawTile") + @Import("drawTileMinimap") void drawTile(int[] pixels, int pixelOffset, int width, int z, int x, int y); - @Import("updateOccluders") + @Import("occlude") void updateOccluders(); - @Import("maxX") + @Import("xSize") int getMaxX(); - @Import("maxY") + @Import("planes") int getMaxY(); - @Import("maxZ") + @Import("ySize") int getMaxZ(); - @Import("minLevel") + @Import("Scene_minPlane") int getMinLevel(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSceneTileModel.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSceneTileModel.java deleted file mode 100644 index 35c3fa6e5c..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSSceneTileModel.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.SceneTileModel; -import net.runelite.mapping.Import; - -public interface RSSceneTileModel extends SceneTileModel -{ - @Import("underlay") - @Override - int getModelUnderlay(); - - @Import("overlay") - @Override - int getModelOverlay(); - - @Import("shape") - @Override - int getShape(); - - @Import("rotation") - @Override - int getRotation(); - - @Import("faceX") - @Override - int[] getFaceX(); - - @Import("faceY") - @Override - int[] getFaceY(); - - @Import("faceZ") - @Override - int[] getFaceZ(); - - @Import("vertexX") - @Override - int[] getVertexX(); - - @Import("vertexY") - @Override - int[] getVertexY(); - - @Import("vertexZ") - @Override - int[] getVertexZ(); - - @Import("triangleColorA") - @Override - int[] getTriangleColorA(); - - @Import("triangleColorB") - @Override - int[] getTriangleColorB(); - - @Import("triangleColorC") - @Override - int[] getTriangleColorC(); - - @Import("triangleTextureId") - @Override - int[] getTriangleTextureId(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSceneTilePaint.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSceneTilePaint.java deleted file mode 100644 index 99c6b9f763..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSSceneTilePaint.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.SceneTilePaint; -import net.runelite.mapping.Import; - -public interface RSSceneTilePaint extends SceneTilePaint -{ - @Import("rgb") - @Override - int getRBG(); - - @Import("swColor") - @Override - int getSwColor(); - - @Import("seColor") - @Override - int getSeColor(); - - @Import("nwColor") - @Override - int getNwColor(); - - @Import("neColor") - @Override - int getNeColor(); - - @Import("texture") - @Override - int getTexture(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSScript.java b/runescape-api/src/main/java/net/runelite/rs/api/RSScript.java index 5bf9a0d094..7a1c730f5a 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSScript.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSScript.java @@ -1,39 +1,15 @@ -/* - * Copyright (c) 2018 Abex - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.Script; import net.runelite.mapping.Import; -public interface RSScript extends Script, RSCacheableNode +public interface RSScript extends Script, RSDualNode { @Import("intOperands") @Override int[] getIntOperands(); - @Import("instructions") + @Import("opcodes") @Override int[] getInstructions(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java index a2f293b417..d2acea2db3 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018 Abex - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.ScriptEvent; @@ -30,18 +6,18 @@ import net.runelite.mapping.Import; public interface RSScriptEvent extends ScriptEvent { - @Import("params") + @Import("args0") Object[] getArguments(); - @Import("params") + @Import("args0") void setArguments(Object[] args); - @Import("source") + @Import("widget") Widget getSource(); - @Import("op") + @Import("opIndex") int getOp(); - @Import("opbase") + @Import("targetName") String getOpbase(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSequence.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSequence.java deleted file mode 100644 index 0bea230793..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSSequence.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSSequence -{ - @Import("stretches") - boolean getStretches(); - - @Import("maxLoops") - int getMaxLoops(); - - @Import("precedenceAnimating") - int getPrecedenceAnimating(); - - @Import("replyMode") - int getReplyMode(); - - @Import("interleaveLeave") - int[] getInterleaveLeave(); - - @Import("frameIDs") - int[] getFrameIDs(); - - @Import("frameLengths") - int[] getFrameLenths(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java new file mode 100644 index 0000000000..97c8d9a91a --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java @@ -0,0 +1,27 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSSequenceDefinition +{ +// @Import("stretches") +// boolean getStretches(); +// +// @Import("maxLoops") +// int getMaxLoops(); +// +// @Import("precedenceAnimating") --- All unused +// int getPrecedenceAnimating(); +// +// @Import("replyMode") +// int getReplyMode(); +// +// @Import("interleaveLeave") +// int[] getInterleaveLeave(); + + @Import("frameIds") + int[] getFrameIDs(); + + @Import("frameLengths") + int[] getFrameLenths(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSFrameMap.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSkeleton.java similarity index 94% rename from runescape-api/src/main/java/net/runelite/rs/api/RSFrameMap.java rename to runescape-api/src/main/java/net/runelite/rs/api/RSSkeleton.java index 215f3be17b..9ed93c5c43 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSFrameMap.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSSkeleton.java @@ -26,14 +26,14 @@ package net.runelite.rs.api; import net.runelite.mapping.Import; -public interface RSFrameMap extends RSNode +public interface RSSkeleton extends RSNode { @Import("count") int getCount(); - @Import("types") + @Import("transformTypes") int[] getTypes(); - @Import("list") + @Import("labels") int[][] getList(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSoundEffect.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSoundEffect.java index 4ced2f19d5..027828e79a 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSSoundEffect.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSSoundEffect.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, SomeoneWithAnInternetConnection - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; public interface RSSoundEffect diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSprite.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSprite.java index 6f6cd9b67c..272bdd09a8 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSSprite.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSSprite.java @@ -1,29 +1,38 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; -public interface RSSprite +import net.runelite.api.Sprite; +import net.runelite.mapping.Import; + +public interface RSSprite extends Sprite { + @Import("drawAt") + @Override + void drawAt(int x, int y); + + @Import("subHeight") + @Override + int getHeight(); + + @Import("subWidth") + @Override + int getWidth(); + + @Import("pixels") + @Override + int[] getPixels(); + + @Import("setRaster") + void setRaster(); + + @Import("width") + void setMaxWidth(int maxWidth); + + @Import("height") + void setMaxHeight(int maxHeight); + + @Import("xOffset") + void setOffsetX(int offsetX); + + @Import("yOffset") + void setOffsetY(int offsetY); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java b/runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java deleted file mode 100644 index f69f90ed35..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.SpritePixels; -import net.runelite.mapping.Import; - -public interface RSSpritePixels extends SpritePixels -{ - @Import("drawAt") - @Override - void drawAt(int x, int y); - - @Import("height") - @Override - int getHeight(); - - @Import("width") - @Override - int getWidth(); - - @Import("pixels") - @Override - int[] getPixels(); - - @Import("setRaster") - void setRaster(); - - @Import("maxWidth") - void setMaxWidth(int maxWidth); - - @Import("maxHeight") - void setMaxHeight(int maxHeight); - - @Import("offsetX") - void setOffsetX(int offsetX); - - @Import("offsetY") - void setOffsetY(int offsetY); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSTexture.java b/runescape-api/src/main/java/net/runelite/rs/api/RSTexture.java index 60cbe94b03..c3171219dd 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSTexture.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSTexture.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.Texture; @@ -41,7 +17,7 @@ public interface RSTexture extends Texture, RSNode @Override int getAnimationSpeed(); - @Import("loaded") + @Import("isLoaded") @Override boolean isLoaded(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSTextureProvider.java b/runescape-api/src/main/java/net/runelite/rs/api/RSTextureProvider.java index 2651367376..f39ac5085d 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSTextureProvider.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSTextureProvider.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Tomas Slusny - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.TextureProvider; @@ -29,7 +5,7 @@ import net.runelite.mapping.Import; public interface RSTextureProvider extends TextureProvider { - @Import("brightness") + @Import("brightness0") @Override double getBrightness(); @@ -37,10 +13,10 @@ public interface RSTextureProvider extends TextureProvider @Override void setBrightness(double brightness); - @Import("maxSize") + @Import("capacity") void setMaxSize(int maxSize); - @Import("size") + @Import("remaining") void setSize(int size); @Import("textures") diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSTile.java b/runescape-api/src/main/java/net/runelite/rs/api/RSTile.java index 30a81196a5..0e803b8327 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSTile.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSTile.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.DecorativeObject; @@ -36,23 +12,23 @@ import net.runelite.mapping.Import; public interface RSTile extends Tile { - @Import("objects") + @Import("gameObjects") @Override GameObject[] getGameObjects(); - @Import("itemLayer") + @Import("groundItemPile") @Override ItemLayer getItemLayer(); - @Import("decorativeObject") + @Import("wallDecoration") @Override DecorativeObject getDecorativeObject(); - @Import("groundObject") + @Import("floorDecoration") @Override GroundObject getGroundObject(); - @Import("wallObject") + @Import("boundaryObject") @Override WallObject getWallObject(); @@ -60,7 +36,7 @@ public interface RSTile extends Tile @Override SceneTilePaint getSceneTilePaint(); - @Import("overlay") + @Import("model") @Override SceneTileModel getSceneTileModel(); @@ -74,35 +50,35 @@ public interface RSTile extends Tile @Override int getPlane(); - @Import("renderLevel") + @Import("originalPlane") @Override int getRenderLevel(); - @Import("physicalLevel") + @Import("minPlane") int getPhysicalLevel(); - @Import("flags") - int getFlags(); + //@Import("flags") + //int getFlags(); ---- unused, think it's gameobjectedgemask - @Import("bridge") + @Import("linkedBelowTile") @Override RSTile getBridge(); - @Import("draw") + @Import("drawPrimary") boolean isDraw(); - @Import("draw") + @Import("drawPrimary") void setDraw(boolean draw); - @Import("visible") + @Import("drawSecondary") boolean isVisible(); - @Import("visible") + @Import("drawSecondary") void setVisible(boolean visible); - @Import("drawEntities") + @Import("drawGameObjects") void setDrawEntities(boolean drawEntities); - @Import("wallCullDirection") + @Import("drawGameObjectEdges") void setWallCullDirection(int wallCullDirection); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSTileModel.java b/runescape-api/src/main/java/net/runelite/rs/api/RSTileModel.java new file mode 100644 index 0000000000..616380d9dc --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSTileModel.java @@ -0,0 +1,63 @@ +package net.runelite.rs.api; + +import net.runelite.api.SceneTileModel; +import net.runelite.mapping.Import; + +public interface RSTileModel extends SceneTileModel +{ + @Import("underlayRgb") + @Override + int getModelUnderlay(); + + @Import("overlayRgb") + @Override + int getModelOverlay(); + + @Import("shape") + @Override + int getShape(); + + @Import("rotation") + @Override + int getRotation(); + + @Import("faceX") + @Override + int[] getFaceX(); + + @Import("faceY") + @Override + int[] getFaceY(); + + @Import("faceZ") + @Override + int[] getFaceZ(); + + @Import("vertexX") + @Override + int[] getVertexX(); + + @Import("vertexY") + @Override + int[] getVertexY(); + + @Import("vertexZ") + @Override + int[] getVertexZ(); + + @Import("triangleColorA") + @Override + int[] getTriangleColorA(); + + @Import("triangleColorB") + @Override + int[] getTriangleColorB(); + + @Import("triangleColorC") + @Override + int[] getTriangleColorC(); + + @Import("triangleTextureId") + @Override + int[] getTriangleTextureId(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSTilePaint.java b/runescape-api/src/main/java/net/runelite/rs/api/RSTilePaint.java new file mode 100644 index 0000000000..46588a2561 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSTilePaint.java @@ -0,0 +1,31 @@ +package net.runelite.rs.api; + +import net.runelite.api.SceneTilePaint; +import net.runelite.mapping.Import; + +public interface RSTilePaint extends SceneTilePaint +{ + @Import("rgb") + @Override + int getRBG(); + + @Import("swColor") + @Override + int getSwColor(); + + @Import("seColor") + @Override + int getSeColor(); + + @Import("nwColor") + @Override + int getNwColor(); + + @Import("neColor") + @Override + int getNeColor(); + + @Import("texture") + @Override + int getTexture(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSUser.java b/runescape-api/src/main/java/net/runelite/rs/api/RSUser.java new file mode 100644 index 0000000000..798e7a8aa8 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSUser.java @@ -0,0 +1,13 @@ +package net.runelite.rs.api; + +import net.runelite.api.Nameable; +import net.runelite.mapping.Import; + +public interface RSUser extends Nameable, Comparable +{ + @Import("username") + RSUsername getRsName(); + + @Import("previousUsername") + RSUsername getRsPrevName(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSUserList.java b/runescape-api/src/main/java/net/runelite/rs/api/RSUserList.java new file mode 100644 index 0000000000..b530f68019 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSUserList.java @@ -0,0 +1,31 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSUserList +{ + @Import("size0") + int getCount(); + + @Import("array") + T[] getNameables(); + + @Import("contains") + boolean isMember(RSUsername var1); + + @Import("getByUsername") + T findByName(RSUsername name); + + /** + * Method called by the container when an element is added + * @param name + * @param prevName + */ + void rl$add(RSUsername name, RSUsername prevName); + + /** + * Method called by the container when an element is removed + * @param nameable + */ + void rl$remove(RSUser nameable); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSName.java b/runescape-api/src/main/java/net/runelite/rs/api/RSUsername.java similarity index 95% rename from runescape-api/src/main/java/net/runelite/rs/api/RSName.java rename to runescape-api/src/main/java/net/runelite/rs/api/RSUsername.java index 4b2c83abfe..52d1a14802 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSName.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSUsername.java @@ -26,8 +26,8 @@ package net.runelite.rs.api; import net.runelite.mapping.Import; -public interface RSName extends Comparable +public interface RSUsername extends Comparable { - @Import("name") + @Import("getName") String getName(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSVarbit.java b/runescape-api/src/main/java/net/runelite/rs/api/RSVarbit.java deleted file mode 100644 index 94990d561e..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSVarbit.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.mapping.Import; - -public interface RSVarbit extends RSCacheableNode -{ - @Import("configId") - int getIndex(); - - @Import("leastSignificantBit") - int getLeastSignificantBit(); - - @Import("mostSignificantBit") - int getMostSignificantBit(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSVarbitDefinition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSVarbitDefinition.java new file mode 100644 index 0000000000..2624226dd5 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSVarbitDefinition.java @@ -0,0 +1,15 @@ +package net.runelite.rs.api; + +import net.runelite.mapping.Import; + +public interface RSVarbitDefinition extends RSDualNode +{ + @Import("varp") + int getIndex(); + + @Import("lowBit") + int getLeastSignificantBit(); + + @Import("highBit") + int getMostSignificantBit(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSVarcs.java b/runescape-api/src/main/java/net/runelite/rs/api/RSVarcs.java index 527377ae7b..8fbd54e337 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSVarcs.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSVarcs.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Tomas Slusny - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import java.util.Map; @@ -29,6 +5,6 @@ import net.runelite.mapping.Import; public interface RSVarcs { - @Import("varcMap") + @Import("map") Map getVarcMap(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java new file mode 100644 index 0000000000..32509b1183 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWallDecoration.java @@ -0,0 +1,36 @@ +package net.runelite.rs.api; + +import net.runelite.api.DecorativeObject; +import net.runelite.mapping.Import; + +public interface RSWallDecoration extends DecorativeObject +{ + @Import("tag") + @Override + long getHash(); + + @Import("x") + int getX(); + + @Import("y") + int getY(); + + @Import("xOffset") + int getXOffset(); + + @Import("yOffset") + int getYOffset(); + + @Import("orientation") + int getOrientation(); + + @Import("entity1") + @Override + RSEntity getRenderable(); + + @Import("entity2") + @Override + RSEntity getRenderable2(); + + void setPlane(int plane); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java deleted file mode 100644 index 1406f49e5d..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.WallObject; -import net.runelite.mapping.Import; - -public interface RSWallObject extends WallObject -{ - @Import("hash") - @Override - long getHash(); - - @Import("x") - @Override - int getX(); - - @Import("y") - @Override - int getY(); - - @Import("orientationA") - @Override - int getOrientationA(); - - @Import("orientationB") - @Override - int getOrientationB(); - - @Import("renderable1") - @Override - RSRenderable getRenderable1(); - - @Import("renderable2") - @Override - RSRenderable getRenderable2(); - - @Import("config") - @Override - int getConfig(); - - void setPlane(int plane); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java index 0dd5b24d4f..527e50b0e3 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java @@ -1,27 +1,31 @@ /* - * Copyright (c) 2016-2017, Adam + * BSD 2-Clause License + * + * Copyright (c) 2019, ThatGamerBlue * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package net.runelite.rs.api; import net.runelite.api.widgets.Widget; @@ -62,8 +66,8 @@ public interface RSWidget extends Widget @Import("clickMask") void setClickMask(int mask); - @Import("boundsIndex") - int getBoundsIndex(); + //@Import("boundsIndex") -- unused for now + //int getBoundsIndex(); @Import("modelId") @Override @@ -85,45 +89,45 @@ public interface RSWidget extends Widget @Import("text") String getRSText(); - @Import("name") + @Import("dataText") String getRSName(); - @Import("name") + @Import("dataText") void setRSName(String name); @Import("text") @Override void setText(String text); - @Import("textColor") + @Import("color") @Override int getTextColor(); - @Import("textColor") + @Import("color") @Override void setTextColor(int textColor); - @Import("opacity") + @Import("transparency") @Override int getOpacity(); - @Import("opacity") + @Import("transparency") @Override void setOpacity(int opacity); - @Import("relativeX") + @Import("x") @Override int getRelativeX(); - @Import("relativeX") + @Import("x") @Override void setRelativeX(int x); - @Import("relativeY") + @Import("y") @Override int getRelativeY(); - @Import("relativeY") + @Import("y") @Override void setRelativeY(int y); @@ -150,20 +154,20 @@ public interface RSWidget extends Widget @Import("isHidden") void setHidden(boolean hidden); - @Import("index") + @Import("childIndex") int getIndex(); - @Import("index") + @Import("childIndex") void setIndex(int index); - @Import("rotationX") - int getRotationX(); + //@Import("rotationX") + //int getRotationX(); - @Import("rotationY") - int getRotationY(); + //@Import("rotationY") --- All unused + //int getRotationY(); - @Import("rotationZ") - int getRotationZ(); + //@Import("rotationZ") + //int getRotationZ(); @Import("contentType") @Override @@ -221,11 +225,11 @@ public interface RSWidget extends Widget @Override void setSpriteId(int spriteId); - @Import("borderType") + @Import("outline") @Override int getBorderType(); - @Import("borderType") + @Import("outline") @Override void setBorderType(int type); @@ -245,47 +249,47 @@ public interface RSWidget extends Widget @Override void setItemQuantity(int quantity); - @Import("originalX") + @Import("rawX") @Override int getOriginalX(); - @Import("originalX") + @Import("rawX") @Override void setOriginalX(int originalX); - @Import("originalY") + @Import("rawY") @Override int getOriginalY(); - @Import("originalY") + @Import("rawY") @Override void setOriginalY(int originalY); - @Import("originalHeight") + @Import("rawHeight") @Override int getOriginalHeight(); - @Import("originalHeight") + @Import("rawHeight") @Override void setOriginalHeight(int originalHeight); - @Import("originalWidth") + @Import("rawWidth") @Override int getOriginalWidth(); - @Import("originalWidth") + @Import("rawWidth") @Override void setOriginalWidth(int originalWidth); - @Import("xPitch") + @Import("paddingX") int getXPitch(); - @Import("yPitch") + @Import("paddingY") int getYPitch(); void broadcastHidden(boolean hidden); - @Import("onOpListener") + @Import("onOp") @Override void setOnOpListener(Object... args); @@ -312,7 +316,7 @@ public interface RSWidget extends Widget @Override Object[] getOnKeyListener(); - @Import("onLoadListener") + @Import("onLoad") @Override Object[] getOnLoadListener(); @@ -324,27 +328,27 @@ public interface RSWidget extends Widget @Override void setOnKeyListener(Object... args); - @Import("onMouseOverListener") + @Import("onMouseOver") @Override void setOnMouseOverListener(Object... args); - @Import("onMouseRepeatListener") + @Import("onMouseRepeat") @Override void setOnMouseRepeatListener(Object... args); - @Import("onMouseLeaveListener") + @Import("onMouseLeave") @Override void setOnMouseLeaveListener(Object... args); - @Import("onTimerListener") + @Import("onTimer") @Override void setOnTimerListener(Object... args); - @Import("onTargetEnterListener") + @Import("onTargetEnter") @Override void setOnTargetEnterListener(Object... args); - @Import("onTargetLeaveListener") + @Import("onTargetLeave") @Override void setOnTargetLeaveListener(Object... args); @@ -364,19 +368,19 @@ public interface RSWidget extends Widget @Override void setTextShadowed(boolean shadowed); - @Import("dragDeadZone") + @Import("dragZoneSize") @Override int getDragDeadZone(); - @Import("dragDeadZone") + @Import("dragZoneSize") @Override void setDragDeadZone(int deadZone); - @Import("dragDeadTime") + @Import("dragThreshold") @Override int getDragDeadTime(); - @Import("dragDeadTime") + @Import("dragThreshold") @Override void setDragDeadTime(int deadTime); @@ -388,71 +392,71 @@ public interface RSWidget extends Widget @Override void setItemQuantityMode(int itemQuantityMode); - @Import("xPositionMode") + @Import("xAlignment") @Override int getXPositionMode(); - @Import("xPositionMode") + @Import("xAlignment") @Override void setXPositionMode(int xpm); - @Import("yPositionMode") + @Import("yAlignment") @Override int getYPositionMode(); - @Import("yPositionMode") + @Import("yAlignment") @Override void setYPositionMode(int ypm); - @Import("xTextAlignment") + @Import("textXAlignment") @Override int getXTextAlignment(); - @Import("xTextAlignment") + @Import("textXAlignment") @Override void setXTextAlignment(int xta); - @Import("yTextAlignment") + @Import("textYAlignment") @Override int getYTextAlignment(); - @Import("yTextAlignment") + @Import("textYAlignment") @Override void setYTextAlignment(int yta); - @Import("widthMode") + @Import("widthAlignment") @Override int getWidthMode(); - @Import("widthMode") + @Import("widthAlignment") @Override void setWidthMode(int widthMode); - - @Import("heightMode") + + @Import("heightAlignment") @Override int getHeightMode(); - @Import("heightMode") + @Import("heightAlignment") @Override void setHeightMode(int heightMode); @Import("getFont") @Override - RSFontTypeFace getFont(); + RSAbstractFont getFont(); - @Import("filled") + @Import("fill") @Override boolean isFilled(); - @Import("filled") + @Import("fill") @Override void setFilled(boolean filled); - @Import("targetVerb") + @Import("spellActionName") @Override String getTargetVerb(); - @Import("targetVerb") + @Import("spellActionName") @Override void setTargetVerb(String targetVerb); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWidgetGroupParent.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWidgetGroupParent.java new file mode 100644 index 0000000000..34c867e031 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWidgetGroupParent.java @@ -0,0 +1,11 @@ +package net.runelite.rs.api; + +import net.runelite.api.WidgetNode; +import net.runelite.mapping.Import; + +public interface RSWidgetGroupParent extends RSNode, WidgetNode +{ + @Import("group") + @Override + int getId(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWidgetNode.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWidgetNode.java deleted file mode 100644 index 9c08a5a977..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWidgetNode.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.WidgetNode; -import net.runelite.mapping.Import; - -public interface RSWidgetNode extends RSNode, WidgetNode -{ - @Import("id") - @Override - int getId(); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorld.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorld.java index 2a4a8c4925..ecd6aa2278 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWorld.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWorld.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.World; @@ -29,17 +5,17 @@ import net.runelite.mapping.Import; public interface RSWorld extends World { - @Import("mask") + @Import("properties") int getMask(); - @Import("mask") + @Import("properties") void setMask(int mask); - @Import("playerCount") + @Import("population") @Override int getPlayerCount(); - @Import("playerCount") + @Import("population") @Override void setPlayerCount(int playerCount); @@ -75,11 +51,11 @@ public interface RSWorld extends World @Override void setActivity(String activity); - @Import("address") + @Import("host") @Override String getAddress(); - @Import("address") + @Import("host") @Override void setAddress(String address); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java new file mode 100644 index 0000000000..ae6b8a4365 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java @@ -0,0 +1,53 @@ +package net.runelite.rs.api; + +import net.runelite.api.RenderOverview; +import net.runelite.api.WorldMapData; +import net.runelite.mapping.Import; + +public interface RSWorldMap extends RenderOverview +{ + @Import("worldMapX") + int getWorldMapX(); + + @Import("worldMapY") + int getWorldMapY(); + + @Import("zoomTarget") + float getWorldMapZoom(); + + @Import("worldMapTargetX") + int getWorldMapTargetX(); + + @Import("worldMapTargetY") + int getWorldMapTargetY(); + + //@Import("worldMapDisplayWidth") + //int getWorldMapDisplayWidth(); +//Both unused + //@Import("worldMapDisplayHeight") + //int getWorldMapDisplayHeight(); + + //@Import("worldMapDisplayX") + //int getWorldMapDisplayX(); + + //@Import("worldMapDisplayY") + //int getWorldMapDisplayY(); + + @Import("setWorldMapPosition") + void setWorldMapPosition(int worldMapX, int worldMapY, boolean changedSurface); + + @Import("setWorldMapPositionTarget") + void setWorldMapPositionTarget(int worldPointX, int worldPointY); + + @Import("worldMapManager") + @Override + RSWorldMapManager getWorldMapManager(); + + @Import("initializeWorldMap") + @Override + void initializeWorldMap(WorldMapData var1); + + @Import("mainMapArea") + @Override + RSWorldMapArea getWorldMapData(); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapArea.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapArea.java new file mode 100644 index 0000000000..75f5079120 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapArea.java @@ -0,0 +1,10 @@ +package net.runelite.rs.api; + +import net.runelite.api.WorldMapData; +import net.runelite.mapping.Import; + +public interface RSWorldMapArea extends WorldMapData +{ + @Import("containsPosition") + boolean surfaceContainsPosition(int x, int y); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java deleted file mode 100644 index 5638d6813c..0000000000 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.rs.api; - -import net.runelite.api.WorldMapData; -import net.runelite.mapping.Import; - -public interface RSWorldMapData extends WorldMapData -{ - @Import("surfaceContainsPosition") - boolean surfaceContainsPosition(int x, int y); -} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapElement.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapElement.java new file mode 100644 index 0000000000..f627dd8a63 --- /dev/null +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapElement.java @@ -0,0 +1,11 @@ +package net.runelite.rs.api; + +import net.runelite.api.MapElementConfig; +import net.runelite.mapping.Import; + +public interface RSWorldMapElement extends RSDualNode, MapElementConfig +{ + @Import("getSprite") + @Override + RSSprite getMapIcon(boolean var1); +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapManager.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapManager.java index 60377bc659..9a534ce187 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapManager.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapManager.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.rs.api; import net.runelite.api.WorldMapManager; @@ -29,14 +5,14 @@ import net.runelite.mapping.Import; public interface RSWorldMapManager extends WorldMapManager { - @Import("loaded") + @Import("isLoaded0") @Override boolean isLoaded(); - @Import("mapSurfaceBaseOffsetX") + @Import("surfaceOffsetX") int getSurfaceOffsetX(); - @Import("mapSurfaceBaseOffsetY") + @Import("surfaceOffsetY") int getSurfaceOffsetY(); @Import("getPixelsPerTile") From 31a0130453b51c82c99af633da9eba03abf6418a Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 8 Jun 2019 06:45:50 +0200 Subject: [PATCH 02/19] RLApi --- .../src/main/java/net/runelite/api/Actor.java | 20 ++-- .../main/java/net/runelite/api/Client.java | 99 +++++-------------- .../java/net/runelite/api/CollisionData.java | 2 +- .../net/runelite/api/DecorativeObject.java | 2 +- ...umComposition.java => EnumDefinition.java} | 2 +- .../runelite/api/EquipmentInventorySlot.java | 2 +- .../java/net/runelite/api/GameObject.java | 2 +- .../api/{GameEngine.java => GameShell.java} | 5 +- .../main/java/net/runelite/api/GameState.java | 4 - .../net/runelite/api/GrandExchangeOffer.java | 24 ----- .../runelite/api/GrandExchangeOfferState.java | 25 ----- .../main/java/net/runelite/api/GraphicID.java | 1 - .../main/java/net/runelite/api/HashTable.java | 24 ----- .../main/java/net/runelite/api/HealthBar.java | 4 +- .../net/runelite/api/HealthBarOverride.java | 8 +- .../java/net/runelite/api/IndexDataBase.java | 24 ----- ...emComposition.java => ItemDefinition.java} | 26 +---- .../main/java/net/runelite/api/ItemID.java | 61 ------------ .../net/runelite/api/MainBufferProvider.java | 2 +- .../net/runelite/api/MapElementConfig.java | 2 +- .../src/main/java/net/runelite/api/NPC.java | 6 +- ...NPCComposition.java => NPCDefinition.java} | 7 +- .../java/net/runelite/api/NullItemID.java | 34 ++++++- ...Composition.java => ObjectDefinition.java} | 4 +- .../java/net/runelite/api/Perspective.java | 8 +- .../main/java/net/runelite/api/Player.java | 7 +- ...Composition.java => PlayerAppearance.java} | 5 +- .../java/net/runelite/api/ScriptEvent.java | 4 +- .../src/main/java/net/runelite/api/Skill.java | 25 ----- .../api/{SpritePixels.java => Sprite.java} | 6 +- .../src/main/java/net/runelite/api/Tile.java | 2 - .../main/java/net/runelite/api/VarPlayer.java | 2 +- .../java/net/runelite/api/WallObject.java | 25 ++--- .../java/net/runelite/api/WidgetNode.java | 26 +---- .../src/main/java/net/runelite/api/World.java | 25 ----- .../main/java/net/runelite/api/WorldType.java | 24 ----- .../java/net/runelite/api/coords/Angle.java | 8 +- .../net/runelite/api/coords/WorldArea.java | 4 +- .../net/runelite/api/coords/WorldPoint.java | 2 +- .../runelite/api/events/AnimationChanged.java | 26 +---- .../api/events/BoostedLevelChanged.java | 2 +- .../runelite/api/events/GraphicChanged.java | 52 ---------- .../api/events/InteractingChanged.java | 24 ----- .../api/events/ItemContainerChanged.java | 2 +- .../api/events/MenuOptionClicked.java | 2 +- .../runelite/api/events/NpcActionChanged.java | 6 +- .../api/events/OverheadTextChanged.java | 27 ----- ...mposition.java => PostItemDefinition.java} | 8 +- .../api/events/SpotAnimationChanged.java | 28 ++++++ .../net/runelite/api/events/WidgetLoaded.java | 2 +- .../api/events/WidgetMenuOptionClicked.java | 2 +- .../runelite/api/events/WidgetPositioned.java | 2 +- .../net/runelite/api/hooks/Callbacks.java | 2 +- .../java/net/runelite/api/kit/KitType.java | 10 +- .../net/runelite/api/vars/AccountType.java | 26 +---- .../java/net/runelite/api/widgets/Widget.java | 15 +-- .../runelite/api/widgets/WidgetConfig.java | 3 +- .../net/runelite/api/widgets/WidgetInfo.java | 2 +- .../net/runelite/api/widgets/WidgetItem.java | 2 +- 59 files changed, 182 insertions(+), 624 deletions(-) rename runelite-api/src/main/java/net/runelite/api/{EnumComposition.java => EnumDefinition.java} (97%) rename runelite-api/src/main/java/net/runelite/api/{GameEngine.java => GameShell.java} (94%) rename runelite-api/src/main/java/net/runelite/api/{ItemComposition.java => ItemDefinition.java} (64%) rename runelite-api/src/main/java/net/runelite/api/{NPCComposition.java => NPCDefinition.java} (95%) rename runelite-api/src/main/java/net/runelite/api/{ObjectComposition.java => ObjectDefinition.java} (97%) rename runelite-api/src/main/java/net/runelite/api/{PlayerComposition.java => PlayerAppearance.java} (94%) rename runelite-api/src/main/java/net/runelite/api/{SpritePixels.java => Sprite.java} (93%) delete mode 100644 runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java rename runelite-api/src/main/java/net/runelite/api/events/{PostItemComposition.java => PostItemDefinition.java} (89%) create mode 100644 runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java diff --git a/runelite-api/src/main/java/net/runelite/api/Actor.java b/runelite-api/src/main/java/net/runelite/api/Actor.java index c4c39b1701..8c7dec9594 100644 --- a/runelite-api/src/main/java/net/runelite/api/Actor.java +++ b/runelite-api/src/main/java/net/runelite/api/Actor.java @@ -28,7 +28,6 @@ import java.awt.Graphics2D; import java.awt.Polygon; import java.awt.image.BufferedImage; import javax.annotation.Nullable; -import net.runelite.api.annotations.VisibleForDevtools; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldArea; import net.runelite.api.coords.WorldPoint; @@ -38,7 +37,6 @@ import net.runelite.api.coords.WorldPoint; */ public interface Actor extends Renderable { - /** * Gets the combat level of the actor. * @@ -101,17 +99,15 @@ public interface Actor extends Renderable */ LocalPoint getLocalLocation(); - @VisibleForDevtools void setIdlePoseAnimation(int animation); - @VisibleForDevtools void setPoseAnimation(int animation); /** * Gets the orientation of the actor. * * @return the orientation - * @see net.runelite.api.coords.Angle + * @see api.coords.Angle */ int getOrientation(); @@ -129,7 +125,6 @@ public interface Actor extends Renderable * @param animation the animation ID * @see AnimationID */ - @VisibleForDevtools void setAnimation(int animation); /** @@ -137,7 +132,6 @@ public interface Actor extends Renderable * * @param actionFrame the animation frame */ - @VisibleForDevtools void setActionFrame(int actionFrame); /** @@ -146,13 +140,11 @@ public interface Actor extends Renderable * @return the graphic of the actor * @see GraphicID */ - int getGraphic(); + int getSpotAnimation(); - @VisibleForDevtools - void setGraphic(int graphic); + void setSpotAnimation(int graphic); - @VisibleForDevtools - void setSpotAnimFrame(int spotAnimFrame); + void setSpotAnimationFrame(int spotAnimFrame); /** * Gets the canvas area of the current tile the actor is standing on. @@ -192,7 +184,7 @@ public interface Actor extends Renderable * @param zOffset the z-axis offset * @return the sprite drawing location */ - Point getCanvasSpriteLocation(SpritePixels sprite, int zOffset); + Point getCanvasSpriteLocation(Sprite sprite, int zOffset); /** * Gets a point on the canvas of where this actors mini-map indicator @@ -216,7 +208,7 @@ public interface Actor extends Renderable * Gets the convex hull of the actors model. * * @return the convex hull - * @see net.runelite.api.model.Jarvis + * @see api.model.Jarvis */ Polygon getConvexHull(); diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index f4fd96d338..2503ddd1a3 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -30,7 +30,6 @@ import java.util.EnumSet; import java.util.List; import java.util.Map; import javax.annotation.Nullable; -import net.runelite.api.annotations.VisibleForDevtools; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.api.hooks.Callbacks; @@ -43,7 +42,7 @@ import org.slf4j.Logger; /** * Represents the RuneScape client. */ -public interface Client extends GameEngine +public interface Client extends GameShell { /** * The client invokes these callbacks to communicate to @@ -60,8 +59,6 @@ public interface Client extends GameEngine */ Logger getLogger(); - String getBuildID(); - /** * Gets a list of all valid players from the player cache. * @@ -151,13 +148,6 @@ public interface Client extends GameEngine */ void setPassword(String password); - /** - * Sets the 6 digit pin used for authenticator on login screen. - * - * @param otp one time password - */ - void setOtp(String otp); - /** * Gets currently selected login field. 0 is username, and 1 is password. * @@ -165,13 +155,6 @@ public interface Client extends GameEngine */ int getCurrentLoginField(); - /** - * Gets index of current login state. 2 is username/password form, 4 is authenticator form - * - * @return current login state index - */ - int getLoginIndex(); - /** * Gets the account type of the logged in player. * @@ -346,7 +329,7 @@ public interface Client extends GameEngine * @return the corresponding item composition * @see ItemID */ - ItemComposition getItemDefinition(int id); + ItemDefinition getItemDefinition(int id); /** * Creates an item icon sprite with passed variables. @@ -360,7 +343,7 @@ public interface Client extends GameEngine * @param scale the scale of the sprite * @return the created sprite */ - SpritePixels createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale); + Sprite createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale); /** * Loads and creates the sprite images of the passed archive and file IDs. @@ -370,7 +353,7 @@ public interface Client extends GameEngine * @param fileId the sprites file ID * @return the sprite image of the file */ - SpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId); + Sprite[] getSprites(IndexDataBase source, int archiveId, int fileId); /** * Gets the sprite index. @@ -450,7 +433,7 @@ public interface Client extends GameEngine /** * Gets the widget that is being dragged on. *

- * The widget being dragged has the {@link net.runelite.api.widgets.WidgetConfig#DRAG_ON} + * The widget being dragged has the {@link api.widgets.WidgetConfig#DRAG_ON} * flag set, and is the widget currently under the dragged widget. * * @return the dragged on widget, null if not dragging any widget @@ -557,7 +540,7 @@ public interface Client extends GameEngine * @return world list */ World[] getWorldList(); - + /** * Gets an array of currently open right-click menu entries that can be * clicked and activated. @@ -569,7 +552,7 @@ public interface Client extends GameEngine /** * Sets the array of open menu entries. *

- * This method should typically be used in the context of the {@link net.runelite.api.events.MenuOpened} + * This method should typically be used in the context of the {@link api.events.MenuOpened} * event, since setting the menu entries will be overwritten the next frame * * @param entries new array of open menu entries @@ -652,13 +635,11 @@ public interface Client extends GameEngine * * @return local player variables */ - @VisibleForDevtools int[] getVarps(); /** * Gets an array of all client variables. */ - @VisibleForDevtools Map getVarcMap(); /** @@ -709,7 +690,6 @@ public interface Client extends GameEngine * @param varbit the variable * @param value the new value */ - @VisibleForDevtools void setSetting(Varbits varbit, int value); /** @@ -720,7 +700,6 @@ public interface Client extends GameEngine * @return the value * @see Varbits#id */ - @VisibleForDevtools int getVarbitValue(int[] varps, int varbitId); /** @@ -731,7 +710,6 @@ public interface Client extends GameEngine * @return the value * @see VarPlayer#id */ - @VisibleForDevtools int getVarpValue(int[] varps, int varpId); /** @@ -742,7 +720,6 @@ public interface Client extends GameEngine * @param value the value * @see VarPlayer#id */ - @VisibleForDevtools void setVarpValue(int[] varps, int varpId, int value); /** @@ -753,7 +730,6 @@ public interface Client extends GameEngine * @param value the value * @see Varbits#id */ - @VisibleForDevtools void setVarbitValue(int[] varps, int varbit, int value); /** @@ -851,7 +827,7 @@ public interface Client extends GameEngine * @return the corresponding object composition * @see ObjectID */ - ObjectComposition getObjectDefinition(int objectId); + ObjectDefinition getObjectDefinition(int objectId); /** * Gets the NPC composition corresponding to an NPCs ID. @@ -860,7 +836,7 @@ public interface Client extends GameEngine * @return the corresponding NPC composition * @see NpcID */ - NPCComposition getNpcDefinition(int npcId); + NPCDefinition getNpcDefinition(int npcId); /** * Gets an array of all world areas @@ -881,7 +857,7 @@ public interface Client extends GameEngine * * @return all mini-map dots */ - SpritePixels[] getMapDots(); + Sprite[] getMapDots(); /** * Gets the local clients game cycle. @@ -897,7 +873,7 @@ public interface Client extends GameEngine * * @return the map icons */ - SpritePixels[] getMapIcons(); + Sprite[] getMapIcons(); /** * Gets an array of mod icon sprites. @@ -929,7 +905,7 @@ public interface Client extends GameEngine * @param height the height * @return the sprite image */ - SpritePixels createSpritePixels(int[] pixels, int width, int height); + Sprite createSprite(int[] pixels, int width, int height); /** * Gets the location of the local player. @@ -944,7 +920,7 @@ public interface Client extends GameEngine * * @return all projectiles */ - List getProjectiles(); + java.util.List getProjectiles(); /** * Gets a list of all graphics objects currently drawn. @@ -1181,7 +1157,7 @@ public interface Client extends GameEngine * factors towards {@code zero} when stretching. * * @param state new integer scaling state - */ + */ void setStretchedIntegerScaling(boolean state); /** @@ -1243,7 +1219,7 @@ public interface Client extends GameEngine * @param z the plane * @return the map sprite */ - SpritePixels drawInstanceMap(int z); + Sprite drawInstanceMap(int z); /** * Executes a client script from the cache @@ -1366,13 +1342,6 @@ public interface Client extends GameEngine */ boolean isInInstancedRegion(); - /** - * Get the number of client ticks an item has been pressed - * - * @return the number of client ticks an item has been pressed - */ - int getItemPressedDuration(); - /** * Sets whether the client is hiding entities. *

@@ -1469,13 +1438,10 @@ public interface Client extends GameEngine @Nullable CollisionData[] getCollisionMaps(); - @VisibleForDevtools int[] getBoostedSkillLevels(); - @VisibleForDevtools int[] getRealSkillLevels(); - @VisibleForDevtools int[] getSkillExperiences(); void queueChangedSkill(Skill skill); @@ -1486,7 +1452,7 @@ public interface Client extends GameEngine * The key value in the map corresponds to the ID of the sprite, * and the value the sprite to replace it with. */ - Map getSpriteOverrides(); + Map getSpriteOverrides(); /** * Gets a mapping of widget sprites to override. @@ -1494,14 +1460,14 @@ public interface Client extends GameEngine * The key value in the map corresponds to the packed widget ID, * and the value the sprite to replace the widgets sprite with. */ - Map getWidgetSpriteOverrides(); + Map getWidgetSpriteOverrides(); /** * Sets the compass sprite. * - * @param spritePixels the new sprite + * @param Sprite the new sprite */ - void setCompass(SpritePixels spritePixels); + void setCompass(Sprite Sprite); /** * Returns widget sprite cache, to be used with {@link Client#getSpriteOverrides()} @@ -1619,19 +1585,6 @@ public interface Client extends GameEngine void checkClickbox(Model model, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash); - /** - * Get the if1 widget whose item is being dragged - * - * @return - */ - Widget getIf1DraggedWidget(); - - /** - * Get the item index of the item being dragged on an if1 widget - * @return - */ - int getIf1DraggedItemIndex(); - /** * Sets if a widget is in target mode */ @@ -1640,15 +1593,15 @@ public interface Client extends GameEngine /** * Returns client item composition cache */ - NodeCache getItemCompositionCache(); + NodeCache getItemDefinitionCache(); - EnumComposition getEnum(int id); + EnumDefinition getEnum(int id); void draw2010Menu(); NodeCache getHealthBarCache(); - - void toggleRenderSelf(); + + void setRenderSelf(boolean enabled); /** * @@ -1662,9 +1615,9 @@ public interface Client extends GameEngine * @param canvasY Canvas Y Point */ void invokeMenuAction(int param0, int param1, int type, int id, String menuEntry, String targetString, int canvasX, int canvasY); - + MouseRecorder getMouseRecorder(); - + void setPrintMenuActions(boolean b); - + } diff --git a/runelite-api/src/main/java/net/runelite/api/CollisionData.java b/runelite-api/src/main/java/net/runelite/api/CollisionData.java index e3840bcb62..b7af82375d 100644 --- a/runelite-api/src/main/java/net/runelite/api/CollisionData.java +++ b/runelite-api/src/main/java/net/runelite/api/CollisionData.java @@ -40,7 +40,7 @@ public interface CollisionData * values can be obtained and used with the {@link CollisionDataFlag} class. * * @return all collision flags for the tiles in the scene - * @see Constants#SCENE_SIZE + * @see api.config.Constants#SCENE_SIZE */ int[][] getFlags(); } \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java b/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java index 145531fa5d..b6e535b412 100644 --- a/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java +++ b/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java @@ -35,7 +35,7 @@ public interface DecorativeObject extends TileObject * Gets the convex hull of the objects model. * * @return the convex hull - * @see net.runelite.api.model.Jarvis + * @see api.model.Jarvis */ Polygon getConvexHull(); Polygon getConvexHull2(); diff --git a/runelite-api/src/main/java/net/runelite/api/EnumComposition.java b/runelite-api/src/main/java/net/runelite/api/EnumDefinition.java similarity index 97% rename from runelite-api/src/main/java/net/runelite/api/EnumComposition.java rename to runelite-api/src/main/java/net/runelite/api/EnumDefinition.java index 00f8c30814..57df54147f 100644 --- a/runelite-api/src/main/java/net/runelite/api/EnumComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/EnumDefinition.java @@ -24,7 +24,7 @@ */ package net.runelite.api; -public interface EnumComposition +public interface EnumDefinition { int[] getKeys(); diff --git a/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java b/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java index 6c4064549d..c09abcf9e3 100644 --- a/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java +++ b/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java @@ -29,7 +29,7 @@ package net.runelite.api; *

* These values are intended for use with the local players equipment * {@link ItemContainer} corresponding. For obtaining information about equipment - * in the {@link PlayerComposition}, use {@link net.runelite.api.kit.KitType}. + * in the {@link PlayerAppearance}, use {@link api.kit.KitType}. * * @see Client#getItemContainer(InventoryID) * @see InventoryID#EQUIPMENT diff --git a/runelite-api/src/main/java/net/runelite/api/GameObject.java b/runelite-api/src/main/java/net/runelite/api/GameObject.java index c721f35067..450ad6ce6c 100644 --- a/runelite-api/src/main/java/net/runelite/api/GameObject.java +++ b/runelite-api/src/main/java/net/runelite/api/GameObject.java @@ -57,7 +57,7 @@ public interface GameObject extends TileObject * Gets the convex hull of the actors model. * * @return the convex hull - * @see net.runelite.api.model.Jarvis + * @see api.model.Jarvis */ Polygon getConvexHull(); diff --git a/runelite-api/src/main/java/net/runelite/api/GameEngine.java b/runelite-api/src/main/java/net/runelite/api/GameShell.java similarity index 94% rename from runelite-api/src/main/java/net/runelite/api/GameEngine.java rename to runelite-api/src/main/java/net/runelite/api/GameShell.java index 30faa9691d..89a85d54da 100644 --- a/runelite-api/src/main/java/net/runelite/api/GameEngine.java +++ b/runelite-api/src/main/java/net/runelite/api/GameShell.java @@ -25,11 +25,12 @@ package net.runelite.api; import java.awt.Canvas; +import net.runelite.api.hooks.DrawCallbacks; /** * Represents the client game engine. */ -public interface GameEngine +public interface GameShell { /** * Gets the canvas that contains everything. @@ -52,5 +53,7 @@ public interface GameEngine */ boolean isClientThread(); + DrawCallbacks getDrawCallbacks(); + void resizeCanvas(); } diff --git a/runelite-api/src/main/java/net/runelite/api/GameState.java b/runelite-api/src/main/java/net/runelite/api/GameState.java index 5f9083f9ca..0751fe0e71 100644 --- a/runelite-api/src/main/java/net/runelite/api/GameState.java +++ b/runelite-api/src/main/java/net/runelite/api/GameState.java @@ -41,10 +41,6 @@ public enum GameState * The client is at the login screen. */ LOGIN_SCREEN(10), - /** - * The client is at the login screen entering authenticator code. - */ - LOGIN_SCREEN_AUTHENTICATOR(11), /** * There is a player logging in. */ diff --git a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java index bef6cafbd1..24957bc956 100644 --- a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java +++ b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; /** diff --git a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java index 7bfb359b7c..8438e0a300 100644 --- a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java +++ b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java @@ -1,28 +1,3 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - package net.runelite.api; /** diff --git a/runelite-api/src/main/java/net/runelite/api/GraphicID.java b/runelite-api/src/main/java/net/runelite/api/GraphicID.java index 17b47c4224..25b527c8a2 100644 --- a/runelite-api/src/main/java/net/runelite/api/GraphicID.java +++ b/runelite-api/src/main/java/net/runelite/api/GraphicID.java @@ -27,7 +27,6 @@ package net.runelite.api; public class GraphicID { - public static final int WINE_MAKE = 47; public static final int SPLASH = 85; public static final int GREY_BUBBLE_TELEPORT = 86; public static final int TELEPORT = 111; diff --git a/runelite-api/src/main/java/net/runelite/api/HashTable.java b/runelite-api/src/main/java/net/runelite/api/HashTable.java index a7adda6c32..b1c23931b5 100644 --- a/runelite-api/src/main/java/net/runelite/api/HashTable.java +++ b/runelite-api/src/main/java/net/runelite/api/HashTable.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; import java.util.Collection; diff --git a/runelite-api/src/main/java/net/runelite/api/HealthBar.java b/runelite-api/src/main/java/net/runelite/api/HealthBar.java index 2ffeedca28..0d37e01c2a 100644 --- a/runelite-api/src/main/java/net/runelite/api/HealthBar.java +++ b/runelite-api/src/main/java/net/runelite/api/HealthBar.java @@ -26,9 +26,9 @@ package net.runelite.api; public interface HealthBar { - SpritePixels getHealthBarFrontSprite(); + Sprite getHealthBarFrontSprite(); - SpritePixels getHealthBarBackSprite(); + Sprite getHealthBarBackSprite(); void setPadding(int padding); } diff --git a/runelite-api/src/main/java/net/runelite/api/HealthBarOverride.java b/runelite-api/src/main/java/net/runelite/api/HealthBarOverride.java index b53b480518..e6d213e750 100644 --- a/runelite-api/src/main/java/net/runelite/api/HealthBarOverride.java +++ b/runelite-api/src/main/java/net/runelite/api/HealthBarOverride.java @@ -30,8 +30,8 @@ import lombok.Data; @Data public class HealthBarOverride { - public final SpritePixels frontSprite; - public final SpritePixels backSprite; - public final SpritePixels frontSpriteLarge; - public final SpritePixels backSpriteLarge; + public final Sprite frontSprite; + public final Sprite backSprite; + public final Sprite frontSpriteLarge; + public final Sprite backSpriteLarge; } diff --git a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java index 67de31469e..58fb7d498a 100644 --- a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java +++ b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018 Abex - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; /** diff --git a/runelite-api/src/main/java/net/runelite/api/ItemComposition.java b/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java similarity index 64% rename from runelite-api/src/main/java/net/runelite/api/ItemComposition.java rename to runelite-api/src/main/java/net/runelite/api/ItemDefinition.java index eaaed4e2aa..ece176145f 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java @@ -1,33 +1,9 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; /** * Represents the template of a specific item type. */ -public interface ItemComposition +public interface ItemDefinition { /** * Gets the items name. diff --git a/runelite-api/src/main/java/net/runelite/api/ItemID.java b/runelite-api/src/main/java/net/runelite/api/ItemID.java index 517d093058..813c354a01 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java @@ -6618,7 +6618,6 @@ public final class ItemID public static final int NO_EGGS = 10563; public static final int GRANITE_BODY = 10564; public static final int FIRE_CAPE_10566 = 10566; - public static final int HEALER_ICON_10567 = 10567; public static final int KERIS = 10581; public static final int KERISP = 10582; public static final int KERISP_10583 = 10583; @@ -9484,7 +9483,6 @@ public final class ItemID public static final int KINDLING_20799 = 20799; public static final int EMPTY_GOURD_VIAL = 20800; public static final int WATERFILLED_GOURD_VIAL = 20801; - public static final int HEALER_ICON_20802 = 20802; public static final int SNOW_GLOBE = 20832; public static final int SACK_OF_PRESENTS = 20834; public static final int GIANT_PRESENT = 20836; @@ -10307,14 +10305,6 @@ public final class ItemID public static final int ANCIENT_MEDALLION = 22299; public static final int ANCIENT_EFFIGY = 22302; public static final int ANCIENT_RELIC = 22305; - public static final int HEALER_ICON_22308 = 22308; - public static final int HEALER_ICON_22309 = 22309; - public static final int HEALER_ICON_22310 = 22310; - public static final int HEALER_ICON_22311 = 22311; - public static final int COLLECTOR_ICON_22312 = 22312; - public static final int COLLECTOR_ICON_22313 = 22313; - public static final int COLLECTOR_ICON_22314 = 22314; - public static final int COLLECTOR_ICON_22315 = 22315; public static final int PROP_SWORD = 22316; public static final int PET_CORPOREAL_CRITTER = 22318; public static final int TZREKZUK = 22319; @@ -10331,19 +10321,6 @@ public final class ItemID public static final int STARTER_SWORD = 22331; public static final int STARTER_BOW = 22333; public static final int STARTER_STAFF = 22335; - public static final int COLLECTOR_ICON_22337 = 22337; - public static final int COLLECTOR_ICON_22338 = 22338; - public static final int COLLECTOR_ICON_22339 = 22339; - public static final int DEFENDER_ICON_22340 = 22340; - public static final int DEFENDER_ICON_22341 = 22341; - public static final int DEFENDER_ICON_22342 = 22342; - public static final int DEFENDER_ICON_22343 = 22343; - public static final int DEFENDER_ICON_22344 = 22344; - public static final int DEFENDER_ICON_22345 = 22345; - public static final int ATTACKER_ICON_22346 = 22346; - public static final int ATTACKER_ICON_22347 = 22347; - public static final int ATTACKER_ICON_22348 = 22348; - public static final int ATTACKER_ICON_22349 = 22349; public static final int EGGSHELL_PLATEBODY = 22351; public static final int EGGSHELL_PLATELEGS = 22353; public static final int HOLY_HANDEGG = 22355; @@ -10510,16 +10487,6 @@ public final class ItemID public static final int TREE_TOP = 22715; public static final int TREE_SKIRT = 22717; public static final int CANDY_CANE = 22719; - public static final int ATTACKER_ICON_22721 = 22721; - public static final int ATTACKER_ICON_22722 = 22722; - public static final int ATTACKER_ICON_22723 = 22723; - public static final int COLLECTOR_ICON_22724 = 22724; - public static final int DEFENDER_ICON_22725 = 22725; - public static final int DEFENDER_ICON_22726 = 22726; - public static final int DEFENDER_ICON_22727 = 22727; - public static final int DEFENDER_ICON_22728 = 22728; - public static final int ATTACKER_ICON_22729 = 22729; - public static final int ATTACKER_ICON_22730 = 22730; public static final int DRAGON_HASTA = 22731; public static final int DRAGON_HASTAP = 22734; public static final int DRAGON_HASTAP_22737 = 22737; @@ -10824,33 +10791,5 @@ public final class ItemID public static final int TORMENTED_BRACELET_OR = 23444; public static final int GIANT_EASTER_EGG = 23446; public static final int BUNNYMAN_MASK = 23448; - public static final int ENCHANTED_LYREI = 23458; - public static final int ATTACKER_ICON_23460 = 23460; - public static final int ATTACKER_ICON_23461 = 23461; - public static final int ATTACKER_ICON_23462 = 23462; - public static final int ATTACKER_ICON_23463 = 23463; - public static final int ATTACKER_ICON_23464 = 23464; - public static final int ATTACKER_ICON_23465 = 23465; - public static final int DEFENDER_ICON_23466 = 23466; - public static final int DEFENDER_ICON_23467 = 23467; - public static final int DEFENDER_ICON_23468 = 23468; - public static final int DEFENDER_ICON_23469 = 23469; - public static final int DEFENDER_ICON_23470 = 23470; - public static final int COLLECTOR_ICON_23471 = 23471; - public static final int COLLECTOR_ICON_23472 = 23472; - public static final int COLLECTOR_ICON_23473 = 23473; - public static final int COLLECTOR_ICON_23474 = 23474; - public static final int COLLECTOR_ICON_23475 = 23475; - public static final int COLLECTOR_ICON_23476 = 23476; - public static final int COLLECTOR_ICON_23477 = 23477; - public static final int HEALER_ICON_23478 = 23478; - public static final int HEALER_ICON_23479 = 23479; - public static final int HEALER_ICON_23480 = 23480; - public static final int HEALER_ICON_23481 = 23481; - public static final int HEALER_ICON_23482 = 23482; - public static final int HEALER_ICON_23483 = 23483; - public static final int HEALER_ICON_23484 = 23484; - public static final int HEALER_ICON_23485 = 23485; - public static final int HEALER_ICON_23486 = 23486; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java b/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java index 33b3fea3f0..c644859bd2 100644 --- a/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java +++ b/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java @@ -36,5 +36,5 @@ public interface MainBufferProvider * * @return the loaded image */ - Image getImage(); + Image getImage(); //TODO } diff --git a/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java b/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java index 5ed46e25b9..39ed26b546 100644 --- a/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java +++ b/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java @@ -35,5 +35,5 @@ public interface MapElementConfig * @param unused unused value * @return the sprite icon to display on the world map */ - SpritePixels getMapIcon(boolean unused); + Sprite getMapIcon(boolean unused); } diff --git a/runelite-api/src/main/java/net/runelite/api/NPC.java b/runelite-api/src/main/java/net/runelite/api/NPC.java index d0647604b7..6ce26db152 100644 --- a/runelite-api/src/main/java/net/runelite/api/NPC.java +++ b/runelite-api/src/main/java/net/runelite/api/NPC.java @@ -35,7 +35,7 @@ public interface NPC extends Actor * Gets the ID of the NPC. * * @return the ID of the NPC - * @see NpcID + * //@see NpcID */ int getId(); @@ -59,7 +59,7 @@ public interface NPC extends Actor * * @return the composition */ - NPCComposition getComposition(); + NPCDefinition getDefinition(); /** * Get the composition for this NPC and transform it if required @@ -67,7 +67,7 @@ public interface NPC extends Actor * @return the transformed NPC */ @Nullable - NPCComposition getTransformedComposition(); + NPCDefinition getTransformedDefinition(); /** * Returns true if this NPC has died diff --git a/runelite-api/src/main/java/net/runelite/api/NPCComposition.java b/runelite-api/src/main/java/net/runelite/api/NPCDefinition.java similarity index 95% rename from runelite-api/src/main/java/net/runelite/api/NPCComposition.java rename to runelite-api/src/main/java/net/runelite/api/NPCDefinition.java index 0386ba954f..fa70c5051e 100644 --- a/runelite-api/src/main/java/net/runelite/api/NPCComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/NPCDefinition.java @@ -24,10 +24,7 @@ */ package net.runelite.api; -/** - * Represents the template of a specific NPC type. - */ -public interface NPCComposition +public interface NPCDefinition { /** * Gets the name of the NPC. @@ -99,7 +96,7 @@ public interface NPCComposition * * @return the transformed composition */ - NPCComposition transform(); + NPCDefinition transform(); /** * Gets the size of the NPC. diff --git a/runelite-api/src/main/java/net/runelite/api/NullItemID.java b/runelite-api/src/main/java/net/runelite/api/NullItemID.java index 9007300837..1bc9028389 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java @@ -3834,6 +3834,7 @@ public final class NullItemID public static final int NULL_10509 = 10509; public static final int NULL_10511 = 10511; public static final int NULL_10565 = 10565; + public static final int NULL_10567 = 10567; public static final int NULL_10568 = 10568; public static final int NULL_10569 = 10569; public static final int NULL_10570 = 10570; @@ -11131,6 +11132,7 @@ public final class NullItemID public static final int NULL_20793 = 20793; public static final int NULL_20795 = 20795; public static final int NULL_20797 = 20797; + public static final int NULL_20802 = 20802; public static final int NULL_20803 = 20803; public static final int NULL_20804 = 20804; public static final int NULL_20805 = 20805; @@ -11814,11 +11816,32 @@ public final class NullItemID public static final int NULL_22304 = 22304; public static final int NULL_22306 = 22306; public static final int NULL_22307 = 22307; + public static final int NULL_22308 = 22308; + public static final int NULL_22309 = 22309; + public static final int NULL_22310 = 22310; + public static final int NULL_22311 = 22311; + public static final int NULL_22312 = 22312; + public static final int NULL_22313 = 22313; + public static final int NULL_22314 = 22314; + public static final int NULL_22315 = 22315; public static final int NULL_22317 = 22317; public static final int NULL_22329 = 22329; public static final int NULL_22332 = 22332; public static final int NULL_22334 = 22334; public static final int NULL_22336 = 22336; + public static final int NULL_22337 = 22337; + public static final int NULL_22338 = 22338; + public static final int NULL_22339 = 22339; + public static final int NULL_22340 = 22340; + public static final int NULL_22341 = 22341; + public static final int NULL_22342 = 22342; + public static final int NULL_22343 = 22343; + public static final int NULL_22344 = 22344; + public static final int NULL_22345 = 22345; + public static final int NULL_22346 = 22346; + public static final int NULL_22347 = 22347; + public static final int NULL_22348 = 22348; + public static final int NULL_22349 = 22349; public static final int NULL_22350 = 22350; public static final int NULL_22352 = 22352; public static final int NULL_22354 = 22354; @@ -12024,6 +12047,16 @@ public final class NullItemID public static final int NULL_22716 = 22716; public static final int NULL_22718 = 22718; public static final int NULL_22720 = 22720; + public static final int NULL_22721 = 22721; + public static final int NULL_22722 = 22722; + public static final int NULL_22723 = 22723; + public static final int NULL_22724 = 22724; + public static final int NULL_22725 = 22725; + public static final int NULL_22726 = 22726; + public static final int NULL_22727 = 22727; + public static final int NULL_22728 = 22728; + public static final int NULL_22729 = 22729; + public static final int NULL_22730 = 22730; public static final int NULL_22732 = 22732; public static final int NULL_22733 = 22733; public static final int NULL_22735 = 22735; @@ -12423,6 +12456,5 @@ public final class NullItemID public static final int NULL_23455 = 23455; public static final int NULL_23456 = 23456; public static final int NULL_23457 = 23457; - public static final int NULL_23459 = 23459; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java b/runelite-api/src/main/java/net/runelite/api/ObjectDefinition.java similarity index 97% rename from runelite-api/src/main/java/net/runelite/api/ObjectComposition.java rename to runelite-api/src/main/java/net/runelite/api/ObjectDefinition.java index 3b90539c19..bc2e4f5b0a 100644 --- a/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/ObjectDefinition.java @@ -27,7 +27,7 @@ package net.runelite.api; /** * Represents the template of a specific object. */ -public interface ObjectComposition +public interface ObjectDefinition { /** * Gets ID for the object. @@ -78,5 +78,5 @@ public interface ObjectComposition * * @return the impostor */ - ObjectComposition getImpostor(); + ObjectDefinition getImpostor(); } diff --git a/runelite-api/src/main/java/net/runelite/api/Perspective.java b/runelite-api/src/main/java/net/runelite/api/Perspective.java index 45469cc00c..a03af2049f 100644 --- a/runelite-api/src/main/java/net/runelite/api/Perspective.java +++ b/runelite-api/src/main/java/net/runelite/api/Perspective.java @@ -24,6 +24,7 @@ */ package net.runelite.api; +import static api.config.Constants.TILE_FLAG_BRIDGE; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Polygon; @@ -36,7 +37,6 @@ import java.util.List; import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import static net.runelite.api.Constants.TILE_FLAG_BRIDGE; import net.runelite.api.coords.LocalPoint; import net.runelite.api.model.Jarvis; import net.runelite.api.model.Triangle; @@ -471,7 +471,7 @@ public class Perspective public static Point getCanvasSpriteLocation( @Nonnull Client client, @Nonnull LocalPoint localLocation, - @Nonnull SpritePixels sprite, + @Nonnull Sprite sprite, int zOffset) { int plane = client.getPlane(); @@ -490,7 +490,7 @@ public class Perspective } /** - * You don't want this. Use {@link TileObject#getClickbox()} instead. + * You don't want this. Use {@link //TileObject#getClickbox()} instead. *

* Get the on-screen clickable area of {@code model} as though it's for the * object on the tile at ({@code localX}, {@code localY}) and rotated to @@ -555,7 +555,7 @@ public class Perspective for (Triangle triangle : triangles) { - Vertex _a = triangle.getA(); + api.model.Vertex _a = triangle.getA(); Point a = localToCanvas(client, point.getX() - _a.getX(), point.getY() - _a.getZ(), diff --git a/runelite-api/src/main/java/net/runelite/api/Player.java b/runelite-api/src/main/java/net/runelite/api/Player.java index 2e844c6ab6..7f77a461ee 100644 --- a/runelite-api/src/main/java/net/runelite/api/Player.java +++ b/runelite-api/src/main/java/net/runelite/api/Player.java @@ -34,7 +34,7 @@ public interface Player extends Actor { @Override int getCombatLevel(); - + int getPlayerId(); /** @@ -42,7 +42,7 @@ public interface Player extends Actor * * @return the composition */ - PlayerComposition getPlayerComposition(); + PlayerAppearance getPlayerAppearance(); /** * Gets the polygons that make up the players model. @@ -79,10 +79,9 @@ public interface Player extends Actor * @return the overhead icon */ HeadIcon getOverheadIcon(); - + /** * Gets the displayed skull icon of the player. - * Only works on the local player. * * @return the skull icon */ diff --git a/runelite-api/src/main/java/net/runelite/api/PlayerComposition.java b/runelite-api/src/main/java/net/runelite/api/PlayerAppearance.java similarity index 94% rename from runelite-api/src/main/java/net/runelite/api/PlayerComposition.java rename to runelite-api/src/main/java/net/runelite/api/PlayerAppearance.java index 20ac41b6cb..2348968eda 100644 --- a/runelite-api/src/main/java/net/runelite/api/PlayerComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/PlayerAppearance.java @@ -24,13 +24,12 @@ */ package net.runelite.api; -import net.runelite.api.annotations.VisibleForDevtools; import net.runelite.api.kit.KitType; /** * Represents the template of a player. */ -public interface PlayerComposition +public interface PlayerAppearance { /** * Gets an array of IDs related to equipment slots. @@ -63,9 +62,7 @@ public interface PlayerComposition * Update the cached hash value for player equipment * Used to cache the player models based on equipment. */ - @VisibleForDevtools void setHash(); - @VisibleForDevtools void setTransformedNpcId(int id); } diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java b/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java index 2af2c1bd92..c67610a79f 100644 --- a/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java +++ b/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java @@ -43,7 +43,7 @@ public interface ScriptEvent * Gets the widget of the event. * * @return the widget - * @see net.runelite.api.widgets.Widget + * @see api.widgets.Widget */ Widget getSource(); @@ -58,7 +58,7 @@ public interface ScriptEvent * Gets the target of the menu option * * @return the target - * @see net.runelite.api.events.MenuOptionClicked + * @see api.events.MenuOptionClicked */ String getOpbase(); } diff --git a/runelite-api/src/main/java/net/runelite/api/Skill.java b/runelite-api/src/main/java/net/runelite/api/Skill.java index 50ae201476..db84b6f364 100644 --- a/runelite-api/src/main/java/net/runelite/api/Skill.java +++ b/runelite-api/src/main/java/net/runelite/api/Skill.java @@ -1,28 +1,3 @@ -/* - * Copyright (c) 2016-2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - package net.runelite.api; /** diff --git a/runelite-api/src/main/java/net/runelite/api/SpritePixels.java b/runelite-api/src/main/java/net/runelite/api/Sprite.java similarity index 93% rename from runelite-api/src/main/java/net/runelite/api/SpritePixels.java rename to runelite-api/src/main/java/net/runelite/api/Sprite.java index 4ebdbdba1c..b6fed1bab4 100644 --- a/runelite-api/src/main/java/net/runelite/api/SpritePixels.java +++ b/runelite-api/src/main/java/net/runelite/api/Sprite.java @@ -30,7 +30,7 @@ import java.awt.image.BufferedImage; /** * Represents data about the pixels of a sprite image. */ -public interface SpritePixels +public interface Sprite { int DEFAULT_SHADOW_COLOR = 3153952; @@ -79,14 +79,14 @@ public interface SpritePixels void toBufferedImage(BufferedImage img) throws IllegalArgumentException; /** - * Writes the contents of the SpritePixels with chosen outline to the BufferedImage + * Writes the contents of the Sprite with chosen outline to the BufferedImage * * @param color target color */ BufferedImage toBufferedOutline(Color color); /** - * Writes the contents of the SpritePixels with chosen outline to the BufferedImage + * Writes the contents of the Sprite with chosen outline to the BufferedImage * * @param img target image * @param color target color diff --git a/runelite-api/src/main/java/net/runelite/api/Tile.java b/runelite-api/src/main/java/net/runelite/api/Tile.java index 0911c17de1..a0ff488924 100644 --- a/runelite-api/src/main/java/net/runelite/api/Tile.java +++ b/runelite-api/src/main/java/net/runelite/api/Tile.java @@ -134,8 +134,6 @@ public interface Tile /** * Return the tile under this one, if this tile is a bridge - * - * @return */ Tile getBridge(); } diff --git a/runelite-api/src/main/java/net/runelite/api/VarPlayer.java b/runelite-api/src/main/java/net/runelite/api/VarPlayer.java index 72c361c27b..56691e4a24 100644 --- a/runelite-api/src/main/java/net/runelite/api/VarPlayer.java +++ b/runelite-api/src/main/java/net/runelite/api/VarPlayer.java @@ -260,5 +260,5 @@ public enum VarPlayer - private final int id; + public final int id; } diff --git a/runelite-api/src/main/java/net/runelite/api/WallObject.java b/runelite-api/src/main/java/net/runelite/api/WallObject.java index ddc4a734cd..9a7156b654 100644 --- a/runelite-api/src/main/java/net/runelite/api/WallObject.java +++ b/runelite-api/src/main/java/net/runelite/api/WallObject.java @@ -25,33 +25,28 @@ package net.runelite.api; /** - * Represents one or two walls on a tile + * Represents the wall of a tile, which is an un-passable boundary. */ public interface WallObject extends TileObject { /** - * A bitfield with the orientation of a wall - * 1 = East - * 2 = North - * 4 = West - * 8 = South + * Gets the first orientation of the wall. + * + * @return the first orientation, 0-2048 where 0 is north */ int getOrientationA(); /** - * A bitfield containing the orientation of the second wall on this tile, - * or 0 if there is no second wall. - * @see #getOrientationA + * Gets the second orientation value of the wall. + * + * @return the second orientation, 0-2048 where 0 is north */ int getOrientationB(); /** - * A bitfield containing various flags: - *

{@code
-	 * object type id = bits & 0x20
-	 * orientation (0-3) = bits >>> 6 & 3
-	 * supports items = bits >>> 8 & 1
-	 * }
+ * Gets the boundary configuration of the wall. + * + * @return the boundary configuration */ int getConfig(); diff --git a/runelite-api/src/main/java/net/runelite/api/WidgetNode.java b/runelite-api/src/main/java/net/runelite/api/WidgetNode.java index dbdaf9936e..f44b6bf461 100644 --- a/runelite-api/src/main/java/net/runelite/api/WidgetNode.java +++ b/runelite-api/src/main/java/net/runelite/api/WidgetNode.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2017, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; /** @@ -33,7 +9,7 @@ public interface WidgetNode extends Node * The ID of the widget. * * @return the ID of the widget - * @see net.runelite.api.widgets.Widget + * @see api.widgets.Widget */ int getId(); } diff --git a/runelite-api/src/main/java/net/runelite/api/World.java b/runelite-api/src/main/java/net/runelite/api/World.java index df26615843..19829149a0 100644 --- a/runelite-api/src/main/java/net/runelite/api/World.java +++ b/runelite-api/src/main/java/net/runelite/api/World.java @@ -1,29 +1,4 @@ -/* - * Copyright (c) 2018, Tomas Slusny - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; - import java.util.EnumSet; /** diff --git a/runelite-api/src/main/java/net/runelite/api/WorldType.java b/runelite-api/src/main/java/net/runelite/api/WorldType.java index 0ecfd1ed94..06ec983a12 100644 --- a/runelite-api/src/main/java/net/runelite/api/WorldType.java +++ b/runelite-api/src/main/java/net/runelite/api/WorldType.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Tomas Slusny - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api; import java.util.Collection; diff --git a/runelite-api/src/main/java/net/runelite/api/coords/Angle.java b/runelite-api/src/main/java/net/runelite/api/coords/Angle.java index 93b830a2fe..1cb9184bf2 100644 --- a/runelite-api/src/main/java/net/runelite/api/coords/Angle.java +++ b/runelite-api/src/main/java/net/runelite/api/coords/Angle.java @@ -24,11 +24,11 @@ */ package net.runelite.api.coords; +import static api.coords.Direction.EAST; +import static api.coords.Direction.NORTH; +import static api.coords.Direction.SOUTH; +import static api.coords.Direction.WEST; import lombok.Value; -import static net.runelite.api.coords.Direction.EAST; -import static net.runelite.api.coords.Direction.NORTH; -import static net.runelite.api.coords.Direction.SOUTH; -import static net.runelite.api.coords.Direction.WEST; /** * Represents an in-game orientation that uses fixed point arithmetic. diff --git a/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java b/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java index 9abb3aeac8..1aca6430c7 100644 --- a/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java +++ b/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java @@ -31,9 +31,9 @@ import lombok.Getter; import net.runelite.api.Client; import net.runelite.api.CollisionData; import net.runelite.api.CollisionDataFlag; -import net.runelite.api.Constants; import net.runelite.api.Point; import net.runelite.api.Tile; +import net.runelite.api.config.Constants; /** * Represents an area on the world. @@ -208,7 +208,7 @@ public class WorldArea * Note that this method does not consider other actors as * a collision, but most non-boss NPCs do check for collision * with some actors. For actor collision checking, use the - * {@link #canTravelInDirection(Client, int, int, Predicate)} method. + * {@link #canTravelInDirection(Client, int, int, java.util.function.Predicate)} method. * * @param client the client to test in * @param dx the x-axis direction to travel (-1, 0, or 1) diff --git a/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java b/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java index ee7c67b20b..c6f84d3550 100644 --- a/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java +++ b/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java @@ -25,13 +25,13 @@ */ package net.runelite.api.coords; +import static api.config.Constants.CHUNK_SIZE; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import lombok.Value; import net.runelite.api.Client; -import static net.runelite.api.Constants.CHUNK_SIZE; import net.runelite.api.Perspective; /** diff --git a/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java b/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java index fe3acab950..379ea5db36 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2016-2017, Abel Briggs - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api.events; import lombok.Data; @@ -38,7 +14,7 @@ import net.runelite.api.Actor; *
  • A player starts or stops dancing
  • * * - * @see net.runelite.api.AnimationID + * @see api.AnimationID */ @Data public class AnimationChanged diff --git a/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java b/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java index 29dd7bd9b1..3bc2946bf8 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java @@ -38,7 +38,7 @@ import net.runelite.api.Skill; *
  • Levelling up a skill
  • * *

    - * Use {@link net.runelite.api.Client#getBoostedSkillLevel(Skill)} in order to + * Use {@link api.Client#getBoostedSkillLevel(Skill)} in order to * retrieve the newly boosted skill level. */ @Data diff --git a/runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java b/runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java deleted file mode 100644 index 9a50a5671c..0000000000 --- a/runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package net.runelite.api.events; - -import lombok.Data; -import net.runelite.api.Actor; - -/** - * An event where the graphic of an {@link Actor} has changed. - *

    - * The graphic the player has changed to can be obtained using - * {@link Actor#getGraphic()}. - *

    - * Examples of when this event may trigger include: - *

      - *
    • Casting a magic spell
    • - *
    • Using a fairy ring
    • - *
    • Breaking a teleport tab
    • - *
    - * - * @see net.runelite.api.GraphicID - */ -@Data -public class GraphicChanged -{ - /** - * The actor that has had their graphic changed. - */ - private Actor actor; -} \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java b/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java index fdfe0d1272..0001fa96a0 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Adam - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api.events; import lombok.Value; diff --git a/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java index f4c5d8163f..f90914612f 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java @@ -28,7 +28,7 @@ import lombok.Value; import net.runelite.api.ItemContainer; /** - * An event called whenever the stack size of an {@link net.runelite.api.Item} + * An event called whenever the stack size of an {@link api.Item} * in an {@link ItemContainer} is modified. *

    * Examples of when this event may trigger include: diff --git a/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java b/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java index 8eb4707ae8..1ec640a031 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java +++ b/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java @@ -64,7 +64,7 @@ public class MenuOptionClicked /** * The ID of the widget where the menu was clicked. * - * @see net.runelite.api.widgets.WidgetID + * @see api.WidgetID */ private int widgetId; /** diff --git a/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java b/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java index 7539821167..35838e067c 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java @@ -25,10 +25,10 @@ package net.runelite.api.events; import lombok.Data; -import net.runelite.api.NPCComposition; +import net.runelite.api.NPCDefinition; /** - * An event where an action of an {@link NPCComposition} has changed. + * An event where an action of an {@link NPCDefinition} has changed. */ @Data public class NpcActionChanged @@ -36,7 +36,7 @@ public class NpcActionChanged /** * The NPC composition that has been changed. */ - private NPCComposition npcComposition; + private NPCDefinition npcDefinition; /** * The raw index of the modified action. */ diff --git a/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java b/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java index a366eb297a..a6b6c87a81 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java @@ -1,35 +1,8 @@ -/* - * Copyright (c) 2018, Magic fTail - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api.events; import lombok.Value; import net.runelite.api.Actor; -/** - * Event fired when an actors overhead text is changed. - */ @Value public class OverheadTextChanged { diff --git a/runelite-api/src/main/java/net/runelite/api/events/PostItemComposition.java b/runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java similarity index 89% rename from runelite-api/src/main/java/net/runelite/api/events/PostItemComposition.java rename to runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java index 1e9000cfd1..35718b5ea9 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/PostItemComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java @@ -25,17 +25,17 @@ package net.runelite.api.events; import lombok.Data; -import net.runelite.api.ItemComposition; +import net.runelite.api.ItemDefinition; /** - * An event called after a new {@link ItemComposition} is created and + * An event called after a new {@link ItemDefinition} is created and * its data is initialized. */ @Data -public class PostItemComposition +public class PostItemDefinition { /** * The newly created item. */ - private ItemComposition itemComposition; + private ItemDefinition itemDefinition; } diff --git a/runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java b/runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java new file mode 100644 index 0000000000..7cfbd0bc86 --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java @@ -0,0 +1,28 @@ +package net.runelite.api.events; + +import lombok.Data; +import net.runelite.api.Actor; + +/** + * An event where the graphic of an {@link Actor} has changed. + *

    + * The graphic the player has changed to can be obtained using + * {@link Actor#getSpotAnimation()}. + *

    + * Examples of when this event may trigger include: + *

      + *
    • Casting a magic spell
    • + *
    • Using a fairy ring
    • + *
    • Breaking a teleport tab
    • + *
    + * + * @see api.GraphicID + */ +@Data +public class SpotAnimationChanged +{ + /** + * The actor that has had their graphic changed. + */ + private Actor actor; +} \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java index c71bc41634..fa99117af8 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java +++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java @@ -27,7 +27,7 @@ package net.runelite.api.events; import lombok.Data; /** - * An event where a {@link net.runelite.api.widgets.Widget} has been loaded. + * An event where a {@link api.widgets.Widget} has been loaded. */ @Data public class WidgetLoaded diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java index 9662a98ee8..114806abe7 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java +++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java @@ -28,7 +28,7 @@ import lombok.Data; import net.runelite.api.widgets.WidgetInfo; /** - * An event where an option has been clicked in a {@link net.runelite.api.widgets.Widget}s menu. + * An event where an option has been clicked in a {@link api.widgets.Widget}s menu. */ @Data public class WidgetMenuOptionClicked diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java index d5479e3485..c5c7681fa0 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java +++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java @@ -27,7 +27,7 @@ package net.runelite.api.events; import lombok.Value; /** - * An event where the position of a {@link net.runelite.api.widgets.Widget} + * An event where the position of a {@link api.widgets.Widget} * relative to its parent has changed. */ @Value diff --git a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java index b6960d761f..f585653836 100644 --- a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java +++ b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java @@ -37,7 +37,7 @@ import net.runelite.api.widgets.WidgetItem; public interface Callbacks { /** - * Post an event. See the events in net.runelite.api.events. + * Post an event. See the events in api.events. * * @param event the event */ diff --git a/runelite-api/src/main/java/net/runelite/api/kit/KitType.java b/runelite-api/src/main/java/net/runelite/api/kit/KitType.java index a808f2e899..156f0a8fd1 100644 --- a/runelite-api/src/main/java/net/runelite/api/kit/KitType.java +++ b/runelite-api/src/main/java/net/runelite/api/kit/KitType.java @@ -24,15 +24,15 @@ */ package net.runelite.api.kit; -import net.runelite.api.PlayerComposition; +import net.runelite.api.PlayerAppearance; /** * Represents an equipment slot in a players composition. *

    - * These values are intended for use with {@link PlayerComposition} equipment + * These values are intended for use with {@link PlayerAppearance} equipment * slots. For obtaining information about equipment in the local players - * equipment {@link net.runelite.api.ItemContainer}, use - * {@link net.runelite.api.EquipmentInventorySlot}. + * equipment {@link api.ItemContainer}, use + * {@link api.EquipmentInventorySlot}. */ public enum KitType { @@ -61,7 +61,7 @@ public enum KitType } /** - * Gets the raw equipment index for use in {@link PlayerComposition#getEquipmentIds()}. + * Gets the raw equipment index for use in {@link PlayerAppearance#getEquipmentIds()}. * * @return raw equipment index */ diff --git a/runelite-api/src/main/java/net/runelite/api/vars/AccountType.java b/runelite-api/src/main/java/net/runelite/api/vars/AccountType.java index 63c5e953f7..e35a1f00ad 100644 --- a/runelite-api/src/main/java/net/runelite/api/vars/AccountType.java +++ b/runelite-api/src/main/java/net/runelite/api/vars/AccountType.java @@ -1,27 +1,3 @@ -/* - * Copyright (c) 2018, Joshua Filby - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.api.vars; /** @@ -56,4 +32,4 @@ public enum AccountType return this.ordinal() >= IRONMAN.ordinal() && this.ordinal() <= HARDCORE_IRONMAN.ordinal(); } -} +} \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java index 41b843f417..64bc95418c 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java @@ -28,6 +28,7 @@ import java.awt.Rectangle; import java.util.Collection; import net.runelite.api.FontTypeFace; import net.runelite.api.Point; +import net.runelite.api.SpriteID; /** * Represents an on-screen UI element that is drawn on the canvas. @@ -252,7 +253,7 @@ public interface Widget * Gets the sprite ID displayed in the widget. * * @return the sprite ID - * @see net.runelite.api.SpriteID + * @see SpriteID */ int getSpriteId(); @@ -260,7 +261,7 @@ public interface Widget * Sets the sprite ID displayed in the widget. * * @param spriteId the sprite ID - * @see net.runelite.api.SpriteID + * @see SpriteID */ void setSpriteId(int spriteId); @@ -306,7 +307,7 @@ public interface Widget /** * Gets the width of the widget. *

    - * If this widget is storing any {@link WidgetItem}s, this value is + * If this widget is storing any {@link // WidgetItem}s, this value is * used to store the number of item slot columns. * * @return the width @@ -625,14 +626,14 @@ public interface Widget /** * Returns the archive id of the font used * - * @see net.runelite.api.FontID + * @see api.FontID */ int getFontId(); /** * Sets the archive id of the font * - * @see net.runelite.api.FontID + * @see api.FontID */ void setFontId(int id); @@ -680,12 +681,12 @@ public interface Widget void setDragDeadTime(int deadTime); /** - * Returns widget {@link net.runelite.api.widgets.ItemQuantityMode}. + * Returns widget {@link api.widgets.ItemQuantityMode}. */ int getItemQuantityMode(); /** - * Sets the widget {@link net.runelite.api.widgets.ItemQuantityMode} + * Sets the widget {@link api.widgets.ItemQuantityMode} */ void setItemQuantityMode(int itemQuantityMode); diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java index 31829b5417..96b60bd63d 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java @@ -24,7 +24,6 @@ */ package net.runelite.api.widgets; -import net.runelite.api.MenuAction; /** * Utility class used for defining options to be used on the click mask @@ -92,7 +91,7 @@ public class WidgetConfig /** * Add a USE option * - * @see MenuAction#ITEM_USE + * @see// MenuAction#ITEM_USE */ public static final int ITEM_USE_OP = 1 << 31; } diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index 4ae996c3d4..1a3df6c480 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -27,7 +27,7 @@ package net.runelite.api.widgets; /** * Represents a group-child {@link Widget} relationship. *

    - * For getting a specific widget from the client, see {@link net.runelite.api.Client#getWidget(WidgetInfo)}. + * For getting a specific widget from the client, see {@link api.Client#getWidget(WidgetInfo)}. */ public enum WidgetInfo { diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java index c39e961f81..0c8dde7ee3 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java @@ -41,7 +41,7 @@ public class WidgetItem /** * The ID of the item represented. * - * @see net.runelite.api.ItemID + * @see api.ItemID */ private final int id; /** From 276ff1995d950c9e69de2924f64621d6ca66754a Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 8 Jun 2019 06:49:01 +0200 Subject: [PATCH 03/19] RSClient --- rs-client/pom.xml | 62 + .../main/java/AbstractByteArrayCopier.java | 104 + rs-client/src/main/java/AbstractFont.java | 1072 +++ .../src/main/java/AbstractIndexCache.java | 783 ++ .../src/main/java/AbstractRasterProvider.java | 54 + rs-client/src/main/java/AbstractSocket.java | 72 + rs-client/src/main/java/AbstractSound.java | 11 + .../src/main/java/AbstractUserComparator.java | 69 + .../src/main/java/AbstractWorldMapIcon.java | 176 + rs-client/src/main/java/AccessFile.java | 188 + rs-client/src/main/java/Actor.java | 1358 ++++ rs-client/src/main/java/Animation.java | 136 + rs-client/src/main/java/AttackOption.java | 220 + rs-client/src/main/java/AudioFilter.java | 161 + rs-client/src/main/java/BoundaryObject.java | 135 + rs-client/src/main/java/Bounds.java | 171 + rs-client/src/main/java/Buddy.java | 95 + rs-client/src/main/java/Buffer.java | 1098 +++ rs-client/src/main/java/BufferedFile.java | 410 + .../src/main/java/BufferedNetSocket.java | 113 + rs-client/src/main/java/BufferedSink.java | 258 + rs-client/src/main/java/BufferedSource.java | 285 + rs-client/src/main/java/ByteArrayNode.java | 15 + rs-client/src/main/java/ByteArrayPool.java | 151 + .../src/main/java/Bzip2Decompressor.java | 641 ++ rs-client/src/main/java/Bzip2State.java | 193 + rs-client/src/main/java/Canvas.java | 267 + rs-client/src/main/java/ChatChannel.java | 352 + rs-client/src/main/java/ClanChat.java | 229 + rs-client/src/main/java/ClanMate.java | 94 + rs-client/src/main/java/Client.java | 6626 +++++++++++++++++ rs-client/src/main/java/ClientPacket.java | 754 ++ .../src/main/java/ClientPacketMarker.java | 7 + rs-client/src/main/java/ClientParameter.java | 204 + .../src/main/java/ClientPreferences.java | 162 + rs-client/src/main/java/Clock.java | 90 + rs-client/src/main/java/CollisionMap.java | 512 ++ rs-client/src/main/java/Decimator.java | 246 + .../src/main/java/DemotingHashTable.java | 142 + .../java/DesktopPlatformInfoProvider.java | 191 + rs-client/src/main/java/DevicePcmPlayer.java | 125 + .../main/java/DevicePcmPlayerProvider.java | 796 ++ .../src/main/java/DirectByteArrayCopier.java | 36 + rs-client/src/main/java/DirectWrapper.java | 26 + rs-client/src/main/java/DualNode.java | 35 + rs-client/src/main/java/DualNodeDeque.java | 106 + rs-client/src/main/java/DynamicObject.java | 634 ++ rs-client/src/main/java/Entity.java | 41 + rs-client/src/main/java/EnumDefinition.java | 128 + rs-client/src/main/java/Enumerated.java | 14 + .../main/java/EvictingDualNodeHashTable.java | 105 + rs-client/src/main/java/FaceNormal.java | 121 + rs-client/src/main/java/FloorDecoration.java | 117 + rs-client/src/main/java/Font.java | 96 + rs-client/src/main/java/FontName.java | 588 ++ rs-client/src/main/java/Fonts.java | 89 + rs-client/src/main/java/Formatting.java | 126 + rs-client/src/main/java/Frames.java | 90 + rs-client/src/main/java/Friend.java | 43 + .../src/main/java/FriendLoginUpdate.java | 40 + rs-client/src/main/java/FriendSystem.java | 333 + rs-client/src/main/java/FriendsList.java | 156 + rs-client/src/main/java/GameObject.java | 111 + rs-client/src/main/java/GameShell.java | 1132 +++ .../src/main/java/GrandExchangeEvent.java | 432 ++ .../src/main/java/GrandExchangeEvents.java | 185 + .../src/main/java/GrandExchangeOffer.java | 181 + rs-client/src/main/java/GraphicsObject.java | 154 + rs-client/src/main/java/GroundItem.java | 68 + rs-client/src/main/java/GroundItemPile.java | 106 + rs-client/src/main/java/GzipDecompressor.java | 75 + rs-client/src/main/java/HealthBar.java | 184 + .../src/main/java/HealthBarDefinition.java | 215 + rs-client/src/main/java/HealthBarUpdate.java | 94 + .../src/main/java/HitSplatDefinition.java | 414 + rs-client/src/main/java/Huffman.java | 334 + rs-client/src/main/java/IgnoreList.java | 153 + rs-client/src/main/java/Ignored.java | 61 + rs-client/src/main/java/IndexCache.java | 565 ++ rs-client/src/main/java/IndexCacheLoader.java | 709 ++ rs-client/src/main/java/IndexStore.java | 488 ++ rs-client/src/main/java/IndexStoreAction.java | 130 + .../main/java/IndexStoreActionHandler.java | 108 + rs-client/src/main/java/IndexedSprite.java | 275 + rs-client/src/main/java/Instrument.java | 414 + rs-client/src/main/java/IntHashTable.java | 60 + rs-client/src/main/java/IntegerNode.java | 15 + rs-client/src/main/java/Interpreter.java | 229 + rs-client/src/main/java/InvDefinition.java | 69 + rs-client/src/main/java/IsaacCipher.java | 351 + rs-client/src/main/java/ItemContainer.java | 99 + rs-client/src/main/java/ItemDefinition.java | 914 +++ .../src/main/java/IterableDualNodeQueue.java | 121 + .../java/IterableDualNodeQueueIterator.java | 70 + .../src/main/java/IterableNodeDeque.java | 144 + .../IterableNodeDequeDescendingIterator.java | 85 + .../src/main/java/IterableNodeHashTable.java | 146 + .../java/IterableNodeHashTableIterator.java | 102 + rs-client/src/main/java/KeyHandler.java | 262 + rs-client/src/main/java/KitDefinition.java | 271 + rs-client/src/main/java/Link.java | 32 + rs-client/src/main/java/LinkDeque.java | 75 + rs-client/src/main/java/Login.java | 248 + rs-client/src/main/java/LoginPacket.java | 120 + rs-client/src/main/java/LoginType.java | 104 + rs-client/src/main/java/MenuAction.java | 159 + rs-client/src/main/java/Message.java | 471 ++ rs-client/src/main/java/Messages.java | 63 + rs-client/src/main/java/MidiFileReader.java | 259 + rs-client/src/main/java/MidiPcmStream.java | 1131 +++ rs-client/src/main/java/MilliClock.java | 241 + rs-client/src/main/java/Model.java | 1724 +++++ rs-client/src/main/java/ModelData.java | 1760 +++++ rs-client/src/main/java/ModelData0.java | 22 + rs-client/src/main/java/MouseHandler.java | 293 + rs-client/src/main/java/MouseRecorder.java | 383 + rs-client/src/main/java/MouseWheel.java | 16 + .../src/main/java/MouseWheelHandler.java | 60 + rs-client/src/main/java/MusicPatch.java | 543 ++ rs-client/src/main/java/MusicPatchNode.java | 155 + rs-client/src/main/java/MusicPatchNode2.java | 63 + .../src/main/java/MusicPatchPcmStream.java | 202 + rs-client/src/main/java/MusicSample.java | 655 ++ rs-client/src/main/java/MusicTrack.java | 435 ++ rs-client/src/main/java/NanoClock.java | 56 + rs-client/src/main/java/NetCache.java | 148 + rs-client/src/main/java/NetFileRequest.java | 115 + rs-client/src/main/java/NetSocket.java | 544 ++ rs-client/src/main/java/Node.java | 41 + rs-client/src/main/java/NodeDeque.java | 182 + rs-client/src/main/java/NodeHashTable.java | 139 + rs-client/src/main/java/Npc.java | 194 + rs-client/src/main/java/NpcDefinition.java | 747 ++ rs-client/src/main/java/ObjectDefinition.java | 950 +++ rs-client/src/main/java/ObjectNode.java | 15 + rs-client/src/main/java/ObjectSound.java | 137 + rs-client/src/main/java/Occluder.java | 196 + .../src/main/java/OverlayDefinition.java | 249 + .../src/main/java/OwnWorldComparator.java | 88 + rs-client/src/main/java/PacketBuffer.java | 234 + rs-client/src/main/java/PacketBufferNode.java | 72 + rs-client/src/main/java/PacketWriter.java | 206 + .../src/main/java/ParamKeyDefinition.java | 395 + rs-client/src/main/java/PcmPlayer.java | 475 ++ .../src/main/java/PcmPlayerProvider.java | 16 + rs-client/src/main/java/PcmStream.java | 68 + rs-client/src/main/java/PcmStreamMixer.java | 210 + .../src/main/java/PcmStreamMixerListener.java | 23 + rs-client/src/main/java/PlatformInfo.java | 216 + .../src/main/java/PlatformInfoProvider.java | 16 + rs-client/src/main/java/Player.java | 545 ++ rs-client/src/main/java/PlayerAppearance.java | 417 ++ rs-client/src/main/java/PlayerType.java | 100 + rs-client/src/main/java/Players.java | 193 + rs-client/src/main/java/Projectile.java | 282 + rs-client/src/main/java/RasterProvider.java | 99 + rs-client/src/main/java/Rasterizer2D.java | 836 +++ rs-client/src/main/java/Rasterizer3D.java | 3449 +++++++++ rs-client/src/main/java/RawPcmStream.java | 1592 ++++ rs-client/src/main/java/RawSound.java | 60 + rs-client/src/main/java/RectangleMode.java | 68 + rs-client/src/main/java/ReflectionCheck.java | 57 + rs-client/src/main/java/RunException.java | 70 + rs-client/src/main/java/Scene.java | 2603 +++++++ rs-client/src/main/java/Script.java | 138 + rs-client/src/main/java/ScriptEvent.java | 355 + rs-client/src/main/java/ScriptFrame.java | 70 + .../src/main/java/SecureRandomCallable.java | 143 + .../src/main/java/SecureRandomFuture.java | 102 + .../src/main/java/SequenceDefinition.java | 378 + rs-client/src/main/java/ServerBuild.java | 64 + rs-client/src/main/java/ServerPacket.java | 731 ++ rs-client/src/main/java/Skeleton.java | 195 + rs-client/src/main/java/Skills.java | 93 + rs-client/src/main/java/SoftWrapper.java | 27 + rs-client/src/main/java/SoundCache.java | 225 + rs-client/src/main/java/SoundEffect.java | 133 + rs-client/src/main/java/SoundEnvelope.java | 111 + rs-client/src/main/java/SoundSystem.java | 72 + .../main/java/SpotAnimationDefinition.java | 243 + rs-client/src/main/java/Sprite.java | 1666 +++++ rs-client/src/main/java/SpriteIds.java | 169 + rs-client/src/main/java/SpriteMask.java | 107 + rs-client/src/main/java/Strings.java | 65 + rs-client/src/main/java/StructDefinition.java | 292 + rs-client/src/main/java/StudioGame.java | 93 + rs-client/src/main/java/Task.java | 38 + rs-client/src/main/java/TaskHandler.java | 179 + rs-client/src/main/java/Texture.java | 268 + rs-client/src/main/java/TextureLoader.java | 35 + rs-client/src/main/java/TextureProvider.java | 480 ++ rs-client/src/main/java/Tile.java | 289 + rs-client/src/main/java/TileLocation.java | 102 + rs-client/src/main/java/TileModel.java | 315 + rs-client/src/main/java/TilePaint.java | 130 + rs-client/src/main/java/Tiles.java | 99 + rs-client/src/main/java/Timer.java | 192 + .../main/java/TotalQuantityComparator.java | 213 + rs-client/src/main/java/TriBool.java | 51 + .../src/main/java/UnderlayDefinition.java | 186 + .../src/main/java/UnitPriceComparator.java | 206 + rs-client/src/main/java/UrlRequest.java | 58 + rs-client/src/main/java/UrlRequester.java | 295 + rs-client/src/main/java/User.java | 82 + rs-client/src/main/java/UserComparator1.java | 39 + rs-client/src/main/java/UserComparator10.java | 57 + rs-client/src/main/java/UserComparator2.java | 39 + rs-client/src/main/java/UserComparator3.java | 54 + rs-client/src/main/java/UserComparator4.java | 95 + rs-client/src/main/java/UserComparator5.java | 66 + rs-client/src/main/java/UserComparator6.java | 75 + rs-client/src/main/java/UserComparator7.java | 167 + rs-client/src/main/java/UserComparator8.java | 50 + rs-client/src/main/java/UserComparator9.java | 93 + rs-client/src/main/java/UserList.java | 333 + rs-client/src/main/java/Username.java | 92 + rs-client/src/main/java/Usernamed.java | 16 + rs-client/src/main/java/VarbitDefinition.java | 97 + rs-client/src/main/java/VarcInt.java | 82 + rs-client/src/main/java/Varcs.java | 433 ++ rs-client/src/main/java/VarpDefinition.java | 72 + rs-client/src/main/java/Varps.java | 61 + rs-client/src/main/java/VertexNormal.java | 81 + rs-client/src/main/java/ViewportMouse.java | 154 + rs-client/src/main/java/WallDecoration.java | 106 + rs-client/src/main/java/Widget.java | 1594 ++++ .../src/main/java/WidgetGroupParent.java | 113 + rs-client/src/main/java/World.java | 146 + rs-client/src/main/java/WorldComparator.java | 207 + rs-client/src/main/java/WorldMap.java | 1439 ++++ rs-client/src/main/java/WorldMapArea.java | 444 ++ rs-client/src/main/java/WorldMapAreaData.java | 297 + .../src/main/java/WorldMapCacheName.java | 189 + rs-client/src/main/java/WorldMapElement.java | 331 + rs-client/src/main/java/WorldMapEvent.java | 269 + rs-client/src/main/java/WorldMapIcon1.java | 219 + rs-client/src/main/java/WorldMapIcon2.java | 198 + .../main/java/WorldMapIndexCacheLoader.java | 109 + rs-client/src/main/java/WorldMapLabel.java | 266 + .../src/main/java/WorldMapLabelSize.java | 135 + rs-client/src/main/java/WorldMapManager.java | 529 ++ rs-client/src/main/java/WorldMapRegion.java | 1153 +++ rs-client/src/main/java/WorldMapSection.java | 56 + rs-client/src/main/java/WorldMapSection0.java | 294 + rs-client/src/main/java/WorldMapSection1.java | 330 + rs-client/src/main/java/WorldMapSection2.java | 317 + rs-client/src/main/java/WorldMapSection3.java | 272 + .../src/main/java/WorldMapSectionType.java | 141 + rs-client/src/main/java/Wrapper.java | 23 + rs-client/src/main/java/class0.java | 19 + rs-client/src/main/java/class1.java | 278 + rs-client/src/main/java/class102.java | 316 + rs-client/src/main/java/class109.java | 121 + rs-client/src/main/java/class11.java | 274 + rs-client/src/main/java/class114.java | 36 + rs-client/src/main/java/class12.java | 164 + rs-client/src/main/java/class13.java | 86 + rs-client/src/main/java/class14.java | 63 + rs-client/src/main/java/class15.java | 210 + rs-client/src/main/java/class157.java | 45 + rs-client/src/main/java/class159.java | 61 + rs-client/src/main/java/class16.java | 591 ++ rs-client/src/main/java/class160.java | 5 + rs-client/src/main/java/class161.java | 14 + rs-client/src/main/java/class168.java | 72 + rs-client/src/main/java/class171.java | 657 ++ rs-client/src/main/java/class178.java | 25 + rs-client/src/main/java/class179.java | 81 + rs-client/src/main/java/class190.java | 135 + rs-client/src/main/java/class192.java | 13 + rs-client/src/main/java/class196.java | 50 + rs-client/src/main/java/class197.java | 13 + rs-client/src/main/java/class198.java | 14 + rs-client/src/main/java/class2.java | 149 + rs-client/src/main/java/class203.java | 78 + rs-client/src/main/java/class204.java | 99 + rs-client/src/main/java/class206.java | 14 + rs-client/src/main/java/class21.java | 444 ++ rs-client/src/main/java/class210.java | 219 + rs-client/src/main/java/class211.java | 220 + rs-client/src/main/java/class212.java | 73 + rs-client/src/main/java/class214.java | 121 + rs-client/src/main/java/class22.java | 123 + rs-client/src/main/java/class226.java | 148 + rs-client/src/main/java/class227.java | 385 + rs-client/src/main/java/class229.java | 141 + rs-client/src/main/java/class230.java | 85 + rs-client/src/main/java/class231.java | 196 + rs-client/src/main/java/class233.java | 50 + rs-client/src/main/java/class234.java | 52 + rs-client/src/main/java/class236.java | 134 + rs-client/src/main/java/class237.java | 15 + rs-client/src/main/java/class238.java | 598 ++ rs-client/src/main/java/class248.java | 333 + rs-client/src/main/java/class249.java | 47 + rs-client/src/main/java/class25.java | 103 + rs-client/src/main/java/class258.java | 67 + rs-client/src/main/java/class266.java | 68 + rs-client/src/main/java/class27.java | 71 + rs-client/src/main/java/class277.java | 114 + rs-client/src/main/java/class279.java | 29 + rs-client/src/main/java/class3.java | 330 + rs-client/src/main/java/class30.java | 123 + rs-client/src/main/java/class303.java | 13 + rs-client/src/main/java/class304.java | 13 + rs-client/src/main/java/class305.java | 17 + rs-client/src/main/java/class306.java | 91 + rs-client/src/main/java/class307.java | 104 + rs-client/src/main/java/class308.java | 16 + rs-client/src/main/java/class309.java | 13 + rs-client/src/main/java/class31.java | 270 + rs-client/src/main/java/class310.java | 37 + rs-client/src/main/java/class311.java | 41 + rs-client/src/main/java/class313.java | 77 + rs-client/src/main/java/class32.java | 109 + rs-client/src/main/java/class322.java | 27 + rs-client/src/main/java/class328.java | 37 + rs-client/src/main/java/class337.java | 10 + rs-client/src/main/java/class39.java | 828 ++ rs-client/src/main/java/class4.java | 331 + rs-client/src/main/java/class40.java | 884 +++ rs-client/src/main/java/class46.java | 25 + rs-client/src/main/java/class48.java | 73 + rs-client/src/main/java/class50.java | 266 + rs-client/src/main/java/class54.java | 1200 +++ rs-client/src/main/java/class60.java | 28 + rs-client/src/main/java/class65.java | 238 + rs-client/src/main/java/class68.java | 136 + rs-client/src/main/java/class72.java | 639 ++ rs-client/src/main/java/class80.java | 47 + rs-client/src/main/java/class83.java | 65 + rs-client/src/main/java/class98.java | 228 + .../main/java/net/runelite/rs/Opcodes.java | 4 + .../main/java/net/runelite/rs/Reflection.java | 315 + 334 files changed, 90772 insertions(+) create mode 100644 rs-client/pom.xml create mode 100644 rs-client/src/main/java/AbstractByteArrayCopier.java create mode 100644 rs-client/src/main/java/AbstractFont.java create mode 100644 rs-client/src/main/java/AbstractIndexCache.java create mode 100644 rs-client/src/main/java/AbstractRasterProvider.java create mode 100644 rs-client/src/main/java/AbstractSocket.java create mode 100644 rs-client/src/main/java/AbstractSound.java create mode 100644 rs-client/src/main/java/AbstractUserComparator.java create mode 100644 rs-client/src/main/java/AbstractWorldMapIcon.java create mode 100644 rs-client/src/main/java/AccessFile.java create mode 100644 rs-client/src/main/java/Actor.java create mode 100644 rs-client/src/main/java/Animation.java create mode 100644 rs-client/src/main/java/AttackOption.java create mode 100644 rs-client/src/main/java/AudioFilter.java create mode 100644 rs-client/src/main/java/BoundaryObject.java create mode 100644 rs-client/src/main/java/Bounds.java create mode 100644 rs-client/src/main/java/Buddy.java create mode 100644 rs-client/src/main/java/Buffer.java create mode 100644 rs-client/src/main/java/BufferedFile.java create mode 100644 rs-client/src/main/java/BufferedNetSocket.java create mode 100644 rs-client/src/main/java/BufferedSink.java create mode 100644 rs-client/src/main/java/BufferedSource.java create mode 100644 rs-client/src/main/java/ByteArrayNode.java create mode 100644 rs-client/src/main/java/ByteArrayPool.java create mode 100644 rs-client/src/main/java/Bzip2Decompressor.java create mode 100644 rs-client/src/main/java/Bzip2State.java create mode 100644 rs-client/src/main/java/Canvas.java create mode 100644 rs-client/src/main/java/ChatChannel.java create mode 100644 rs-client/src/main/java/ClanChat.java create mode 100644 rs-client/src/main/java/ClanMate.java create mode 100644 rs-client/src/main/java/Client.java create mode 100644 rs-client/src/main/java/ClientPacket.java create mode 100644 rs-client/src/main/java/ClientPacketMarker.java create mode 100644 rs-client/src/main/java/ClientParameter.java create mode 100644 rs-client/src/main/java/ClientPreferences.java create mode 100644 rs-client/src/main/java/Clock.java create mode 100644 rs-client/src/main/java/CollisionMap.java create mode 100644 rs-client/src/main/java/Decimator.java create mode 100644 rs-client/src/main/java/DemotingHashTable.java create mode 100644 rs-client/src/main/java/DesktopPlatformInfoProvider.java create mode 100644 rs-client/src/main/java/DevicePcmPlayer.java create mode 100644 rs-client/src/main/java/DevicePcmPlayerProvider.java create mode 100644 rs-client/src/main/java/DirectByteArrayCopier.java create mode 100644 rs-client/src/main/java/DirectWrapper.java create mode 100644 rs-client/src/main/java/DualNode.java create mode 100644 rs-client/src/main/java/DualNodeDeque.java create mode 100644 rs-client/src/main/java/DynamicObject.java create mode 100644 rs-client/src/main/java/Entity.java create mode 100644 rs-client/src/main/java/EnumDefinition.java create mode 100644 rs-client/src/main/java/Enumerated.java create mode 100644 rs-client/src/main/java/EvictingDualNodeHashTable.java create mode 100644 rs-client/src/main/java/FaceNormal.java create mode 100644 rs-client/src/main/java/FloorDecoration.java create mode 100644 rs-client/src/main/java/Font.java create mode 100644 rs-client/src/main/java/FontName.java create mode 100644 rs-client/src/main/java/Fonts.java create mode 100644 rs-client/src/main/java/Formatting.java create mode 100644 rs-client/src/main/java/Frames.java create mode 100644 rs-client/src/main/java/Friend.java create mode 100644 rs-client/src/main/java/FriendLoginUpdate.java create mode 100644 rs-client/src/main/java/FriendSystem.java create mode 100644 rs-client/src/main/java/FriendsList.java create mode 100644 rs-client/src/main/java/GameObject.java create mode 100644 rs-client/src/main/java/GameShell.java create mode 100644 rs-client/src/main/java/GrandExchangeEvent.java create mode 100644 rs-client/src/main/java/GrandExchangeEvents.java create mode 100644 rs-client/src/main/java/GrandExchangeOffer.java create mode 100644 rs-client/src/main/java/GraphicsObject.java create mode 100644 rs-client/src/main/java/GroundItem.java create mode 100644 rs-client/src/main/java/GroundItemPile.java create mode 100644 rs-client/src/main/java/GzipDecompressor.java create mode 100644 rs-client/src/main/java/HealthBar.java create mode 100644 rs-client/src/main/java/HealthBarDefinition.java create mode 100644 rs-client/src/main/java/HealthBarUpdate.java create mode 100644 rs-client/src/main/java/HitSplatDefinition.java create mode 100644 rs-client/src/main/java/Huffman.java create mode 100644 rs-client/src/main/java/IgnoreList.java create mode 100644 rs-client/src/main/java/Ignored.java create mode 100644 rs-client/src/main/java/IndexCache.java create mode 100644 rs-client/src/main/java/IndexCacheLoader.java create mode 100644 rs-client/src/main/java/IndexStore.java create mode 100644 rs-client/src/main/java/IndexStoreAction.java create mode 100644 rs-client/src/main/java/IndexStoreActionHandler.java create mode 100644 rs-client/src/main/java/IndexedSprite.java create mode 100644 rs-client/src/main/java/Instrument.java create mode 100644 rs-client/src/main/java/IntHashTable.java create mode 100644 rs-client/src/main/java/IntegerNode.java create mode 100644 rs-client/src/main/java/Interpreter.java create mode 100644 rs-client/src/main/java/InvDefinition.java create mode 100644 rs-client/src/main/java/IsaacCipher.java create mode 100644 rs-client/src/main/java/ItemContainer.java create mode 100644 rs-client/src/main/java/ItemDefinition.java create mode 100644 rs-client/src/main/java/IterableDualNodeQueue.java create mode 100644 rs-client/src/main/java/IterableDualNodeQueueIterator.java create mode 100644 rs-client/src/main/java/IterableNodeDeque.java create mode 100644 rs-client/src/main/java/IterableNodeDequeDescendingIterator.java create mode 100644 rs-client/src/main/java/IterableNodeHashTable.java create mode 100644 rs-client/src/main/java/IterableNodeHashTableIterator.java create mode 100644 rs-client/src/main/java/KeyHandler.java create mode 100644 rs-client/src/main/java/KitDefinition.java create mode 100644 rs-client/src/main/java/Link.java create mode 100644 rs-client/src/main/java/LinkDeque.java create mode 100644 rs-client/src/main/java/Login.java create mode 100644 rs-client/src/main/java/LoginPacket.java create mode 100644 rs-client/src/main/java/LoginType.java create mode 100644 rs-client/src/main/java/MenuAction.java create mode 100644 rs-client/src/main/java/Message.java create mode 100644 rs-client/src/main/java/Messages.java create mode 100644 rs-client/src/main/java/MidiFileReader.java create mode 100644 rs-client/src/main/java/MidiPcmStream.java create mode 100644 rs-client/src/main/java/MilliClock.java create mode 100644 rs-client/src/main/java/Model.java create mode 100644 rs-client/src/main/java/ModelData.java create mode 100644 rs-client/src/main/java/ModelData0.java create mode 100644 rs-client/src/main/java/MouseHandler.java create mode 100644 rs-client/src/main/java/MouseRecorder.java create mode 100644 rs-client/src/main/java/MouseWheel.java create mode 100644 rs-client/src/main/java/MouseWheelHandler.java create mode 100644 rs-client/src/main/java/MusicPatch.java create mode 100644 rs-client/src/main/java/MusicPatchNode.java create mode 100644 rs-client/src/main/java/MusicPatchNode2.java create mode 100644 rs-client/src/main/java/MusicPatchPcmStream.java create mode 100644 rs-client/src/main/java/MusicSample.java create mode 100644 rs-client/src/main/java/MusicTrack.java create mode 100644 rs-client/src/main/java/NanoClock.java create mode 100644 rs-client/src/main/java/NetCache.java create mode 100644 rs-client/src/main/java/NetFileRequest.java create mode 100644 rs-client/src/main/java/NetSocket.java create mode 100644 rs-client/src/main/java/Node.java create mode 100644 rs-client/src/main/java/NodeDeque.java create mode 100644 rs-client/src/main/java/NodeHashTable.java create mode 100644 rs-client/src/main/java/Npc.java create mode 100644 rs-client/src/main/java/NpcDefinition.java create mode 100644 rs-client/src/main/java/ObjectDefinition.java create mode 100644 rs-client/src/main/java/ObjectNode.java create mode 100644 rs-client/src/main/java/ObjectSound.java create mode 100644 rs-client/src/main/java/Occluder.java create mode 100644 rs-client/src/main/java/OverlayDefinition.java create mode 100644 rs-client/src/main/java/OwnWorldComparator.java create mode 100644 rs-client/src/main/java/PacketBuffer.java create mode 100644 rs-client/src/main/java/PacketBufferNode.java create mode 100644 rs-client/src/main/java/PacketWriter.java create mode 100644 rs-client/src/main/java/ParamKeyDefinition.java create mode 100644 rs-client/src/main/java/PcmPlayer.java create mode 100644 rs-client/src/main/java/PcmPlayerProvider.java create mode 100644 rs-client/src/main/java/PcmStream.java create mode 100644 rs-client/src/main/java/PcmStreamMixer.java create mode 100644 rs-client/src/main/java/PcmStreamMixerListener.java create mode 100644 rs-client/src/main/java/PlatformInfo.java create mode 100644 rs-client/src/main/java/PlatformInfoProvider.java create mode 100644 rs-client/src/main/java/Player.java create mode 100644 rs-client/src/main/java/PlayerAppearance.java create mode 100644 rs-client/src/main/java/PlayerType.java create mode 100644 rs-client/src/main/java/Players.java create mode 100644 rs-client/src/main/java/Projectile.java create mode 100644 rs-client/src/main/java/RasterProvider.java create mode 100644 rs-client/src/main/java/Rasterizer2D.java create mode 100644 rs-client/src/main/java/Rasterizer3D.java create mode 100644 rs-client/src/main/java/RawPcmStream.java create mode 100644 rs-client/src/main/java/RawSound.java create mode 100644 rs-client/src/main/java/RectangleMode.java create mode 100644 rs-client/src/main/java/ReflectionCheck.java create mode 100644 rs-client/src/main/java/RunException.java create mode 100644 rs-client/src/main/java/Scene.java create mode 100644 rs-client/src/main/java/Script.java create mode 100644 rs-client/src/main/java/ScriptEvent.java create mode 100644 rs-client/src/main/java/ScriptFrame.java create mode 100644 rs-client/src/main/java/SecureRandomCallable.java create mode 100644 rs-client/src/main/java/SecureRandomFuture.java create mode 100644 rs-client/src/main/java/SequenceDefinition.java create mode 100644 rs-client/src/main/java/ServerBuild.java create mode 100644 rs-client/src/main/java/ServerPacket.java create mode 100644 rs-client/src/main/java/Skeleton.java create mode 100644 rs-client/src/main/java/Skills.java create mode 100644 rs-client/src/main/java/SoftWrapper.java create mode 100644 rs-client/src/main/java/SoundCache.java create mode 100644 rs-client/src/main/java/SoundEffect.java create mode 100644 rs-client/src/main/java/SoundEnvelope.java create mode 100644 rs-client/src/main/java/SoundSystem.java create mode 100644 rs-client/src/main/java/SpotAnimationDefinition.java create mode 100644 rs-client/src/main/java/Sprite.java create mode 100644 rs-client/src/main/java/SpriteIds.java create mode 100644 rs-client/src/main/java/SpriteMask.java create mode 100644 rs-client/src/main/java/Strings.java create mode 100644 rs-client/src/main/java/StructDefinition.java create mode 100644 rs-client/src/main/java/StudioGame.java create mode 100644 rs-client/src/main/java/Task.java create mode 100644 rs-client/src/main/java/TaskHandler.java create mode 100644 rs-client/src/main/java/Texture.java create mode 100644 rs-client/src/main/java/TextureLoader.java create mode 100644 rs-client/src/main/java/TextureProvider.java create mode 100644 rs-client/src/main/java/Tile.java create mode 100644 rs-client/src/main/java/TileLocation.java create mode 100644 rs-client/src/main/java/TileModel.java create mode 100644 rs-client/src/main/java/TilePaint.java create mode 100644 rs-client/src/main/java/Tiles.java create mode 100644 rs-client/src/main/java/Timer.java create mode 100644 rs-client/src/main/java/TotalQuantityComparator.java create mode 100644 rs-client/src/main/java/TriBool.java create mode 100644 rs-client/src/main/java/UnderlayDefinition.java create mode 100644 rs-client/src/main/java/UnitPriceComparator.java create mode 100644 rs-client/src/main/java/UrlRequest.java create mode 100644 rs-client/src/main/java/UrlRequester.java create mode 100644 rs-client/src/main/java/User.java create mode 100644 rs-client/src/main/java/UserComparator1.java create mode 100644 rs-client/src/main/java/UserComparator10.java create mode 100644 rs-client/src/main/java/UserComparator2.java create mode 100644 rs-client/src/main/java/UserComparator3.java create mode 100644 rs-client/src/main/java/UserComparator4.java create mode 100644 rs-client/src/main/java/UserComparator5.java create mode 100644 rs-client/src/main/java/UserComparator6.java create mode 100644 rs-client/src/main/java/UserComparator7.java create mode 100644 rs-client/src/main/java/UserComparator8.java create mode 100644 rs-client/src/main/java/UserComparator9.java create mode 100644 rs-client/src/main/java/UserList.java create mode 100644 rs-client/src/main/java/Username.java create mode 100644 rs-client/src/main/java/Usernamed.java create mode 100644 rs-client/src/main/java/VarbitDefinition.java create mode 100644 rs-client/src/main/java/VarcInt.java create mode 100644 rs-client/src/main/java/Varcs.java create mode 100644 rs-client/src/main/java/VarpDefinition.java create mode 100644 rs-client/src/main/java/Varps.java create mode 100644 rs-client/src/main/java/VertexNormal.java create mode 100644 rs-client/src/main/java/ViewportMouse.java create mode 100644 rs-client/src/main/java/WallDecoration.java create mode 100644 rs-client/src/main/java/Widget.java create mode 100644 rs-client/src/main/java/WidgetGroupParent.java create mode 100644 rs-client/src/main/java/World.java create mode 100644 rs-client/src/main/java/WorldComparator.java create mode 100644 rs-client/src/main/java/WorldMap.java create mode 100644 rs-client/src/main/java/WorldMapArea.java create mode 100644 rs-client/src/main/java/WorldMapAreaData.java create mode 100644 rs-client/src/main/java/WorldMapCacheName.java create mode 100644 rs-client/src/main/java/WorldMapElement.java create mode 100644 rs-client/src/main/java/WorldMapEvent.java create mode 100644 rs-client/src/main/java/WorldMapIcon1.java create mode 100644 rs-client/src/main/java/WorldMapIcon2.java create mode 100644 rs-client/src/main/java/WorldMapIndexCacheLoader.java create mode 100644 rs-client/src/main/java/WorldMapLabel.java create mode 100644 rs-client/src/main/java/WorldMapLabelSize.java create mode 100644 rs-client/src/main/java/WorldMapManager.java create mode 100644 rs-client/src/main/java/WorldMapRegion.java create mode 100644 rs-client/src/main/java/WorldMapSection.java create mode 100644 rs-client/src/main/java/WorldMapSection0.java create mode 100644 rs-client/src/main/java/WorldMapSection1.java create mode 100644 rs-client/src/main/java/WorldMapSection2.java create mode 100644 rs-client/src/main/java/WorldMapSection3.java create mode 100644 rs-client/src/main/java/WorldMapSectionType.java create mode 100644 rs-client/src/main/java/Wrapper.java create mode 100644 rs-client/src/main/java/class0.java create mode 100644 rs-client/src/main/java/class1.java create mode 100644 rs-client/src/main/java/class102.java create mode 100644 rs-client/src/main/java/class109.java create mode 100644 rs-client/src/main/java/class11.java create mode 100644 rs-client/src/main/java/class114.java create mode 100644 rs-client/src/main/java/class12.java create mode 100644 rs-client/src/main/java/class13.java create mode 100644 rs-client/src/main/java/class14.java create mode 100644 rs-client/src/main/java/class15.java create mode 100644 rs-client/src/main/java/class157.java create mode 100644 rs-client/src/main/java/class159.java create mode 100644 rs-client/src/main/java/class16.java create mode 100644 rs-client/src/main/java/class160.java create mode 100644 rs-client/src/main/java/class161.java create mode 100644 rs-client/src/main/java/class168.java create mode 100644 rs-client/src/main/java/class171.java create mode 100644 rs-client/src/main/java/class178.java create mode 100644 rs-client/src/main/java/class179.java create mode 100644 rs-client/src/main/java/class190.java create mode 100644 rs-client/src/main/java/class192.java create mode 100644 rs-client/src/main/java/class196.java create mode 100644 rs-client/src/main/java/class197.java create mode 100644 rs-client/src/main/java/class198.java create mode 100644 rs-client/src/main/java/class2.java create mode 100644 rs-client/src/main/java/class203.java create mode 100644 rs-client/src/main/java/class204.java create mode 100644 rs-client/src/main/java/class206.java create mode 100644 rs-client/src/main/java/class21.java create mode 100644 rs-client/src/main/java/class210.java create mode 100644 rs-client/src/main/java/class211.java create mode 100644 rs-client/src/main/java/class212.java create mode 100644 rs-client/src/main/java/class214.java create mode 100644 rs-client/src/main/java/class22.java create mode 100644 rs-client/src/main/java/class226.java create mode 100644 rs-client/src/main/java/class227.java create mode 100644 rs-client/src/main/java/class229.java create mode 100644 rs-client/src/main/java/class230.java create mode 100644 rs-client/src/main/java/class231.java create mode 100644 rs-client/src/main/java/class233.java create mode 100644 rs-client/src/main/java/class234.java create mode 100644 rs-client/src/main/java/class236.java create mode 100644 rs-client/src/main/java/class237.java create mode 100644 rs-client/src/main/java/class238.java create mode 100644 rs-client/src/main/java/class248.java create mode 100644 rs-client/src/main/java/class249.java create mode 100644 rs-client/src/main/java/class25.java create mode 100644 rs-client/src/main/java/class258.java create mode 100644 rs-client/src/main/java/class266.java create mode 100644 rs-client/src/main/java/class27.java create mode 100644 rs-client/src/main/java/class277.java create mode 100644 rs-client/src/main/java/class279.java create mode 100644 rs-client/src/main/java/class3.java create mode 100644 rs-client/src/main/java/class30.java create mode 100644 rs-client/src/main/java/class303.java create mode 100644 rs-client/src/main/java/class304.java create mode 100644 rs-client/src/main/java/class305.java create mode 100644 rs-client/src/main/java/class306.java create mode 100644 rs-client/src/main/java/class307.java create mode 100644 rs-client/src/main/java/class308.java create mode 100644 rs-client/src/main/java/class309.java create mode 100644 rs-client/src/main/java/class31.java create mode 100644 rs-client/src/main/java/class310.java create mode 100644 rs-client/src/main/java/class311.java create mode 100644 rs-client/src/main/java/class313.java create mode 100644 rs-client/src/main/java/class32.java create mode 100644 rs-client/src/main/java/class322.java create mode 100644 rs-client/src/main/java/class328.java create mode 100644 rs-client/src/main/java/class337.java create mode 100644 rs-client/src/main/java/class39.java create mode 100644 rs-client/src/main/java/class4.java create mode 100644 rs-client/src/main/java/class40.java create mode 100644 rs-client/src/main/java/class46.java create mode 100644 rs-client/src/main/java/class48.java create mode 100644 rs-client/src/main/java/class50.java create mode 100644 rs-client/src/main/java/class54.java create mode 100644 rs-client/src/main/java/class60.java create mode 100644 rs-client/src/main/java/class65.java create mode 100644 rs-client/src/main/java/class68.java create mode 100644 rs-client/src/main/java/class72.java create mode 100644 rs-client/src/main/java/class80.java create mode 100644 rs-client/src/main/java/class83.java create mode 100644 rs-client/src/main/java/class98.java create mode 100644 rs-client/src/main/java/net/runelite/rs/Opcodes.java create mode 100644 rs-client/src/main/java/net/runelite/rs/Reflection.java diff --git a/rs-client/pom.xml b/rs-client/pom.xml new file mode 100644 index 0000000000..15e789c898 --- /dev/null +++ b/rs-client/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + + com.runeswag + runeswag-parent + 1.0-SNAPSHOT + + + rs-client + RuneScape Client + + + + com.runeswag + api + 1.0-SNAPSHOT + + + + junit + junit + 4.12 + test + + + org.slf4j + slf4j-api + 1.7.12 + test + + + org.slf4j + slf4j-simple + 1.7.12 + test + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + \ No newline at end of file diff --git a/rs-client/src/main/java/AbstractByteArrayCopier.java b/rs-client/src/main/java/AbstractByteArrayCopier.java new file mode 100644 index 0000000000..246ec924b4 --- /dev/null +++ b/rs-client/src/main/java/AbstractByteArrayCopier.java @@ -0,0 +1,104 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gu") +@Implements("AbstractByteArrayCopier") +public abstract class AbstractByteArrayCopier { + @ObfuscatedName("f") + @Export("directBufferUnavailable") + static boolean directBufferUnavailable; + @ObfuscatedName("et") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("__gu_et") + static IndexCache __gu_et; + + static { + directBufferUnavailable = false; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[B", + garbageValue = "-1219910462" + ) + @Export("get") + abstract byte[] get(); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "([BI)V", + garbageValue = "-2034091753" + ) + @Export("set") + abstract void set(byte[] var1); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Liw;", + garbageValue = "1102198559" + ) + public static VarcInt method4021(int var0) { + VarcInt var1 = (VarcInt)VarcInt.__iw_f.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = VarcInt.__iw_m.takeRecord(19, var0); + var1 = new VarcInt(); + if(var2 != null) { + var1.__q_411(new Buffer(var2)); + } + + VarcInt.__iw_f.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1941491045" + ) + public static void method4023(int var0) { + if(var0 != -1) { + if(Widget.loadedWidgetGroups[var0]) { + Widget.Widget_indexCache.__h_399(var0); + if(Widget.widgets[var0] != null) { + boolean var1 = true; + + for(int var2 = 0; var2 < Widget.widgets[var0].length; ++var2) { + if(Widget.widgets[var0][var2] != null) { + if(Widget.widgets[var0][var2].type != 2) { + Widget.widgets[var0][var2] = null; + } else { + var1 = false; + } + } + } + + if(var1) { + Widget.widgets[var0] = null; + } + + Widget.loadedWidgetGroups[var0] = false; + } + } + } + } + + @ObfuscatedName("gb") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1256278627" + ) + static void method4024() { + PacketBufferNode var0 = Interpreter.method1915(ClientPacket.__gs_aw, Client.packetWriter.isaacCipher); + var0.packetBuffer.writeByte(SpotAnimationDefinition.method4822()); + var0.packetBuffer.writeShort(SoundCache.canvasWidth); + var0.packetBuffer.writeShort(Huffman.canvasHeight); + Client.packetWriter.__q_167(var0); + } +} diff --git a/rs-client/src/main/java/AbstractFont.java b/rs-client/src/main/java/AbstractFont.java new file mode 100644 index 0000000000..c78e90518f --- /dev/null +++ b/rs-client/src/main/java/AbstractFont.java @@ -0,0 +1,1072 @@ +import java.util.Random; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kt") +@Implements("AbstractFont") +public abstract class AbstractFont extends Rasterizer2D { + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("AbstractFont_modIconSprites") + public static IndexedSprite[] AbstractFont_modIconSprites; + @ObfuscatedName("k") + @Export("AbstractFont_strike") + static int AbstractFont_strike; + @ObfuscatedName("n") + @Export("AbstractFont_underline") + static int AbstractFont_underline; + @ObfuscatedName("i") + @Export("AbstractFont_previousShadow") + static int AbstractFont_previousShadow; + @ObfuscatedName("a") + @Export("AbstractFont_shadow") + static int AbstractFont_shadow; + @ObfuscatedName("z") + @Export("AbstractFont_previousColor") + static int AbstractFont_previousColor; + @ObfuscatedName("j") + @Export("AbstractFont_color") + static int AbstractFont_color; + @ObfuscatedName("s") + @Export("AbstractFont_alpha") + static int AbstractFont_alpha; + @ObfuscatedName("t") + @Export("AbstractFont_justificationTotal") + static int AbstractFont_justificationTotal; + @ObfuscatedName("y") + @Export("AbstractFont_justificationCurrent") + static int AbstractFont_justificationCurrent; + @ObfuscatedName("h") + @Export("AbstractFont_random") + static Random AbstractFont_random; + @ObfuscatedName("b") + @Export("AbstractFont_lines") + static String[] AbstractFont_lines; + @ObfuscatedName("m") + @Export("pixels") + byte[][] pixels; + @ObfuscatedName("f") + @Export("advances") + int[] advances; + @ObfuscatedName("q") + @Export("widths") + int[] widths; + @ObfuscatedName("w") + @Export("heights") + int[] heights; + @ObfuscatedName("o") + @Export("leftBearings") + int[] leftBearings; + @ObfuscatedName("u") + @Export("topBearings") + int[] topBearings; + @ObfuscatedName("g") + @Export("ascent") + public int ascent; + @ObfuscatedName("l") + @Export("maxAscent") + public int maxAscent; + @ObfuscatedName("e") + @Export("maxDescent") + public int maxDescent; + @ObfuscatedName("d") + @Export("kerning") + byte[] kerning; + + static { + AbstractFont_strike = -1; + AbstractFont_underline = -1; + AbstractFont_previousShadow = -1; + AbstractFont_shadow = -1; + AbstractFont_previousColor = 0; + AbstractFont_color = 0; + AbstractFont_alpha = 256; + AbstractFont_justificationTotal = 0; + AbstractFont_justificationCurrent = 0; + AbstractFont_random = new Random(); + AbstractFont_lines = new String[100]; + } + + AbstractFont(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5, int[] var6, byte[][] var7) { + this.pixels = new byte[256][]; + this.ascent = 0; + this.leftBearings = var2; + this.topBearings = var3; + this.widths = var4; + this.heights = var5; + this.readMetrics(var1); + this.pixels = var7; + int var8 = Integer.MAX_VALUE; + int var9 = Integer.MIN_VALUE; + + for(int var10 = 0; var10 < 256; ++var10) { + if(this.topBearings[var10] < var8 && this.heights[var10] != 0) { + var8 = this.topBearings[var10]; + } + + if(this.topBearings[var10] + this.heights[var10] > var9) { + var9 = this.topBearings[var10] + this.heights[var10]; + } + } + + this.maxAscent = this.ascent - var8; + this.maxDescent = var9 - this.ascent; + } + + AbstractFont(byte[] var1) { + this.pixels = new byte[256][]; + this.ascent = 0; + this.readMetrics(var1); + } + + @ObfuscatedName("m") + @Export("drawGlyph") + abstract void drawGlyph(byte[] var1, int var2, int var3, int var4, int var5, int var6); + + @ObfuscatedName("f") + @Export("drawGlyphAlpha") + abstract void drawGlyphAlpha(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7); + + @ObfuscatedName("l") + @Export("readMetrics") + void readMetrics(byte[] var1) { + this.advances = new int[256]; + int var2; + if(var1.length == 257) { + for(var2 = 0; var2 < this.advances.length; ++var2) { + this.advances[var2] = var1[var2] & 255; + } + + this.ascent = var1[256] & 255; + } else { + var2 = 0; + + for(int var3 = 0; var3 < 256; ++var3) { + this.advances[var3] = var1[var2++] & 255; + } + + int[] var10 = new int[256]; + int[] var4 = new int[256]; + + int var5; + for(var5 = 0; var5 < 256; ++var5) { + var10[var5] = var1[var2++] & 255; + } + + for(var5 = 0; var5 < 256; ++var5) { + var4[var5] = var1[var2++] & 255; + } + + byte[][] var11 = new byte[256][]; + + int var8; + for(int var6 = 0; var6 < 256; ++var6) { + var11[var6] = new byte[var10[var6]]; + byte var7 = 0; + + for(var8 = 0; var8 < var11[var6].length; ++var8) { + var7 += var1[var2++]; + var11[var6][var8] = var7; + } + } + + byte[][] var12 = new byte[256][]; + + int var13; + for(var13 = 0; var13 < 256; ++var13) { + var12[var13] = new byte[var10[var13]]; + byte var14 = 0; + + for(int var9 = 0; var9 < var12[var13].length; ++var9) { + var14 += var1[var2++]; + var12[var13][var9] = var14; + } + } + + this.kerning = new byte[65536]; + + for(var13 = 0; var13 < 256; ++var13) { + if(var13 != 32 && var13 != 160) { + for(var8 = 0; var8 < 256; ++var8) { + if(var8 != 32 && var8 != 160) { + this.kerning[var8 + (var13 << 8)] = (byte)method5658(var11, var12, var4, this.advances, var10, var13, var8); + } + } + } + } + + this.ascent = var4[32] + var10[32]; + } + + } + + @ObfuscatedName("x") + @Export("charWidth") + int charWidth(char var1) { + if(var1 == 160) { + var1 = ' '; + } + + return this.advances[HealthBar.charToByteCp1252(var1) & 255]; + } + + @ObfuscatedName("d") + @Export("stringWidth") + public int stringWidth(String var1) { + if(var1 == null) { + return 0; + } else { + int var2 = -1; + int var3 = -1; + int var4 = 0; + + for(int var5 = 0; var5 < var1.length(); ++var5) { + char var6 = var1.charAt(var5); + if(var6 == '<') { + var2 = var5; + } else { + if(var6 == '>' && var2 != -1) { + String var7 = var1.substring(var2 + 1, var5); + var2 = -1; + if(var7.equals("lt")) { + var6 = '<'; + } else { + if(!var7.equals("gt")) { + if(var7.startsWith("img=")) { + try { + int var8 = MouseHandler.method1085(var7.substring(4)); + var4 += AbstractFont_modIconSprites[var8].width; + var3 = -1; + } catch (Exception var10) { + ; + } + } + continue; + } + + var6 = '>'; + } + } + + if(var6 == 160) { + var6 = ' '; + } + + if(var2 == -1) { + var4 += this.advances[(char)(HealthBar.charToByteCp1252(var6) & 255)]; + if(this.kerning != null && var3 != -1) { + var4 += this.kerning[var6 + (var3 << 8)]; + } + + var3 = var6; + } + } + } + + return var4; + } + } + + @ObfuscatedName("a") + @Export("breakLines") + public int breakLines(String var1, int[] var2, String[] var3) { + if(var1 == null) { + return 0; + } else { + int var4 = 0; + int var5 = 0; + StringBuilder var6 = new StringBuilder(100); + int var7 = -1; + int var8 = 0; + byte var9 = 0; + int var10 = -1; + char var11 = 0; + int var12 = 0; + int var13 = var1.length(); + + for(int var14 = 0; var14 < var13; ++var14) { + char var15 = var1.charAt(var14); + if(var15 == '<') { + var10 = var14; + } else { + if(var15 == '>' && var10 != -1) { + String var16 = var1.substring(var10 + 1, var14); + var10 = -1; + var6.append('<'); + var6.append(var16); + var6.append('>'); + if(var16.equals("br")) { + var3[var12] = var6.toString().substring(var5, var6.length()); + ++var12; + var5 = var6.length(); + var4 = 0; + var7 = -1; + var11 = 0; + } else if(var16.equals("lt")) { + var4 += this.charWidth('<'); + if(this.kerning != null && var11 != -1) { + var4 += this.kerning[(var11 << '\b') + 60]; + } + + var11 = '<'; + } else if(var16.equals("gt")) { + var4 += this.charWidth('>'); + if(this.kerning != null && var11 != -1) { + var4 += this.kerning[(var11 << '\b') + 62]; + } + + var11 = '>'; + } else if(var16.startsWith("img=")) { + try { + int var17 = MouseHandler.method1085(var16.substring(4)); + var4 += AbstractFont_modIconSprites[var17].width; + var11 = 0; + } catch (Exception var20) { + ; + } + } + + var15 = 0; + } + + if(var10 == -1) { + if(var15 != 0) { + var6.append(var15); + var4 += this.charWidth(var15); + if(this.kerning != null && var11 != -1) { + var4 += this.kerning[var15 + (var11 << '\b')]; + } + + var11 = var15; + } + + if(var15 == ' ') { + var7 = var6.length(); + var8 = var4; + var9 = 1; + } + + if(var2 != null && var4 > var2[var12 < var2.length?var12:var2.length - 1] && var7 >= 0) { + var3[var12] = var6.toString().substring(var5, var7 - var9); + ++var12; + var5 = var7; + var7 = -1; + var4 -= var8; + var11 = 0; + } + + if(var15 == '-') { + var7 = var6.length(); + var8 = var4; + var9 = 0; + } + } + } + } + + String var19 = var6.toString(); + if(var19.length() > var5) { + var3[var12++] = var19.substring(var5, var19.length()); + } + + return var12; + } + } + + @ObfuscatedName("z") + @Export("lineWidth") + public int lineWidth(String var1, int var2) { + int var3 = this.breakLines(var1, new int[]{var2}, AbstractFont_lines); + int var4 = 0; + + for(int var5 = 0; var5 < var3; ++var5) { + int var6 = this.stringWidth(AbstractFont_lines[var5]); + if(var6 > var4) { + var4 = var6; + } + } + + return var4; + } + + @ObfuscatedName("j") + @Export("lineCount") + public int lineCount(String var1, int var2) { + return this.breakLines(var1, new int[]{var2}, AbstractFont_lines); + } + + @ObfuscatedName("t") + @Export("draw") + public void draw(String var1, int var2, int var3, int var4, int var5) { + if(var1 != null) { + this.reset(var4, var5); + this.draw0(var1, var2, var3); + } + } + + @ObfuscatedName("y") + @Export("drawAlpha") + public void drawAlpha(String var1, int var2, int var3, int var4, int var5, int var6) { + if(var1 != null) { + this.reset(var4, var5); + AbstractFont_alpha = var6; + this.draw0(var1, var2, var3); + } + } + + @ObfuscatedName("h") + @Export("drawRightAligned") + public void drawRightAligned(String var1, int var2, int var3, int var4, int var5) { + if(var1 != null) { + this.reset(var4, var5); + this.draw0(var1, var2 - this.stringWidth(var1), var3); + } + } + + @ObfuscatedName("b") + @Export("drawCentered") + public void drawCentered(String var1, int var2, int var3, int var4, int var5) { + if(var1 != null) { + this.reset(var4, var5); + this.draw0(var1, var2 - this.stringWidth(var1) / 2, var3); + } + } + + @ObfuscatedName("c") + @Export("drawLines") + public int drawLines(String var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) { + if(var1 == null) { + return 0; + } else { + this.reset(var6, var7); + if(var10 == 0) { + var10 = this.ascent; + } + + int[] var11 = new int[]{var4}; + if(var5 < var10 + this.maxAscent + this.maxDescent && var5 < var10 + var10) { + var11 = null; + } + + int var12 = this.breakLines(var1, var11, AbstractFont_lines); + if(var9 == 3 && var12 == 1) { + var9 = 1; + } + + int var13; + int var14; + if(var9 == 0) { + var13 = var3 + this.maxAscent; + } else if(var9 == 1) { + var13 = var3 + (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / 2 + this.maxAscent; + } else if(var9 == 2) { + var13 = var3 + var5 - this.maxDescent - var10 * (var12 - 1); + } else { + var14 = (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / (var12 + 1); + if(var14 < 0) { + var14 = 0; + } + + var13 = var3 + var14 + this.maxAscent; + var10 += var14; + } + + for(var14 = 0; var14 < var12; ++var14) { + if(var8 == 0) { + this.draw0(AbstractFont_lines[var14], var2, var13); + } else if(var8 == 1) { + this.draw0(AbstractFont_lines[var14], var2 + (var4 - this.stringWidth(AbstractFont_lines[var14])) / 2, var13); + } else if(var8 == 2) { + this.draw0(AbstractFont_lines[var14], var2 + var4 - this.stringWidth(AbstractFont_lines[var14]), var13); + } else if(var14 == var12 - 1) { + this.draw0(AbstractFont_lines[var14], var2, var13); + } else { + this.calculateLineJustification(AbstractFont_lines[var14], var4); + this.draw0(AbstractFont_lines[var14], var2, var13); + AbstractFont_justificationTotal = 0; + } + + var13 += var10; + } + + return var12; + } + } + + @ObfuscatedName("p") + @Export("drawCenteredWave") + public void drawCenteredWave(String var1, int var2, int var3, int var4, int var5, int var6) { + if(var1 != null) { + this.reset(var4, var5); + int[] var7 = new int[var1.length()]; + + for(int var8 = 0; var8 < var1.length(); ++var8) { + var7[var8] = (int)(Math.sin((double)var8 / 2.0D + (double)var6 / 5.0D) * 5.0D); + } + + this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var7); + } + } + + @ObfuscatedName("v") + @Export("drawCenteredWave2") + public void drawCenteredWave2(String var1, int var2, int var3, int var4, int var5, int var6) { + if(var1 != null) { + this.reset(var4, var5); + int[] var7 = new int[var1.length()]; + int[] var8 = new int[var1.length()]; + + for(int var9 = 0; var9 < var1.length(); ++var9) { + var7[var9] = (int)(Math.sin((double)var9 / 5.0D + (double)var6 / 5.0D) * 5.0D); + var8[var9] = (int)(Math.sin((double)var9 / 3.0D + (double)var6 / 5.0D) * 5.0D); + } + + this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, var7, var8); + } + } + + @ObfuscatedName("ag") + @Export("drawCenteredShake") + public void drawCenteredShake(String var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(var1 != null) { + this.reset(var4, var5); + double var8 = 7.0D - (double)var7 / 8.0D; + if(var8 < 0.0D) { + var8 = 0.0D; + } + + int[] var10 = new int[var1.length()]; + + for(int var11 = 0; var11 < var1.length(); ++var11) { + var10[var11] = (int)(Math.sin((double)var11 / 1.5D + (double)var6 / 1.0D) * var8); + } + + this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var10); + } + } + + @ObfuscatedName("aq") + @Export("drawRandomAlphaAndSpacing") + public void drawRandomAlphaAndSpacing(String var1, int var2, int var3, int var4, int var5, int var6) { + if(var1 != null) { + this.reset(var4, var5); + AbstractFont_random.setSeed((long)var6); + AbstractFont_alpha = 192 + (AbstractFont_random.nextInt() & 31); + int[] var7 = new int[var1.length()]; + int var8 = 0; + + for(int var9 = 0; var9 < var1.length(); ++var9) { + var7[var9] = var8; + if((AbstractFont_random.nextInt() & 3) == 0) { + ++var8; + } + } + + this.drawWithOffsets0(var1, var2, var3, var7, (int[])null); + } + } + + @ObfuscatedName("aj") + @Export("reset") + void reset(int var1, int var2) { + AbstractFont_strike = -1; + AbstractFont_underline = -1; + AbstractFont_previousShadow = var2; + AbstractFont_shadow = var2; + AbstractFont_previousColor = var1; + AbstractFont_color = var1; + AbstractFont_alpha = 256; + AbstractFont_justificationTotal = 0; + AbstractFont_justificationCurrent = 0; + } + + @ObfuscatedName("av") + @Export("decodeTag") + void decodeTag(String var1) { + try { + if(var1.startsWith("col=")) { + AbstractFont_color = class214.method4157(var1.substring(4), 16); + } else if(var1.equals("/col")) { + AbstractFont_color = AbstractFont_previousColor; + } else if(var1.startsWith("str=")) { + AbstractFont_strike = class214.method4157(var1.substring(4), 16); + } else if(var1.equals("str")) { + AbstractFont_strike = 8388608; + } else if(var1.equals("/str")) { + AbstractFont_strike = -1; + } else if(var1.startsWith("u=")) { + AbstractFont_underline = class214.method4157(var1.substring(2), 16); + } else if(var1.equals("u")) { + AbstractFont_underline = 0; + } else if(var1.equals("/u")) { + AbstractFont_underline = -1; + } else if(var1.startsWith("shad=")) { + AbstractFont_shadow = class214.method4157(var1.substring(5), 16); + } else if(var1.equals("shad")) { + AbstractFont_shadow = 0; + } else if(var1.equals("/shad")) { + AbstractFont_shadow = AbstractFont_previousShadow; + } else if(var1.equals("br")) { + this.reset(AbstractFont_previousColor, AbstractFont_previousShadow); + } + } catch (Exception var3) { + ; + } + + } + + @ObfuscatedName("ar") + @Export("calculateLineJustification") + void calculateLineJustification(String var1, int var2) { + int var3 = 0; + boolean var4 = false; + + for(int var5 = 0; var5 < var1.length(); ++var5) { + char var6 = var1.charAt(var5); + if(var6 == '<') { + var4 = true; + } else if(var6 == '>') { + var4 = false; + } else if(!var4 && var6 == ' ') { + ++var3; + } + } + + if(var3 > 0) { + AbstractFont_justificationTotal = (var2 - this.stringWidth(var1) << 8) / var3; + } + + } + + @ObfuscatedName("ac") + @Export("draw0") + void draw0(String var1, int var2, int var3) { + var3 -= this.ascent; + int var4 = -1; + int var5 = -1; + + for(int var6 = 0; var6 < var1.length(); ++var6) { + if(var1.charAt(var6) != 0) { + char var7 = (char)(HealthBar.charToByteCp1252(var1.charAt(var6)) & 255); + if(var7 == '<') { + var4 = var6; + } else { + int var9; + if(var7 == '>' && var4 != -1) { + String var8 = var1.substring(var4 + 1, var6); + var4 = -1; + if(var8.equals("lt")) { + var7 = '<'; + } else { + if(!var8.equals("gt")) { + if(var8.startsWith("img=")) { + try { + var9 = MouseHandler.method1085(var8.substring(4)); + IndexedSprite var10 = AbstractFont_modIconSprites[var9]; + var10.__q_496(var2, var3 + this.ascent - var10.height); + var2 += var10.width; + var5 = -1; + } catch (Exception var14) { + ; + } + } else { + this.decodeTag(var8); + } + continue; + } + + var7 = '>'; + } + } + + if(var7 == 160) { + var7 = ' '; + } + + if(var4 == -1) { + if(this.kerning != null && var5 != -1) { + var2 += this.kerning[var7 + (var5 << 8)]; + } + + int var12 = this.widths[var7]; + var9 = this.heights[var7]; + if(var7 != ' ') { + if(AbstractFont_alpha == 256) { + if(AbstractFont_shadow != -1) { + AbstractFont_drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var9, AbstractFont_shadow); + } + + this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color); + } else { + if(AbstractFont_shadow != -1) { + AbstractFont_drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var9, AbstractFont_shadow, AbstractFont_alpha); + } + + this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color, AbstractFont_alpha); + } + } else if(AbstractFont_justificationTotal > 0) { + AbstractFont_justificationCurrent += AbstractFont_justificationTotal; + var2 += AbstractFont_justificationCurrent >> 8; + AbstractFont_justificationCurrent &= 255; + } + + int var13 = this.advances[var7]; + if(AbstractFont_strike != -1) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var13, AbstractFont_strike); + } + + if(AbstractFont_underline != -1) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent + 1, var13, AbstractFont_underline); + } + + var2 += var13; + var5 = var7; + } + } + } + } + + } + + @ObfuscatedName("ay") + @Export("drawWithOffsets0") + void drawWithOffsets0(String var1, int var2, int var3, int[] var4, int[] var5) { + var3 -= this.ascent; + int var6 = -1; + int var7 = -1; + int var8 = 0; + + for(int var9 = 0; var9 < var1.length(); ++var9) { + if(var1.charAt(var9) != 0) { + char var10 = (char)(HealthBar.charToByteCp1252(var1.charAt(var9)) & 255); + if(var10 == '<') { + var6 = var9; + } else { + int var12; + int var13; + int var14; + if(var10 == '>' && var6 != -1) { + String var11 = var1.substring(var6 + 1, var9); + var6 = -1; + if(var11.equals("lt")) { + var10 = '<'; + } else { + if(!var11.equals("gt")) { + if(var11.startsWith("img=")) { + try { + if(var4 != null) { + var12 = var4[var8]; + } else { + var12 = 0; + } + + if(var5 != null) { + var13 = var5[var8]; + } else { + var13 = 0; + } + + ++var8; + var14 = MouseHandler.method1085(var11.substring(4)); + IndexedSprite var15 = AbstractFont_modIconSprites[var14]; + var15.__q_496(var12 + var2, var13 + (var3 + this.ascent - var15.height)); + var2 += var15.width; + var7 = -1; + } catch (Exception var19) { + ; + } + } else { + this.decodeTag(var11); + } + continue; + } + + var10 = '>'; + } + } + + if(var10 == 160) { + var10 = ' '; + } + + if(var6 == -1) { + if(this.kerning != null && var7 != -1) { + var2 += this.kerning[var10 + (var7 << 8)]; + } + + int var17 = this.widths[var10]; + var12 = this.heights[var10]; + if(var4 != null) { + var13 = var4[var8]; + } else { + var13 = 0; + } + + if(var5 != null) { + var14 = var5[var8]; + } else { + var14 = 0; + } + + ++var8; + if(var10 != ' ') { + if(AbstractFont_alpha == 256) { + if(AbstractFont_shadow != -1) { + AbstractFont_drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10] + 1, var3 + var14 + this.topBearings[var10] + 1, var17, var12, AbstractFont_shadow); + } + + this.drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color); + } else { + if(AbstractFont_shadow != -1) { + AbstractFont_drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10] + 1, var3 + var14 + this.topBearings[var10] + 1, var17, var12, AbstractFont_shadow, AbstractFont_alpha); + } + + this.drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color, AbstractFont_alpha); + } + } else if(AbstractFont_justificationTotal > 0) { + AbstractFont_justificationCurrent += AbstractFont_justificationTotal; + var2 += AbstractFont_justificationCurrent >> 8; + AbstractFont_justificationCurrent &= 255; + } + + int var18 = this.advances[var10]; + if(AbstractFont_strike != -1) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var18, AbstractFont_strike); + } + + if(AbstractFont_underline != -1) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent, var18, AbstractFont_underline); + } + + var2 += var18; + var7 = var10; + } + } + } + } + + } + + @ObfuscatedName("e") + static int method5658(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) { + int var7 = var2[var5]; + int var8 = var7 + var4[var5]; + int var9 = var2[var6]; + int var10 = var9 + var4[var6]; + int var11 = var7; + if(var9 > var7) { + var11 = var9; + } + + int var12 = var8; + if(var10 < var8) { + var12 = var10; + } + + int var13 = var3[var5]; + if(var3[var6] < var13) { + var13 = var3[var6]; + } + + byte[] var14 = var1[var5]; + byte[] var15 = var0[var6]; + int var16 = var11 - var7; + int var17 = var11 - var9; + + for(int var18 = var11; var18 < var12; ++var18) { + int var19 = var14[var16++] + var15[var17++]; + if(var19 < var13) { + var13 = var19; + } + } + + return -var13; + } + + @ObfuscatedName("s") + @Export("escapeBrackets") + public static String escapeBrackets(String var0) { + int var1 = var0.length(); + int var2 = 0; + + for(int var3 = 0; var3 < var1; ++var3) { + char var4 = var0.charAt(var3); + if(var4 == '<' || var4 == '>') { + var2 += 3; + } + } + + StringBuilder var6 = new StringBuilder(var1 + var2); + + for(int var7 = 0; var7 < var1; ++var7) { + char var5 = var0.charAt(var7); + if(var5 == '<') { + var6.append(""); + } else if(var5 == '>') { + var6.append(""); + } else { + var6.append(var5); + } + } + + return var6.toString(); + } + + @ObfuscatedName("ah") + @Export("AbstractFont_drawGlyph") + static void AbstractFont_drawGlyph(byte[] var0, int var1, int var2, int var3, int var4, int var5) { + int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var7 = Rasterizer2D.Rasterizer2D_width - var3; + int var8 = 0; + int var9 = 0; + int var10; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var4 -= var10; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var9 += var3 * var10; + var6 += var10 * Rasterizer2D.Rasterizer2D_width; + } + + if(var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var3 -= var10; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var9 += var10; + var6 += var10; + var8 += var10; + var7 += var10; + } + + if(var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var10 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var3 -= var10; + var8 += var10; + var7 += var10; + } + + if(var3 > 0 && var4 > 0) { + AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8); + } + } + + @ObfuscatedName("ak") + @Export("AbstractFont_placeGlyph") + static void AbstractFont_placeGlyph(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -(var5 >> 2); + var5 = -(var5 & 3); + + for(int var10 = -var6; var10 < 0; ++var10) { + int var11; + for(var11 = var9; var11 < 0; ++var11) { + if(var1[var3++] != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + + if(var1[var3++] != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + + if(var1[var3++] != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + + if(var1[var3++] != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + } + + for(var11 = var5; var11 < 0; ++var11) { + if(var1[var3++] != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + } + + var4 += var7; + var3 += var8; + } + + } + + @ObfuscatedName("aw") + @Export("AbstractFont_drawGlyphAlpha") + static void AbstractFont_drawGlyphAlpha(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var8 = Rasterizer2D.Rasterizer2D_width - var3; + int var9 = 0; + int var10 = 0; + int var11; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var4 -= var11; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var10 += var3 * var11; + var7 += var11 * Rasterizer2D.Rasterizer2D_width; + } + + if(var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var3 -= var11; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var10 += var11; + var7 += var11; + var9 += var11; + var8 += var11; + } + + if(var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var11 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var3 -= var11; + var9 += var11; + var8 += var11; + } + + if(var3 > 0 && var4 > 0) { + AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6); + } + } + + @ObfuscatedName("al") + @Export("AbstractFont_placeGlyphAlpha") + static void AbstractFont_placeGlyphAlpha(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + var2 = ((var2 & 65280) * var9 & 16711680) + (var9 * (var2 & 16711935) & -16711936) >> 8; + var9 = 256 - var9; + + for(int var10 = -var6; var10 < 0; ++var10) { + for(int var11 = -var5; var11 < 0; ++var11) { + if(var1[var3++] != 0) { + int var12 = var0[var4]; + var0[var4++] = (((var12 & 65280) * var9 & 16711680) + ((var12 & 16711935) * var9 & -16711936) >> 8) + var2; + } else { + ++var4; + } + } + + var4 += var7; + var3 += var8; + } + + } +} diff --git a/rs-client/src/main/java/AbstractIndexCache.java b/rs-client/src/main/java/AbstractIndexCache.java new file mode 100644 index 0000000000..bfd06c03eb --- /dev/null +++ b/rs-client/src/main/java/AbstractIndexCache.java @@ -0,0 +1,783 @@ +import java.lang.management.GarbageCollectorMXBean; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ir") +@Implements("AbstractIndexCache") +public abstract class AbstractIndexCache { + @ObfuscatedName("qb") + @ObfuscatedSignature( + signature = "Lco;" + ) + @Export("pcmPlayer1") + static PcmPlayer pcmPlayer1; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lgo;" + ) + @Export("gzipDecompressor") + static GzipDecompressor gzipDecompressor; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = -244224193 + ) + @Export("__ir_s") + static int __ir_s; + @ObfuscatedName("au") + @Export("garbageCollector") + static GarbageCollectorMXBean garbageCollector; + @ObfuscatedName("bu") + @ObfuscatedGetter( + intValue = 334735939 + ) + @Export("__ir_bu") + static int __ir_bu; + @ObfuscatedName("di") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache0") + static IndexCache indexCache0; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1694798923 + ) + @Export("archiveCount") + int archiveCount; + @ObfuscatedName("q") + @Export("archiveIds") + int[] archiveIds; + @ObfuscatedName("w") + @Export("archiveNameHashes") + int[] archiveNameHashes; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Llv;" + ) + @Export("archiveNameHashTable") + IntHashTable archiveNameHashTable; + @ObfuscatedName("u") + @Export("archiveCrcs") + int[] archiveCrcs; + @ObfuscatedName("g") + @Export("archiveVersions") + int[] archiveVersions; + @ObfuscatedName("l") + @Export("recordCounts") + int[] recordCounts; + @ObfuscatedName("e") + @Export("recordIds") + int[][] recordIds; + @ObfuscatedName("x") + @Export("recordNameHashes") + int[][] recordNameHashes; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "[Llv;" + ) + @Export("recordNameHashTables") + IntHashTable[] recordNameHashTables; + @ObfuscatedName("k") + @Export("archives") + Object[] archives; + @ObfuscatedName("n") + @Export("records") + Object[][] records; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -530370811 + ) + @Export("hash") + public int hash; + @ObfuscatedName("z") + @Export("releaseArchives") + boolean releaseArchives; + @ObfuscatedName("j") + @Export("shallowRecords") + boolean shallowRecords; + + static { + gzipDecompressor = new GzipDecompressor(); + __ir_s = 0; + } + + AbstractIndexCache(boolean var1, boolean var2) { + this.releaseArchives = var1; + this.shallowRecords = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BB)V", + garbageValue = "0" + ) + @Export("setIndexReference") + void setIndexReference(byte[] var1) { + this.hash = WallDecoration.method3257(var1, var1.length); + Buffer var2 = new Buffer(Strings.decompressBytes(var1)); + int var3 = var2.readUnsignedByte(); + if(var3 >= 5 && var3 <= 7) { + if(var3 >= 6) { + var2.readInt(); + } + + int var4 = var2.readUnsignedByte(); + if(var3 >= 7) { + this.archiveCount = var2.__ad_309(); + } else { + this.archiveCount = var2.__ag_302(); + } + + int var5 = 0; + int var6 = -1; + this.archiveIds = new int[this.archiveCount]; + int var7; + if(var3 >= 7) { + for(var7 = 0; var7 < this.archiveCount; ++var7) { + this.archiveIds[var7] = var5 += var2.__ad_309(); + if(this.archiveIds[var7] > var6) { + var6 = this.archiveIds[var7]; + } + } + } else { + for(var7 = 0; var7 < this.archiveCount; ++var7) { + this.archiveIds[var7] = var5 += var2.__ag_302(); + if(this.archiveIds[var7] > var6) { + var6 = this.archiveIds[var7]; + } + } + } + + this.archiveCrcs = new int[var6 + 1]; + this.archiveVersions = new int[var6 + 1]; + this.recordCounts = new int[var6 + 1]; + this.recordIds = new int[var6 + 1][]; + this.archives = new Object[var6 + 1]; + this.records = new Object[var6 + 1][]; + if(var4 != 0) { + this.archiveNameHashes = new int[var6 + 1]; + + for(var7 = 0; var7 < this.archiveCount; ++var7) { + this.archiveNameHashes[this.archiveIds[var7]] = var2.readInt(); + } + + this.archiveNameHashTable = new IntHashTable(this.archiveNameHashes); + } + + for(var7 = 0; var7 < this.archiveCount; ++var7) { + this.archiveCrcs[this.archiveIds[var7]] = var2.readInt(); + } + + for(var7 = 0; var7 < this.archiveCount; ++var7) { + this.archiveVersions[this.archiveIds[var7]] = var2.readInt(); + } + + for(var7 = 0; var7 < this.archiveCount; ++var7) { + this.recordCounts[this.archiveIds[var7]] = var2.__ag_302(); + } + + int var8; + int var9; + int var10; + int var11; + int var12; + if(var3 >= 7) { + for(var7 = 0; var7 < this.archiveCount; ++var7) { + var8 = this.archiveIds[var7]; + var9 = this.recordCounts[var8]; + var5 = 0; + var10 = -1; + this.recordIds[var8] = new int[var9]; + + for(var11 = 0; var11 < var9; ++var11) { + var12 = this.recordIds[var8][var11] = var5 += var2.__ad_309(); + if(var12 > var10) { + var10 = var12; + } + } + + this.records[var8] = new Object[var10 + 1]; + } + } else { + for(var7 = 0; var7 < this.archiveCount; ++var7) { + var8 = this.archiveIds[var7]; + var9 = this.recordCounts[var8]; + var5 = 0; + var10 = -1; + this.recordIds[var8] = new int[var9]; + + for(var11 = 0; var11 < var9; ++var11) { + var12 = this.recordIds[var8][var11] = var5 += var2.__ag_302(); + if(var12 > var10) { + var10 = var12; + } + } + + this.records[var8] = new Object[var10 + 1]; + } + } + + if(var4 != 0) { + this.recordNameHashes = new int[var6 + 1][]; + this.recordNameHashTables = new IntHashTable[var6 + 1]; + + for(var7 = 0; var7 < this.archiveCount; ++var7) { + var8 = this.archiveIds[var7]; + var9 = this.recordCounts[var8]; + this.recordNameHashes[var8] = new int[this.records[var8].length]; + + for(var10 = 0; var10 < var9; ++var10) { + this.recordNameHashes[var8][this.recordIds[var8][var10]] = var2.readInt(); + } + + this.recordNameHashTables[var8] = new IntHashTable(this.recordNameHashes[var8]); + } + } + + } else { + throw new RuntimeException(""); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2102142648" + ) + @Export("__f_392") + void __f_392(int var1) { + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(III)[B", + garbageValue = "1945577069" + ) + @Export("takeRecord") + public byte[] takeRecord(int var1, int var2) { + return this.takeRecordEncrypted(var1, var2, (int[])null); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II[II)[B", + garbageValue = "-1363136655" + ) + @Export("takeRecordEncrypted") + public byte[] takeRecordEncrypted(int var1, int var2, int[] var3) { + if(var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) { + if(this.records[var1][var2] == null) { + boolean var4 = this.buildRecords(var1, var3); + if(!var4) { + this.loadArchive(var1); + var4 = this.buildRecords(var1, var3); + if(!var4) { + return null; + } + } + } + + byte[] var5 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false); + if(this.shallowRecords) { + this.records[var1][var2] = null; + } + + return var5; + } else { + return null; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "-1822260214" + ) + @Export("tryLoadRecord") + public boolean tryLoadRecord(int var1, int var2) { + if(var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) { + if(this.records[var1][var2] != null) { + return true; + } else if(this.archives[var1] != null) { + return true; + } else { + this.loadArchive(var1); + return this.archives[var1] != null; + } + } else { + return false; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1923759754" + ) + @Export("__u_393") + public boolean __u_393(int var1) { + if(this.records.length == 1) { + return this.tryLoadRecord(0, var1); + } else if(this.records[var1].length == 1) { + return this.tryLoadRecord(var1, 0); + } else { + throw new RuntimeException(); + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-374594123" + ) + @Export("tryLoadArchive") + public boolean tryLoadArchive(int var1) { + if(this.archives[var1] != null) { + return true; + } else { + this.loadArchive(var1); + return this.archives[var1] != null; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1694975256" + ) + @Export("__l_394") + public boolean __l_394() { + boolean var1 = true; + + for(int var2 = 0; var2 < this.archiveIds.length; ++var2) { + int var3 = this.archiveIds[var2]; + if(this.archives[var3] == null) { + this.loadArchive(var3); + if(this.archives[var3] == null) { + var1 = false; + } + } + } + + return var1; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-1809769865" + ) + @Export("archiveLoadPercent") + int archiveLoadPercent(int var1) { + return this.archives[var1] != null?100:0; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(IS)[B", + garbageValue = "-10015" + ) + @Export("takeRecordFlat") + public byte[] takeRecordFlat(int var1) { + if(this.records.length == 1) { + return this.takeRecord(0, var1); + } else if(this.records[var1].length == 1) { + return this.takeRecord(var1, 0); + } else { + throw new RuntimeException(); + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(III)[B", + garbageValue = "-755739011" + ) + @Export("getRecord") + public byte[] getRecord(int var1, int var2) { + if(var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) { + if(this.records[var1][var2] == null) { + boolean var3 = this.buildRecords(var1, (int[])null); + if(!var3) { + this.loadArchive(var1); + var3 = this.buildRecords(var1, (int[])null); + if(!var3) { + return null; + } + } + } + + byte[] var4 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false); + return var4; + } else { + return null; + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(IB)[B", + garbageValue = "68" + ) + @Export("getRecordFlat") + public byte[] getRecordFlat(int var1) { + if(this.records.length == 1) { + return this.getRecord(0, var1); + } else if(this.records[var1].length == 1) { + return this.getRecord(var1, 0); + } else { + throw new RuntimeException(); + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1829145107" + ) + @Export("loadArchive") + void loadArchive(int var1) { + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(IB)[I", + garbageValue = "28" + ) + @Export("__j_395") + public int[] __j_395(int var1) { + return var1 >= 0 && var1 < this.recordIds.length?this.recordIds[var1]:null; + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "1178362496" + ) + @Export("__s_396") + public int __s_396(int var1) { + return this.records[var1].length; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1702434573" + ) + @Export("__t_397") + public int __t_397() { + return this.records.length; + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "38" + ) + @Export("__y_398") + public void __y_398() { + for(int var1 = 0; var1 < this.archives.length; ++var1) { + this.archives[var1] = null; + } + + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "330258899" + ) + @Export("__h_399") + public void __h_399(int var1) { + for(int var2 = 0; var2 < this.records[var1].length; ++var2) { + this.records[var1][var2] = null; + } + + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-709581639" + ) + @Export("__b_400") + public void __b_400() { + for(int var1 = 0; var1 < this.records.length; ++var1) { + if(this.records[var1] != null) { + for(int var2 = 0; var2 < this.records[var1].length; ++var2) { + this.records[var1][var2] = null; + } + } + } + + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(I[II)Z", + garbageValue = "-1835696874" + ) + @Export("buildRecords") + boolean buildRecords(int var1, int[] var2) { + if(this.archives[var1] == null) { + return false; + } else { + int var3 = this.recordCounts[var1]; + int[] var4 = this.recordIds[var1]; + Object[] var5 = this.records[var1]; + boolean var6 = true; + + for(int var7 = 0; var7 < var3; ++var7) { + if(var5[var4[var7]] == null) { + var6 = false; + break; + } + } + + if(var6) { + return true; + } else { + byte[] var18; + if(var2 == null || var2[0] == 0 && var2[1] == 0 && var2[2] == 0 && var2[3] == 0) { + var18 = TextureProvider.byteArrayFromObject(this.archives[var1], false); + } else { + var18 = TextureProvider.byteArrayFromObject(this.archives[var1], true); + Buffer var8 = new Buffer(var18); + var8.xteaDecrypt(var2, 5, var8.array.length); + } + + byte[] var20 = Strings.decompressBytes(var18); + if(this.releaseArchives) { + this.archives[var1] = null; + } + + if(var3 > 1) { + int var9 = var20.length; + --var9; + int var10 = var20[var9] & 255; + var9 -= var10 * var3 * 4; + Buffer var11 = new Buffer(var20); + int[] var12 = new int[var3]; + var11.index = var9; + + int var14; + int var15; + for(int var13 = 0; var13 < var10; ++var13) { + var14 = 0; + + for(var15 = 0; var15 < var3; ++var15) { + var14 += var11.readInt(); + var12[var15] += var14; + } + } + + byte[][] var19 = new byte[var3][]; + + for(var14 = 0; var14 < var3; ++var14) { + var19[var14] = new byte[var12[var14]]; + var12[var14] = 0; + } + + var11.index = var9; + var14 = 0; + + for(var15 = 0; var15 < var10; ++var15) { + int var16 = 0; + + for(int var17 = 0; var17 < var3; ++var17) { + var16 += var11.readInt(); + System.arraycopy(var20, var14, var19[var17], var12[var17], var16); + var12[var17] += var16; + var14 += var16; + } + } + + for(var15 = 0; var15 < var3; ++var15) { + if(!this.shallowRecords) { + var5[var4[var15]] = Projectile.byteArrayToObject(var19[var15], false); + } else { + var5[var4[var15]] = var19[var15]; + } + } + } else if(!this.shallowRecords) { + var5[var4[0]] = Projectile.byteArrayToObject(var20, false); + } else { + var5[var4[0]] = var20; + } + + return true; + } + } + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)I", + garbageValue = "-224510300" + ) + @Export("getArchiveId") + public int getArchiveId(String var1) { + var1 = var1.toLowerCase(); + return this.archiveNameHashTable.get(Client.hashString(var1)); + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)I", + garbageValue = "-443631072" + ) + @Export("getRecordId") + public int getRecordId(int var1, String var2) { + var2 = var2.toLowerCase(); + return this.recordNameHashTables[var1].get(Client.hashString(var2)); + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;B)Z", + garbageValue = "68" + ) + @Export("__ag_401") + public boolean __ag_401(String var1, String var2) { + var1 = var1.toLowerCase(); + var2 = var2.toLowerCase(); + int var3 = this.archiveNameHashTable.get(Client.hashString(var1)); + if(var3 < 0) { + return false; + } else { + int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2)); + return var4 >= 0; + } + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;S)[B", + garbageValue = "-22726" + ) + @Export("takeRecordByNames") + public byte[] takeRecordByNames(String var1, String var2) { + var1 = var1.toLowerCase(); + var2 = var2.toLowerCase(); + int var3 = this.archiveNameHashTable.get(Client.hashString(var1)); + int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2)); + return this.takeRecord(var3, var4); + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;I)Z", + garbageValue = "2140743930" + ) + @Export("tryLoadRecordByNames") + public boolean tryLoadRecordByNames(String var1, String var2) { + var1 = var1.toLowerCase(); + var2 = var2.toLowerCase(); + int var3 = this.archiveNameHashTable.get(Client.hashString(var1)); + int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2)); + return this.tryLoadRecord(var3, var4); + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Z", + garbageValue = "-1282569336" + ) + @Export("tryLoadArchiveByName") + public boolean tryLoadArchiveByName(String var1) { + var1 = var1.toLowerCase(); + int var2 = this.archiveNameHashTable.get(Client.hashString(var1)); + return this.tryLoadArchive(var2); + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "40" + ) + @Export("__ar_402") + public void __ar_402(String var1) { + var1 = var1.toLowerCase(); + int var2 = this.archiveNameHashTable.get(Client.hashString(var1)); + if(var2 >= 0) { + this.__f_392(var2); + } + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)I", + garbageValue = "-1645224643" + ) + @Export("archiveLoadPercentByName") + public int archiveLoadPercentByName(String var1) { + var1 = var1.toLowerCase(); + int var2 = this.archiveNameHashTable.get(Client.hashString(var1)); + return this.archiveLoadPercent(var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;Llh;I)Llh;", + garbageValue = "15597880" + ) + @Export("readStringIntParameters") + static final IterableNodeHashTable readStringIntParameters(Buffer var0, IterableNodeHashTable var1) { + int var2 = var0.readUnsignedByte(); + int var3; + if(var1 == null) { + var3 = World.method1759(var2); + var1 = new IterableNodeHashTable(var3); + } + + for(var3 = 0; var3 < var2; ++var3) { + boolean var4 = var0.readUnsignedByte() == 1; + int var5 = var0.readMedium(); + Object var6; + if(var4) { + var6 = new ObjectNode(var0.readStringCp1252NullTerminated()); + } else { + var6 = new IntegerNode(var0.readInt()); + } + + var1.put((Node)var6, (long)var5); + } + + return var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lby;S)V", + garbageValue = "-4702" + ) + @Export("runScript") + public static void runScript(ScriptEvent var0) { + GrandExchangeEvent.runScript0(var0, 500000); + } + + @ObfuscatedName("eg") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "308670894" + ) + static boolean method4585() { + if(Client.indexCacheLoaders != null && Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) { + while(Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) { + IndexCacheLoader var0 = (IndexCacheLoader)Client.indexCacheLoaders.get(Client.indexCacheLoaderIndex); + if(!var0.__m_122()) { + return false; + } + + ++Client.indexCacheLoaderIndex; + } + + return true; + } else { + return true; + } + } +} diff --git a/rs-client/src/main/java/AbstractRasterProvider.java b/rs-client/src/main/java/AbstractRasterProvider.java new file mode 100644 index 0000000000..7a487402b9 --- /dev/null +++ b/rs-client/src/main/java/AbstractRasterProvider.java @@ -0,0 +1,54 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lp") +@Implements("AbstractRasterProvider") +public abstract class AbstractRasterProvider { + @ObfuscatedName("ca") + @Export("__lp_ca") + static boolean __lp_ca; + @ObfuscatedName("q") + @Export("pixels") + public int[] pixels; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -560298363 + ) + @Export("width") + public int width; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -239960145 + ) + @Export("height") + public int height; + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-430495007" + ) + @Export("drawFull") + public abstract void drawFull(int var1, int var2); + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIIIB)V", + garbageValue = "18" + ) + @Export("draw") + public abstract void draw(int var1, int var2, int var3, int var4); + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "152864133" + ) + @Export("apply") + public final void apply() { + Rasterizer2D.Rasterizer2D_replace(this.pixels, this.width, this.height); + } +} diff --git a/rs-client/src/main/java/AbstractSocket.java b/rs-client/src/main/java/AbstractSocket.java new file mode 100644 index 0000000000..9748d7bcfc --- /dev/null +++ b/rs-client/src/main/java/AbstractSocket.java @@ -0,0 +1,72 @@ +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fu") +@Implements("AbstractSocket") +public abstract class AbstractSocket { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1765046516" + ) + @Export("isAvailable") + public abstract boolean isAvailable(int var1) throws IOException; + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1078471130" + ) + @Export("available") + public abstract int available() throws IOException; + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "516705222" + ) + @Export("readUnsignedByte") + public abstract int readUnsignedByte() throws IOException; + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "([BIII)I", + garbageValue = "-1089665746" + ) + @Export("read") + public abstract int read(byte[] var1, int var2, int var3) throws IOException; + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-86" + ) + @Export("write") + public abstract void write(byte[] var1, int var2, int var3) throws IOException; + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1252618448" + ) + @Export("close") + public abstract void close(); + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-15" + ) + public static void method3488(int var0) { + class214.__hf_o = 1; + class214.__hf_u = null; + class30.musicTrackArchiveId = -1; + GrandExchangeOffer.musicTrackFileId = -1; + WorldMapLabel.__aj_e = 0; + RectangleMode.musicTrackBoolean = false; + FaceNormal.__el_x = var0; + } +} diff --git a/rs-client/src/main/java/AbstractSound.java b/rs-client/src/main/java/AbstractSound.java new file mode 100644 index 0000000000..472f294011 --- /dev/null +++ b/rs-client/src/main/java/AbstractSound.java @@ -0,0 +1,11 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("dd") +@Implements("AbstractSound") +public abstract class AbstractSound extends Node { + @ObfuscatedName("u") + @Export("position") + int position; +} diff --git a/rs-client/src/main/java/AbstractUserComparator.java b/rs-client/src/main/java/AbstractUserComparator.java new file mode 100644 index 0000000000..2dae4f18da --- /dev/null +++ b/rs-client/src/main/java/AbstractUserComparator.java @@ -0,0 +1,69 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kf") +@Implements("AbstractUserComparator") +public abstract class AbstractUserComparator implements Comparator { + @ObfuscatedName("f") + @Export("__f") + Comparator __f; + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Ljava/util/Comparator;B)V", + garbageValue = "-2" + ) + @Export("__e_460") + final void __e_460(Comparator var1) { + if(this.__f == null) { + this.__f = var1; + } else if(this.__f instanceof AbstractUserComparator) { + ((AbstractUserComparator)this.__f).__e_460(var1); + } + + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Ljs;Ljs;I)I", + garbageValue = "-962181316" + ) + @Export("__x_461") + protected final int __x_461(User var1, User var2) { + return this.__f == null?0:this.__f.compare(var1, var2); + } + + @Export("__equals_462") + @ObfuscatedName("equals") + public boolean __equals_462(Object var1) { + return super.equals(var1); + } + + @ObfuscatedName("fu") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2048322935" + ) + static void method5437(int var0) { + if(var0 == -1 && !Client.__client_qq) { + class214.midiPcmStream.clear(); + class214.__hf_o = 1; + class214.__hf_u = null; + } else if(var0 != -1 && var0 != Client.__client_qy && Client.__client_qf != 0 && !Client.__client_qq) { + IndexCache var1 = UserComparator3.indexCache6; + int var2 = Client.__client_qf; + class214.__hf_o = 1; + class214.__hf_u = var1; + class30.musicTrackArchiveId = var0; + GrandExchangeOffer.musicTrackFileId = 0; + WorldMapLabel.__aj_e = var2; + RectangleMode.musicTrackBoolean = false; + FaceNormal.__el_x = 2; + } + + Client.__client_qy = var0; + } +} diff --git a/rs-client/src/main/java/AbstractWorldMapIcon.java b/rs-client/src/main/java/AbstractWorldMapIcon.java new file mode 100644 index 0000000000..c487caa190 --- /dev/null +++ b/rs-client/src/main/java/AbstractWorldMapIcon.java @@ -0,0 +1,176 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ak") +@Implements("AbstractWorldMapIcon") +public abstract class AbstractWorldMapIcon { + @ObfuscatedName("qj") + @ObfuscatedGetter( + intValue = -1942470229 + ) + @Export("__ak_qj") + static int __ak_qj; + @ObfuscatedName("ka") + @ObfuscatedGetter( + intValue = -1734004743 + ) + @Export("menuHeight") + static int menuHeight; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lhu;" + ) + @Export("coord2") + public final TileLocation coord2; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lhu;" + ) + @Export("coord1") + public final TileLocation coord1; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -521086143 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1065362217 + ) + @Export("__x") + int __x; + + @ObfuscatedSignature( + signature = "(Lhu;Lhu;)V" + ) + AbstractWorldMapIcon(TileLocation var1, TileLocation var2) { + this.coord1 = var1; + this.coord2 = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1990181988" + ) + public abstract int __m_15(); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Laj;", + garbageValue = "1159446036" + ) + abstract WorldMapLabel __f_16(); + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "75" + ) + abstract int __q_17(); + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1558233611" + ) + abstract int __w_18(); + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(IIB)Z", + garbageValue = "-63" + ) + @Export("__y_66") + boolean __y_66(int var1, int var2) { + return this.__b_68(var1, var2)?true:this.__c_69(var1, var2); + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1150380891" + ) + @Export("__h_67") + boolean __h_67() { + return this.__m_15() >= 0; + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "484201257" + ) + @Export("__b_68") + boolean __b_68(int var1, int var2) { + if(!this.__h_67()) { + return false; + } else { + WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.__m_15()); + int var4 = this.__q_17(); + int var5 = this.__w_18(); + switch(var3.field3287.field3528) { + case 0: + if(var1 < this.__e - var4 / 2 || var1 > var4 / 2 + this.__e) { + return false; + } + break; + case 1: + if(var1 >= this.__e && var1 < var4 + this.__e) { + break; + } + + return false; + case 2: + if(var1 <= this.__e - var4 || var1 > this.__e) { + return false; + } + } + + switch(var3.field3301.field3275) { + case 0: + if(var2 <= this.__x - var5 || var2 > this.__x) { + return false; + } + break; + case 1: + if(var2 < this.__x - var5 / 2 || var2 > var5 / 2 + this.__x) { + return false; + } + break; + case 2: + if(var2 < this.__x || var2 >= var5 + this.__x) { + return false; + } + } + + return true; + } + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "1201712205" + ) + @Export("__c_69") + boolean __c_69(int var1, int var2) { + WorldMapLabel var3 = this.__f_16(); + return var3 == null?false:(var1 >= this.__e - var3.width / 2 && var1 <= var3.width / 2 + this.__e?var2 >= this.__x && var2 <= var3.height + this.__x:false); + } + + @ObfuscatedName("es") + @ObfuscatedSignature( + signature = "(Lit;Ljava/lang/String;I)V", + garbageValue = "-1018878027" + ) + static void method625(IndexCache var0, String var1) { + IndexCacheLoader var2 = new IndexCacheLoader(var0, var1); + Client.indexCacheLoaders.add(var2); + Client.__client_sx += var2.__q; + } +} diff --git a/rs-client/src/main/java/AccessFile.java b/rs-client/src/main/java/AccessFile.java new file mode 100644 index 0000000000..ad6fd753e6 --- /dev/null +++ b/rs-client/src/main/java/AccessFile.java @@ -0,0 +1,188 @@ +import java.io.EOFException; +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.io.SyncFailedException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dk") +@Implements("AccessFile") +public final class AccessFile { + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1762891465 + ) + @Export("__dk_o") + static int __dk_o; + @ObfuscatedName("lm") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("__dk_lm") + static Widget __dk_lm; + @ObfuscatedName("m") + @Export("file") + RandomAccessFile file; + @ObfuscatedName("f") + @ObfuscatedGetter( + longValue = -5849841282281477349L + ) + @Export("capacity") + long capacity; + @ObfuscatedName("q") + @ObfuscatedGetter( + longValue = 7465414039279036117L + ) + @Export("index") + long index; + + public AccessFile(File var1, String var2, long var3) throws IOException { + if(var3 == -1L) { + var3 = Long.MAX_VALUE; + } + + if(var1.length() >= var3) { + var1.delete(); + } + + this.file = new RandomAccessFile(var1, var2); + this.capacity = var3; + this.index = 0L; + int var5 = this.file.read(); + if(var5 != -1 && !var2.equals("r")) { + this.file.seek(0L); + this.file.write(var5); + } + + this.file.seek(0L); + } + + @ObfuscatedName("m") + @Export("seek") + final void seek(long var1) throws IOException { + this.file.seek(var1); + this.index = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-86" + ) + @Export("write") + public final void write(byte[] var1, int var2, int var3) throws IOException { + if((long)var3 + this.index > this.capacity) { + this.file.seek(this.capacity + 1L); + this.file.write(1); + throw new EOFException(); + } else { + this.file.write(var1, var2, var3); + this.index += (long)var3; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-189309573" + ) + @Export("close") + public final void close() throws IOException { + this.closeSync(false); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "166642884" + ) + @Export("closeSync") + public final void closeSync(boolean var1) throws IOException { + if(this.file != null) { + if(var1) { + try { + this.file.getFD().sync(); + } catch (SyncFailedException var3) { + ; + } + } + + this.file.close(); + this.file = null; + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)J", + garbageValue = "-1069832112" + ) + @Export("length") + public final long length() throws IOException { + return this.file.length(); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "([BIII)I", + garbageValue = "971670468" + ) + @Export("read") + public final int read(byte[] var1, int var2, int var3) throws IOException { + int var4 = this.file.read(var1, var2, var3); + if(var4 > 0) { + this.index += (long)var4; + } + + return var4; + } + + @Export("__finalize_211") + @ObfuscatedName("finalize") + protected void __finalize_211() throws Throwable { + if(this.file != null) { + System.out.println(""); + this.close(); + } + + } + + @ObfuscatedName("ig") + @ObfuscatedSignature( + signature = "(Lho;Ljv;IIZI)V", + garbageValue = "-728558316" + ) + static final void method2726(Widget var0, ItemDefinition var1, int var2, int var3, boolean var4) { + String[] var5 = var1.inventoryActions; + byte var6 = -1; + String var7 = null; + if(var5 != null && var5[var3] != null) { + if(var3 == 0) { + var6 = 33; + } else if(var3 == 1) { + var6 = 34; + } else if(var3 == 2) { + var6 = 35; + } else if(var3 == 3) { + var6 = 36; + } else { + var6 = 37; + } + + var7 = var5[var3]; + } else if(var3 == 4) { + var6 = 37; + var7 = "Drop"; + } + + if(var6 != -1 && var7 != null) { + class16.insertMenuItem(var7, BufferedFile.colorStartTag(16748608) + var1.name, var6, var1.id, var2, var0.id, var4); + } + + } +} diff --git a/rs-client/src/main/java/Actor.java b/rs-client/src/main/java/Actor.java new file mode 100644 index 0000000000..4e6b943df3 --- /dev/null +++ b/rs-client/src/main/java/Actor.java @@ -0,0 +1,1358 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bz") +@Implements("Actor") +public abstract class Actor extends Entity { + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = -1573449469 + ) + @Export("x") + int x; + @ObfuscatedName("ar") + @ObfuscatedGetter( + intValue = 676600595 + ) + @Export("y") + int y; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = 1439711403 + ) + @Export("__ac") + int __ac; + @ObfuscatedName("ay") + @Export("__ay") + boolean __ay; + @ObfuscatedName("ah") + @ObfuscatedGetter( + intValue = -1357622739 + ) + @Export("size") + int size; + @ObfuscatedName("ak") + @ObfuscatedGetter( + intValue = 141226463 + ) + @Export("playerCycle") + int playerCycle; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = -299122235 + ) + @Export("idleSequence") + int idleSequence; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = -831787909 + ) + @Export("turnLeftSequence") + int turnLeftSequence; + @ObfuscatedName("ab") + @ObfuscatedGetter( + intValue = 1788714977 + ) + @Export("turnRightSequence") + int turnRightSequence; + @ObfuscatedName("ae") + @ObfuscatedGetter( + intValue = -2075997699 + ) + @Export("walkSequence") + int walkSequence; + @ObfuscatedName("at") + @ObfuscatedGetter( + intValue = -1598871111 + ) + @Export("walkTurnSequence") + int walkTurnSequence; + @ObfuscatedName("ad") + @ObfuscatedGetter( + intValue = -568830521 + ) + @Export("walkTurnLeftSequence") + int walkTurnLeftSequence; + @ObfuscatedName("ap") + @ObfuscatedGetter( + intValue = -257240117 + ) + @Export("walkTurnRightSequence") + int walkTurnRightSequence; + @ObfuscatedName("as") + @ObfuscatedGetter( + intValue = 1708570917 + ) + @Export("runSequence") + int runSequence; + @ObfuscatedName("am") + @Export("overheadText") + String overheadText; + @ObfuscatedName("an") + @Export("isAutoChatting") + boolean isAutoChatting; + @ObfuscatedName("az") + @Export("__az") + boolean __az; + @ObfuscatedName("au") + @ObfuscatedGetter( + intValue = 137508815 + ) + @Export("overheadTextCyclesRemaining") + int overheadTextCyclesRemaining; + @ObfuscatedName("ao") + @ObfuscatedGetter( + intValue = -1905191799 + ) + @Export("overheadTextColor") + int overheadTextColor; + @ObfuscatedName("aa") + @ObfuscatedGetter( + intValue = 541000549 + ) + @Export("overheadTextEffect") + int overheadTextEffect; + @ObfuscatedName("af") + @Export("hitSplatCount") + byte hitSplatCount; + @ObfuscatedName("ai") + @Export("hitSplatTypes") + int[] hitSplatTypes; + @ObfuscatedName("ba") + @Export("hitSplatValues") + int[] hitSplatValues; + @ObfuscatedName("bb") + @Export("hitSplatCycles") + int[] hitSplatCycles; + @ObfuscatedName("bs") + @Export("hitSplatTypes2") + int[] hitSplatTypes2; + @ObfuscatedName("bq") + @Export("hitSplatValues2") + int[] hitSplatValues2; + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "Lja;" + ) + @Export("healthBars") + IterableNodeDeque healthBars; + @ObfuscatedName("bk") + @ObfuscatedGetter( + intValue = -1387109107 + ) + @Export("targetIndex") + int targetIndex; + @ObfuscatedName("bd") + @Export("false0") + boolean false0; + @ObfuscatedName("bc") + @ObfuscatedGetter( + intValue = 139384875 + ) + @Export("__bc") + int __bc; + @ObfuscatedName("bo") + @ObfuscatedGetter( + intValue = 1614854211 + ) + @Export("movementSequence") + int movementSequence; + @ObfuscatedName("bx") + @ObfuscatedGetter( + intValue = -1119758739 + ) + @Export("movementFrame") + int movementFrame; + @ObfuscatedName("by") + @ObfuscatedGetter( + intValue = -1646413227 + ) + @Export("movementFrameCycle") + int movementFrameCycle; + @ObfuscatedName("bu") + @ObfuscatedGetter( + intValue = 323216015 + ) + @Export("sequence") + int sequence; + @ObfuscatedName("bm") + @ObfuscatedGetter( + intValue = 1425662251 + ) + @Export("sequenceFrame") + int sequenceFrame; + @ObfuscatedName("bl") + @ObfuscatedGetter( + intValue = -1753867715 + ) + @Export("sequenceFrameCycle") + int sequenceFrameCycle; + @ObfuscatedName("br") + @ObfuscatedGetter( + intValue = -134491649 + ) + @Export("sequenceDelay") + int sequenceDelay; + @ObfuscatedName("bj") + @ObfuscatedGetter( + intValue = -1523249259 + ) + @Export("__bj") + int __bj; + @ObfuscatedName("bi") + @ObfuscatedGetter( + intValue = -220610999 + ) + @Export("spotAnimation") + int spotAnimation; + @ObfuscatedName("bz") + @ObfuscatedGetter( + intValue = -2125404733 + ) + @Export("spotAnimationFrame") + int spotAnimationFrame; + @ObfuscatedName("bg") + @ObfuscatedGetter( + intValue = 330334599 + ) + @Export("spotAnimationFrameCycle") + int spotAnimationFrameCycle; + @ObfuscatedName("bt") + @ObfuscatedGetter( + intValue = 886371765 + ) + @Export("__bt") + int __bt; + @ObfuscatedName("bp") + @ObfuscatedGetter( + intValue = -779457309 + ) + @Export("heightOffset") + int heightOffset; + @ObfuscatedName("bf") + @ObfuscatedGetter( + intValue = 2121599561 + ) + @Export("__bf") + int __bf; + @ObfuscatedName("bh") + @ObfuscatedGetter( + intValue = 280591281 + ) + @Export("__bh") + int __bh; + @ObfuscatedName("be") + @ObfuscatedGetter( + intValue = 837989037 + ) + @Export("__be") + int __be; + @ObfuscatedName("bv") + @ObfuscatedGetter( + intValue = -1857513783 + ) + @Export("__bv") + int __bv; + @ObfuscatedName("bw") + @ObfuscatedGetter( + intValue = -1630403001 + ) + @Export("__bw") + int __bw; + @ObfuscatedName("cr") + @ObfuscatedGetter( + intValue = 1367256299 + ) + @Export("__cr") + int __cr; + @ObfuscatedName("cv") + @ObfuscatedGetter( + intValue = -1723834619 + ) + @Export("__cv") + int __cv; + @ObfuscatedName("ce") + @ObfuscatedGetter( + intValue = 2051334073 + ) + @Export("npcCycle") + int npcCycle; + @ObfuscatedName("cy") + @ObfuscatedGetter( + intValue = 1003085333 + ) + @Export("defaultHeight") + int defaultHeight; + @ObfuscatedName("cs") + @ObfuscatedGetter( + intValue = -1189634367 + ) + @Export("orientation") + int orientation; + @ObfuscatedName("cm") + @ObfuscatedGetter( + intValue = 1252341007 + ) + @Export("__cm") + int __cm; + @ObfuscatedName("cj") + @ObfuscatedGetter( + intValue = -336931157 + ) + @Export("__cj") + int __cj; + @ObfuscatedName("cu") + @ObfuscatedGetter( + intValue = -2033082375 + ) + @Export("pathLength") + int pathLength; + @ObfuscatedName("cb") + @Export("pathX") + int[] pathX; + @ObfuscatedName("ck") + @Export("pathY") + int[] pathY; + @ObfuscatedName("cn") + @Export("pathTraversed") + byte[] pathTraversed; + @ObfuscatedName("cq") + @ObfuscatedGetter( + intValue = -1583514013 + ) + @Export("__cq") + int __cq; + @ObfuscatedName("ch") + @ObfuscatedGetter( + intValue = 1584102533 + ) + @Export("__ch") + int __ch; + + Actor() { + this.__ay = false; + this.size = 1; + this.idleSequence = -1; + this.turnLeftSequence = -1; + this.turnRightSequence = -1; + this.walkSequence = -1; + this.walkTurnSequence = -1; + this.walkTurnLeftSequence = -1; + this.walkTurnRightSequence = -1; + this.runSequence = -1; + this.overheadText = null; + this.__az = false; + this.overheadTextCyclesRemaining = 100; + this.overheadTextColor = 0; + this.overheadTextEffect = 0; + this.hitSplatCount = 0; + this.hitSplatTypes = new int[4]; + this.hitSplatValues = new int[4]; + this.hitSplatCycles = new int[4]; + this.hitSplatTypes2 = new int[4]; + this.hitSplatValues2 = new int[4]; + this.healthBars = new IterableNodeDeque(); + this.targetIndex = -1; + this.false0 = false; + this.__bc = -1; + this.movementSequence = -1; + this.movementFrame = 0; + this.movementFrameCycle = 0; + this.sequence = -1; + this.sequenceFrame = 0; + this.sequenceFrameCycle = 0; + this.sequenceDelay = 0; + this.__bj = 0; + this.spotAnimation = -1; + this.spotAnimationFrame = 0; + this.spotAnimationFrameCycle = 0; + this.npcCycle = 0; + this.defaultHeight = 200; + this.__cm = 0; + this.__cj = 32; + this.pathLength = 0; + this.pathX = new int[10]; + this.pathY = new int[10]; + this.pathTraversed = new byte[10]; + this.__cq = 0; + this.__ch = 0; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "1" + ) + boolean isVisible() { + return false; + } + + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1415393262" + ) + @Export("__bb_143") + final void __bb_143() { + this.pathLength = 0; + this.__ch = 0; + } + + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "(IIIIIII)V", + garbageValue = "-1925126781" + ) + @Export("addHitSplat") + final void addHitSplat(int var1, int var2, int var3, int var4, int var5, int var6) { + boolean var7 = true; + boolean var8 = true; + + int var9; + for(var9 = 0; var9 < 4; ++var9) { + if(this.hitSplatCycles[var9] > var5) { + var7 = false; + } else { + var8 = false; + } + } + + var9 = -1; + int var10 = -1; + int var11 = 0; + if(var1 >= 0) { + HitSplatDefinition var12 = class72.getHitSplatDefinition(var1); + var10 = var12.__c; + var11 = var12.__i; + } + + int var14; + if(var8) { + if(var10 == -1) { + return; + } + + var9 = 0; + var14 = 0; + if(var10 == 0) { + var14 = this.hitSplatCycles[0]; + } else if(var10 == 1) { + var14 = this.hitSplatValues[0]; + } + + for(int var13 = 1; var13 < 4; ++var13) { + if(var10 == 0) { + if(this.hitSplatCycles[var13] < var14) { + var9 = var13; + var14 = this.hitSplatCycles[var13]; + } + } else if(var10 == 1 && this.hitSplatValues[var13] < var14) { + var9 = var13; + var14 = this.hitSplatValues[var13]; + } + } + + if(var10 == 1 && var14 >= var2) { + return; + } + } else { + if(var7) { + this.hitSplatCount = 0; + } + + for(var14 = 0; var14 < 4; ++var14) { + byte var15 = this.hitSplatCount; + this.hitSplatCount = (byte)((this.hitSplatCount + 1) % 4); + if(this.hitSplatCycles[var15] <= var5) { + var9 = var15; + break; + } + } + } + + if(var9 >= 0) { + this.hitSplatTypes[var9] = var1; + this.hitSplatValues[var9] = var2; + this.hitSplatTypes2[var9] = var3; + this.hitSplatValues2[var9] = var4; + this.hitSplatCycles[var9] = var5 + var11 + var6; + } + } + + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "(IIIIIIB)V", + garbageValue = "27" + ) + @Export("addHealthBar") + final void addHealthBar(int var1, int var2, int var3, int var4, int var5, int var6) { + HealthBarDefinition var8 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1); + HealthBarDefinition var7; + if(var8 != null) { + var7 = var8; + } else { + byte[] var9 = HealthBarDefinition.__ii_m.takeRecord(33, var1); + var8 = new HealthBarDefinition(); + if(var9 != null) { + var8.read(new Buffer(var9)); + } + + HealthBarDefinition.HealthBarDefinition_cached.put(var8, (long)var1); + var7 = var8; + } + + var8 = var7; + HealthBar var14 = null; + HealthBar var10 = null; + int var11 = var7.int2; + int var12 = 0; + + HealthBar var13; + for(var13 = (HealthBar)this.healthBars.last(); var13 != null; var13 = (HealthBar)this.healthBars.previous()) { + ++var12; + if(var13.definition.__o == var8.__o) { + var13.put(var2 + var4, var5, var6, var3); + return; + } + + if(var13.definition.int1 <= var8.int1) { + var14 = var13; + } + + if(var13.definition.int2 > var11) { + var10 = var13; + var11 = var13.definition.int2; + } + } + + if(var10 != null || var12 < 4) { + var13 = new HealthBar(var8); + if(var14 == null) { + this.healthBars.addLast(var13); + } else { + IterableNodeDeque.IterableNodeDeque_addBefore(var13, var14); + } + + var13.put(var2 + var4, var5, var6, var3); + if(var12 >= 4) { + var10.remove(); + } + + } + } + + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "(IS)V", + garbageValue = "-31198" + ) + @Export("removeHealthBar") + final void removeHealthBar(int var1) { + HealthBarDefinition var3 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1); + HealthBarDefinition var2; + if(var3 != null) { + var2 = var3; + } else { + byte[] var4 = HealthBarDefinition.__ii_m.takeRecord(33, var1); + var3 = new HealthBarDefinition(); + if(var4 != null) { + var3.read(new Buffer(var4)); + } + + HealthBarDefinition.HealthBarDefinition_cached.put(var3, (long)var1); + var2 = var3; + } + + var3 = var2; + + for(HealthBar var5 = (HealthBar)this.healthBars.last(); var5 != null; var5 = (HealthBar)this.healthBars.previous()) { + if(var3 == var5.definition) { + var5.remove(); + return; + } + } + + } + + @ObfuscatedName("hb") + @ObfuscatedSignature( + signature = "(IIIILjava/lang/String;Ljava/lang/String;III)V", + garbageValue = "493234011" + ) + @Export("menuAction") + static final void menuAction(int var0, int var1, int var2, int var3, String var4, String var5, int var6, int var7) { + if(var2 >= 2000) { + var2 -= 2000; + } + + PacketBufferNode var8; + if(var2 == 1) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_an, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(GraphicsObject.baseY + var1); + var8.packetBuffer.writeShortLE(HealthBarDefinition.selectedItemSlot); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.writeIntLE(ServerPacket.selectedItemWidget); + var8.packetBuffer.__bx_323(var0 + class50.baseX); + var8.packetBuffer.writeShort(var3); + var8.packetBuffer.writeShortLE(MenuAction.selectedItemId); + Client.packetWriter.__q_167(var8); + } else if(var2 == 2) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_cg, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.writeShort(var0 + class50.baseX); + var8.packetBuffer.__bo_322(var3); + var8.packetBuffer.writeIntLE16(ServerBuild.__iy_lo); + var8.packetBuffer.writeShort(Client.__client_lc); + var8.packetBuffer.writeShortLE(GraphicsObject.baseY + var1); + Client.packetWriter.__q_167(var8); + } else if(var2 == 3) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_d, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShort(GraphicsObject.baseY + var1); + var8.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.__bo_322(var3); + var8.packetBuffer.__bx_323(var0 + class50.baseX); + Client.packetWriter.__q_167(var8); + } else if(var2 == 4) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_cv, Client.packetWriter.isaacCipher); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.writeShort(var3); + var8.packetBuffer.writeShort(GraphicsObject.baseY + var1); + var8.packetBuffer.writeShort(var0 + class50.baseX); + Client.packetWriter.__q_167(var8); + } else if(var2 == 5) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_cq, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(var0 + class50.baseX); + var8.packetBuffer.__bo_322(var3); + var8.packetBuffer.__bx_323(GraphicsObject.baseY + var1); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var8); + } else if(var2 == 6) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_w, Client.packetWriter.isaacCipher); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.__bo_322(GraphicsObject.baseY + var1); + var8.packetBuffer.__bo_322(var0 + class50.baseX); + var8.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var8); + } else { + PacketBufferNode var9; + Npc var13; + if(var2 == 7) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_r, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bx_323(MenuAction.selectedItemId); + var9.packetBuffer.writeShort(HealthBarDefinition.selectedItemSlot); + var9.packetBuffer.__bx_323(var3); + var9.packetBuffer.__ai_315(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.writeInt(ServerPacket.selectedItemWidget); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 8) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_cb, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bx_323(var3); + var9.packetBuffer.__ai_315(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.writeIntLE(ServerBuild.__iy_lo); + var9.packetBuffer.__bo_322(Client.__client_lc); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 9) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_bt, Client.packetWriter.isaacCipher); + var9.packetBuffer.__ai_315(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 10) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_f, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bo_322(var3); + var9.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 11) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_ah, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bx_323(var3); + var9.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 12) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_bc, Client.packetWriter.isaacCipher); + var9.packetBuffer.writeShort(var3); + var9.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 13) { + var13 = Client.npcs[var3]; + if(var13 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_ac, Client.packetWriter.isaacCipher); + var9.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.__bo_322(var3); + Client.packetWriter.__q_167(var9); + } + } else { + Player var15; + if(var2 == 14) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_cy, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bx_323(HealthBarDefinition.selectedItemSlot); + var9.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.writeIntME(ServerPacket.selectedItemWidget); + var9.packetBuffer.writeShort(var3); + var9.packetBuffer.writeShort(MenuAction.selectedItemId); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 15) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_bq, Client.packetWriter.isaacCipher); + var9.packetBuffer.writeIntLE16(ServerBuild.__iy_lo); + var9.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.__bo_322(Client.__client_lc); + var9.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 16) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_t, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntME(ServerPacket.selectedItemWidget); + var8.packetBuffer.__bx_323(MenuAction.selectedItemId); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.writeShortLE(HealthBarDefinition.selectedItemSlot); + var8.packetBuffer.__bx_323(var3); + var8.packetBuffer.__bx_323(var0 + class50.baseX); + var8.packetBuffer.writeShortLE(GraphicsObject.baseY + var1); + Client.packetWriter.__q_167(var8); + } else if(var2 == 17) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_bb, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntME(ServerBuild.__iy_lo); + var8.packetBuffer.writeShort(Client.__client_lc); + var8.packetBuffer.__bo_322(GraphicsObject.baseY + var1); + var8.packetBuffer.__bo_322(var0 + class50.baseX); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var8); + } else if(var2 == 18) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_u, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(GraphicsObject.baseY + var1); + var8.packetBuffer.writeShortLE(var3); + var8.packetBuffer.writeShortLE(var0 + class50.baseX); + var8.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var8); + } else if(var2 == 19) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_bh, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(var3); + var8.packetBuffer.__bo_322(var0 + class50.baseX); + var8.packetBuffer.writeShort(GraphicsObject.baseY + var1); + var8.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var8); + } else if(var2 == 20) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_g, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShortLE(GraphicsObject.baseY + var1); + var8.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.writeShortLE(var0 + class50.baseX); + var8.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var8); + } else if(var2 == 21) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_av, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bo_322(GraphicsObject.baseY + var1); + var8.packetBuffer.writeShortLE(var3); + var8.packetBuffer.writeShort(var0 + class50.baseX); + var8.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var8); + } else if(var2 == 22) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_ai, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.__bx_323(var3); + var8.packetBuffer.__bo_322(GraphicsObject.baseY + var1); + var8.packetBuffer.writeShort(var0 + class50.baseX); + Client.packetWriter.__q_167(var8); + } else if(var2 == 23) { + if(Client.isMenuOpen) { + class65.scene.__as_250(); + } else { + class65.scene.menuOpen(SoundSystem.plane, var0, var1, true); + } + } else { + PacketBufferNode var10; + Widget var16; + if(var2 == 24) { + var16 = Huffman.getWidget(var1); + boolean var12 = true; + if(var16.contentType > 0) { + var12 = ViewportMouse.method2957(var16); + } + + if(var12) { + var10 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + Client.packetWriter.__q_167(var10); + } + } else { + if(var2 == 25) { + var16 = class204.getWidgetChild(var1, var0); + if(var16 != null) { + Player.method1281(); + class25.method350(var1, var0, class211.method4107(class1.getWidgetClickMask(var16)), var16.itemId); + Client.isItemSelected = 0; + Client.selectedSpellActionName = class198.method3745(var16); + if(Client.selectedSpellActionName == null) { + Client.selectedSpellActionName = "null"; + } + + if(var16.isIf3) { + Client.selectedSpellName = var16.dataText + BufferedFile.colorStartTag(16777215); + } else { + Client.selectedSpellName = BufferedFile.colorStartTag(65280) + var16.spellName + BufferedFile.colorStartTag(16777215); + } + } + + return; + } + + if(var2 == 26) { + WorldMapLabelSize.method198(); + } else { + int var11; + Widget var14; + if(var2 == 28) { + var8 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeInt(var1); + Client.packetWriter.__q_167(var8); + var14 = Huffman.getWidget(var1); + if(var14.cs1Instructions != null && var14.cs1Instructions[0][0] == 5) { + var11 = var14.cs1Instructions[0][1]; + Varps.Varps_main[var11] = 1 - Varps.Varps_main[var11]; + IndexCache.method4703(var11); + } + } else if(var2 == 29) { + var8 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeInt(var1); + Client.packetWriter.__q_167(var8); + var14 = Huffman.getWidget(var1); + if(var14.cs1Instructions != null && var14.cs1Instructions[0][0] == 5) { + var11 = var14.cs1Instructions[0][1]; + if(Varps.Varps_main[var11] != var14.cs1ComparisonValues[0]) { + Varps.Varps_main[var11] = var14.cs1ComparisonValues[0]; + IndexCache.method4703(var11); + } + } + } else if(var2 == 30) { + if(Client.__client_mo == null) { + TilePaint.method3060(var1, var0); + Client.__client_mo = class204.getWidgetChild(var1, var0); + class22.method295(Client.__client_mo); + } + } else if(var2 == 31) { + var8 = Interpreter.method1915(ClientPacket.__gs_bu, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntME(var1); + var8.packetBuffer.writeIntLE16(ServerPacket.selectedItemWidget); + var8.packetBuffer.__bx_323(HealthBarDefinition.selectedItemSlot); + var8.packetBuffer.writeShortLE(MenuAction.selectedItemId); + var8.packetBuffer.writeShortLE(var0); + var8.packetBuffer.__bx_323(var3); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 32) { + var8 = Interpreter.method1915(ClientPacket.__gs_q, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntME(ServerBuild.__iy_lo); + var8.packetBuffer.writeInt(var1); + var8.packetBuffer.writeShort(var0); + var8.packetBuffer.writeShortLE(var3); + var8.packetBuffer.writeShortLE(Client.__client_lc); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 33) { + var8 = Interpreter.method1915(ClientPacket.__gs_ck, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShortLE(var3); + var8.packetBuffer.writeIntME(var1); + var8.packetBuffer.writeShort(var0); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 34) { + var8 = Interpreter.method1915(ClientPacket.__gs_cc, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bo_322(var3); + var8.packetBuffer.writeIntLE16(var1); + var8.packetBuffer.__bx_323(var0); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 35) { + var8 = Interpreter.method1915(ClientPacket.__gs_bp, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntLE(var1); + var8.packetBuffer.__bx_323(var0); + var8.packetBuffer.__bx_323(var3); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 36) { + var8 = Interpreter.method1915(ClientPacket.__gs_l, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(var3); + var8.packetBuffer.writeInt(var1); + var8.packetBuffer.__bx_323(var0); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 37) { + var8 = Interpreter.method1915(ClientPacket.__gs_bd, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeInt(var1); + var8.packetBuffer.writeShort(var0); + var8.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else { + if(var2 == 38) { + Player.method1281(); + var16 = Huffman.getWidget(var1); + Client.isItemSelected = 1; + HealthBarDefinition.selectedItemSlot = var0; + ServerPacket.selectedItemWidget = var1; + MenuAction.selectedItemId = var3; + class22.method295(var16); + Client.selectedItemName = BufferedFile.colorStartTag(16748608) + Skills.getItemDefinition(var3).name + BufferedFile.colorStartTag(16777215); + if(Client.selectedItemName == null) { + Client.selectedItemName = "null"; + } + + return; + } + + if(var2 == 39) { + var8 = Interpreter.method1915(ClientPacket.__gs_au, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(var3); + var8.packetBuffer.writeIntLE16(var1); + var8.packetBuffer.writeShortLE(var0); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 40) { + var8 = Interpreter.method1915(ClientPacket.__gs_ag, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntLE16(var1); + var8.packetBuffer.writeShortLE(var0); + var8.packetBuffer.__bo_322(var3); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 41) { + var8 = Interpreter.method1915(ClientPacket.__gs_bl, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeIntLE(var1); + var8.packetBuffer.__bo_322(var0); + var8.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 42) { + var8 = Interpreter.method1915(ClientPacket.__gs_bm, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeInt(var1); + var8.packetBuffer.__bo_322(var0); + var8.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 43) { + var8 = Interpreter.method1915(ClientPacket.__gs_ay, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShort(var3); + var8.packetBuffer.writeIntME(var1); + var8.packetBuffer.writeShort(var0); + Client.packetWriter.__q_167(var8); + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + } else if(var2 == 44) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_ao, Client.packetWriter.isaacCipher); + var9.packetBuffer.writeShort(var3); + var9.packetBuffer.__ai_315(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 45) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_bn, Client.packetWriter.isaacCipher); + var9.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.__bo_322(var3); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 46) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_by, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bo_322(var3); + var9.packetBuffer.writeByte(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 47) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_aq, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bx_323(var3); + var9.packetBuffer.__ai_315(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 48) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_cm, Client.packetWriter.isaacCipher); + var9.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.__bo_322(var3); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 49) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_cf, Client.packetWriter.isaacCipher); + var9.packetBuffer.__bo_322(var3); + var9.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 50) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_be, Client.packetWriter.isaacCipher); + var9.packetBuffer.__ba_316(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var9); + } + } else if(var2 == 51) { + var15 = Client.players[var3]; + if(var15 != null) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var9 = Interpreter.method1915(ClientPacket.__gs_af, Client.packetWriter.isaacCipher); + var9.packetBuffer.__ai_315(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var9.packetBuffer.__bx_323(var3); + Client.packetWriter.__q_167(var9); + } + } else { + label921: { + if(var2 != 57) { + if(var2 == 58) { + var16 = class204.getWidgetChild(var1, var0); + if(var16 != null) { + var9 = Interpreter.method1915(ClientPacket.__gs_cs, Client.packetWriter.isaacCipher); + var9.packetBuffer.writeShortLE(Client.__client_lc); + var9.packetBuffer.writeIntLE16(var1); + var9.packetBuffer.writeShortLE(Client.__client_mh); + var9.packetBuffer.__bx_323(var0); + var9.packetBuffer.writeInt(ServerBuild.__iy_lo); + var9.packetBuffer.__bx_323(var16.itemId); + Client.packetWriter.__q_167(var9); + } + break label921; + } + + if(var2 == 1001) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + Client.destinationX = var0; + Client.destinationY = var1; + var8 = Interpreter.method1915(ClientPacket.__gs_cp, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShort(var3); + var8.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?1:0); + var8.packetBuffer.__bo_322(var0 + class50.baseX); + var8.packetBuffer.__bx_323(GraphicsObject.baseY + var1); + Client.packetWriter.__q_167(var8); + break label921; + } + + if(var2 == 1002) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + var8 = Interpreter.method1915(ClientPacket.__gs_al, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bo_322(var3); + Client.packetWriter.__q_167(var8); + break label921; + } + + if(var2 == 1003) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + var13 = Client.npcs[var3]; + if(var13 != null) { + NpcDefinition var17 = var13.definition; + if(var17.transforms != null) { + var17 = var17.transform(); + } + + if(var17 != null) { + var10 = Interpreter.method1915(ClientPacket.__gs_ar, Client.packetWriter.isaacCipher); + var10.packetBuffer.__bo_322(var17.id); + Client.packetWriter.__q_167(var10); + } + } + break label921; + } + + if(var2 == 1004) { + Client.mouseCrossX = var6; + Client.mouseCrossY = var7; + Client.mouseCrossColor = 2; + Client.mouseCrossState = 0; + var8 = Interpreter.method1915(ClientPacket.__gs_p, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var8); + break label921; + } + + if(var2 == 1005) { + var16 = Huffman.getWidget(var1); + if(var16 != null && var16.itemQuantities[var0] >= 100000) { + WorldMapIcon1.method219(27, "", var16.itemQuantities[var0] + " x " + Skills.getItemDefinition(var3).name); + } else { + var9 = Interpreter.method1915(ClientPacket.__gs_p, Client.packetWriter.isaacCipher); + var9.packetBuffer.writeShortLE(var3); + Client.packetWriter.__q_167(var9); + } + + Client.__client_ju = 0; + BoundaryObject.__ej_jv = Huffman.getWidget(var1); + Client.__client_jz = var0; + break label921; + } + + if(var2 != 1007) { + if(var2 == 1008 || var2 == 1011 || var2 == 1010 || var2 == 1009 || var2 == 1012) { + class60.worldMap0.menuAction(var2, var3, new TileLocation(var0), new TileLocation(var1)); + } + break label921; + } + } + + var16 = class204.getWidgetChild(var1, var0); + if(var16 != null) { + class171.method3494(var3, var1, var0, var16.itemId, var5); + } + } + } + } + } + } + } + } + } + + if(Client.isItemSelected != 0) { + Client.isItemSelected = 0; + class22.method295(Huffman.getWidget(ServerPacket.selectedItemWidget)); + } + + if(Client.isSpellSelected) { + Player.method1281(); + } + + if(BoundaryObject.__ej_jv != null && Client.__client_ju == 0) { + class22.method295(BoundaryObject.__ej_jv); + } + + } +} diff --git a/rs-client/src/main/java/Animation.java b/rs-client/src/main/java/Animation.java new file mode 100644 index 0000000000..a6157a7c73 --- /dev/null +++ b/rs-client/src/main/java/Animation.java @@ -0,0 +1,136 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dz") +@Implements("Animation") +public class Animation { + @ObfuscatedName("m") + @Export("__dz_m") + static int[] __dz_m; + @ObfuscatedName("f") + @Export("__dz_f") + static int[] __dz_f; + @ObfuscatedName("q") + @Export("__dz_q") + static int[] __dz_q; + @ObfuscatedName("w") + @Export("__dz_w") + static int[] __dz_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lek;" + ) + @Export("skeleton") + Skeleton skeleton; + @ObfuscatedName("u") + @Export("transformCount") + int transformCount; + @ObfuscatedName("g") + @Export("transformSkeletonLabels") + int[] transformSkeletonLabels; + @ObfuscatedName("l") + @Export("transformXs") + int[] transformXs; + @ObfuscatedName("e") + @Export("transformYs") + int[] transformYs; + @ObfuscatedName("x") + @Export("transformZs") + int[] transformZs; + @ObfuscatedName("d") + @Export("hasAlphaTransform") + boolean hasAlphaTransform; + + static { + __dz_m = new int[500]; + __dz_f = new int[500]; + __dz_q = new int[500]; + __dz_w = new int[500]; + } + + @ObfuscatedSignature( + signature = "([BLek;)V" + ) + Animation(byte[] var1, Skeleton var2) { + this.skeleton = null; + this.transformCount = -1; + this.hasAlphaTransform = false; + this.skeleton = var2; + Buffer var3 = new Buffer(var1); + Buffer var4 = new Buffer(var1); + var3.index = 2; + int var5 = var3.readUnsignedByte(); + int var6 = -1; + int var7 = 0; + var4.index = var5 + var3.index; + + int var8; + for(var8 = 0; var8 < var5; ++var8) { + int var9 = var3.readUnsignedByte(); + if(var9 > 0) { + if(this.skeleton.transformTypes[var8] != 0) { + for(int var10 = var8 - 1; var10 > var6; --var10) { + if(this.skeleton.transformTypes[var10] == 0) { + __dz_m[var7] = var10; + __dz_f[var7] = 0; + __dz_q[var7] = 0; + __dz_w[var7] = 0; + ++var7; + break; + } + } + } + + __dz_m[var7] = var8; + short var11 = 0; + if(this.skeleton.transformTypes[var8] == 3) { + var11 = 128; + } + + if((var9 & 1) != 0) { + __dz_f[var7] = var4.__ab_306(); + } else { + __dz_f[var7] = var11; + } + + if((var9 & 2) != 0) { + __dz_q[var7] = var4.__ab_306(); + } else { + __dz_q[var7] = var11; + } + + if((var9 & 4) != 0) { + __dz_w[var7] = var4.__ab_306(); + } else { + __dz_w[var7] = var11; + } + + var6 = var8; + ++var7; + if(this.skeleton.transformTypes[var8] == 5) { + this.hasAlphaTransform = true; + } + } + } + + if(var1.length != var4.index) { + throw new RuntimeException(); + } else { + this.transformCount = var7; + this.transformSkeletonLabels = new int[var7]; + this.transformXs = new int[var7]; + this.transformYs = new int[var7]; + this.transformZs = new int[var7]; + + for(var8 = 0; var8 < var7; ++var8) { + this.transformSkeletonLabels[var8] = __dz_m[var8]; + this.transformXs[var8] = __dz_f[var8]; + this.transformYs[var8] = __dz_q[var8]; + this.transformZs[var8] = __dz_w[var8]; + } + + } + } +} diff --git a/rs-client/src/main/java/AttackOption.java b/rs-client/src/main/java/AttackOption.java new file mode 100644 index 0000000000..3395856851 --- /dev/null +++ b/rs-client/src/main/java/AttackOption.java @@ -0,0 +1,220 @@ +import java.io.IOException; +import java.security.SecureRandom; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cj") +@Implements("AttackOption") +public enum AttackOption implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lcj;" + ) + @Export("AttackOption_dependsOnCombatLevels") + AttackOption_dependsOnCombatLevels(0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lcj;" + ) + @Export("AttackOption_alwaysRightClick") + AttackOption_alwaysRightClick(1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lcj;" + ) + @Export("AttackOption_leftClickWhereAvailable") + AttackOption_leftClickWhereAvailable(2), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lcj;" + ) + @Export("AttackOption_hidden") + AttackOption_hidden(3); + @ObfuscatedName("sp") + @Export("__cj_sp") + static short[] __cj_sp; + @ObfuscatedName("ay") + @Export("__cj_ay") + static String __cj_ay; + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("__cj_bo") + static IndexedSprite[] __cj_bo; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1461217963 + ) + @Export("id") + final int id; + + AttackOption(int var3) { + this.id = var3; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.id; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljava/security/SecureRandom;", + garbageValue = "-1732522161" + ) + static SecureRandom method2034() { + SecureRandom var0 = new SecureRandom(); + var0.nextInt(); + return var0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I", + garbageValue = "-189314181" + ) + public static int method2033(CharSequence var0, CharSequence var1, int var2) { + int var3 = var0.length(); + int var4 = var1.length(); + int var5 = 0; + int var6 = 0; + byte var7 = 0; + byte var8 = 0; + + while(var5 - var7 < var3 || var6 - var8 < var4) { + if(var5 - var7 >= var3) { + return -1; + } + + if(var6 - var8 >= var4) { + return 1; + } + + char var9; + if(var7 != 0) { + var9 = (char)var7; + boolean var14 = false; + } else { + var9 = var0.charAt(var5++); + } + + char var10; + if(var8 != 0) { + var10 = (char)var8; + boolean var15 = false; + } else { + var10 = var1.charAt(var6++); + } + + byte var11; + if(var9 == 198) { + var11 = 69; + } else if(var9 == 230) { + var11 = 101; + } else if(var9 == 223) { + var11 = 115; + } else if(var9 == 338) { + var11 = 69; + } else if(var9 == 339) { + var11 = 101; + } else { + var11 = 0; + } + + var7 = var11; + byte var12; + if(var10 == 198) { + var12 = 69; + } else if(var10 == 230) { + var12 = 101; + } else if(var10 == 223) { + var12 = 115; + } else if(var10 == 338) { + var12 = 69; + } else if(var10 == 339) { + var12 = 101; + } else { + var12 = 0; + } + + var8 = var12; + var9 = class12.method155(var9, var2); + var10 = class12.method155(var10, var2); + if(var9 != var10 && Character.toUpperCase(var9) != Character.toUpperCase(var10)) { + var9 = Character.toLowerCase(var9); + var10 = Character.toLowerCase(var10); + if(var10 != var9) { + return CollisionMap.method3631(var9, var2) - CollisionMap.method3631(var10, var2); + } + } + } + + int var16 = Math.min(var3, var4); + + int var17; + char var20; + for(var17 = 0; var17 < var16; ++var17) { + char var18 = var0.charAt(var17); + var20 = var1.charAt(var17); + if(var20 != var18 && Character.toUpperCase(var18) != Character.toUpperCase(var20)) { + var18 = Character.toLowerCase(var18); + var20 = Character.toLowerCase(var20); + if(var18 != var20) { + return CollisionMap.method3631(var18, var2) - CollisionMap.method3631(var20, var2); + } + } + } + + var17 = var3 - var4; + if(var17 != 0) { + return var17; + } else { + for(int var19 = 0; var19 < var16; ++var19) { + var20 = var0.charAt(var19); + char var13 = var1.charAt(var19); + if(var20 != var13) { + return CollisionMap.method3631(var20, var2) - CollisionMap.method3631(var13, var2); + } + } + + return 0; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)[B", + garbageValue = "12521922" + ) + public static byte[] method2032() { + byte[] var0 = new byte[24]; + + try { + class168.randomDat.seek(0L); + class168.randomDat.readFill(var0); + + int var1; + for(var1 = 0; var1 < 24 && var0[var1] == 0; ++var1) { + ; + } + + if(var1 >= 24) { + throw new IOException(); + } + } catch (Exception var4) { + for(int var2 = 0; var2 < 24; ++var2) { + var0[var2] = -1; + } + } + + return var0; + } +} diff --git a/rs-client/src/main/java/AudioFilter.java b/rs-client/src/main/java/AudioFilter.java new file mode 100644 index 0000000000..84c98f85b8 --- /dev/null +++ b/rs-client/src/main/java/AudioFilter.java @@ -0,0 +1,161 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("di") +@Implements("AudioFilter") +public class AudioFilter { + @ObfuscatedName("u") + @Export("__di_u") + static float[][] __di_u; + @ObfuscatedName("g") + @Export("__di_g") + static int[][] __di_g; + @ObfuscatedName("l") + @Export("__di_l") + static float __di_l; + @ObfuscatedName("e") + @Export("__di_e") + static int __di_e; + @ObfuscatedName("m") + @Export("__m") + int[] __m; + @ObfuscatedName("q") + @Export("__q") + int[][][] __q; + @ObfuscatedName("w") + @Export("__w") + int[][][] __w; + @ObfuscatedName("o") + @Export("__o") + int[] __o; + + static { + __di_u = new float[2][8]; + __di_g = new int[2][8]; + } + + AudioFilter() { + this.__m = new int[2]; + this.__q = new int[2][2][4]; + this.__w = new int[2][2][4]; + this.__o = new int[2]; + } + + @ObfuscatedName("m") + @Export("__m_205") + float __m_205(int var1, int var2, float var3) { + float var4 = (float)this.__w[var1][0][var2] + var3 * (float)(this.__w[var1][1][var2] - this.__w[var1][0][var2]); + var4 *= 0.0015258789F; + return 1.0F - (float)Math.pow(10.0D, (double)(-var4 / 20.0F)); + } + + @ObfuscatedName("q") + @Export("__q_206") + float __q_206(int var1, int var2, float var3) { + float var4 = (float)this.__q[var1][0][var2] + var3 * (float)(this.__q[var1][1][var2] - this.__q[var1][0][var2]); + var4 *= 1.2207031E-4F; + return method2646(var4); + } + + @ObfuscatedName("w") + @Export("__w_207") + int __w_207(int var1, float var2) { + float var3; + if(var1 == 0) { + var3 = (float)this.__o[0] + (float)(this.__o[1] - this.__o[0]) * var2; + var3 *= 0.0030517578F; + __di_l = (float)Math.pow(0.1D, (double)(var3 / 20.0F)); + __di_e = (int)(__di_l * 65536.0F); + } + + if(this.__m[var1] == 0) { + return 0; + } else { + var3 = this.__m_205(var1, 0, var2); + __di_u[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.__q_206(var1, 0, var2)); + __di_u[var1][1] = var3 * var3; + + int var4; + for(var4 = 1; var4 < this.__m[var1]; ++var4) { + var3 = this.__m_205(var1, var4, var2); + float var5 = -2.0F * var3 * (float)Math.cos((double)this.__q_206(var1, var4, var2)); + float var6 = var3 * var3; + __di_u[var1][var4 * 2 + 1] = __di_u[var1][var4 * 2 - 1] * var6; + __di_u[var1][var4 * 2] = __di_u[var1][var4 * 2 - 1] * var5 + __di_u[var1][var4 * 2 - 2] * var6; + + for(int var7 = var4 * 2 - 1; var7 >= 2; --var7) { + __di_u[var1][var7] += __di_u[var1][var7 - 1] * var5 + __di_u[var1][var7 - 2] * var6; + } + + __di_u[var1][1] += __di_u[var1][0] * var5 + var6; + __di_u[var1][0] += var5; + } + + if(var1 == 0) { + for(var4 = 0; var4 < this.__m[0] * 2; ++var4) { + __di_u[0][var4] *= __di_l; + } + } + + for(var4 = 0; var4 < this.__m[var1] * 2; ++var4) { + __di_g[var1][var4] = (int)(__di_u[var1][var4] * 65536.0F); + } + + return this.__m[var1] * 2; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;Lde;)V" + ) + @Export("__o_208") + final void __o_208(Buffer var1, SoundEnvelope var2) { + int var3 = var1.readUnsignedByte(); + this.__m[0] = var3 >> 4; + this.__m[1] = var3 & 15; + if(var3 != 0) { + this.__o[0] = var1.__ag_302(); + this.__o[1] = var1.__ag_302(); + int var4 = var1.readUnsignedByte(); + + int var5; + int var6; + for(var5 = 0; var5 < 2; ++var5) { + for(var6 = 0; var6 < this.__m[var5]; ++var6) { + this.__q[var5][0][var6] = var1.__ag_302(); + this.__w[var5][0][var6] = var1.__ag_302(); + } + } + + for(var5 = 0; var5 < 2; ++var5) { + for(var6 = 0; var6 < this.__m[var5]; ++var6) { + if((var4 & 1 << var5 * 4 << var6) != 0) { + this.__q[var5][1][var6] = var1.__ag_302(); + this.__w[var5][1][var6] = var1.__ag_302(); + } else { + this.__q[var5][1][var6] = this.__q[var5][0][var6]; + this.__w[var5][1][var6] = this.__w[var5][0][var6]; + } + } + } + + if(var4 != 0 || this.__o[1] != this.__o[0]) { + var2.decodeSegments(var1); + } + } else { + int[] var7 = this.__o; + this.__o[1] = 0; + var7[0] = 0; + } + + } + + @ObfuscatedName("f") + static float method2646(float var0) { + float var1 = 32.703197F * (float)Math.pow(2.0D, (double)var0); + return var1 * 3.1415927F / 11025.0F; + } +} diff --git a/rs-client/src/main/java/BoundaryObject.java b/rs-client/src/main/java/BoundaryObject.java new file mode 100644 index 0000000000..607e7880e8 --- /dev/null +++ b/rs-client/src/main/java/BoundaryObject.java @@ -0,0 +1,135 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ej") +@Implements("BoundaryObject") +public final class BoundaryObject { + @ObfuscatedName("jv") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("__ej_jv") + static Widget __ej_jv; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -9307913 + ) + @Export("tileHeight") + int tileHeight; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 860688417 + ) + @Export("x") + int x; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -260081891 + ) + @Export("y") + int y; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1724480965 + ) + @Export("orientationA") + int orientationA; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -969316473 + ) + @Export("orientationB") + int orientationB; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("entity1") + public Entity entity1; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("entity2") + public Entity entity2; + @ObfuscatedName("l") + @ObfuscatedGetter( + longValue = -4401157754236673285L + ) + @Export("tag") + public long tag; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -693868549 + ) + @Export("flags") + int flags; + + BoundaryObject() { + this.tag = 0L; + this.flags = 0; + } + + @ObfuscatedName("fr") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "103" + ) + static final void method3235(String var0) { + if(var0.equalsIgnoreCase("toggleroof")) { + ReflectionCheck.clientPreferences.roofsHidden = !ReflectionCheck.clientPreferences.roofsHidden; + WorldMapSection0.method247(); + if(ReflectionCheck.clientPreferences.roofsHidden) { + WorldMapIcon1.method219(99, "", "Roofs are now all hidden"); + } else { + WorldMapIcon1.method219(99, "", "Roofs will only be removed selectively"); + } + } + + if(var0.equalsIgnoreCase("displayfps")) { + Client.displayFps = !Client.displayFps; + } + + if(var0.equalsIgnoreCase("renderself")) { + Client.renderSelf = !Client.renderSelf; + } + + if(var0.equalsIgnoreCase("mouseovertext")) { + Client.showMouseOverText = !Client.showMouseOverText; + } + + if(Client.rights >= 2) { + if(var0.equalsIgnoreCase("errortest")) { + throw new RuntimeException(); + } + + if(var0.equalsIgnoreCase("showcoord")) { + class60.worldMap0.__bc = !class60.worldMap0.__bc; + } + + if(var0.equalsIgnoreCase("fpson")) { + Client.displayFps = true; + } + + if(var0.equalsIgnoreCase("fpsoff")) { + Client.displayFps = false; + } + + if(var0.equalsIgnoreCase("gc")) { + System.gc(); + } + + if(var0.equalsIgnoreCase("clientdrop")) { + class48.method868(); + } + } + + PacketBufferNode var1 = Interpreter.method1915(ClientPacket.__gs_bo, Client.packetWriter.isaacCipher); + var1.packetBuffer.writeByte(var0.length() + 1); + var1.packetBuffer.writeStringCp1252NullTerminated(var0); + Client.packetWriter.__q_167(var1); + } +} diff --git a/rs-client/src/main/java/Bounds.java b/rs-client/src/main/java/Bounds.java new file mode 100644 index 0000000000..f265d60cf0 --- /dev/null +++ b/rs-client/src/main/java/Bounds.java @@ -0,0 +1,171 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("la") +@Implements("Bounds") +public class Bounds { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -2004088829 + ) + @Export("__m") + public int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1887298731 + ) + @Export("__f") + public int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 2001187823 + ) + @Export("__q") + public int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1377856837 + ) + @Export("__w") + public int __w; + + public Bounds(int var1, int var2, int var3, int var4) { + this.__m_487(var1, var2); + this.__f_488(var3, var4); + } + + public Bounds(int var1, int var2) { + this(0, 0, var1, var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "1" + ) + @Export("__m_487") + public void __m_487(int var1, int var2) { + this.__m = var1; + this.__f = var2; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-11269827" + ) + @Export("__f_488") + public void __f_488(int var1, int var2) { + this.__q = var1; + this.__w = var2; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lla;Lla;I)V", + garbageValue = "-2123792170" + ) + @Export("__q_490") + public void __q_490(Bounds var1, Bounds var2) { + this.__w_491(var1, var2); + this.__o_492(var1, var2); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lla;Lla;I)V", + garbageValue = "314675149" + ) + @Export("__w_491") + void __w_491(Bounds var1, Bounds var2) { + var2.__m = this.__m; + var2.__q = this.__q; + if(this.__m < var1.__m) { + var2.__q -= var1.__m - this.__m; + var2.__m = var1.__m; + } + + if(var2.__u_493() > var1.__u_493()) { + var2.__q -= var2.__u_493() - var1.__u_493(); + } + + if(var2.__q < 0) { + var2.__q = 0; + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lla;Lla;S)V", + garbageValue = "128" + ) + @Export("__o_492") + void __o_492(Bounds var1, Bounds var2) { + var2.__f = this.__f; + var2.__w = this.__w; + if(this.__f < var1.__f) { + var2.__w -= var1.__f - this.__f; + var2.__f = var1.__f; + } + + if(var2.__g_494() > var1.__g_494()) { + var2.__w -= var2.__g_494() - var1.__g_494(); + } + + if(var2.__w < 0) { + var2.__w = 0; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1842151293" + ) + @Export("__u_493") + int __u_493() { + return this.__m + this.__q; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-22" + ) + @Export("__g_494") + int __g_494() { + return this.__f + this.__w; + } + + @Export("__toString_489") + @ObfuscatedName("toString") + public String __toString_489() { + return null; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(DDII)[D", + garbageValue = "2112793889" + ) + public static double[] method5905(double var0, double var2, int var4) { + int var5 = var4 * 2 + 1; + double[] var6 = new double[var5]; + int var7 = -var4; + + for(int var8 = 0; var7 <= var4; ++var8) { + double var15 = ((double)var7 - var0) / var2; + double var13 = Math.exp(-var15 * var15 / 2.0D) / Math.sqrt(6.283185307179586D); + double var11 = var13 / var2; + var6[var8] = var11; + ++var7; + } + + return var6; + } +} diff --git a/rs-client/src/main/java/Buddy.java b/rs-client/src/main/java/Buddy.java new file mode 100644 index 0000000000..12b1fe48b4 --- /dev/null +++ b/rs-client/src/main/java/Buddy.java @@ -0,0 +1,95 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ke") +@Implements("Buddy") +public class Buddy extends User { + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 429472919 + ) + @Export("world0") + public int world0; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 120689297 + ) + @Export("int2") + public int int2; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -304954565 + ) + @Export("rank") + public int rank; + + Buddy() { + this.world0 = -1; + } + + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "(IIS)V", + garbageValue = "867" + ) + @Export("set") + void set(int var1, int var2) { + this.world0 = var1; + this.int2 = var2; + } + + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "0" + ) + @Export("world") + public int world() { + return this.world0; + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1888702836" + ) + @Export("hasWorld") + public boolean hasWorld() { + return this.world0 > 0; + } + + @ObfuscatedName("ff") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1868787018" + ) + static final void method5554() { + int[] var0 = Players.Players_indices; + + int var1; + for(var1 = 0; var1 < Players.Players_count; ++var1) { + Player var2 = Client.players[var0[var1]]; + if(var2 != null && var2.overheadTextCyclesRemaining > 0) { + --var2.overheadTextCyclesRemaining; + if(var2.overheadTextCyclesRemaining == 0) { + var2.overheadText = null; + } + } + } + + for(var1 = 0; var1 < Client.npcCount; ++var1) { + int var4 = Client.npcIndices[var1]; + Npc var3 = Client.npcs[var4]; + if(var3 != null && var3.overheadTextCyclesRemaining > 0) { + --var3.overheadTextCyclesRemaining; + if(var3.overheadTextCyclesRemaining == 0) { + var3.overheadText = null; + } + } + } + + } +} diff --git a/rs-client/src/main/java/Buffer.java b/rs-client/src/main/java/Buffer.java new file mode 100644 index 0000000000..a278f911ea --- /dev/null +++ b/rs-client/src/main/java/Buffer.java @@ -0,0 +1,1098 @@ +import java.math.BigInteger; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gr") +@Implements("Buffer") +public class Buffer extends Node { + @ObfuscatedName("q") + @Export("__gr_q") + static int[] __gr_q; + @ObfuscatedName("o") + @Export("__gr_o") + static long[] __gr_o; + @ObfuscatedName("m") + @Export("array") + public byte[] array; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -271438207 + ) + @Export("index") + public int index; + + static { + __gr_q = new int[256]; + + int var2; + for(int var1 = 0; var1 < 256; ++var1) { + int var0 = var1; + + for(var2 = 0; var2 < 8; ++var2) { + if((var0 & 1) == 1) { + var0 = var0 >>> 1 ^ -306674912; + } else { + var0 >>>= 1; + } + } + + __gr_q[var1] = var0; + } + + __gr_o = new long[256]; + + for(var2 = 0; var2 < 256; ++var2) { + long var4 = (long)var2; + + for(int var3 = 0; var3 < 8; ++var3) { + if((var4 & 1L) == 1L) { + var4 = var4 >>> 1 ^ -3932672073523589310L; + } else { + var4 >>>= 1; + } + } + + __gr_o[var2] = var4; + } + + } + + public Buffer(int var1) { + this.array = Canvas.method862(var1); + this.index = 0; + } + + public Buffer(byte[] var1) { + this.array = var1; + this.index = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(S)V", + garbageValue = "13572" + ) + @Export("__f_295") + public void __f_295() { + if(this.array != null) { + VertexNormal.method2984(this.array); + } + + this.array = null; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-654332799" + ) + @Export("writeByte") + public void writeByte(int var1) { + this.array[++this.index - 1] = (byte)var1; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "0" + ) + @Export("writeShort") + public void writeShort(int var1) { + this.array[++this.index - 1] = (byte)(var1 >> 8); + this.array[++this.index - 1] = (byte)var1; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-26" + ) + @Export("writeMedium") + public void writeMedium(int var1) { + this.array[++this.index - 1] = (byte)(var1 >> 16); + this.array[++this.index - 1] = (byte)(var1 >> 8); + this.array[++this.index - 1] = (byte)var1; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-106996411" + ) + @Export("writeInt") + public void writeInt(int var1) { + this.array[++this.index - 1] = (byte)(var1 >> 24); + this.array[++this.index - 1] = (byte)(var1 >> 16); + this.array[++this.index - 1] = (byte)(var1 >> 8); + this.array[++this.index - 1] = (byte)var1; + } + + @ObfuscatedName("g") + @Export("writeLongMedium") + public void writeLongMedium(long var1) { + this.array[++this.index - 1] = (byte)((int)(var1 >> 40)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 32)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 24)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 16)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 8)); + this.array[++this.index - 1] = (byte)((int)var1); + } + + @ObfuscatedName("l") + @Export("writeLong") + public void writeLong(long var1) { + this.array[++this.index - 1] = (byte)((int)(var1 >> 56)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 48)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 40)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 32)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 24)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 16)); + this.array[++this.index - 1] = (byte)((int)(var1 >> 8)); + this.array[++this.index - 1] = (byte)((int)var1); + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(ZB)V", + garbageValue = "-125" + ) + @Export("writeBoolean") + public void writeBoolean(boolean var1) { + this.writeByte(var1?1:0); + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "-9" + ) + @Export("writeStringCp1252NullTerminated") + public void writeStringCp1252NullTerminated(String var1) { + int var2 = var1.indexOf(0); + if(var2 >= 0) { + throw new IllegalArgumentException(""); + } else { + this.index += SoundCache.encodeStringCp1252(var1, 0, var1.length(), this.array, this.index); + this.array[++this.index - 1] = 0; + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;S)V", + garbageValue = "22356" + ) + @Export("writeStringCp1252NullCircumfixed") + public void writeStringCp1252NullCircumfixed(String var1) { + int var2 = var1.indexOf(0); + if(var2 >= 0) { + throw new IllegalArgumentException(""); + } else { + this.array[++this.index - 1] = 0; + this.index += SoundCache.encodeStringCp1252(var1, 0, var1.length(), this.array, this.index); + this.array[++this.index - 1] = 0; + } + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;B)V", + garbageValue = "58" + ) + @Export("__j_296") + public void __j_296(CharSequence var1) { + int var3 = var1.length(); + int var4 = 0; + + for(int var5 = 0; var5 < var3; ++var5) { + char var6 = var1.charAt(var5); + if(var6 <= 127) { + ++var4; + } else if(var6 <= 2047) { + var4 += 2; + } else { + var4 += 3; + } + } + + this.array[++this.index - 1] = 0; + this.__c_301(var4); + this.index += class16.method190(this.array, this.index, var1); + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "([BIII)V", + garbageValue = "-1915344405" + ) + @Export("__s_297") + public void __s_297(byte[] var1, int var2, int var3) { + for(int var4 = var2; var4 < var3 + var2; ++var4) { + this.array[++this.index - 1] = var1[var4]; + } + + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-225163682" + ) + @Export("__t_298") + public void __t_298(int var1) { + this.array[this.index - var1 - 4] = (byte)(var1 >> 24); + this.array[this.index - var1 - 3] = (byte)(var1 >> 16); + this.array[this.index - var1 - 2] = (byte)(var1 >> 8); + this.array[this.index - var1 - 1] = (byte)var1; + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1298210761" + ) + @Export("__y_299") + public void __y_299(int var1) { + this.array[this.index - var1 - 2] = (byte)(var1 >> 8); + this.array[this.index - var1 - 1] = (byte)var1; + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1839722163" + ) + @Export("__h_300") + public void __h_300(int var1) { + this.array[this.index - var1 - 1] = (byte)var1; + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1324532803" + ) + @Export("writeSmartByteShort") + public void writeSmartByteShort(int var1) { + if(var1 >= 0 && var1 < 128) { + this.writeByte(var1); + } else if(var1 >= 0 && var1 < 32768) { + this.writeShort(var1 + 32768); + } else { + throw new IllegalArgumentException(); + } + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "820873705" + ) + @Export("__c_301") + public void __c_301(int var1) { + if((var1 & -128) != 0) { + if((var1 & -16384) != 0) { + if((var1 & -2097152) != 0) { + if((var1 & -268435456) != 0) { + this.writeByte(var1 >>> 28 | 128); + } + + this.writeByte(var1 >>> 21 | 128); + } + + this.writeByte(var1 >>> 14 | 128); + } + + this.writeByte(var1 >>> 7 | 128); + } + + this.writeByte(var1 & 127); + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "82" + ) + @Export("readUnsignedByte") + public int readUnsignedByte() { + return this.array[++this.index - 1] & 255; + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(I)B", + garbageValue = "-1627696222" + ) + @Export("readByte") + public byte readByte() { + return this.array[++this.index - 1]; + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-86" + ) + @Export("__ag_302") + public int __ag_302() { + this.index += 2; + return (this.array[this.index - 1] & 255) + ((this.array[this.index - 2] & 255) << 8); + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "1" + ) + @Export("__aq_303") + public int __aq_303() { + this.index += 2; + int var1 = (this.array[this.index - 1] & 255) + ((this.array[this.index - 2] & 255) << 8); + if(var1 > 32767) { + var1 -= 65536; + } + + return var1; + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1080768729" + ) + @Export("readMedium") + public int readMedium() { + this.index += 3; + return ((this.array[this.index - 3] & 255) << 16) + (this.array[this.index - 1] & 255) + ((this.array[this.index - 2] & 255) << 8); + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1338012999" + ) + @Export("readInt") + public int readInt() { + this.index += 4; + return ((this.array[this.index - 3] & 255) << 16) + (this.array[this.index - 1] & 255) + ((this.array[this.index - 2] & 255) << 8) + ((this.array[this.index - 4] & 255) << 24); + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(I)J", + garbageValue = "-2077445946" + ) + @Export("readLong") + public long readLong() { + long var1 = (long)this.readInt() & 4294967295L; + long var3 = (long)this.readInt() & 4294967295L; + return (var1 << 32) + var3; + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-2145047746" + ) + @Export("readBoolean") + public boolean readBoolean() { + return (this.readUnsignedByte() & 1) == 1; + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "377528415" + ) + @Export("readStringCp1252NullTerminatedOrNull") + public String readStringCp1252NullTerminatedOrNull() { + if(this.array[this.index] == 0) { + ++this.index; + return null; + } else { + return this.readStringCp1252NullTerminated(); + } + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "-1079610633" + ) + @Export("readStringCp1252NullTerminated") + public String readStringCp1252NullTerminated() { + int var1 = this.index; + + while(this.array[++this.index - 1] != 0) { + ; + } + + int var2 = this.index - var1 - 1; + return var2 == 0?"":WidgetGroupParent.decodeStringCp1252(this.array, var1, var2); + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "-1806000702" + ) + @Export("readStringCp1252NullCircumfixed") + public String readStringCp1252NullCircumfixed() { + byte var1 = this.array[++this.index - 1]; + if(var1 != 0) { + throw new IllegalStateException(""); + } else { + int var2 = this.index; + + while(this.array[++this.index - 1] != 0) { + ; + } + + int var3 = this.index - var2 - 1; + return var3 == 0?"":WidgetGroupParent.decodeStringCp1252(this.array, var2, var3); + } + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(B)Ljava/lang/String;", + garbageValue = "-14" + ) + @Export("__aw_304") + public String __aw_304() { + byte var1 = this.array[++this.index - 1]; + if(var1 != 0) { + throw new IllegalStateException(""); + } else { + int var2 = this.__as_311(); + if(var2 + this.index > this.array.length) { + throw new IllegalStateException(""); + } else { + byte[] var4 = this.array; + int var5 = this.index; + char[] var6 = new char[var2]; + int var7 = 0; + int var8 = var5; + + int var11; + for(int var9 = var5 + var2; var8 < var9; var6[var7++] = (char)var11) { + int var10 = var4[var8++] & 255; + if(var10 < 128) { + if(var10 == 0) { + var11 = 65533; + } else { + var11 = var10; + } + } else if(var10 < 192) { + var11 = 65533; + } else if(var10 < 224) { + if(var8 < var9 && (var4[var8] & 192) == 128) { + var11 = (var10 & 31) << 6 | var4[var8++] & 63; + if(var11 < 128) { + var11 = 65533; + } + } else { + var11 = 65533; + } + } else if(var10 < 240) { + if(var8 + 1 < var9 && (var4[var8] & 192) == 128 && (var4[var8 + 1] & 192) == 128) { + var11 = (var10 & 15) << 12 | (var4[var8++] & 63) << 6 | var4[var8++] & 63; + if(var11 < 2048) { + var11 = 65533; + } + } else { + var11 = 65533; + } + } else if(var10 < 248) { + if(var8 + 2 < var9 && (var4[var8] & 192) == 128 && (var4[var8 + 1] & 192) == 128 && (var4[var8 + 2] & 192) == 128) { + var11 = (var10 & 7) << 18 | (var4[var8++] & 63) << 12 | (var4[var8++] & 63) << 6 | var4[var8++] & 63; + if(var11 >= 65536 && var11 <= 1114111) { + var11 = 65533; + } else { + var11 = 65533; + } + } else { + var11 = 65533; + } + } else { + var11 = 65533; + } + } + + String var3 = new String(var6, 0, var7); + this.index += var2; + return var3; + } + } + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-122" + ) + @Export("__al_305") + public void __al_305(byte[] var1, int var2, int var3) { + for(int var4 = var2; var4 < var3 + var2; ++var4) { + var1[var4] = this.array[++this.index - 1]; + } + + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-24" + ) + @Export("__ab_306") + public int __ab_306() { + int var1 = this.array[this.index] & 255; + return var1 < 128?this.readUnsignedByte() - 64:this.__ag_302() - 49152; + } + + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1370512869" + ) + @Export("__ae_307") + public int __ae_307() { + int var1 = this.array[this.index] & 255; + return var1 < 128?this.readUnsignedByte():this.__ag_302() - 32768; + } + + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1177684230" + ) + @Export("__at_308") + public int __at_308() { + int var1 = 0; + + int var2; + for(var2 = this.__ae_307(); var2 == 32767; var2 = this.__ae_307()) { + var1 += 32767; + } + + var1 += var2; + return var1; + } + + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "103" + ) + @Export("__ad_309") + public int __ad_309() { + return this.array[this.index] < 0?this.readInt() & Integer.MAX_VALUE:this.__ag_302(); + } + + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1151173205" + ) + @Export("__ap_310") + public int __ap_310() { + if(this.array[this.index] < 0) { + return this.readInt() & Integer.MAX_VALUE; + } else { + int var1 = this.__ag_302(); + return var1 == 32767?-1:var1; + } + } + + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "984135559" + ) + @Export("__as_311") + public int __as_311() { + byte var1 = this.array[++this.index - 1]; + + int var2; + for(var2 = 0; var1 < 0; var1 = this.array[++this.index - 1]) { + var2 = (var2 | var1 & 127) << 7; + } + + return var2 | var1; + } + + @ObfuscatedName("am") + @ObfuscatedSignature( + signature = "([IB)V", + garbageValue = "36" + ) + @Export("xteaEncryptAll") + public void xteaEncryptAll(int[] var1) { + int var2 = this.index / 8; + this.index = 0; + + for(int var3 = 0; var3 < var2; ++var3) { + int var4 = this.readInt(); + int var5 = this.readInt(); + int var6 = 0; + int var7 = -1640531527; + + for(int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6) { + var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3]; + var6 += var7; + } + + this.index -= 8; + this.writeInt(var4); + this.writeInt(var5); + } + + } + + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "([II)V", + garbageValue = "1682045100" + ) + @Export("xteaDecryptAll") + public void xteaDecryptAll(int[] var1) { + int var2 = this.index / 8; + this.index = 0; + + for(int var3 = 0; var3 < var2; ++var3) { + int var4 = this.readInt(); + int var5 = this.readInt(); + int var6 = -957401312; + int var7 = -1640531527; + + for(int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3]) { + var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6; + var6 -= var7; + } + + this.index -= 8; + this.writeInt(var4); + this.writeInt(var5); + } + + } + + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "([IIII)V", + garbageValue = "-1341435074" + ) + @Export("xteaEncrypt") + public void xteaEncrypt(int[] var1, int var2, int var3) { + int var4 = this.index; + this.index = var2; + int var5 = (var3 - var2) / 8; + + for(int var6 = 0; var6 < var5; ++var6) { + int var7 = this.readInt(); + int var8 = this.readInt(); + int var9 = 0; + int var10 = -1640531527; + + for(int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9) { + var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3]; + var9 += var10; + } + + this.index -= 8; + this.writeInt(var7); + this.writeInt(var8); + } + + this.index = var4; + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "([IIII)V", + garbageValue = "307218624" + ) + @Export("xteaDecrypt") + public void xteaDecrypt(int[] var1, int var2, int var3) { + int var4 = this.index; + this.index = var2; + int var5 = (var3 - var2) / 8; + + for(int var6 = 0; var6 < var5; ++var6) { + int var7 = this.readInt(); + int var8 = this.readInt(); + int var9 = -957401312; + int var10 = -1640531527; + + for(int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3]) { + var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9; + var9 -= var10; + } + + this.index -= 8; + this.writeInt(var7); + this.writeInt(var8); + } + + this.index = var4; + } + + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "(Ljava/math/BigInteger;Ljava/math/BigInteger;I)V", + garbageValue = "-2119154784" + ) + @Export("encryptRsa") + public void encryptRsa(BigInteger var1, BigInteger var2) { + int var3 = this.index; + this.index = 0; + byte[] var4 = new byte[var3]; + this.__al_305(var4, 0, var3); + BigInteger var5 = new BigInteger(var4); + BigInteger var6 = var5.modPow(var1, var2); + byte[] var7 = var6.toByteArray(); + this.index = 0; + this.writeShort(var7.length); + this.__s_297(var7, 0, var7.length); + } + + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-484928770" + ) + @Export("__aa_312") + public int __aa_312(int var1) { + byte[] var3 = this.array; + int var4 = this.index; + int var5 = -1; + + for(int var6 = var1; var6 < var4; ++var6) { + var5 = var5 >>> 8 ^ __gr_q[(var5 ^ var3[var6]) & 255]; + } + + var5 = ~var5; + this.writeInt(var5); + return var5; + } + + @ObfuscatedName("ax") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "-11" + ) + @Export("__ax_313") + public boolean __ax_313() { + this.index -= 4; + byte[] var2 = this.array; + int var3 = this.index; + int var4 = -1; + + int var5; + for(var5 = 0; var5 < var3; ++var5) { + var4 = var4 >>> 8 ^ __gr_q[(var4 ^ var2[var5]) & 255]; + } + + var4 = ~var4; + var5 = this.readInt(); + return var5 == var4; + } + + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-47" + ) + @Export("__af_314") + public void __af_314(int var1) { + this.array[++this.index - 1] = (byte)(var1 + 128); + } + + @ObfuscatedName("ai") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1336494664" + ) + @Export("__ai_315") + public void __ai_315(int var1) { + this.array[++this.index - 1] = (byte)(0 - var1); + } + + @ObfuscatedName("ba") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "21" + ) + @Export("__ba_316") + public void __ba_316(int var1) { + this.array[++this.index - 1] = (byte)(128 - var1); + } + + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-86972759" + ) + @Export("__bb_317") + public int __bb_317() { + return this.array[++this.index - 1] - 128 & 255; + } + + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-840473648" + ) + @Export("readUnsignedByteNegate") + public int readUnsignedByteNegate() { + return 0 - this.array[++this.index - 1] & 255; + } + + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "359814653" + ) + @Export("__bq_318") + public int __bq_318() { + return 128 - this.array[++this.index - 1] & 255; + } + + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "(I)B", + garbageValue = "2130167320" + ) + @Export("__bn_319") + public byte __bn_319() { + return (byte)(this.array[++this.index - 1] - 128); + } + + @ObfuscatedName("bk") + @ObfuscatedSignature( + signature = "(I)B", + garbageValue = "1415936818" + ) + @Export("__bk_320") + public byte __bk_320() { + return (byte)(0 - this.array[++this.index - 1]); + } + + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "(I)B", + garbageValue = "1496705333" + ) + @Export("__bd_321") + public byte __bd_321() { + return (byte)(128 - this.array[++this.index - 1]); + } + + @ObfuscatedName("bc") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "51" + ) + @Export("writeShortLE") + public void writeShortLE(int var1) { + this.array[++this.index - 1] = (byte)var1; + this.array[++this.index - 1] = (byte)(var1 >> 8); + } + + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "189694315" + ) + @Export("__bo_322") + public void __bo_322(int var1) { + this.array[++this.index - 1] = (byte)(var1 >> 8); + this.array[++this.index - 1] = (byte)(var1 + 128); + } + + @ObfuscatedName("bx") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-7" + ) + @Export("__bx_323") + public void __bx_323(int var1) { + this.array[++this.index - 1] = (byte)(var1 + 128); + this.array[++this.index - 1] = (byte)(var1 >> 8); + } + + @ObfuscatedName("by") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "2147134369" + ) + @Export("__by_324") + public int __by_324() { + this.index += 2; + return ((this.array[this.index - 1] & 255) << 8) + (this.array[this.index - 2] & 255); + } + + @ObfuscatedName("bu") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1489217204" + ) + @Export("__bu_325") + public int __bu_325() { + this.index += 2; + return (this.array[this.index - 1] - 128 & 255) + ((this.array[this.index - 2] & 255) << 8); + } + + @ObfuscatedName("bm") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-86" + ) + @Export("__bm_326") + public int __bm_326() { + this.index += 2; + return ((this.array[this.index - 1] & 255) << 8) + (this.array[this.index - 2] - 128 & 255); + } + + @ObfuscatedName("bl") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "54" + ) + @Export("__bl_327") + public int __bl_327() { + this.index += 2; + int var1 = ((this.array[this.index - 1] & 255) << 8) + (this.array[this.index - 2] & 255); + if(var1 > 32767) { + var1 -= 65536; + } + + return var1; + } + + @ObfuscatedName("br") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "388487388" + ) + @Export("__br_328") + public int __br_328() { + this.index += 2; + int var1 = ((this.array[this.index - 1] & 255) << 8) + (this.array[this.index - 2] - 128 & 255); + if(var1 > 32767) { + var1 -= 65536; + } + + return var1; + } + + @ObfuscatedName("bj") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-88751042" + ) + @Export("__bj_329") + public int __bj_329() { + this.index += 3; + return (this.array[this.index - 3] & 255) + ((this.array[this.index - 2] & 255) << 8) + ((this.array[this.index - 1] & 255) << 16); + } + + @ObfuscatedName("bi") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "78" + ) + @Export("writeIntLE") + public void writeIntLE(int var1) { + this.array[++this.index - 1] = (byte)var1; + this.array[++this.index - 1] = (byte)(var1 >> 8); + this.array[++this.index - 1] = (byte)(var1 >> 16); + this.array[++this.index - 1] = (byte)(var1 >> 24); + } + + @ObfuscatedName("bz") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "80" + ) + @Export("writeIntME") + public void writeIntME(int var1) { + this.array[++this.index - 1] = (byte)(var1 >> 8); + this.array[++this.index - 1] = (byte)var1; + this.array[++this.index - 1] = (byte)(var1 >> 24); + this.array[++this.index - 1] = (byte)(var1 >> 16); + } + + @ObfuscatedName("bg") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2115295559" + ) + @Export("writeIntLE16") + public void writeIntLE16(int var1) { + this.array[++this.index - 1] = (byte)(var1 >> 16); + this.array[++this.index - 1] = (byte)(var1 >> 24); + this.array[++this.index - 1] = (byte)var1; + this.array[++this.index - 1] = (byte)(var1 >> 8); + } + + @ObfuscatedName("bt") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1322860835" + ) + @Export("__bt_330") + public int __bt_330() { + this.index += 4; + return (this.array[this.index - 4] & 255) + ((this.array[this.index - 3] & 255) << 8) + ((this.array[this.index - 2] & 255) << 16) + ((this.array[this.index - 1] & 255) << 24); + } + + @ObfuscatedName("bp") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1731171028" + ) + @Export("__bp_331") + public int __bp_331() { + this.index += 4; + return ((this.array[this.index - 2] & 255) << 24) + ((this.array[this.index - 4] & 255) << 8) + (this.array[this.index - 3] & 255) + ((this.array[this.index - 1] & 255) << 16); + } + + @ObfuscatedName("bf") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-126" + ) + @Export("__bf_332") + public int __bf_332() { + this.index += 4; + return ((this.array[this.index - 1] & 255) << 8) + ((this.array[this.index - 4] & 255) << 16) + (this.array[this.index - 2] & 255) + ((this.array[this.index - 3] & 255) << 24); + } + + @ObfuscatedName("bh") + @ObfuscatedSignature( + signature = "([BIII)V", + garbageValue = "1303287859" + ) + @Export("__bh_333") + public void __bh_333(byte[] var1, int var2, int var3) { + for(int var4 = var2; var4 < var3 + var2; ++var4) { + var1[var4] = (byte)(this.array[++this.index - 1] - 128); + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "1" + ) + public static void method3915() { + HealthBarDefinition.HealthBarDefinition_cached.clear(); + HealthBarDefinition.HealthBarDefinition_cachedSprites.clear(); + } +} diff --git a/rs-client/src/main/java/BufferedFile.java b/rs-client/src/main/java/BufferedFile.java new file mode 100644 index 0000000000..c6217ee7c9 --- /dev/null +++ b/rs-client/src/main/java/BufferedFile.java @@ -0,0 +1,410 @@ +import java.io.EOFException; +import java.io.IOException; +import java.net.Socket; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dy") +@Implements("BufferedFile") +public class BufferedFile { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Ldk;" + ) + @Export("accessFile") + AccessFile accessFile; + @ObfuscatedName("f") + @Export("readBuffer") + byte[] readBuffer; + @ObfuscatedName("q") + @ObfuscatedGetter( + longValue = -7773729680030815835L + ) + @Export("__q") + long __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -846810907 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @Export("writeBuffer") + byte[] writeBuffer; + @ObfuscatedName("u") + @ObfuscatedGetter( + longValue = 5249231081498323007L + ) + @Export("__u") + long __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1558233611 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + longValue = -6819476051574242871L + ) + @Export("__l") + long __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + longValue = -3728247331531750871L + ) + @Export("__e") + long __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + longValue = 2663146692618913943L + ) + @Export("capacity") + long capacity; + @ObfuscatedName("d") + @ObfuscatedGetter( + longValue = 5720856138805191881L + ) + @Export("__d") + long __d; + + @ObfuscatedSignature( + signature = "(Ldk;II)V" + ) + public BufferedFile(AccessFile var1, int var2, int var3) throws IOException { + this.__q = -1L; + this.__u = -1L; + this.__g = 0; + this.accessFile = var1; + this.capacity = this.__e = var1.length(); + this.readBuffer = new byte[var2]; + this.writeBuffer = new byte[var3]; + this.__l = 0L; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1424469113" + ) + @Export("close") + public void close() throws IOException { + this.flush(); + this.accessFile.close(); + } + + @ObfuscatedName("f") + @Export("seek") + public void seek(long var1) throws IOException { + if(var1 < 0L) { + throw new IOException(""); + } else { + this.__l = var1; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)J", + garbageValue = "0" + ) + @Export("length") + public long length() { + return this.capacity; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "([BI)V", + garbageValue = "617965847" + ) + @Export("readFill") + public void readFill(byte[] var1) throws IOException { + this.read(var1, 0, var1.length); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-35" + ) + @Export("read") + public void read(byte[] var1, int var2, int var3) throws IOException { + try { + if(var3 + var2 > var1.length) { + throw new ArrayIndexOutOfBoundsException(var3 + var2 - var1.length); + } + + if(-1L != this.__u && this.__l >= this.__u && this.__l + (long)var3 <= this.__u + (long)this.__g) { + System.arraycopy(this.writeBuffer, (int)(this.__l - this.__u), var1, var2, var3); + this.__l += (long)var3; + return; + } + + long var4 = this.__l; + int var7 = var3; + int var8; + if(this.__l >= this.__q && this.__l < this.__q + (long)this.__w) { + var8 = (int)((long)this.__w - (this.__l - this.__q)); + if(var8 > var3) { + var8 = var3; + } + + System.arraycopy(this.readBuffer, (int)(this.__l - this.__q), var1, var2, var8); + this.__l += (long)var8; + var2 += var8; + var3 -= var8; + } + + if(var3 > this.readBuffer.length) { + this.accessFile.seek(this.__l); + + for(this.__d = this.__l; var3 > 0; var3 -= var8) { + var8 = this.accessFile.read(var1, var2, var3); + if(var8 == -1) { + break; + } + + this.__d += (long)var8; + this.__l += (long)var8; + var2 += var8; + } + } else if(var3 > 0) { + this.load(); + var8 = var3; + if(var3 > this.__w) { + var8 = this.__w; + } + + System.arraycopy(this.readBuffer, 0, var1, var2, var8); + var2 += var8; + var3 -= var8; + this.__l += (long)var8; + } + + if(-1L != this.__u) { + if(this.__u > this.__l && var3 > 0) { + var8 = var2 + (int)(this.__u - this.__l); + if(var8 > var3 + var2) { + var8 = var3 + var2; + } + + while(var2 < var8) { + var1[var2++] = 0; + --var3; + ++this.__l; + } + } + + long var13 = -1L; + long var10 = -1L; + if(this.__u >= var4 && this.__u < var4 + (long)var7) { + var13 = this.__u; + } else if(var4 >= this.__u && var4 < this.__u + (long)this.__g) { + var13 = var4; + } + + if((long)this.__g + this.__u > var4 && this.__u + (long)this.__g <= var4 + (long)var7) { + var10 = (long)this.__g + this.__u; + } else if((long)var7 + var4 > this.__u && (long)var7 + var4 <= this.__u + (long)this.__g) { + var10 = (long)var7 + var4; + } + + if(var13 > -1L && var10 > var13) { + int var12 = (int)(var10 - var13); + System.arraycopy(this.writeBuffer, (int)(var13 - this.__u), var1, (int)(var13 - var4) + var2, var12); + if(var10 > this.__l) { + var3 = (int)((long)var3 - (var10 - this.__l)); + this.__l = var10; + } + } + } + } catch (IOException var16) { + this.__d = -1L; + throw var16; + } + + if(var3 > 0) { + throw new EOFException(); + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2020905321" + ) + @Export("load") + void load() throws IOException { + this.__w = 0; + if(this.__d != this.__l) { + this.accessFile.seek(this.__l); + this.__d = this.__l; + } + + int var1; + for(this.__q = this.__l; this.__w < this.readBuffer.length; this.__w += var1) { + var1 = this.accessFile.read(this.readBuffer, this.__w, this.readBuffer.length - this.__w); + if(var1 == -1) { + break; + } + + this.__d += (long)var1; + } + + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "([BIII)V", + garbageValue = "-601174169" + ) + @Export("write") + public void write(byte[] var1, int var2, int var3) throws IOException { + try { + if(this.__l + (long)var3 > this.capacity) { + this.capacity = this.__l + (long)var3; + } + + if(-1L != this.__u && (this.__l < this.__u || this.__l > this.__u + (long)this.__g)) { + this.flush(); + } + + if(this.__u != -1L && (long)var3 + this.__l > this.__u + (long)this.writeBuffer.length) { + int var4 = (int)((long)this.writeBuffer.length - (this.__l - this.__u)); + System.arraycopy(var1, var2, this.writeBuffer, (int)(this.__l - this.__u), var4); + this.__l += (long)var4; + var2 += var4; + var3 -= var4; + this.__g = this.writeBuffer.length; + this.flush(); + } + + if(var3 <= this.writeBuffer.length) { + if(var3 > 0) { + if(this.__u == -1L) { + this.__u = this.__l; + } + + System.arraycopy(var1, var2, this.writeBuffer, (int)(this.__l - this.__u), var3); + this.__l += (long)var3; + if(this.__l - this.__u > (long)this.__g) { + this.__g = (int)(this.__l - this.__u); + } + + } + } else { + if(this.__d != this.__l) { + this.accessFile.seek(this.__l); + this.__d = this.__l; + } + + this.accessFile.write(var1, var2, var3); + this.__d += (long)var3; + if(this.__d > this.__e) { + this.__e = this.__d; + } + + long var9 = -1L; + long var6 = -1L; + if(this.__l >= this.__q && this.__l < (long)this.__w + this.__q) { + var9 = this.__l; + } else if(this.__q >= this.__l && this.__q < (long)var3 + this.__l) { + var9 = this.__q; + } + + if(this.__l + (long)var3 > this.__q && (long)var3 + this.__l <= (long)this.__w + this.__q) { + var6 = this.__l + (long)var3; + } else if((long)this.__w + this.__q > this.__l && this.__q + (long)this.__w <= (long)var3 + this.__l) { + var6 = (long)this.__w + this.__q; + } + + if(var9 > -1L && var6 > var9) { + int var8 = (int)(var6 - var9); + System.arraycopy(var1, (int)(var9 + (long)var2 - this.__l), this.readBuffer, (int)(var9 - this.__q), var8); + } + + this.__l += (long)var3; + } + } catch (IOException var12) { + this.__d = -1L; + throw var12; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-931421226" + ) + @Export("flush") + void flush() throws IOException { + if(this.__u != -1L) { + if(this.__u != this.__d) { + this.accessFile.seek(this.__u); + this.__d = this.__u; + } + + this.accessFile.write(this.writeBuffer, 0, this.__g); + this.__d += (long)(this.__g * 1290782301) * -1558233611L; + if(this.__d > this.__e) { + this.__e = this.__d; + } + + long var1 = -1L; + long var3 = -1L; + if(this.__u >= this.__q && this.__u < (long)this.__w + this.__q) { + var1 = this.__u; + } else if(this.__q >= this.__u && this.__q < this.__u + (long)this.__g) { + var1 = this.__q; + } + + if(this.__u + (long)this.__g > this.__q && this.__u + (long)this.__g <= this.__q + (long)this.__w) { + var3 = this.__u + (long)this.__g; + } else if((long)this.__w + this.__q > this.__u && (long)this.__w + this.__q <= (long)this.__g + this.__u) { + var3 = this.__q + (long)this.__w; + } + + if(var1 > -1L && var3 > var1) { + int var5 = (int)(var3 - var1); + System.arraycopy(this.writeBuffer, (int)(var1 - this.__u), this.readBuffer, (int)(var1 - this.__q), var5); + } + + this.__u = -1L; + this.__g = 0; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/net/Socket;IIB)Lfu;", + garbageValue = "110" + ) + public static AbstractSocket method2719(Socket var0, int var1, int var2) throws IOException { + return new BufferedNetSocket(var0, var1, var2); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Ljava/lang/String;", + garbageValue = "-792629541" + ) + @Export("colorStartTag") + static String colorStartTag(int var0) { + return ""; + } + + @ObfuscatedName("er") + @ObfuscatedSignature( + signature = "(I)Llz;", + garbageValue = "-1653835085" + ) + @Export("worldMap") + static WorldMap worldMap() { + return class60.worldMap0; + } +} diff --git a/rs-client/src/main/java/BufferedNetSocket.java b/rs-client/src/main/java/BufferedNetSocket.java new file mode 100644 index 0000000000..c954347832 --- /dev/null +++ b/rs-client/src/main/java/BufferedNetSocket.java @@ -0,0 +1,113 @@ +import java.io.IOException; +import java.net.Socket; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ft") +@Implements("BufferedNetSocket") +public class BufferedNetSocket extends AbstractSocket { + @ObfuscatedName("m") + @Export("socket") + Socket socket; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lfh;" + ) + @Export("source") + BufferedSource source; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lfr;" + ) + @Export("sink") + BufferedSink sink; + + BufferedNetSocket(Socket var1, int var2, int var3) throws IOException { + this.socket = var1; + this.socket.setSoTimeout(30000); + this.socket.setTcpNoDelay(true); + this.socket.setReceiveBufferSize(65536); + this.socket.setSendBufferSize(65536); + this.source = new BufferedSource(this.socket.getInputStream(), var2); + this.sink = new BufferedSink(this.socket.getOutputStream(), var3); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1765046516" + ) + public boolean isAvailable(int var1) throws IOException { + return this.source.isAvailable(var1); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1078471130" + ) + public int available() throws IOException { + return this.source.available(); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "516705222" + ) + public int readUnsignedByte() throws IOException { + return this.source.readUnsignedByte(); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "([BIII)I", + garbageValue = "-1089665746" + ) + public int read(byte[] var1, int var2, int var3) throws IOException { + return this.source.read(var1, var2, var3); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-86" + ) + public void write(byte[] var1, int var2, int var3) throws IOException { + this.sink.write(var1, var2, var3); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1252618448" + ) + public void close() { + this.sink.close(); + + try { + this.socket.close(); + } catch (IOException var2) { + ; + } + + this.source.close(); + } + + @Export("__finalize_280") + @ObfuscatedName("finalize") + protected void __finalize_280() { + this.close(); + } + + @ObfuscatedName("ku") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-598265539" + ) + static void method3500(int var0) { + Client.oculusOrbState = var0; + } +} diff --git a/rs-client/src/main/java/BufferedSink.java b/rs-client/src/main/java/BufferedSink.java new file mode 100644 index 0000000000..3bca5ee7dd --- /dev/null +++ b/rs-client/src/main/java/BufferedSink.java @@ -0,0 +1,258 @@ +import java.io.IOException; +import java.io.OutputStream; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fr") +@Implements("BufferedSink") +public class BufferedSink implements Runnable { + @ObfuscatedName("m") + @Export("thread") + Thread thread; + @ObfuscatedName("f") + @Export("outputStream") + OutputStream outputStream; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1805563727 + ) + @Export("capacity") + int capacity; + @ObfuscatedName("w") + @Export("buffer") + byte[] buffer; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 315461309 + ) + @Export("position") + int position; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1028856279 + ) + @Export("limit") + int limit; + @ObfuscatedName("g") + @Export("exception") + IOException exception; + @ObfuscatedName("l") + @Export("isClosed0") + boolean isClosed0; + + BufferedSink(OutputStream var1, int var2) { + this.position = 0; + this.limit = 0; + this.outputStream = var1; + this.capacity = var2 + 1; + this.buffer = new byte[this.capacity]; + this.thread = new Thread(this); + this.thread.setDaemon(true); + this.thread.start(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1720378212" + ) + @Export("isClosed") + boolean isClosed() { + if(this.isClosed0) { + try { + this.outputStream.close(); + if(this.exception == null) { + this.exception = new IOException(""); + } + } catch (IOException var2) { + if(this.exception == null) { + this.exception = new IOException(var2); + } + } + + return true; + } else { + return false; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "0" + ) + @Export("write") + void write(byte[] var1, int var2, int var3) throws IOException { + if(var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) { + synchronized(this) { + if(this.exception != null) { + throw new IOException(this.exception.toString()); + } else { + int var5; + if(this.position <= this.limit) { + var5 = this.capacity - this.limit + this.position - 1; + } else { + var5 = this.position - this.limit - 1; + } + + if(var5 < var3) { + throw new IOException(""); + } else { + if(var3 + this.limit <= this.capacity) { + System.arraycopy(var1, var2, this.buffer, this.limit, var3); + } else { + int var6 = this.capacity - this.limit; + System.arraycopy(var1, var2, this.buffer, this.limit, var6); + System.arraycopy(var1, var6 + var2, this.buffer, 0, var3 - var6); + } + + this.limit = (var3 + this.limit) % this.capacity; + this.notifyAll(); + } + } + } + } else { + throw new IOException(); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2015413947" + ) + @Export("close") + void close() { + synchronized(this) { + this.isClosed0 = true; + this.notifyAll(); + } + + try { + this.thread.join(); + } catch (InterruptedException var3) { + ; + } + + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + do { + int var1; + synchronized(this) { + while(true) { + if(this.exception != null) { + return; + } + + if(this.position <= this.limit) { + var1 = this.limit - this.position; + } else { + var1 = this.capacity - this.position + this.limit; + } + + if(var1 > 0) { + break; + } + + try { + this.outputStream.flush(); + } catch (IOException var11) { + this.exception = var11; + return; + } + + if(this.isClosed()) { + return; + } + + try { + this.wait(); + } catch (InterruptedException var12) { + ; + } + } + } + + try { + if(var1 + this.position <= this.capacity) { + this.outputStream.write(this.buffer, this.position, var1); + } else { + int var7 = this.capacity - this.position; + this.outputStream.write(this.buffer, this.position, var7); + this.outputStream.write(this.buffer, 0, var1 - var7); + } + } catch (IOException var10) { + IOException var2 = var10; + synchronized(this) { + this.exception = var2; + return; + } + } + + synchronized(this) { + this.position = (var1 + this.position) % this.capacity; + } + } while(!this.isClosed()); + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "449588720" + ) + static void method3603() { + Tiles.__bq_w = null; + Fonts.__kz_o = null; + class32.__ay_u = null; + class307.__kc_g = null; + Tiles.__bq_a = null; + Tiles.__bq_l = null; + Huffman.__gd_e = null; + class13.__i_x = null; + Formatting.__cy_d = null; + class214.__hf_k = null; + WorldMapSectionType.__h_n = null; + Message.__bm_i = null; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Lho;I[B[BI)V", + garbageValue = "-1337774818" + ) + static final void method3595(Widget var0, int var1, byte[] var2, byte[] var3) { + if(var0.__cf == null) { + if(var2 == null) { + return; + } + + var0.__cf = new byte[11][]; + var0.__cp = new byte[11][]; + var0.__cc = new int[11]; + var0.__ci = new int[11]; + } + + var0.__cf[var1] = var2; + if(var2 != null) { + var0.__cg = true; + } else { + var0.__cg = false; + + for(int var4 = 0; var4 < var0.__cf.length; ++var4) { + if(var0.__cf[var4] != null) { + var0.__cg = true; + break; + } + } + } + + var0.__cp[var1] = var3; + } +} diff --git a/rs-client/src/main/java/BufferedSource.java b/rs-client/src/main/java/BufferedSource.java new file mode 100644 index 0000000000..f0aee8a0c5 --- /dev/null +++ b/rs-client/src/main/java/BufferedSource.java @@ -0,0 +1,285 @@ +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fh") +@Implements("BufferedSource") +public class BufferedSource implements Runnable { + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__fh_x") + public static AbstractIndexCache __fh_x; + @ObfuscatedName("m") + @Export("thread") + Thread thread; + @ObfuscatedName("f") + @Export("inputStream") + InputStream inputStream; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1970062431 + ) + @Export("capacity") + int capacity; + @ObfuscatedName("w") + @Export("buffer") + byte[] buffer; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 267006153 + ) + @Export("position") + int position; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1507905677 + ) + @Export("limit") + int limit; + @ObfuscatedName("g") + @Export("exception") + IOException exception; + + BufferedSource(InputStream var1, int var2) { + this.position = 0; + this.limit = 0; + this.inputStream = var1; + this.capacity = var2 + 1; + this.buffer = new byte[this.capacity]; + this.thread = new Thread(this); + this.thread.setDaemon(true); + this.thread.start(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1727240458" + ) + @Export("isAvailable") + boolean isAvailable(int var1) throws IOException { + if(var1 == 0) { + return true; + } else if(var1 > 0 && var1 < this.capacity) { + synchronized(this) { + int var3; + if(this.position <= this.limit) { + var3 = this.limit - this.position; + } else { + var3 = this.capacity - this.position + this.limit; + } + + if(var3 < var1) { + if(this.exception != null) { + throw new IOException(this.exception.toString()); + } else { + this.notifyAll(); + return false; + } + } else { + return true; + } + } + } else { + throw new IOException(); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1475171419" + ) + @Export("available") + int available() throws IOException { + synchronized(this) { + int var2; + if(this.position <= this.limit) { + var2 = this.limit - this.position; + } else { + var2 = this.capacity - this.position + this.limit; + } + + if(var2 <= 0 && this.exception != null) { + throw new IOException(this.exception.toString()); + } else { + this.notifyAll(); + return var2; + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1907345200" + ) + @Export("readUnsignedByte") + int readUnsignedByte() throws IOException { + synchronized(this) { + if(this.position == this.limit) { + if(this.exception != null) { + throw new IOException(this.exception.toString()); + } else { + return -1; + } + } else { + int var2 = this.buffer[this.position] & 255; + this.position = (this.position + 1) % this.capacity; + this.notifyAll(); + return var2; + } + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "([BIIB)I", + garbageValue = "-37" + ) + @Export("read") + int read(byte[] var1, int var2, int var3) throws IOException { + if(var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) { + synchronized(this) { + int var5; + if(this.position <= this.limit) { + var5 = this.limit - this.position; + } else { + var5 = this.capacity - this.position + this.limit; + } + + if(var3 > var5) { + var3 = var5; + } + + if(var3 == 0 && this.exception != null) { + throw new IOException(this.exception.toString()); + } else { + if(var3 + this.position <= this.capacity) { + System.arraycopy(this.buffer, this.position, var1, var2, var3); + } else { + int var6 = this.capacity - this.position; + System.arraycopy(this.buffer, this.position, var1, var2, var6); + System.arraycopy(this.buffer, 0, var1, var6 + var2, var3 - var6); + } + + this.position = (var3 + this.position) % this.capacity; + this.notifyAll(); + return var3; + } + } + } else { + throw new IOException(); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "886033980" + ) + @Export("close") + void close() { + synchronized(this) { + if(this.exception == null) { + this.exception = new IOException(""); + } + + this.notifyAll(); + } + + try { + this.thread.join(); + } catch (InterruptedException var3) { + ; + } + + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + while(true) { + int var1; + synchronized(this) { + while(true) { + if(this.exception != null) { + return; + } + + if(this.position == 0) { + var1 = this.capacity - this.limit - 1; + } else if(this.position <= this.limit) { + var1 = this.capacity - this.limit; + } else { + var1 = this.position - this.limit - 1; + } + + if(var1 > 0) { + break; + } + + try { + this.wait(); + } catch (InterruptedException var10) { + ; + } + } + } + + int var7; + try { + var7 = this.inputStream.read(this.buffer, this.limit, var1); + if(var7 == -1) { + throw new EOFException(); + } + } catch (IOException var11) { + IOException var3 = var11; + synchronized(this) { + this.exception = var3; + return; + } + } + + synchronized(this) { + this.limit = (var7 + this.limit) % this.capacity; + } + } + } + + @ObfuscatedName("gy") + @ObfuscatedSignature( + signature = "(ZB)V", + garbageValue = "6" + ) + static final void method3423(boolean var0) { + for(int var1 = 0; var1 < Client.npcCount; ++var1) { + Npc var2 = Client.npcs[Client.npcIndices[var1]]; + if(var2 != null && var2.isVisible() && var2.definition.isVisible == var0 && var2.definition.__e_435()) { + int var3 = var2.x >> 7; + int var4 = var2.y >> 7; + if(var3 >= 0 && var3 < 104 && var4 >= 0 && var4 < 104) { + if(var2.size == 1 && (var2.x & 127) == 64 && (var2.y & 127) == 64) { + if(Client.tileLastDrawnActor[var3][var4] == Client.viewportDrawCount) { + continue; + } + + Client.tileLastDrawnActor[var3][var4] = Client.viewportDrawCount; + } + + long var5 = FontName.method5637(0, 0, 1, !var2.definition.isInteractable, Client.npcIndices[var1]); + var2.playerCycle = Client.cycle; + class65.scene.__a_239(SoundSystem.plane, var2.x, var2.y, class32.getTileHeight(var2.size * 64 - 64 + var2.x, var2.size * 64 - 64 + var2.y, SoundSystem.plane), var2.size * 64 - 64 + 60, var2, var2.__ac, var5, var2.__ay); + } + } + } + + } +} diff --git a/rs-client/src/main/java/ByteArrayNode.java b/rs-client/src/main/java/ByteArrayNode.java new file mode 100644 index 0000000000..b4c5172e62 --- /dev/null +++ b/rs-client/src/main/java/ByteArrayNode.java @@ -0,0 +1,15 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("gp") +@Implements("ByteArrayNode") +public class ByteArrayNode extends Node { + @ObfuscatedName("m") + @Export("byteArray") + public byte[] byteArray; + + public ByteArrayNode(byte[] var1) { + this.byteArray = var1; + } +} diff --git a/rs-client/src/main/java/ByteArrayPool.java b/rs-client/src/main/java/ByteArrayPool.java new file mode 100644 index 0000000000..97268c74fd --- /dev/null +++ b/rs-client/src/main/java/ByteArrayPool.java @@ -0,0 +1,151 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gi") +@Implements("ByteArrayPool") +public class ByteArrayPool { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -791125441 + ) + @Export("ByteArrayPool_smallCount") + static int ByteArrayPool_smallCount; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 2121641763 + ) + @Export("ByteArrayPool_mediumCount") + static int ByteArrayPool_mediumCount; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -971800905 + ) + @Export("ByteArrayPool_largeCount") + static int ByteArrayPool_largeCount; + @ObfuscatedName("w") + @Export("ByteArrayPool_small") + static byte[][] ByteArrayPool_small; + @ObfuscatedName("o") + @Export("ByteArrayPool_medium") + static byte[][] ByteArrayPool_medium; + @ObfuscatedName("u") + @Export("ByteArrayPool_large") + static byte[][] ByteArrayPool_large; + @ObfuscatedName("g") + @Export("__gi_g") + static int[] __gi_g; + @ObfuscatedName("dz") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache13") + static IndexCache indexCache13; + + static { + ByteArrayPool_smallCount = 0; + ByteArrayPool_mediumCount = 0; + ByteArrayPool_largeCount = 0; + ByteArrayPool_small = new byte[1000][]; + ByteArrayPool_medium = new byte[250][]; + ByteArrayPool_large = new byte[50][]; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IZI)[B", + garbageValue = "198163011" + ) + @Export("ByteArrayPool_get") + static synchronized byte[] ByteArrayPool_get(int var0, boolean var1) { + byte[] var2; + if(var0 != 100) { + if(var0 < 100) { + ; + } + } else if(ByteArrayPool_smallCount > 0) { + var2 = ByteArrayPool_small[--ByteArrayPool_smallCount]; + ByteArrayPool_small[ByteArrayPool_smallCount] = null; + return var2; + } + + if(var0 != 5000) { + if(var0 < 5000) { + ; + } + } else if(ByteArrayPool_mediumCount > 0) { + var2 = ByteArrayPool_medium[--ByteArrayPool_mediumCount]; + ByteArrayPool_medium[ByteArrayPool_mediumCount] = null; + return var2; + } + + if(var0 != 30000) { + if(var0 < 30000) { + ; + } + } else if(ByteArrayPool_largeCount > 0) { + var2 = ByteArrayPool_large[--ByteArrayPool_largeCount]; + ByteArrayPool_large[ByteArrayPool_largeCount] = null; + return var2; + } + + if(class179.__fe_e != null) { + for(int var4 = 0; var4 < __gi_g.length; ++var4) { + if(__gi_g[var4] != var0) { + if(var0 < __gi_g[var4]) { + ; + } + } else if(WorldMapSection2.__ah_l[var4] > 0) { + byte[] var3 = class179.__fe_e[var4][--WorldMapSection2.__ah_l[var4]]; + class179.__fe_e[var4][WorldMapSection2.__ah_l[var4]] = null; + return var3; + } + } + } + + return new byte[var0]; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(IZI)Ljava/lang/String;", + garbageValue = "-399583759" + ) + public static String method4001(int var0, boolean var1) { + if(var1 && var0 >= 0) { + int var3 = var0; + String var2; + if(var1 && var0 >= 0) { + int var4 = 2; + + for(int var5 = var0 / 10; var5 != 0; ++var4) { + var5 /= 10; + } + + char[] var6 = new char[var4]; + var6[0] = '+'; + + for(int var7 = var4 - 1; var7 > 0; --var7) { + int var8 = var3; + var3 /= 10; + int var9 = var8 - var3 * 10; + if(var9 >= 10) { + var6[var7] = (char)(var9 + 87); + } else { + var6[var7] = (char)(var9 + 48); + } + } + + var2 = new String(var6); + } else { + var2 = Integer.toString(var0, 10); + } + + return var2; + } else { + return Integer.toString(var0); + } + } +} diff --git a/rs-client/src/main/java/Bzip2Decompressor.java b/rs-client/src/main/java/Bzip2Decompressor.java new file mode 100644 index 0000000000..b5cee0b5ba --- /dev/null +++ b/rs-client/src/main/java/Bzip2Decompressor.java @@ -0,0 +1,641 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gk") +@Implements("Bzip2Decompressor") +public final class Bzip2Decompressor { + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lgt;" + ) + @Export("Bzip2Decompressor_state") + static Bzip2State Bzip2Decompressor_state; + + static { + Bzip2Decompressor_state = new Bzip2State(); + } + + @ObfuscatedName("m") + @Export("Bzip2Decompressor_decompress") + public static int Bzip2Decompressor_decompress(byte[] var0, int var1, byte[] var2, int var3, int var4) { + Bzip2State var5 = Bzip2Decompressor_state; + synchronized(Bzip2Decompressor_state) { + Bzip2Decompressor_state.__g = var2; + Bzip2Decompressor_state.__l = var4; + Bzip2Decompressor_state.__x = var0; + Bzip2Decompressor_state.__d = 0; + Bzip2Decompressor_state.__k = var1; + Bzip2Decompressor_state.__j = 0; + Bzip2Decompressor_state.__z = 0; + Bzip2Decompressor_state.__e = 0; + Bzip2Decompressor_state.__n = 0; + method3725(Bzip2Decompressor_state); + var1 -= Bzip2Decompressor_state.__k; + Bzip2Decompressor_state.__g = null; + Bzip2Decompressor_state.__x = null; + return var1; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgt;)V" + ) + static void method3705(Bzip2State var0) { + byte var2 = var0.__i; + int var3 = var0.__a; + int var4 = var0.__c; + int var5 = var0.__h; + int[] var6 = WorldMapSection0.__y_p; + int var7 = var0.__y; + byte[] var8 = var0.__x; + int var9 = var0.__d; + int var10 = var0.__k; + int var12 = var0.__ae + 1; + + label65: + while(true) { + if(var3 > 0) { + while(true) { + if(var10 == 0) { + break label65; + } + + if(var3 == 1) { + if(var10 == 0) { + var3 = 1; + break label65; + } + + var8[var9] = var2; + ++var9; + --var10; + break; + } + + var8[var9] = var2; + --var3; + ++var9; + --var10; + } + } + + boolean var14 = true; + + byte var1; + while(var14) { + var14 = false; + if(var4 == var12) { + var3 = 0; + break label65; + } + + var2 = (byte)var5; + var7 = var6[var7]; + var1 = (byte)(var7 & 255); + var7 >>= 8; + ++var4; + if(var1 != var5) { + var5 = var1; + if(var10 == 0) { + var3 = 1; + break label65; + } + + var8[var9] = var2; + ++var9; + --var10; + var14 = true; + } else if(var4 == var12) { + if(var10 == 0) { + var3 = 1; + break label65; + } + + var8[var9] = var2; + ++var9; + --var10; + var14 = true; + } + } + + var3 = 2; + var7 = var6[var7]; + var1 = (byte)(var7 & 255); + var7 >>= 8; + ++var4; + if(var4 != var12) { + if(var1 != var5) { + var5 = var1; + } else { + var3 = 3; + var7 = var6[var7]; + var1 = (byte)(var7 & 255); + var7 >>= 8; + ++var4; + if(var4 != var12) { + if(var1 != var5) { + var5 = var1; + } else { + var7 = var6[var7]; + var1 = (byte)(var7 & 255); + var7 >>= 8; + ++var4; + var3 = (var1 & 255) + 4; + var7 = var6[var7]; + var5 = (byte)(var7 & 255); + var7 >>= 8; + ++var4; + } + } + } + } + } + + int var13 = var0.__n; + var0.__n += var10 - var10; + if(var0.__n < var13) { + ; + } + + var0.__i = var2; + var0.__a = var3; + var0.__c = var4; + var0.__h = var5; + WorldMapSection0.__y_p = var6; + var0.__y = var7; + var0.__x = var8; + var0.__d = var9; + var0.__k = var10; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgt;)V" + ) + static void method3725(Bzip2State var0) { + boolean var4 = false; + boolean var5 = false; + boolean var6 = false; + boolean var7 = false; + boolean var8 = false; + boolean var9 = false; + boolean var10 = false; + boolean var11 = false; + boolean var12 = false; + boolean var13 = false; + boolean var14 = false; + boolean var15 = false; + boolean var16 = false; + boolean var17 = false; + boolean var18 = false; + boolean var19 = false; + boolean var20 = false; + boolean var21 = false; + int var22 = 0; + int[] var23 = null; + int[] var24 = null; + int[] var25 = null; + var0.__s = 1; + if(WorldMapSection0.__y_p == null) { + WorldMapSection0.__y_p = new int[var0.__s * 100000]; + } + + boolean var26 = true; + + while(true) { + while(var26) { + byte var1 = method3707(var0); + if(var1 == 23) { + return; + } + + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3707(var0); + var1 = method3711(var0); + if(var1 != 0) { + ; + } + + var0.__t = 0; + var1 = method3707(var0); + var0.__t = var0.__t << 8 | var1 & 255; + var1 = method3707(var0); + var0.__t = var0.__t << 8 | var1 & 255; + var1 = method3707(var0); + var0.__t = var0.__t << 8 | var1 & 255; + + int var36; + for(var36 = 0; var36 < 16; ++var36) { + var1 = method3711(var0); + if(var1 == 1) { + var0.__aq[var36] = true; + } else { + var0.__aq[var36] = false; + } + } + + for(var36 = 0; var36 < 256; ++var36) { + var0.__ag[var36] = false; + } + + int var37; + for(var36 = 0; var36 < 16; ++var36) { + if(var0.__aq[var36]) { + for(var37 = 0; var37 < 16; ++var37) { + var1 = method3711(var0); + if(var1 == 1) { + var0.__ag[var37 + var36 * 16] = true; + } + } + } + } + + method3710(var0); + int var39 = var0.__v + 2; + int var40 = method3708(3, var0); + int var41 = method3708(15, var0); + + for(var36 = 0; var36 < var41; ++var36) { + var37 = 0; + + while(true) { + var1 = method3711(var0); + if(var1 == 0) { + var0.__ay[var36] = (byte)var37; + break; + } + + ++var37; + } + } + + byte[] var27 = new byte[6]; + + byte var29; + for(var29 = 0; var29 < var40; var27[var29] = var29++) { + ; + } + + for(var36 = 0; var36 < var41; ++var36) { + var29 = var0.__ay[var36]; + + byte var28; + for(var28 = var27[var29]; var29 > 0; --var29) { + var27[var29] = var27[var29 - 1]; + } + + var27[0] = var28; + var0.__ac[var36] = var28; + } + + int var38; + for(var38 = 0; var38 < var40; ++var38) { + int var50 = method3708(5, var0); + + for(var36 = 0; var36 < var39; ++var36) { + while(true) { + var1 = method3711(var0); + if(var1 == 0) { + var0.__ah[var38][var36] = (byte)var50; + break; + } + + var1 = method3711(var0); + if(var1 == 0) { + ++var50; + } else { + --var50; + } + } + } + } + + for(var38 = 0; var38 < var40; ++var38) { + byte var2 = 32; + byte var3 = 0; + + for(var36 = 0; var36 < var39; ++var36) { + if(var0.__ah[var38][var36] > var3) { + var3 = var0.__ah[var38][var36]; + } + + if(var0.__ah[var38][var36] < var2) { + var2 = var0.__ah[var38][var36]; + } + } + + method3706(var0.__ak[var38], var0.__aw[var38], var0.__al[var38], var0.__ah[var38], var2, var3, var39); + var0.__ab[var38] = var2; + } + + int var42 = var0.__v + 1; + int var43 = -1; + byte var44 = 0; + + for(var36 = 0; var36 <= 255; ++var36) { + var0.__b[var36] = 0; + } + + int var56 = 4095; + + int var35; + int var55; + for(var35 = 15; var35 >= 0; --var35) { + for(var55 = 15; var55 >= 0; --var55) { + var0.__av[var56] = (byte)(var55 + var35 * 16); + --var56; + } + + var0.__ar[var35] = var56 + 1; + } + + int var47 = 0; + byte var54; + if(var44 == 0) { + ++var43; + var44 = 50; + var54 = var0.__ac[var43]; + var22 = var0.__ab[var54]; + var23 = var0.__ak[var54]; + var25 = var0.__al[var54]; + var24 = var0.__aw[var54]; + } + + int var45 = var44 - 1; + int var51 = var22; + + int var52; + byte var53; + for(var52 = method3708(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) { + ++var51; + var53 = method3711(var0); + } + + int var46 = var25[var52 - var24[var51]]; + + while(true) { + while(var46 != var42) { + if(var46 != 0 && var46 != 1) { + int var33 = var46 - 1; + int var30; + if(var33 < 16) { + var30 = var0.__ar[0]; + + for(var1 = var0.__av[var30 + var33]; var33 > 3; var33 -= 4) { + int var34 = var30 + var33; + var0.__av[var34] = var0.__av[var34 - 1]; + var0.__av[var34 - 1] = var0.__av[var34 - 2]; + var0.__av[var34 - 2] = var0.__av[var34 - 3]; + var0.__av[var34 - 3] = var0.__av[var34 - 4]; + } + + while(var33 > 0) { + var0.__av[var30 + var33] = var0.__av[var30 + var33 - 1]; + --var33; + } + + var0.__av[var30] = var1; + } else { + int var31 = var33 / 16; + int var32 = var33 % 16; + var30 = var0.__ar[var31] + var32; + + for(var1 = var0.__av[var30]; var30 > var0.__ar[var31]; --var30) { + var0.__av[var30] = var0.__av[var30 - 1]; + } + + ++var0.__ar[var31]; + + while(var31 > 0) { + --var0.__ar[var31]; + var0.__av[var0.__ar[var31]] = var0.__av[var0.__ar[var31 - 1] + 16 - 1]; + --var31; + } + + --var0.__ar[0]; + var0.__av[var0.__ar[0]] = var1; + if(var0.__ar[0] == 0) { + var56 = 4095; + + for(var35 = 15; var35 >= 0; --var35) { + for(var55 = 15; var55 >= 0; --var55) { + var0.__av[var56] = var0.__av[var0.__ar[var35] + var55]; + --var56; + } + + var0.__ar[var35] = var56 + 1; + } + } + } + + ++var0.__b[var0.__aj[var1 & 255] & 255]; + WorldMapSection0.__y_p[var47] = var0.__aj[var1 & 255] & 255; + ++var47; + if(var45 == 0) { + ++var43; + var45 = 50; + var54 = var0.__ac[var43]; + var22 = var0.__ab[var54]; + var23 = var0.__ak[var54]; + var25 = var0.__al[var54]; + var24 = var0.__aw[var54]; + } + + --var45; + var51 = var22; + + for(var52 = method3708(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) { + ++var51; + var53 = method3711(var0); + } + + var46 = var25[var52 - var24[var51]]; + } else { + int var48 = -1; + int var49 = 1; + + do { + if(var46 == 0) { + var48 += var49; + } else if(var46 == 1) { + var48 += var49 * 2; + } + + var49 *= 2; + if(var45 == 0) { + ++var43; + var45 = 50; + var54 = var0.__ac[var43]; + var22 = var0.__ab[var54]; + var23 = var0.__ak[var54]; + var25 = var0.__al[var54]; + var24 = var0.__aw[var54]; + } + + --var45; + var51 = var22; + + for(var52 = method3708(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) { + ++var51; + var53 = method3711(var0); + } + + var46 = var25[var52 - var24[var51]]; + } while(var46 == 0 || var46 == 1); + + ++var48; + var1 = var0.__aj[var0.__av[var0.__ar[0]] & 255]; + + for(var0.__b[var1 & 255] += var48; var48 > 0; --var48) { + WorldMapSection0.__y_p[var47] = var1 & 255; + ++var47; + } + } + } + + var0.__a = 0; + var0.__i = 0; + var0.__r[0] = 0; + + for(var36 = 1; var36 <= 256; ++var36) { + var0.__r[var36] = var0.__b[var36 - 1]; + } + + for(var36 = 1; var36 <= 256; ++var36) { + var0.__r[var36] += var0.__r[var36 - 1]; + } + + for(var36 = 0; var36 < var47; ++var36) { + var1 = (byte)(WorldMapSection0.__y_p[var36] & 255); + WorldMapSection0.__y_p[var0.__r[var1 & 255]] |= var36 << 8; + ++var0.__r[var1 & 255]; + } + + var0.__y = WorldMapSection0.__y_p[var0.__t] >> 8; + var0.__c = 0; + var0.__y = WorldMapSection0.__y_p[var0.__y]; + var0.__h = (byte)(var0.__y & 255); + var0.__y >>= 8; + ++var0.__c; + var0.__ae = var47; + method3705(var0); + if(var0.__ae + 1 == var0.__c && var0.__a == 0) { + var26 = true; + break; + } + + var26 = false; + break; + } + } + + return; + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgt;)B" + ) + static byte method3707(Bzip2State var0) { + return (byte)method3708(8, var0); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgt;)B" + ) + static byte method3711(Bzip2State var0) { + return (byte)method3708(1, var0); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(ILgt;)I" + ) + static int method3708(int var0, Bzip2State var1) { + while(var1.__j < var0) { + var1.__z = var1.__z << 8 | var1.__g[var1.__l] & 255; + var1.__j += 8; + ++var1.__l; + ++var1.__e; + if(var1.__e == 0) { + ; + } + } + + int var3 = var1.__z >> var1.__j - var0 & (1 << var0) - 1; + var1.__j -= var0; + return var3; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Lgt;)V" + ) + static void method3710(Bzip2State var0) { + var0.__v = 0; + + for(int var1 = 0; var1 < 256; ++var1) { + if(var0.__ag[var1]) { + var0.__aj[var0.__v] = (byte)var1; + ++var0.__v; + } + } + + } + + @ObfuscatedName("l") + static void method3706(int[] var0, int[] var1, int[] var2, byte[] var3, int var4, int var5, int var6) { + int var7 = 0; + + int var8; + for(var8 = var4; var8 <= var5; ++var8) { + for(int var9 = 0; var9 < var6; ++var9) { + if(var8 == var3[var9]) { + var2[var7] = var9; + ++var7; + } + } + } + + for(var8 = 0; var8 < 23; ++var8) { + var1[var8] = 0; + } + + for(var8 = 0; var8 < var6; ++var8) { + ++var1[var3[var8] + 1]; + } + + for(var8 = 1; var8 < 23; ++var8) { + var1[var8] += var1[var8 - 1]; + } + + for(var8 = 0; var8 < 23; ++var8) { + var0[var8] = 0; + } + + int var10 = 0; + + for(var8 = var4; var8 <= var5; ++var8) { + var10 += var1[var8 + 1] - var1[var8]; + var0[var8] = var10 - 1; + var10 <<= 1; + } + + for(var8 = var4 + 1; var8 <= var5; ++var8) { + var1[var8] = (var0[var8 - 1] + 1 << 1) - var1[var8]; + } + + } +} diff --git a/rs-client/src/main/java/Bzip2State.java b/rs-client/src/main/java/Bzip2State.java new file mode 100644 index 0000000000..aca4b3ea42 --- /dev/null +++ b/rs-client/src/main/java/Bzip2State.java @@ -0,0 +1,193 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("gt") +@Implements("Bzip2State") +public final class Bzip2State { + @ObfuscatedName("m") + @Export("__m") + final int __m; + @ObfuscatedName("f") + @Export("__f") + final int __f; + @ObfuscatedName("q") + @Export("__q") + final int __q; + @ObfuscatedName("w") + @Export("__w") + final int __w; + @ObfuscatedName("o") + @Export("__o") + final int __o; + @ObfuscatedName("u") + @Export("__u") + final int __u; + @ObfuscatedName("g") + @Export("__g") + byte[] __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1510817847 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -473971741 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @Export("__x") + byte[] __x; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -861462251 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 594179173 + ) + @Export("__k") + int __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 1860254567 + ) + @Export("surfaceOffsetY") + int __n; + @ObfuscatedName("i") + @Export("__i") + byte __i; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -1994129645 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -1793367959 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = -1987934943 + ) + @Export("__j") + int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 1172102327 + ) + @Export("__s") + int __s; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 1502359789 + ) + @Export("__t") + int __t; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = -953353963 + ) + @Export("__y") + int __y; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = -1981923611 + ) + @Export("__h") + int __h; + @ObfuscatedName("b") + @Export("__b") + int[] __b; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = -557334365 + ) + @Export("__c") + int __c; + @ObfuscatedName("r") + @Export("__r") + int[] __r; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = -886333045 + ) + @Export("__v") + int __v; + @ObfuscatedName("ag") + @Export("__ag") + boolean[] __ag; + @ObfuscatedName("aq") + @Export("__aq") + boolean[] __aq; + @ObfuscatedName("aj") + @Export("__aj") + byte[] __aj; + @ObfuscatedName("av") + @Export("__av") + byte[] __av; + @ObfuscatedName("ar") + @Export("__ar") + int[] __ar; + @ObfuscatedName("ac") + @Export("__ac") + byte[] __ac; + @ObfuscatedName("ay") + @Export("__ay") + byte[] __ay; + @ObfuscatedName("ah") + @Export("__ah") + byte[][] __ah; + @ObfuscatedName("ak") + @Export("__ak") + int[][] __ak; + @ObfuscatedName("aw") + @Export("__aw") + int[][] __aw; + @ObfuscatedName("al") + @Export("__al") + int[][] __al; + @ObfuscatedName("ab") + @Export("__ab") + int[] __ab; + @ObfuscatedName("ae") + @ObfuscatedGetter( + intValue = 444639767 + ) + @Export("__ae") + int __ae; + + Bzip2State() { + this.__m = 4096; + this.__f = 16; + this.__q = 258; + this.__w = 6; + this.__o = 50; + this.__u = 18002; + this.__l = 0; + this.__d = 0; + this.__b = new int[256]; + this.__r = new int[257]; + this.__ag = new boolean[256]; + this.__aq = new boolean[16]; + this.__aj = new byte[256]; + this.__av = new byte[4096]; + this.__ar = new int[16]; + this.__ac = new byte[18002]; + this.__ay = new byte[18002]; + this.__ah = new byte[6][258]; + this.__ak = new int[6][258]; + this.__aw = new int[6][258]; + this.__al = new int[6][258]; + this.__ab = new int[6]; + } +} diff --git a/rs-client/src/main/java/Canvas.java b/rs-client/src/main/java/Canvas.java new file mode 100644 index 0000000000..80de74600b --- /dev/null +++ b/rs-client/src/main/java/Canvas.java @@ -0,0 +1,267 @@ +import java.awt.Component; +import java.awt.Graphics; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringReader; +import java.io.StringWriter; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ao") +@Implements("Canvas") +public final class Canvas extends java.awt.Canvas { + @ObfuscatedName("s") + @Export("__ao_s") + public static String[] __ao_s; + @ObfuscatedName("gk") + @ObfuscatedGetter( + intValue = -1131782991 + ) + @Export("__ao_gk") + static int __ao_gk; + @ObfuscatedName("jk") + @ObfuscatedSignature( + signature = "Lbr;" + ) + @Export("localPlayer") + static Player localPlayer; + @ObfuscatedName("m") + @Export("component") + Component component; + + Canvas(Component var1) { + this.component = var1; + } + + @Export("update") + @ObfuscatedName("update") + public final void update(Graphics var1) { + this.component.update(var1); + } + + @Export("paint") + @ObfuscatedName("paint") + public final void paint(Graphics var1) { + this.component.paint(var1); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/Throwable;I)Ljava/lang/String;", + garbageValue = "2032921954" + ) + static String method860(Throwable var0) throws IOException { + String var1; + if(var0 instanceof RunException) { + RunException var2 = (RunException)var0; + var1 = var2.string + " | "; + var0 = var2.throwable; + } else { + var1 = ""; + } + + StringWriter var12 = new StringWriter(); + PrintWriter var3 = new PrintWriter(var12); + var0.printStackTrace(var3); + var3.close(); + String var4 = var12.toString(); + BufferedReader var5 = new BufferedReader(new StringReader(var4)); + String var6 = var5.readLine(); + + while(true) { + while(true) { + String var7 = var5.readLine(); + if(var7 == null) { + var1 = var1 + "| " + var6; + return var1; + } + + int var8 = var7.indexOf(40); + int var9 = var7.indexOf(41, var8 + 1); + if(var8 >= 0 && var9 >= 0) { + String var10 = var7.substring(var8 + 1, var9); + int var11 = var10.indexOf(".java:"); + if(var11 >= 0) { + var10 = var10.substring(0, var11) + var10.substring(var11 + 5); + var1 = var1 + var10 + ' '; + continue; + } + + var7 = var7.substring(0, var8); + } + + var7 = var7.trim(); + var7 = var7.substring(var7.lastIndexOf(32) + 1); + var7 = var7.substring(var7.lastIndexOf(9) + 1); + var1 = var1 + var7 + ' '; + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)[B", + garbageValue = "708667926" + ) + static synchronized byte[] method862(int var0) { + return ByteArrayPool.ByteArrayPool_get(var0, false); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "2144935109" + ) + static int method861(int var0, Script var1, boolean var2) { + int var3; + int var4; + if(var0 == 100) { + class179.Interpreter_intStackSize -= 3; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + int var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + if(var4 == 0) { + throw new RuntimeException(); + } else { + Widget var6 = Huffman.getWidget(var3); + if(var6.children == null) { + var6.children = new Widget[var5 + 1]; + } + + if(var6.children.length <= var5) { + Widget[] var7 = new Widget[var5 + 1]; + + for(int var8 = 0; var8 < var6.children.length; ++var8) { + var7[var8] = var6.children[var8]; + } + + var6.children = var7; + } + + if(var5 > 0 && var6.children[var5 - 1] == null) { + throw new RuntimeException("" + (var5 - 1)); + } else { + Widget var12 = new Widget(); + var12.type = var4; + var12.parentId = var12.id = var6.id; + var12.childIndex = var5; + var12.isIf3 = true; + var6.children[var5] = var12; + if(var2) { + WorldMapIcon1.__t_i = var12; + } else { + class12.__n_n = var12; + } + + class22.method295(var6); + return 1; + } + } + } else { + Widget var9; + if(var0 == 101) { + var9 = var2?WorldMapIcon1.__t_i:class12.__n_n; + Widget var10 = Huffman.getWidget(var9.id); + var10.children[var9.childIndex] = null; + class22.method295(var10); + return 1; + } else if(var0 == 102) { + var9 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + var9.children = null; + class22.method295(var9); + return 1; + } else if(var0 != 200) { + if(var0 == 201) { + var9 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + if(var9 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + if(var2) { + WorldMapIcon1.__t_i = var9; + } else { + class12.__n_n = var9; + } + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else { + return 2; + } + } else { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Widget var11 = class204.getWidgetChild(var3, var4); + if(var11 != null && var4 != -1) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + if(var2) { + WorldMapIcon1.__t_i = var11; + } else { + class12.__n_n = var11; + } + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(ILir;Ljava/lang/String;Ljava/lang/String;IZS)V", + garbageValue = "-9124" + ) + public static void method858(int var0, AbstractIndexCache var1, String var2, String var3, int var4, boolean var5) { + int var6 = var1.getArchiveId(var2); + int var7 = var1.getRecordId(var6, var3); + class214.__hf_o = 1; + class214.__hf_u = var1; + class30.musicTrackArchiveId = var6; + GrandExchangeOffer.musicTrackFileId = var7; + WorldMapLabel.__aj_e = var4; + RectangleMode.musicTrackBoolean = var5; + FaceNormal.__el_x = var0; + } + + @ObfuscatedName("ha") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1032035944" + ) + static final void method855() { + for(class68 var0 = (class68)Client.__client_kh.last(); var0 != null; var0 = (class68)Client.__client_kh.previous()) { + if(var0.field910 > 0) { + --var0.field910; + } + + if(var0.field910 == 0) { + if(var0.field903 < 0 || VarbitDefinition.method4910(var0.field903, var0.field905)) { + ParamKeyDefinition.method4933(var0.field911, var0.field906, var0.field913, var0.field901, var0.field903, var0.field904, var0.field905); + var0.remove(); + } + } else { + if(var0.field909 > 0) { + --var0.field909; + } + + if(var0.field909 == 0 && var0.field913 >= 1 && var0.field901 >= 1 && var0.field913 <= 102 && var0.field901 <= 102 && (var0.field899 < 0 || VarbitDefinition.method4910(var0.field899, var0.field908))) { + ParamKeyDefinition.method4933(var0.field911, var0.field906, var0.field913, var0.field901, var0.field899, var0.field907, var0.field908); + var0.field909 = -1; + if(var0.field903 == var0.field899 && var0.field903 == -1) { + var0.remove(); + } else if(var0.field899 == var0.field903 && var0.field904 == var0.field907 && var0.field908 == var0.field905) { + var0.remove(); + } + } + } + } + + } +} diff --git a/rs-client/src/main/java/ChatChannel.java b/rs-client/src/main/java/ChatChannel.java new file mode 100644 index 0000000000..662bf6a8b3 --- /dev/null +++ b/rs-client/src/main/java/ChatChannel.java @@ -0,0 +1,352 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cp") +@Implements("ChatChannel") +public class ChatChannel { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "[Lbm;" + ) + @Export("messages") + Message[] messages; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 612486877 + ) + @Export("count") + int count; + + ChatChannel() { + this.messages = new Message[100]; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Lbm;", + garbageValue = "463993373" + ) + @Export("addMessage") + Message addMessage(int var1, String var2, String var3, String var4) { + Message var5 = this.messages[99]; + + for(int var6 = this.count; var6 > 0; --var6) { + if(var6 != 100) { + this.messages[var6] = this.messages[var6 - 1]; + } + } + + if(var5 == null) { + var5 = new Message(var1, var2, var4, var3); + } else { + var5.remove(); + var5.removeDual(); + var5.set(var1, var2, var4, var3); + } + + this.messages[0] = var5; + if(this.count < 100) { + ++this.count; + } + + return var5; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Lbm;", + garbageValue = "-195254780" + ) + @Export("getMessage") + Message getMessage(int var1) { + return var1 >= 0 && var1 < this.count?this.messages[var1]:null; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1274923506" + ) + @Export("size") + int size() { + return this.count; + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(CI)Z", + garbageValue = "-1857344803" + ) + public static boolean method2238(char var0) { + return var0 >= ' ' && var0 <= '~'?true:(var0 >= 160 && var0 <= 255?true:var0 == 8364 || var0 == 338 || var0 == 8212 || var0 == 339 || var0 == 376); + } + + @ObfuscatedName("fk") + @ObfuscatedSignature( + signature = "(Lbz;I)V", + garbageValue = "911583338" + ) + static final void method2225(Actor var0) { + var0.__ay = false; + SequenceDefinition var1; + if(var0.movementSequence != -1) { + var1 = WorldMapAreaData.getSequenceDefinition(var0.movementSequence); + if(var1 != null && var1.frameIds != null) { + ++var0.movementFrameCycle; + if(var0.movementFrame < var1.frameIds.length && var0.movementFrameCycle > var1.frameLengths[var0.movementFrame]) { + var0.movementFrameCycle = 1; + ++var0.movementFrame; + Script.method2201(var1, var0.movementFrame, var0.x, var0.y); + } + + if(var0.movementFrame >= var1.frameIds.length) { + var0.movementFrameCycle = 0; + var0.movementFrame = 0; + Script.method2201(var1, var0.movementFrame, var0.x, var0.y); + } + } else { + var0.movementSequence = -1; + } + } + + if(var0.spotAnimation != -1 && Client.cycle >= var0.__bt) { + if(var0.spotAnimationFrame < 0) { + var0.spotAnimationFrame = 0; + } + + int var3 = class50.getSpotAnimationDefinition(var0.spotAnimation).sequence; + if(var3 != -1) { + SequenceDefinition var2 = WorldMapAreaData.getSequenceDefinition(var3); + if(var2 != null && var2.frameIds != null) { + ++var0.spotAnimationFrameCycle; + if(var0.spotAnimationFrame < var2.frameIds.length && var0.spotAnimationFrameCycle > var2.frameLengths[var0.spotAnimationFrame]) { + var0.spotAnimationFrameCycle = 1; + ++var0.spotAnimationFrame; + Script.method2201(var2, var0.spotAnimationFrame, var0.x, var0.y); + } + + if(var0.spotAnimationFrame >= var2.frameIds.length && (var0.spotAnimationFrame < 0 || var0.spotAnimationFrame >= var2.frameIds.length)) { + var0.spotAnimation = -1; + } + } else { + var0.spotAnimation = -1; + } + } else { + var0.spotAnimation = -1; + } + } + + if(var0.sequence != -1 && var0.sequenceDelay <= 1) { + var1 = WorldMapAreaData.getSequenceDefinition(var0.sequence); + if(var1.__j == 1 && var0.__ch > 0 && var0.__bw <= Client.cycle && var0.__cr < Client.cycle) { + var0.sequenceDelay = 1; + return; + } + } + + if(var0.sequence != -1 && var0.sequenceDelay == 0) { + var1 = WorldMapAreaData.getSequenceDefinition(var0.sequence); + if(var1 != null && var1.frameIds != null) { + ++var0.sequenceFrameCycle; + if(var0.sequenceFrame < var1.frameIds.length && var0.sequenceFrameCycle > var1.frameLengths[var0.sequenceFrame]) { + var0.sequenceFrameCycle = 1; + ++var0.sequenceFrame; + Script.method2201(var1, var0.sequenceFrame, var0.x, var0.y); + } + + if(var0.sequenceFrame >= var1.frameIds.length) { + var0.sequenceFrame -= var1.frameCount; + ++var0.__bj; + if(var0.__bj >= var1.__z) { + var0.sequence = -1; + } else if(var0.sequenceFrame >= 0 && var0.sequenceFrame < var1.frameIds.length) { + Script.method2201(var1, var0.sequenceFrame, var0.x, var0.y); + } else { + var0.sequence = -1; + } + } + + var0.__ay = var1.__k; + } else { + var0.sequence = -1; + } + } + + if(var0.sequenceDelay > 0) { + --var0.sequenceDelay; + } + + } + + @ObfuscatedName("ia") + @ObfuscatedSignature( + signature = "(Lho;IIB)V", + garbageValue = "94" + ) + static final void method2237(Widget var0, int var1, int var2) { + if(var0.buttonType == 1) { + Tiles.method1106(var0.buttonText, "", 24, 0, 0, var0.id); + } + + String var3; + if(var0.buttonType == 2 && !Client.isSpellSelected) { + var3 = class198.method3745(var0); + if(var3 != null) { + Tiles.method1106(var3, BufferedFile.colorStartTag(65280) + var0.spellName, 25, 0, -1, var0.id); + } + } + + if(var0.buttonType == 3) { + Tiles.method1106("Close", "", 26, 0, 0, var0.id); + } + + if(var0.buttonType == 4) { + Tiles.method1106(var0.buttonText, "", 28, 0, 0, var0.id); + } + + if(var0.buttonType == 5) { + Tiles.method1106(var0.buttonText, "", 29, 0, 0, var0.id); + } + + if(var0.buttonType == 6 && Client.__client_mo == null) { + Tiles.method1106(var0.buttonText, "", 30, 0, -1, var0.id); + } + + int var4; + int var5; + int var13; + if(var0.type == 2) { + var13 = 0; + + for(var4 = 0; var4 < var0.height; ++var4) { + for(var5 = 0; var5 < var0.width; ++var5) { + int var6 = (var0.paddingX + 32) * var5; + int var7 = (var0.paddingY + 32) * var4; + if(var13 < 20) { + var6 += var0.inventoryXOffsets[var13]; + var7 += var0.inventoryYOffsets[var13]; + } + + if(var1 >= var6 && var2 >= var7 && var1 < var6 + 32 && var2 < var7 + 32) { + Client.dragItemSlotDestination = var13; + UserComparator6.__fg_jh = var0; + if(var0.itemIds[var13] > 0) { + ItemDefinition var8 = Skills.getItemDefinition(var0.itemIds[var13] - 1); + if(Client.isItemSelected == 1 && WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) { + if(var0.id != ServerPacket.selectedItemWidget || var13 != HealthBarDefinition.selectedItemSlot) { + Tiles.method1106("Use", Client.selectedItemName + " " + "->" + " " + BufferedFile.colorStartTag(16748608) + var8.name, 31, var8.id, var13, var0.id); + } + } else if(Client.isSpellSelected && WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) { + if((FloorDecoration.selectedSpellFlags & 16) == 16) { + Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + BufferedFile.colorStartTag(16748608) + var8.name, 32, var8.id, var13, var0.id); + } + } else { + String[] var9 = var8.inventoryActions; + int var10 = -1; + if(Client.shiftClickDrop && WorldMapEvent.method779()) { + var10 = var8.getShiftClickIndex(); + } + + int var11; + if(WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) { + for(var11 = 4; var11 >= 3; --var11) { + if(var10 != var11) { + AccessFile.method2726(var0, var8, var13, var11, false); + } + } + } + + if(SecureRandomFuture.method2101(class1.getWidgetClickMask(var0))) { + Tiles.method1106("Use", BufferedFile.colorStartTag(16748608) + var8.name, 38, var8.id, var13, var0.id); + } + + if(WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) { + for(var11 = 2; var11 >= 0; --var11) { + if(var11 != var10) { + AccessFile.method2726(var0, var8, var13, var11, false); + } + } + + if(var10 >= 0) { + AccessFile.method2726(var0, var8, var13, var10, true); + } + } + + var9 = var0.itemActions; + if(var9 != null) { + for(var11 = 4; var11 >= 0; --var11) { + if(var9[var11] != null) { + byte var12 = 0; + if(var11 == 0) { + var12 = 39; + } + + if(var11 == 1) { + var12 = 40; + } + + if(var11 == 2) { + var12 = 41; + } + + if(var11 == 3) { + var12 = 42; + } + + if(var11 == 4) { + var12 = 43; + } + + Tiles.method1106(var9[var11], BufferedFile.colorStartTag(16748608) + var8.name, var12, var8.id, var13, var0.id); + } + } + } + + Tiles.method1106("Examine", BufferedFile.colorStartTag(16748608) + var8.name, 1005, var8.id, var13, var0.id); + } + } + } + + ++var13; + } + } + } + + if(var0.isIf3) { + if(Client.isSpellSelected) { + if(WorldComparator.method58(class1.getWidgetClickMask(var0)) && (FloorDecoration.selectedSpellFlags & 32) == 32) { + Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + var0.dataText, 58, 0, var0.childIndex, var0.id); + } + } else { + for(var13 = 9; var13 >= 5; --var13) { + String var14 = GameShell.method1060(var0, var13); + if(var14 != null) { + Tiles.method1106(var14, var0.dataText, 1007, var13 + 1, var0.childIndex, var0.id); + } + } + + var3 = class198.method3745(var0); + if(var3 != null) { + Tiles.method1106(var3, var0.dataText, 25, 0, var0.childIndex, var0.id); + } + + for(var4 = 4; var4 >= 0; --var4) { + String var15 = GameShell.method1060(var0, var4); + if(var15 != null) { + class16.insertMenuItem(var15, var0.dataText, 57, var4 + 1, var0.childIndex, var0.id, var0.__fz); + } + } + + var5 = class1.getWidgetClickMask(var0); + boolean var16 = (var5 & 1) != 0; + if(var16) { + Tiles.method1106("Continue", "", 30, 0, var0.childIndex, var0.id); + } + } + } + + } +} diff --git a/rs-client/src/main/java/ClanChat.java b/rs-client/src/main/java/ClanChat.java new file mode 100644 index 0000000000..a0871d5700 --- /dev/null +++ b/rs-client/src/main/java/ClanChat.java @@ -0,0 +1,229 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kv") +@Implements("ClanChat") +public class ClanChat extends UserList { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("loginType") + final LoginType loginType; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lky;" + ) + @Export("localUser") + final Usernamed localUser; + @ObfuscatedName("x") + @Export("name") + public String name; + @ObfuscatedName("d") + @Export("owner") + public String owner; + @ObfuscatedName("k") + @Export("__k") + public byte __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -1534670751 + ) + @Export("rank") + public int rank; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 386706253 + ) + @Export("__i") + int __i; + + @ObfuscatedSignature( + signature = "(Llx;Lky;)V" + ) + public ClanChat(LoginType var1, Usernamed var2) { + super(100); + this.name = null; + this.owner = null; + this.__i = 1; + this.loginType = var1; + this.localUser = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljs;", + garbageValue = "-2063112195" + ) + User newInstance() { + return new ClanMate(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)[Ljs;", + garbageValue = "861814350" + ) + User[] newTypedArray(int var1) { + return new ClanMate[var1]; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "242122326" + ) + @Export("__q_472") + final void __q_472(String var1) { + this.name = HealthBarUpdate.method1722(var1); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "103" + ) + @Export("__x_473") + final void __x_473(String var1) { + this.owner = HealthBarUpdate.method1722(var1); + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "455791964" + ) + @Export("readUpdate") + public final void readUpdate(Buffer var1) { + this.__x_473(var1.readStringCp1252NullTerminated()); + long var2 = var1.readLong(); + long var5 = var2; + String var4; + int var7; + if(var2 > 0L && var2 < 6582952005840035281L) { + if(var2 % 37L == 0L) { + var4 = null; + } else { + var7 = 0; + + for(long var13 = var2; var13 != 0L; var13 /= 37L) { + ++var7; + } + + StringBuilder var15 = new StringBuilder(var7); + + while(var5 != 0L) { + long var11 = var5; + var5 /= 37L; + var15.append(class306.base37Table[(int)(var11 - 37L * var5)]); + } + + var4 = var15.reverse().toString(); + } + } else { + var4 = null; + } + + this.__q_472(var4); + this.__k = var1.readByte(); + var7 = var1.readUnsignedByte(); + if(var7 != 255) { + this.clear(); + + for(int var8 = 0; var8 < var7; ++var8) { + ClanMate var9 = (ClanMate)this.addLastNoPreviousUsername(new Username(var1.readStringCp1252NullTerminated(), this.loginType)); + int var10 = var1.__ag_302(); + var9.set(var10, ++this.__i - 1); + var9.rank = var1.readByte(); + var1.readStringCp1252NullTerminated(); + this.__cp_475(var9); + } + + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "24" + ) + @Export("__a_474") + public final void __a_474(Buffer var1) { + Username var2 = new Username(var1.readStringCp1252NullTerminated(), this.loginType); + int var3 = var1.__ag_302(); + byte var4 = var1.readByte(); + boolean var5 = false; + if(var4 == -128) { + var5 = true; + } + + ClanMate var6; + if(var5) { + if(this.size() == 0) { + return; + } + + var6 = (ClanMate)this.getByCurrentUsername(var2); + if(var6 != null && var6.world() == var3) { + this.remove(var6); + } + } else { + var1.readStringCp1252NullTerminated(); + var6 = (ClanMate)this.getByCurrentUsername(var2); + if(var6 == null) { + if(this.size() > super.capacity) { + return; + } + + var6 = (ClanMate)this.addLastNoPreviousUsername(var2); + } + + var6.set(var3, ++this.__i - 1); + var6.rank = var4; + this.__cp_475(var6); + } + + } + + @ObfuscatedName("cg") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1739085267" + ) + @Export("clearFriends") + public final void clearFriends() { + for(int var1 = 0; var1 < this.size(); ++var1) { + ((ClanMate)this.get(var1)).clearIsFriend(); + } + + } + + @ObfuscatedName("cf") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-53" + ) + @Export("clearIgnoreds") + public final void clearIgnoreds() { + for(int var1 = 0; var1 < this.size(); ++var1) { + ((ClanMate)this.get(var1)).clearIsIgnored(); + } + + } + + @ObfuscatedName("cp") + @ObfuscatedSignature( + signature = "(Ljk;I)V", + garbageValue = "-128608554" + ) + @Export("__cp_475") + final void __cp_475(ClanMate var1) { + if(var1.username().__equals_466(this.localUser.username())) { + this.rank = var1.rank; + } + + } +} diff --git a/rs-client/src/main/java/ClanMate.java b/rs-client/src/main/java/ClanMate.java new file mode 100644 index 0000000000..1939253721 --- /dev/null +++ b/rs-client/src/main/java/ClanMate.java @@ -0,0 +1,94 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jk") +@Implements("ClanMate") +public class ClanMate extends Buddy { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("isFriend0") + TriBool isFriend0; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("isIgnored0") + TriBool isIgnored0; + + ClanMate() { + this.isFriend0 = TriBool.TriBool_unknown; + this.isIgnored0 = TriBool.TriBool_unknown; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-865412624" + ) + @Export("clearIsFriend") + void clearIsFriend() { + this.isFriend0 = TriBool.TriBool_unknown; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1324921155" + ) + @Export("isFriend") + public final boolean isFriend() { + if(this.isFriend0 == TriBool.TriBool_unknown) { + this.fillIsFriend(); + } + + return this.isFriend0 == TriBool.TriBool_true; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1189907091" + ) + @Export("fillIsFriend") + void fillIsFriend() { + this.isFriend0 = WorldMapArea.friendSystem.friendsList.contains(super.username0)?TriBool.TriBool_true:TriBool.TriBool_false; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1852236089" + ) + @Export("clearIsIgnored") + void clearIsIgnored() { + this.isIgnored0 = TriBool.TriBool_unknown; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1463106780" + ) + @Export("isIgnored") + public final boolean isIgnored() { + if(this.isIgnored0 == TriBool.TriBool_unknown) { + this.fillIsIgnored(); + } + + return this.isIgnored0 == TriBool.TriBool_true; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-598925338" + ) + @Export("fillIsIgnored") + void fillIsIgnored() { + this.isIgnored0 = WorldMapArea.friendSystem.ignoreList.contains(super.username0)?TriBool.TriBool_true:TriBool.TriBool_false; + } +} diff --git a/rs-client/src/main/java/Client.java b/rs-client/src/main/java/Client.java new file mode 100644 index 0000000000..cf7667e30a --- /dev/null +++ b/rs-client/src/main/java/Client.java @@ -0,0 +1,6626 @@ +import java.io.File; +import java.io.IOException; +import java.net.Socket; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; +import netscape.javascript.JSObject; + +@Implements("Client") +@ObfuscatedName("client") +public final class Client extends GameShell implements Usernamed { + @ObfuscatedName("mm") + @ObfuscatedGetter( + intValue = -783816509 + ) + @Export("rootWidgetGroup") + static int rootWidgetGroup; + @ObfuscatedName("mc") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("clickedWidget") + static Widget clickedWidget; + @ObfuscatedName("oo") + @ObfuscatedGetter( + intValue = 1348053843 + ) + @Export("__client_oo") + static int __client_oo; + @ObfuscatedName("os") + @ObfuscatedGetter( + intValue = -546798303 + ) + @Export("rootWidgetCount") + static int rootWidgetCount; + @ObfuscatedName("oa") + @ObfuscatedGetter( + longValue = 8818983958751331899L + ) + @Export("__client_oa") + static long __client_oa; + @ObfuscatedName("od") + @Export("__client_od") + static boolean[] __client_od; + @ObfuscatedName("oq") + @Export("__client_oq") + static boolean[] __client_oq; + @ObfuscatedName("ot") + @Export("__client_ot") + static boolean[] __client_ot; + @ObfuscatedName("nt") + @Export("__client_nt") + static boolean __client_nt; + @ObfuscatedName("ng") + @ObfuscatedGetter( + intValue = -1379876433 + ) + @Export("cycleCntr") + static int cycleCntr; + @ObfuscatedName("or") + @Export("isResizable") + static boolean isResizable; + @ObfuscatedName("ss") + @ObfuscatedGetter( + intValue = -451622431 + ) + @Export("__client_ss") + public static int __client_ss; + @ObfuscatedName("na") + @ObfuscatedGetter( + intValue = -934082817 + ) + @Export("__client_na") + static int __client_na; + @ObfuscatedName("nn") + @Export("__client_nn") + static boolean __client_nn; + @ObfuscatedName("qq") + @Export("__client_qq") + static boolean __client_qq; + @ObfuscatedName("mt") + @ObfuscatedGetter( + intValue = -1972775883 + ) + @Export("widgetClickX") + static int widgetClickX; + @ObfuscatedName("me") + @ObfuscatedGetter( + intValue = 1052276727 + ) + @Export("widgetClickY") + static int widgetClickY; + @ObfuscatedName("nw") + @ObfuscatedGetter( + intValue = -843739713 + ) + @Export("__client_nw") + static int __client_nw; + @ObfuscatedName("mr") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("clickedWidgetParent") + static Widget clickedWidgetParent; + @ObfuscatedName("oj") + @Export("rootWidgetWidths") + static int[] rootWidgetWidths; + @ObfuscatedName("mj") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("widgetGroupParents") + static NodeHashTable widgetGroupParents; + @ObfuscatedName("oy") + @Export("rootWidgetXs") + static int[] rootWidgetXs; + @ObfuscatedName("nl") + @ObfuscatedGetter( + intValue = 1939745821 + ) + @Export("__client_nl") + static int __client_nl; + @ObfuscatedName("mx") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("viewportWidget") + static Widget viewportWidget; + @ObfuscatedName("oz") + @ObfuscatedGetter( + intValue = -12672775 + ) + @Export("gameDrawingMode") + static int gameDrawingMode; + @ObfuscatedName("ox") + @Export("rootWidgetHeights") + static int[] rootWidgetHeights; + @ObfuscatedName("mw") + @ObfuscatedGetter( + intValue = 821563709 + ) + @Export("rights") + static int rights; + @ObfuscatedName("oi") + @Export("rootWidgetYs") + static int[] rootWidgetYs; + @ObfuscatedName("qz") + @Export("isCameraLocked") + static boolean isCameraLocked; + @ObfuscatedName("on") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("widgetClickMasks") + static NodeHashTable widgetClickMasks; + @ObfuscatedName("tb") + @ObfuscatedSignature( + signature = "Lbl;" + ) + static final class65 field895; + @ObfuscatedName("og") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("scriptEvents") + static NodeDeque scriptEvents; + @ObfuscatedName("nk") + @ObfuscatedGetter( + intValue = 1019025247 + ) + @Export("__client_nk") + static int __client_nk; + @ObfuscatedName("np") + @ObfuscatedGetter( + intValue = 1881890525 + ) + @Export("__client_np") + static int __client_np; + @ObfuscatedName("pd") + @ObfuscatedGetter( + intValue = -362336323 + ) + @Export("destinationX") + static int destinationX; + @ObfuscatedName("pk") + @ObfuscatedGetter( + intValue = 1298845031 + ) + @Export("destinationY") + static int destinationY; + @ObfuscatedName("qy") + @ObfuscatedGetter( + intValue = -34294211 + ) + @Export("__client_qy") + static int __client_qy; + @ObfuscatedName("tp") + @Export("__client_tp") + static int[] __client_tp; + @ObfuscatedName("th") + @Export("__client_th") + static int[] __client_th; + @ObfuscatedName("ny") + @Export("isDraggingWidget") + static boolean isDraggingWidget; + @ObfuscatedName("oe") + @ObfuscatedGetter( + intValue = -1628183831 + ) + @Export("mouseWheelRotation") + static int mouseWheelRotation; + @ObfuscatedName("mk") + @Export("selectedSpellActionName") + static String selectedSpellActionName; + @ObfuscatedName("mi") + @ObfuscatedGetter( + intValue = 933910819 + ) + @Export("runEnergy") + static int runEnergy; + @ObfuscatedName("mv") + @ObfuscatedGetter( + intValue = 36001423 + ) + @Export("weight") + static int weight; + @ObfuscatedName("mu") + @Export("selectedSpellName") + static String selectedSpellName; + @ObfuscatedName("qc") + @ObfuscatedGetter( + intValue = -818676431 + ) + @Export("__client_qc") + static int __client_qc; + @ObfuscatedName("nz") + @Export("__client_nz") + static int[] __client_nz; + @ObfuscatedName("ns") + @ObfuscatedGetter( + intValue = 743073293 + ) + @Export("__client_ns") + static int __client_ns; + @ObfuscatedName("sd") + @ObfuscatedGetter( + intValue = 944933439 + ) + @Export("__client_sd") + static int __client_sd; + @ObfuscatedName("ru") + @ObfuscatedSignature( + signature = "Lhi;" + ) + @Export("__client_ru") + static PlayerAppearance __client_ru; + @ObfuscatedName("qa") + @ObfuscatedGetter( + intValue = -1481002083 + ) + @Export("soundEffectCount") + static int soundEffectCount; + @ObfuscatedName("sb") + @ObfuscatedSignature( + signature = "[Lx;" + ) + @Export("grandExchangeOffers") + static GrandExchangeOffer[] grandExchangeOffers; + @ObfuscatedName("qv") + @Export("soundEffectIds") + static int[] soundEffectIds; + @ObfuscatedName("sy") + @Export("indexCacheLoaders") + static ArrayList indexCacheLoaders; + @ObfuscatedName("sl") + @ObfuscatedGetter( + intValue = -1605855913 + ) + @Export("__client_sl") + static int __client_sl; + @ObfuscatedName("md") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("draggedOnWidget") + static Widget draggedOnWidget; + @ObfuscatedName("sq") + @ObfuscatedGetter( + intValue = -1546210597 + ) + @Export("indexCacheLoaderIndex") + static int indexCacheLoaderIndex; + @ObfuscatedName("qn") + @Export("unknownSoundValues1") + static int[] unknownSoundValues1; + @ObfuscatedName("qd") + @Export("queuedSoundEffectDelays") + static int[] queuedSoundEffectDelays; + @ObfuscatedName("nr") + @Export("__client_nr") + static int[] __client_nr; + @ObfuscatedName("nv") + @ObfuscatedGetter( + intValue = -758575207 + ) + @Export("__client_nv") + static int __client_nv; + @ObfuscatedName("nd") + @ObfuscatedGetter( + intValue = 760022015 + ) + @Export("__client_nd") + static int __client_nd; + @ObfuscatedName("ni") + @ObfuscatedGetter( + intValue = 1990512261 + ) + @Export("__client_ni") + static int __client_ni; + @ObfuscatedName("qe") + @ObfuscatedSignature( + signature = "[Lci;" + ) + @Export("soundEffects") + static SoundEffect[] soundEffects; + @ObfuscatedName("qk") + @Export("soundLocations") + static int[] soundLocations; + @ObfuscatedName("qm") + @ObfuscatedGetter( + intValue = -137788125 + ) + @Export("minimapState") + static int minimapState; + @ObfuscatedName("ph") + @ObfuscatedGetter( + intValue = 587773171 + ) + @Export("__client_ph") + static int __client_ph; + @ObfuscatedName("pp") + @ObfuscatedGetter( + longValue = -1704358328771670975L + ) + @Export("__client_pp") + static long __client_pp; + @ObfuscatedName("sk") + @ObfuscatedSignature( + signature = "Llm;" + ) + @Export("platformInfoProvider") + static PlatformInfoProvider platformInfoProvider; + @ObfuscatedName("mo") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("__client_mo") + static Widget __client_mo; + @ObfuscatedName("qf") + @ObfuscatedGetter( + intValue = 1365951359 + ) + @Export("__client_qf") + static int __client_qf; + @ObfuscatedName("nh") + @ObfuscatedGetter( + intValue = -278874973 + ) + @Export("__client_nh") + static int __client_nh; + @ObfuscatedName("rw") + @Export("__client_rw") + static short __client_rw; + @ObfuscatedName("qp") + @ObfuscatedGetter( + intValue = -1352723865 + ) + @Export("__client_qp") + static int __client_qp; + @ObfuscatedName("rm") + @Export("__client_rm") + static short __client_rm; + @ObfuscatedName("rs") + @Export("__client_rs") + static short __client_rs; + @ObfuscatedName("rp") + @Export("__client_rp") + static short __client_rp; + @ObfuscatedName("ri") + @Export("__client_ri") + static short __client_ri; + @ObfuscatedName("pi") + @ObfuscatedGetter( + intValue = 864673321 + ) + @Export("mapIconCount") + static int mapIconCount; + @ObfuscatedName("rz") + @ObfuscatedGetter( + intValue = 541065633 + ) + @Export("viewportZoom") + static int viewportZoom; + @ObfuscatedName("rv") + @Export("__client_rv") + static short __client_rv; + @ObfuscatedName("ry") + @ObfuscatedGetter( + intValue = 2035623995 + ) + @Export("viewportWidth") + static int viewportWidth; + @ObfuscatedName("rx") + @ObfuscatedGetter( + intValue = -629885193 + ) + @Export("viewportHeight") + static int viewportHeight; + @ObfuscatedName("ps") + @Export("mapIconXs") + static int[] mapIconXs; + @ObfuscatedName("pw") + @Export("mapIconYs") + static int[] mapIconYs; + @ObfuscatedName("mg") + @ObfuscatedGetter( + intValue = 247245677 + ) + @Export("chatEffects") + static int chatEffects; + @ObfuscatedName("po") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("mapIcons") + static Sprite[] mapIcons; + @ObfuscatedName("mb") + @ObfuscatedGetter( + intValue = 1694810089 + ) + @Export("__client_mb") + static int __client_mb; + @ObfuscatedName("rr") + @ObfuscatedGetter( + intValue = 386331251 + ) + @Export("viewportOffsetX") + static int viewportOffsetX; + @ObfuscatedName("rn") + @ObfuscatedGetter( + intValue = 992721193 + ) + @Export("viewportOffsetY") + static int viewportOffsetY; + @ObfuscatedName("pm") + @ObfuscatedGetter( + intValue = -460406997 + ) + @Export("__client_pm") + static int __client_pm; + @ObfuscatedName("pl") + @ObfuscatedGetter( + intValue = -1362734353 + ) + @Export("__client_pl") + static int __client_pl; + @ObfuscatedName("rh") + @Export("__client_rh") + static boolean[] __client_rh; + @ObfuscatedName("ml") + @ObfuscatedGetter( + intValue = 1602665191 + ) + @Export("followerIndex") + static int followerIndex; + @ObfuscatedName("pt") + @ObfuscatedGetter( + intValue = -1802494233 + ) + @Export("publicChatMode") + static int publicChatMode; + @ObfuscatedName("sx") + @ObfuscatedGetter( + intValue = 206275573 + ) + @Export("__client_sx") + static int __client_sx; + @ObfuscatedName("rd") + @Export("__client_rd") + static int[] __client_rd; + @ObfuscatedName("rl") + @Export("__client_rl") + static int[] __client_rl; + @ObfuscatedName("rj") + @Export("__client_rj") + static int[] __client_rj; + @ObfuscatedName("rk") + @Export("__client_rk") + static int[] __client_rk; + @ObfuscatedName("pn") + @Export("__client_pn") + static int[] __client_pn; + @ObfuscatedName("pq") + @Export("__client_pq") + static int[] __client_pq; + @ObfuscatedName("oh") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("__client_oh") + static NodeDeque __client_oh; + @ObfuscatedName("oc") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("__client_oc") + static NodeDeque __client_oc; + @ObfuscatedName("rb") + @Export("__client_rb") + static short __client_rb; + @ObfuscatedName("re") + @Export("__client_re") + static short __client_re; + @ObfuscatedName("mf") + @ObfuscatedGetter( + intValue = -1715020411 + ) + @Export("__client_mf") + static int __client_mf; + @ObfuscatedName("pu") + @Export("__client_pu") + static long[] __client_pu; + @ObfuscatedName("ms") + @ObfuscatedGetter( + intValue = 2128395635 + ) + @Export("__client_ms") + static int __client_ms; + @ObfuscatedName("nc") + @ObfuscatedGetter( + intValue = 344308849 + ) + @Export("__client_nc") + static int __client_nc; + @ObfuscatedName("nf") + @Export("changedSkills") + static int[] changedSkills; + @ObfuscatedName("nx") + @ObfuscatedGetter( + intValue = 1132932607 + ) + @Export("changedSkillsCount") + static int changedSkillsCount; + @ObfuscatedName("mn") + @Export("__client_mn") + static boolean __client_mn; + @ObfuscatedName("pb") + @ObfuscatedGetter( + intValue = 1230692157 + ) + @Export("__client_pb") + static int __client_pb; + @ObfuscatedName("nq") + @ObfuscatedGetter( + intValue = 1467519791 + ) + @Export("chatCycle") + static int chatCycle; + @ObfuscatedName("mh") + @ObfuscatedGetter( + intValue = 535219347 + ) + @Export("__client_mh") + static int __client_mh; + @ObfuscatedName("pz") + @Export("__client_pz") + static String __client_pz; + @ObfuscatedName("sj") + @ObfuscatedSignature( + signature = "Lbj;" + ) + @Export("__client_sj") + static OwnWorldComparator __client_sj; + @ObfuscatedName("pv") + @Export("__client_pv") + static int[] __client_pv; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "[Lfy;" + ) + @Export("collisionMaps") + static CollisionMap[] collisionMaps; + @ObfuscatedName("ai") + @Export("__client_ai") + static boolean __client_ai; + @ObfuscatedName("ba") + @ObfuscatedGetter( + intValue = 1412639841 + ) + @Export("worldId") + public static int worldId; + @ObfuscatedName("bb") + @ObfuscatedGetter( + intValue = 352819683 + ) + @Export("worldProperties") + static int worldProperties; + @ObfuscatedName("bq") + @ObfuscatedGetter( + intValue = 1186004739 + ) + @Export("gameBuild") + static int gameBuild; + @ObfuscatedName("bd") + @Export("isMembersWorld") + public static boolean isMembersWorld; + @ObfuscatedName("bc") + @Export("isLowDetail") + static boolean isLowDetail; + @ObfuscatedName("bo") + @ObfuscatedGetter( + intValue = 2068355509 + ) + @Export("language") + static int language; + @ObfuscatedName("bm") + @ObfuscatedGetter( + intValue = 1678472241 + ) + @Export("clientType") + static int clientType; + @ObfuscatedName("bl") + @Export("__client_bl") + static boolean __client_bl; + @ObfuscatedName("br") + @ObfuscatedGetter( + intValue = 244995961 + ) + @Export("gameState") + static int gameState; + @ObfuscatedName("cj") + @Export("isLoading") + static boolean isLoading; + @ObfuscatedName("cu") + @ObfuscatedGetter( + intValue = 1909006131 + ) + @Export("cycle") + static int cycle; + @ObfuscatedName("cb") + @ObfuscatedGetter( + longValue = 8445874050676184263L + ) + @Export("mouseLastLastPressedTimeMillis") + static long mouseLastLastPressedTimeMillis; + @ObfuscatedName("cn") + @ObfuscatedGetter( + intValue = -1731573291 + ) + @Export("__client_cn") + static int __client_cn; + @ObfuscatedName("cq") + @ObfuscatedGetter( + intValue = -1313705721 + ) + @Export("__client_cq") + static int __client_cq; + @ObfuscatedName("ch") + @ObfuscatedGetter( + longValue = -6574384275386813769L + ) + @Export("__client_ch") + static long __client_ch; + @ObfuscatedName("cw") + @Export("__client_cw") + static boolean __client_cw; + @ObfuscatedName("cg") + @Export("displayFps") + static boolean displayFps; + @ObfuscatedName("cf") + @ObfuscatedGetter( + intValue = -1792536059 + ) + @Export("rebootTimer") + static int rebootTimer; + @ObfuscatedName("cp") + @ObfuscatedGetter( + intValue = -871534943 + ) + @Export("hintArrowType") + static int hintArrowType; + @ObfuscatedName("cl") + @ObfuscatedGetter( + intValue = 1485594821 + ) + @Export("hintArrowNpcIndex") + static int hintArrowNpcIndex; + @ObfuscatedName("ct") + @ObfuscatedGetter( + intValue = -1036874153 + ) + @Export("hintArrowPlayerIndex") + static int hintArrowPlayerIndex; + @ObfuscatedName("cz") + @ObfuscatedGetter( + intValue = -1757834373 + ) + @Export("hintArrowX") + static int hintArrowX; + @ObfuscatedName("cc") + @ObfuscatedGetter( + intValue = -123748133 + ) + @Export("hintArrowY") + static int hintArrowY; + @ObfuscatedName("ci") + @ObfuscatedGetter( + intValue = -627650567 + ) + @Export("hintArrowHeight") + static int hintArrowHeight; + @ObfuscatedName("cd") + @ObfuscatedGetter( + intValue = 749254081 + ) + @Export("hintArrowSubX") + static int hintArrowSubX; + @ObfuscatedName("cx") + @ObfuscatedGetter( + intValue = 1393270633 + ) + @Export("hintArrowSubY") + static int hintArrowSubY; + @ObfuscatedName("co") + @ObfuscatedSignature( + signature = "Lcj;" + ) + @Export("playerAttackOption") + static AttackOption playerAttackOption; + @ObfuscatedName("de") + @ObfuscatedSignature( + signature = "Lcj;" + ) + @Export("npcAttackOption") + static AttackOption npcAttackOption; + @ObfuscatedName("dt") + @ObfuscatedGetter( + intValue = -1520594673 + ) + @Export("titleLoadingStage") + static int titleLoadingStage; + @ObfuscatedName("da") + @ObfuscatedGetter( + intValue = -1431050759 + ) + @Export("js5ConnectState") + static int js5ConnectState; + @ObfuscatedName("dp") + @ObfuscatedGetter( + intValue = 1154760205 + ) + @Export("__client_dp") + static int __client_dp; + @ObfuscatedName("ek") + @ObfuscatedGetter( + intValue = 1791955261 + ) + @Export("js5Errors") + static int js5Errors; + @ObfuscatedName("ed") + @ObfuscatedGetter( + intValue = -163579343 + ) + @Export("loginState") + static int loginState; + @ObfuscatedName("ex") + @ObfuscatedGetter( + intValue = 755300107 + ) + @Export("__client_ex") + static int __client_ex; + @ObfuscatedName("ej") + @ObfuscatedGetter( + intValue = -964416527 + ) + @Export("__client_ej") + static int __client_ej; + @ObfuscatedName("el") + @ObfuscatedGetter( + intValue = 689094231 + ) + @Export("__client_el") + static int __client_el; + @ObfuscatedName("en") + @ObfuscatedSignature( + signature = "Lfc;" + ) + static class159 field658; + @ObfuscatedName("eo") + @ObfuscatedGetter( + intValue = -447055355 + ) + @Export("__client_eo") + static int __client_eo; + @ObfuscatedName("ew") + @Export("Login_isUsernameRemembered") + static boolean Login_isUsernameRemembered; + @ObfuscatedName("eu") + @ObfuscatedSignature( + signature = "Lcn;" + ) + @Export("secureRandomFuture") + static SecureRandomFuture secureRandomFuture; + @ObfuscatedName("ev") + @Export("__client_ev") + static byte[] __client_ev; + @ObfuscatedName("ez") + @ObfuscatedSignature( + signature = "[Lcv;" + ) + @Export("npcs") + static Npc[] npcs; + @ObfuscatedName("ep") + @ObfuscatedGetter( + intValue = -1569269731 + ) + @Export("npcCount") + static int npcCount; + @ObfuscatedName("fq") + @Export("npcIndices") + static int[] npcIndices; + @ObfuscatedName("fw") + @ObfuscatedGetter( + intValue = 516059665 + ) + @Export("__client_fw") + static int __client_fw; + @ObfuscatedName("fg") + @Export("__client_fg") + static int[] __client_fg; + @ObfuscatedName("fj") + @ObfuscatedSignature( + signature = "Lcl;" + ) + @Export("packetWriter") + public static final PacketWriter packetWriter; + @ObfuscatedName("fd") + @ObfuscatedGetter( + intValue = -1050480853 + ) + @Export("__client_fd") + static int __client_fd; + @ObfuscatedName("fh") + @Export("__client_fh") + static boolean __client_fh; + @ObfuscatedName("fx") + @Export("useBufferedSocket") + static boolean useBufferedSocket; + @ObfuscatedName("fm") + @ObfuscatedSignature( + signature = "Ljo;" + ) + @Export("timer") + static Timer timer; + @ObfuscatedName("ft") + @Export("fontsMap") + static HashMap fontsMap; + @ObfuscatedName("fe") + @ObfuscatedGetter( + intValue = 829228151 + ) + @Export("__client_fe") + static int __client_fe; + @ObfuscatedName("fn") + @ObfuscatedGetter( + intValue = -597100741 + ) + @Export("__client_fn") + static int __client_fn; + @ObfuscatedName("fk") + @ObfuscatedGetter( + intValue = 8470625 + ) + @Export("__client_fk") + static int __client_fk; + @ObfuscatedName("gp") + @ObfuscatedGetter( + intValue = 685418907 + ) + @Export("__client_gp") + static int __client_gp; + @ObfuscatedName("gh") + @ObfuscatedGetter( + intValue = -1456975367 + ) + @Export("__client_gh") + static int __client_gh; + @ObfuscatedName("gg") + @Export("isInInstance") + static boolean isInInstance; + @ObfuscatedName("gq") + @Export("instanceChunkTemplates") + static int[][][] instanceChunkTemplates; + @ObfuscatedName("gd") + @Export("__client_gd") + static final int[] __client_gd; + @ObfuscatedName("gy") + @ObfuscatedGetter( + intValue = -134014371 + ) + @Export("__client_gy") + static int __client_gy; + @ObfuscatedName("hx") + @ObfuscatedGetter( + intValue = -1406125895 + ) + @Export("__client_hx") + static int __client_hx; + @ObfuscatedName("hn") + @ObfuscatedGetter( + intValue = -516933613 + ) + @Export("__client_hn") + static int __client_hn; + @ObfuscatedName("hr") + @ObfuscatedGetter( + intValue = 1664350313 + ) + @Export("__client_hr") + static int __client_hr; + @ObfuscatedName("hg") + @ObfuscatedGetter( + intValue = 1658018867 + ) + @Export("__client_hg") + static int __client_hg; + @ObfuscatedName("hh") + @Export("__client_hh") + static boolean __client_hh; + @ObfuscatedName("hd") + @ObfuscatedGetter( + intValue = 438998245 + ) + @Export("__client_hd") + static int __client_hd; + @ObfuscatedName("hw") + @ObfuscatedGetter( + intValue = 410614005 + ) + @Export("cameraPitchTarget") + static int cameraPitchTarget; + @ObfuscatedName("hp") + @ObfuscatedGetter( + intValue = -1163038981 + ) + @Export("minimapOrientation") + static int minimapOrientation; + @ObfuscatedName("hv") + @ObfuscatedGetter( + intValue = 218086227 + ) + @Export("__client_hv") + static int __client_hv; + @ObfuscatedName("hu") + @ObfuscatedGetter( + intValue = -480633777 + ) + @Export("__client_hu") + static int __client_hu; + @ObfuscatedName("hi") + @ObfuscatedGetter( + intValue = 402871301 + ) + @Export("__client_hi") + static int __client_hi; + @ObfuscatedName("ht") + @ObfuscatedGetter( + intValue = 1502058429 + ) + @Export("__client_ht") + static int __client_ht; + @ObfuscatedName("hj") + @ObfuscatedGetter( + intValue = -1420078475 + ) + @Export("oculusOrbState") + static int oculusOrbState; + @ObfuscatedName("ho") + @ObfuscatedGetter( + intValue = 1005832199 + ) + @Export("__client_ho") + static int __client_ho; + @ObfuscatedName("hc") + @ObfuscatedGetter( + intValue = -441913785 + ) + @Export("__client_hc") + static int __client_hc; + @ObfuscatedName("hk") + @ObfuscatedGetter( + intValue = -1149138989 + ) + @Export("__client_hk") + static int __client_hk; + @ObfuscatedName("if") + @ObfuscatedGetter( + intValue = -952172003 + ) + @Export("__client_if") + static int __client_if; + @ObfuscatedName("ie") + @ObfuscatedGetter( + intValue = 236939601 + ) + @Export("oculusOrbNormalSpeed") + static int oculusOrbNormalSpeed; + @ObfuscatedName("in") + @ObfuscatedGetter( + intValue = 351193663 + ) + @Export("__client_in") + static int __client_in; + @ObfuscatedName("il") + @ObfuscatedGetter( + intValue = -1063713523 + ) + @Export("__client_il") + public static int __client_il; + @ObfuscatedName("ij") + @Export("__client_ij") + static boolean __client_ij; + @ObfuscatedName("iy") + @ObfuscatedGetter( + intValue = -1213062413 + ) + @Export("__client_iy") + static int __client_iy; + @ObfuscatedName("is") + @Export("__client_is") + static boolean __client_is; + @ObfuscatedName("ik") + @ObfuscatedGetter( + intValue = 910983131 + ) + @Export("__client_ik") + static int __client_ik; + @ObfuscatedName("ir") + @ObfuscatedGetter( + intValue = 616180377 + ) + @Export("overheadTextCount") + static int overheadTextCount; + @ObfuscatedName("iv") + @ObfuscatedGetter( + intValue = 1889277277 + ) + @Export("overheadTextLimit") + static int overheadTextLimit; + @ObfuscatedName("it") + @Export("selectedItemName") + static String selectedItemName; + @ObfuscatedName("iq") + @Export("overheadTextXs") + static int[] overheadTextXs; + @ObfuscatedName("iu") + @Export("overheadTextYs") + static int[] overheadTextYs; + @ObfuscatedName("ip") + @Export("overheadTextAscents") + static int[] overheadTextAscents; + @ObfuscatedName("ib") + @Export("overheadTextXOffsets") + static int[] overheadTextXOffsets; + @ObfuscatedName("ic") + @Export("overheadTextColors") + static int[] overheadTextColors; + @ObfuscatedName("iw") + @Export("overheadTextEffects") + static int[] overheadTextEffects; + @ObfuscatedName("io") + @Export("overheadTextCyclesRemaining") + static int[] overheadTextCyclesRemaining; + @ObfuscatedName("ih") + @Export("overheadText") + static String[] overheadText; + @ObfuscatedName("im") + @Export("tileLastDrawnActor") + static int[][] tileLastDrawnActor; + @ObfuscatedName("ii") + @ObfuscatedGetter( + intValue = 289477221 + ) + @Export("viewportDrawCount") + static int viewportDrawCount; + @ObfuscatedName("ig") + @ObfuscatedGetter( + intValue = 424442889 + ) + @Export("viewportTempX") + static int viewportTempX; + @ObfuscatedName("ia") + @ObfuscatedGetter( + intValue = -81902865 + ) + @Export("viewportTempY") + static int viewportTempY; + @ObfuscatedName("jb") + @ObfuscatedGetter( + intValue = 202604997 + ) + @Export("mouseCrossX") + static int mouseCrossX; + @ObfuscatedName("jq") + @ObfuscatedGetter( + intValue = -1984048653 + ) + @Export("mouseCrossY") + static int mouseCrossY; + @ObfuscatedName("jw") + @ObfuscatedGetter( + intValue = -1302827103 + ) + @Export("mouseCrossState") + static int mouseCrossState; + @ObfuscatedName("jm") + @ObfuscatedGetter( + intValue = 233318639 + ) + @Export("mouseCrossColor") + static int mouseCrossColor; + @ObfuscatedName("jr") + @Export("showMouseCross") + static boolean showMouseCross; + @ObfuscatedName("ju") + @ObfuscatedGetter( + intValue = 1691923909 + ) + @Export("__client_ju") + static int __client_ju; + @ObfuscatedName("jz") + @ObfuscatedGetter( + intValue = -1267243587 + ) + @Export("__client_jz") + static int __client_jz; + @ObfuscatedName("jp") + @ObfuscatedGetter( + intValue = 485534011 + ) + @Export("dragItemSlotSource") + static int dragItemSlotSource; + @ObfuscatedName("ja") + @ObfuscatedGetter( + intValue = 813973829 + ) + @Export("__client_ja") + static int __client_ja; + @ObfuscatedName("je") + @ObfuscatedGetter( + intValue = 1959822241 + ) + @Export("__client_je") + static int __client_je; + @ObfuscatedName("jy") + @ObfuscatedGetter( + intValue = -836653679 + ) + @Export("dragItemSlotDestination") + static int dragItemSlotDestination; + @ObfuscatedName("jl") + @Export("__client_jl") + static boolean __client_jl; + @ObfuscatedName("jt") + @ObfuscatedGetter( + intValue = 1486366835 + ) + @Export("itemDragDuration") + static int itemDragDuration; + @ObfuscatedName("jc") + @ObfuscatedGetter( + intValue = 1084498299 + ) + @Export("__client_jc") + static int __client_jc; + @ObfuscatedName("jj") + @Export("showLoadingMessages") + static boolean showLoadingMessages; + @ObfuscatedName("jd") + @ObfuscatedSignature( + signature = "[Lbr;" + ) + @Export("players") + static Player[] players; + @ObfuscatedName("ji") + @ObfuscatedGetter( + intValue = -1869532553 + ) + @Export("localPlayerIndex") + static int localPlayerIndex; + @ObfuscatedName("jo") + @ObfuscatedGetter( + intValue = -836962805 + ) + @Export("__client_jo") + static int __client_jo; + @ObfuscatedName("js") + @Export("renderSelf") + static boolean renderSelf; + @ObfuscatedName("ke") + @ObfuscatedGetter( + intValue = -1208823721 + ) + @Export("__client_ke") + static int __client_ke; + @ObfuscatedName("ky") + @ObfuscatedGetter( + intValue = -64320473 + ) + @Export("__client_ky") + static int __client_ky; + @ObfuscatedName("kd") + @Export("__client_kd") + static int[] __client_kd; + @ObfuscatedName("kp") + @Export("playerMenuOpcodes") + static final int[] playerMenuOpcodes; + @ObfuscatedName("kq") + @Export("playerMenuActions") + static String[] playerMenuActions; + @ObfuscatedName("kv") + @Export("playerOptionsPriorities") + static boolean[] playerOptionsPriorities; + @ObfuscatedName("kn") + @Export("__client_kn") + static int[] __client_kn; + @ObfuscatedName("kx") + @ObfuscatedGetter( + intValue = -1309758309 + ) + @Export("combatTargetPlayerIndex") + static int combatTargetPlayerIndex; + @ObfuscatedName("kz") + @ObfuscatedSignature( + signature = "[[[Lje;" + ) + @Export("groundItems") + static NodeDeque[][][] groundItems; + @ObfuscatedName("kh") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("__client_kh") + static NodeDeque __client_kh; + @ObfuscatedName("kk") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("projectiles") + static NodeDeque projectiles; + @ObfuscatedName("kt") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("graphicsObjects") + static NodeDeque graphicsObjects; + @ObfuscatedName("ki") + @Export("currentLevels") + static int[] currentLevels; + @ObfuscatedName("kr") + @Export("levels") + static int[] levels; + @ObfuscatedName("kb") + @Export("experience") + static int[] experience; + @ObfuscatedName("ku") + @ObfuscatedGetter( + intValue = -898263359 + ) + @Export("__client_ku") + static int __client_ku; + @ObfuscatedName("kc") + @Export("isMenuOpen") + static boolean isMenuOpen; + @ObfuscatedName("ll") + @ObfuscatedGetter( + intValue = -1749538901 + ) + @Export("menuOptionsCount") + static int menuOptionsCount; + @ObfuscatedName("ly") + @Export("menuArguments1") + static int[] menuArguments1; + @ObfuscatedName("li") + @Export("menuArguments2") + static int[] menuArguments2; + @ObfuscatedName("lh") + @Export("menuOpcodes") + static int[] menuOpcodes; + @ObfuscatedName("lk") + @Export("menuArguments0") + static int[] menuArguments0; + @ObfuscatedName("ld") + @Export("menuActions") + static String[] menuActions; + @ObfuscatedName("la") + @Export("menuTargetNames") + static String[] menuTargetNames; + @ObfuscatedName("lt") + @Export("menuShiftClick") + static boolean[] menuShiftClick; + @ObfuscatedName("lw") + @Export("followerOpsLowPriority") + static boolean followerOpsLowPriority; + @ObfuscatedName("lf") + @Export("shiftClickDrop") + static boolean shiftClickDrop; + @ObfuscatedName("lp") + @Export("tapToDrop") + static boolean tapToDrop; + @ObfuscatedName("lj") + @Export("showMouseOverText") + static boolean showMouseOverText; + @ObfuscatedName("lq") + @ObfuscatedGetter( + intValue = 26099827 + ) + @Export("__client_lq") + static int __client_lq; + @ObfuscatedName("ln") + @ObfuscatedGetter( + intValue = 885052255 + ) + @Export("__client_ln") + static int __client_ln; + @ObfuscatedName("lb") + @ObfuscatedGetter( + intValue = 699084605 + ) + @Export("__client_lb") + static int __client_lb; + @ObfuscatedName("ls") + @ObfuscatedGetter( + intValue = -274968037 + ) + @Export("__client_ls") + static int __client_ls; + @ObfuscatedName("lz") + @ObfuscatedGetter( + intValue = 1630772923 + ) + @Export("isItemSelected") + static int isItemSelected; + @ObfuscatedName("lv") + @Export("isSpellSelected") + static boolean isSpellSelected; + @ObfuscatedName("lc") + @ObfuscatedGetter( + intValue = 196309625 + ) + @Export("__client_lc") + static int __client_lc; + + static { + __client_ai = true; + worldId = 1; + worldProperties = 0; + gameBuild = 0; + isMembersWorld = false; + isLowDetail = false; + language = 0; + clientType = -1; + __client_bl = false; + gameState = 0; + isLoading = true; + cycle = 0; + mouseLastLastPressedTimeMillis = 1L; + __client_cn = -1; + __client_cq = -1; + __client_ch = -1L; + __client_cw = true; + displayFps = false; + rebootTimer = 0; + hintArrowType = 0; + hintArrowNpcIndex = 0; + hintArrowPlayerIndex = 0; + hintArrowX = 0; + hintArrowY = 0; + hintArrowHeight = 0; + hintArrowSubX = 0; + hintArrowSubY = 0; + playerAttackOption = AttackOption.AttackOption_hidden; + npcAttackOption = AttackOption.AttackOption_hidden; + titleLoadingStage = 0; + js5ConnectState = 0; + __client_dp = 0; + js5Errors = 0; + loginState = 0; + __client_ex = 0; + __client_ej = 0; + __client_el = 0; + field658 = class159.field1985; + Login_isUsernameRemembered = false; + secureRandomFuture = new SecureRandomFuture(); + __client_ev = null; + npcs = new Npc['耀']; + npcCount = 0; + npcIndices = new int['耀']; + __client_fw = 0; + __client_fg = new int[250]; + packetWriter = new PacketWriter(); + __client_fd = 0; + __client_fh = false; + useBufferedSocket = true; + timer = new Timer(); + fontsMap = new HashMap(); + __client_fe = 0; + __client_fn = 1; + __client_fk = 0; + __client_gp = 1; + __client_gh = 0; + collisionMaps = new CollisionMap[4]; + isInInstance = false; + instanceChunkTemplates = new int[4][13][13]; + __client_gd = new int[]{0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3}; + __client_gy = 0; + __client_hx = 2301979; + __client_hn = 5063219; + __client_hr = 3353893; + __client_hg = 7759444; + __client_hh = false; + __client_hd = 0; + cameraPitchTarget = 128; + minimapOrientation = 0; + __client_hv = 0; + __client_hu = 0; + __client_hi = 0; + __client_ht = 0; + oculusOrbState = 0; + __client_ho = 50; + __client_hc = 0; + __client_hk = 0; + __client_if = 0; + oculusOrbNormalSpeed = 12; + __client_in = 6; + __client_il = 0; + __client_ij = false; + __client_iy = 0; + __client_is = false; + __client_ik = 0; + overheadTextCount = 0; + overheadTextLimit = 50; + overheadTextXs = new int[overheadTextLimit]; + overheadTextYs = new int[overheadTextLimit]; + overheadTextAscents = new int[overheadTextLimit]; + overheadTextXOffsets = new int[overheadTextLimit]; + overheadTextColors = new int[overheadTextLimit]; + overheadTextEffects = new int[overheadTextLimit]; + overheadTextCyclesRemaining = new int[overheadTextLimit]; + overheadText = new String[overheadTextLimit]; + tileLastDrawnActor = new int[104][104]; + viewportDrawCount = 0; + viewportTempX = -1; + viewportTempY = -1; + mouseCrossX = 0; + mouseCrossY = 0; + mouseCrossState = 0; + mouseCrossColor = 0; + showMouseCross = true; + __client_ju = 0; + __client_jz = 0; + dragItemSlotSource = 0; + __client_ja = 0; + __client_je = 0; + dragItemSlotDestination = 0; + __client_jl = false; + itemDragDuration = 0; + __client_jc = 0; + showLoadingMessages = true; + players = new Player[2048]; + localPlayerIndex = -1; + __client_jo = 0; + renderSelf = true; + __client_ke = 0; + __client_ky = 0; + __client_kd = new int[1000]; + playerMenuOpcodes = new int[]{44, 45, 46, 47, 48, 49, 50, 51}; + playerMenuActions = new String[8]; + playerOptionsPriorities = new boolean[8]; + __client_kn = new int[]{768, 1024, 1280, 512, 1536, 256, 0, 1792}; + combatTargetPlayerIndex = -1; + groundItems = new NodeDeque[4][104][104]; + __client_kh = new NodeDeque(); + projectiles = new NodeDeque(); + graphicsObjects = new NodeDeque(); + currentLevels = new int[25]; + levels = new int[25]; + experience = new int[25]; + __client_ku = 0; + isMenuOpen = false; + menuOptionsCount = 0; + menuArguments1 = new int[500]; + menuArguments2 = new int[500]; + menuOpcodes = new int[500]; + menuArguments0 = new int[500]; + menuActions = new String[500]; + menuTargetNames = new String[500]; + menuShiftClick = new boolean[500]; + followerOpsLowPriority = false; + shiftClickDrop = false; + tapToDrop = false; + showMouseOverText = true; + __client_lq = -1; + __client_ln = -1; + __client_lb = 0; + __client_ls = 50; + isItemSelected = 0; + selectedItemName = null; + isSpellSelected = false; + __client_lc = -1; + __client_mh = -1; + selectedSpellActionName = null; + selectedSpellName = null; + rootWidgetGroup = -1; + widgetGroupParents = new NodeHashTable(8); + __client_mf = 0; + __client_ms = -1; + chatEffects = 0; + __client_mb = 0; + __client_mo = null; + runEnergy = 0; + weight = 0; + rights = 0; + followerIndex = -1; + __client_mn = false; + viewportWidget = null; + clickedWidget = null; + clickedWidgetParent = null; + widgetClickX = 0; + widgetClickY = 0; + draggedOnWidget = null; + __client_nn = false; + __client_nw = -1; + __client_nl = -1; + __client_nt = false; + __client_nk = -1; + __client_np = -1; + isDraggingWidget = false; + cycleCntr = 1; + __client_nr = new int[32]; + __client_nd = 0; + __client_nz = new int[32]; + __client_ns = 0; + changedSkills = new int[32]; + changedSkillsCount = 0; + chatCycle = 0; + __client_na = 0; + __client_nh = 0; + __client_nv = 0; + __client_nc = 0; + __client_ni = 0; + mouseWheelRotation = 0; + scriptEvents = new NodeDeque(); + __client_oh = new NodeDeque(); + __client_oc = new NodeDeque(); + widgetClickMasks = new NodeHashTable(512); + rootWidgetCount = 0; + __client_oo = -2; + __client_od = new boolean[100]; + __client_ot = new boolean[100]; + __client_oq = new boolean[100]; + rootWidgetXs = new int[100]; + rootWidgetYs = new int[100]; + rootWidgetWidths = new int[100]; + rootWidgetHeights = new int[100]; + gameDrawingMode = 0; + __client_oa = 0L; + isResizable = true; + __client_pv = new int[]{16776960, 16711680, 65280, 65535, 16711935, 16777215}; + publicChatMode = 0; + __client_pl = 0; + __client_pz = ""; + __client_pu = new long[100]; + __client_pb = 0; + __client_pm = 0; + __client_pq = new int[128]; + __client_pn = new int[128]; + __client_pp = -1L; + __client_ph = -1; + mapIconCount = 0; + mapIconXs = new int[1000]; + mapIconYs = new int[1000]; + mapIcons = new Sprite[1000]; + destinationX = 0; + destinationY = 0; + minimapState = 0; + __client_qf = 255; + __client_qy = -1; + __client_qq = false; + __client_qp = 127; + __client_qc = 127; + soundEffectCount = 0; + soundEffectIds = new int[50]; + unknownSoundValues1 = new int[50]; + queuedSoundEffectDelays = new int[50]; + soundLocations = new int[50]; + soundEffects = new SoundEffect[50]; + isCameraLocked = false; + __client_rh = new boolean[5]; + __client_rd = new int[5]; + __client_rl = new int[5]; + __client_rj = new int[5]; + __client_rk = new int[5]; + __client_rw = 256; + __client_rm = 205; + __client_re = 256; + __client_rb = 320; + __client_rv = 1; + __client_ri = 32767; + __client_rs = 1; + __client_rp = 32767; + viewportOffsetX = 0; + viewportOffsetY = 0; + viewportWidth = 0; + viewportHeight = 0; + viewportZoom = 0; + __client_ru = new PlayerAppearance(); + __client_sd = -1; + __client_sl = -1; + platformInfoProvider = new DesktopPlatformInfoProvider(); + grandExchangeOffers = new GrandExchangeOffer[8]; + __client_sj = new OwnWorldComparator(); + __client_ss = -1; + indexCacheLoaders = new ArrayList(10); + indexCacheLoaderIndex = 0; + __client_sx = 0; + field895 = new class65(); + __client_tp = new int[50]; + __client_th = new int[50]; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1773624745" + ) + protected final void __j_113() { + __client_oa = class203.currentTimeMs() + 500L; + this.__ge_137(); + if(rootWidgetGroup != -1) { + this.__iu_141(true); + } + + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1297880469" + ) + protected final void setUp() { + WorldMapCacheName.method633(new int[]{20, 260, 10000}, new int[]{1000, 100, 500}); + class2.port1 = gameBuild == 0?43594:worldId + 40000; + WorldMapArea.port2 = gameBuild == 0?443:worldId + 50000; + class203.port3 = class2.port1; + PlayerAppearance.__hi_g = class226.__ht_m; + class229.__hz_l = class226.__ht_f; + class227.__hj_e = class226.__ht_q; + IndexCacheLoader.__bd_x = class226.__ht_w; + TriBool.urlRequester = new UrlRequester(); + this.setUpKeyboard(); + this.setUpMouse(); + class16.mouseWheel = this.mouseWheel(); + Fonts.indexStore255 = new IndexStore(255, class168.dat2File, class168.idx255File, 500000); + ReflectionCheck.clientPreferences = class306.method5780(); + this.setUpClipboard(); + String var2 = Ignored.__ks_at; + class50.__af_m = this; + if(var2 != null) { + class50.__af_f = var2; + } + + if(gameBuild != 0) { + displayFps = true; + } + + GroundItem.method2095(ReflectionCheck.clientPreferences.windowMode); + WorldMapArea.friendSystem = new FriendSystem(KeyHandler.loginType); + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1445885427" + ) + protected final void __al_111() { + ++cycle; + this.doCycleJs5(); + class3.method41(); + + int var1; + try { + if(class214.__hf_o == 1) { + var1 = class214.midiPcmStream.__f_341(); + if(var1 > 0 && class214.midiPcmStream.isReady()) { + var1 -= FaceNormal.__el_x; + if(var1 < 0) { + var1 = 0; + } + + class214.midiPcmStream.__m_340(var1); + } else { + class214.midiPcmStream.clear(); + class214.midiPcmStream.removeAll(); + if(class214.__hf_u != null) { + class214.__hf_o = 2; + } else { + class214.__hf_o = 0; + } + + class13.musicTrack = null; + class307.soundCache = null; + } + } + } catch (Exception var63) { + var63.printStackTrace(); + class214.midiPcmStream.clear(); + class214.__hf_o = 0; + class13.musicTrack = null; + class307.soundCache = null; + class214.__hf_u = null; + } + + class13.method163(); + class171.method3498(); + MouseHandler var47 = MouseHandler.MouseHandler_instance; + synchronized(MouseHandler.MouseHandler_instance) { + MouseHandler.MouseHandler_currentButton = MouseHandler.MouseHandler_currentButton0; + MouseHandler.MouseHandler_x = MouseHandler.MouseHandler_x0; + MouseHandler.MouseHandler_y = MouseHandler.MouseHandler_y0; + MouseHandler.MouseHandler_millis = MouseHandler.MouseHandler_millis0; + MouseHandler.MouseHandler_lastButton = MouseHandler.MouseHandler_lastButton0; + MouseHandler.MouseHandler_lastPressedX = MouseHandler.MouseHandler_lastPressedX0; + MouseHandler.MouseHandler_lastPressedY = MouseHandler.MouseHandler_lastPressedY0; + MouseHandler.MouseHandler_lastPressedTimeMillis = MouseHandler.MouseHandler_lastPressedTimeMillis0; + MouseHandler.MouseHandler_lastButton0 = 0; + } + + if(class16.mouseWheel != null) { + var1 = class16.mouseWheel.useRotation(); + mouseWheelRotation = var1; + } + + if(gameState == 0) { + class171.method3497(); + class11.method145(); + } else if(gameState == 5) { + class54.method1092(this); + class171.method3497(); + class11.method145(); + } else if(gameState != 10 && gameState != 11) { + if(gameState == 20) { + class54.method1092(this); + this.doCycleLoggedOut(); + } else if(gameState == 25) { + UserComparator10.method3352(false); + __client_fe = 0; + boolean var64 = true; + + int var48; + for(var48 = 0; var48 < class40.regionLandArchives.length; ++var48) { + if(IndexCacheLoader.regionMapArchiveIds[var48] != -1 && class40.regionLandArchives[var48] == null) { + class40.regionLandArchives[var48] = SecureRandomFuture.indexCache5.takeRecord(IndexCacheLoader.regionMapArchiveIds[var48], 0); + if(class40.regionLandArchives[var48] == null) { + var64 = false; + ++__client_fe; + } + } + + if(MouseHandler.regionLandArchiveIds[var48] != -1 && HealthBarUpdate.regionMapArchives[var48] == null) { + HealthBarUpdate.regionMapArchives[var48] = SecureRandomFuture.indexCache5.takeRecordEncrypted(MouseHandler.regionLandArchiveIds[var48], 0, class190.xteaKeys[var48]); + if(HealthBarUpdate.regionMapArchives[var48] == null) { + var64 = false; + ++__client_fe; + } + } + } + + if(!var64) { + __client_gh = 1; + } else { + __client_fk = 0; + var64 = true; + + int var4; + int var5; + for(var48 = 0; var48 < class40.regionLandArchives.length; ++var48) { + byte[] var3 = HealthBarUpdate.regionMapArchives[var48]; + if(var3 != null) { + var4 = (class308.regions[var48] >> 8) * 64 - class50.baseX; + var5 = (class308.regions[var48] & 255) * 64 - GraphicsObject.baseY; + if(isInInstance) { + var4 = 10; + var5 = 10; + } + + var64 &= TextureProvider.method2774(var3, var4, var5); + } + } + + if(!var64) { + __client_gh = 2; + } else { + if(__client_gh != 0) { + class68.drawLoadingMessage("Loading - please wait." + "
    " + " (" + 100 + "%" + ")", true); + } + + class13.method163(); + class65.scene.clear(); + + for(var48 = 0; var48 < 4; ++var48) { + collisionMaps[var48].clear(); + } + + int var49; + for(var48 = 0; var48 < 4; ++var48) { + for(var49 = 0; var49 < 104; ++var49) { + for(var4 = 0; var4 < 104; ++var4) { + Tiles.Tiles_renderFlags[var48][var49][var4] = 0; + } + } + } + + class13.method163(); + Tiles.Tiles_minPlane = 99; + Tiles.__bq_w = new byte[4][104][104]; + Fonts.__kz_o = new byte[4][104][104]; + class32.__ay_u = new byte[4][104][104]; + class307.__kc_g = new byte[4][104][104]; + Tiles.__bq_a = new int[4][105][105]; + Tiles.__bq_l = new byte[4][105][105]; + Huffman.__gd_e = new int[105][105]; + class13.__i_x = new int[104]; + Formatting.__cy_d = new int[104]; + class214.__hf_k = new int[104]; + WorldMapSectionType.__h_n = new int[104]; + Message.__bm_i = new int[104]; + var48 = class40.regionLandArchives.length; + SpriteMask.method4390(); + UserComparator10.method3352(true); + int var10; + int var11; + int var12; + int var13; + int var14; + int var15; + int var16; + int var17; + int var18; + int var19; + int var20; + int var21; + int var22; + int var51; + if(!isInInstance) { + byte[] var6; + for(var49 = 0; var49 < var48; ++var49) { + var4 = (class308.regions[var49] >> 8) * 64 - class50.baseX; + var5 = (class308.regions[var49] & 255) * 64 - GraphicsObject.baseY; + var6 = class40.regionLandArchives[var49]; + if(var6 != null) { + class13.method163(); + Varcs.method2166(var6, var4, var5, GameObject.__eh_fy * 8 - 48, WorldMapLabelSize.__s_fi * 8 - 48, collisionMaps); + } + } + + for(var49 = 0; var49 < var48; ++var49) { + var4 = (class308.regions[var49] >> 8) * 64 - class50.baseX; + var5 = (class308.regions[var49] & 255) * 64 - GraphicsObject.baseY; + var6 = class40.regionLandArchives[var49]; + if(var6 == null && WorldMapLabelSize.__s_fi < 800) { + class13.method163(); + UserComparator6.method3390(var4, var5, 64, 64); + } + } + + UserComparator10.method3352(true); + + for(var49 = 0; var49 < var48; ++var49) { + byte[] var50 = HealthBarUpdate.regionMapArchives[var49]; + if(var50 != null) { + var5 = (class308.regions[var49] >> 8) * 64 - class50.baseX; + var51 = (class308.regions[var49] & 255) * 64 - GraphicsObject.baseY; + class13.method163(); + Scene var7 = class65.scene; + CollisionMap[] var8 = collisionMaps; + Buffer var9 = new Buffer(var50); + var10 = -1; + + while(true) { + var11 = var9.__at_308(); + if(var11 == 0) { + break; + } + + var10 += var11; + var12 = 0; + + while(true) { + var13 = var9.__ae_307(); + if(var13 == 0) { + break; + } + + var12 += var13 - 1; + var14 = var12 & 63; + var15 = var12 >> 6 & 63; + var16 = var12 >> 12; + var17 = var9.readUnsignedByte(); + var18 = var17 >> 2; + var19 = var17 & 3; + var20 = var5 + var15; + var21 = var14 + var51; + if(var20 > 0 && var21 > 0 && var20 < 103 && var21 < 103) { + var22 = var16; + if((Tiles.Tiles_renderFlags[1][var20][var21] & 2) == 2) { + var22 = var16 - 1; + } + + CollisionMap var23 = null; + if(var22 >= 0) { + var23 = var8[var22]; + } + + class227.method4446(var16, var20, var21, var10, var19, var18, var7, var23); + } + } + } + } + } + } + + int var52; + int var53; + int var54; + if(isInInstance) { + var49 = 0; + + label1186: + while(true) { + if(var49 >= 4) { + for(var49 = 0; var49 < 13; ++var49) { + for(var4 = 0; var4 < 13; ++var4) { + var5 = instanceChunkTemplates[0][var49][var4]; + if(var5 == -1) { + UserComparator6.method3390(var49 * 8, var4 * 8, 8, 8); + } + } + } + + UserComparator10.method3352(true); + var49 = 0; + + while(true) { + if(var49 >= 4) { + break label1186; + } + + class13.method163(); + + for(var4 = 0; var4 < 13; ++var4) { + for(var5 = 0; var5 < 13; ++var5) { + var51 = instanceChunkTemplates[var49][var4][var5]; + if(var51 != -1) { + var52 = var51 >> 24 & 3; + var53 = var51 >> 1 & 3; + var54 = var51 >> 14 & 1023; + var10 = var51 >> 3 & 2047; + var11 = (var54 / 8 << 8) + var10 / 8; + + for(var12 = 0; var12 < class308.regions.length; ++var12) { + if(class308.regions[var12] == var11 && HealthBarUpdate.regionMapArchives[var12] != null) { + ServerPacket.method3662(HealthBarUpdate.regionMapArchives[var12], var49, var4 * 8, var5 * 8, var52, (var54 & 7) * 8, (var10 & 7) * 8, var53, class65.scene, collisionMaps); + break; + } + } + } + } + } + + ++var49; + } + } + + class13.method163(); + + for(var4 = 0; var4 < 13; ++var4) { + for(var5 = 0; var5 < 13; ++var5) { + boolean var72 = false; + var52 = instanceChunkTemplates[var49][var4][var5]; + if(var52 != -1) { + var53 = var52 >> 24 & 3; + var54 = var52 >> 1 & 3; + var10 = var52 >> 14 & 1023; + var11 = var52 >> 3 & 2047; + var12 = (var10 / 8 << 8) + var11 / 8; + + for(var13 = 0; var13 < class308.regions.length; ++var13) { + if(class308.regions[var13] == var12 && class40.regionLandArchives[var13] != null) { + class204.method4013(class40.regionLandArchives[var13], var49, var4 * 8, var5 * 8, var53, (var10 & 7) * 8, (var11 & 7) * 8, var54, collisionMaps); + var72 = true; + break; + } + } + } + + if(!var72) { + var53 = var49; + var54 = var4 * 8; + var10 = var5 * 8; + + for(var11 = 0; var11 < 8; ++var11) { + for(var12 = 0; var12 < 8; ++var12) { + Tiles.Tiles_heights[var53][var11 + var54][var12 + var10] = 0; + } + } + + if(var54 > 0) { + for(var11 = 1; var11 < 8; ++var11) { + Tiles.Tiles_heights[var53][var54][var10 + var11] = Tiles.Tiles_heights[var53][var54 - 1][var10 + var11]; + } + } + + if(var10 > 0) { + for(var11 = 1; var11 < 8; ++var11) { + Tiles.Tiles_heights[var53][var54 + var11][var10] = Tiles.Tiles_heights[var53][var54 + var11][var10 - 1]; + } + } + + if(var54 > 0 && Tiles.Tiles_heights[var53][var54 - 1][var10] != 0) { + Tiles.Tiles_heights[var53][var54][var10] = Tiles.Tiles_heights[var53][var54 - 1][var10]; + } else if(var10 > 0 && Tiles.Tiles_heights[var53][var54][var10 - 1] != 0) { + Tiles.Tiles_heights[var53][var54][var10] = Tiles.Tiles_heights[var53][var54][var10 - 1]; + } else if(var54 > 0 && var10 > 0 && Tiles.Tiles_heights[var53][var54 - 1][var10 - 1] != 0) { + Tiles.Tiles_heights[var53][var54][var10] = Tiles.Tiles_heights[var53][var54 - 1][var10 - 1]; + } + } + } + } + + ++var49; + } + } + + UserComparator10.method3352(true); + class13.method163(); + Scene var65 = class65.scene; + CollisionMap[] var71 = collisionMaps; + + for(var5 = 0; var5 < 4; ++var5) { + for(var51 = 0; var51 < 104; ++var51) { + for(var52 = 0; var52 < 104; ++var52) { + if((Tiles.Tiles_renderFlags[var5][var51][var52] & 1) == 1) { + var53 = var5; + if((Tiles.Tiles_renderFlags[1][var51][var52] & 2) == 2) { + var53 = var5 - 1; + } + + if(var53 >= 0) { + var71[var53].__w_285(var51, var52); + } + } + } + } + } + + Tiles.__bq_p += (int)(Math.random() * 5.0D) - 2; + if(Tiles.__bq_p < -8) { + Tiles.__bq_p = -8; + } + + if(Tiles.__bq_p > 8) { + Tiles.__bq_p = 8; + } + + Tiles.__bq_v += (int)(Math.random() * 5.0D) - 2; + if(Tiles.__bq_v < -16) { + Tiles.__bq_v = -16; + } + + if(Tiles.__bq_v > 16) { + Tiles.__bq_v = 16; + } + + for(var5 = 0; var5 < 4; ++var5) { + byte[][] var66 = Tiles.__bq_l[var5]; + var12 = (int)Math.sqrt(5100.0D); + var13 = var12 * 768 >> 8; + + int var55; + for(var14 = 1; var14 < 103; ++var14) { + for(var15 = 1; var15 < 103; ++var15) { + var16 = Tiles.Tiles_heights[var5][var15 + 1][var14] - Tiles.Tiles_heights[var5][var15 - 1][var14]; + var17 = Tiles.Tiles_heights[var5][var15][var14 + 1] - Tiles.Tiles_heights[var5][var15][var14 - 1]; + var18 = (int)Math.sqrt((double)(var17 * var17 + var16 * var16 + 65536)); + var19 = (var16 << 8) / var18; + var20 = 65536 / var18; + var21 = (var17 << 8) / var18; + var22 = (var21 * -50 + var19 * -50 + var20 * -10) / var13 + 96; + var55 = (var66[var15 - 1][var14] >> 2) + (var66[var15][var14 - 1] >> 2) + (var66[var15 + 1][var14] >> 3) + (var66[var15][var14 + 1] >> 3) + (var66[var15][var14] >> 1); + Huffman.__gd_e[var15][var14] = var22 - var55; + } + } + + for(var14 = 0; var14 < 104; ++var14) { + class13.__i_x[var14] = 0; + Formatting.__cy_d[var14] = 0; + class214.__hf_k[var14] = 0; + WorldMapSectionType.__h_n[var14] = 0; + Message.__bm_i[var14] = 0; + } + + for(var14 = -5; var14 < 109; ++var14) { + for(var15 = 0; var15 < 104; ++var15) { + var16 = var14 + 5; + if(var16 >= 0 && var16 < 104) { + var17 = Tiles.__bq_w[var5][var16][var15] & 255; + if(var17 > 0) { + UnderlayDefinition var56 = StudioGame.method4550(var17 - 1); + class13.__i_x[var15] += var56.hue; + Formatting.__cy_d[var15] += var56.saturation; + class214.__hf_k[var15] += var56.lightness; + WorldMapSectionType.__h_n[var15] += var56.hueMultiplier; + ++Message.__bm_i[var15]; + } + } + + var17 = var14 - 5; + if(var17 >= 0 && var17 < 104) { + var18 = Tiles.__bq_w[var5][var17][var15] & 255; + if(var18 > 0) { + UnderlayDefinition var57 = StudioGame.method4550(var18 - 1); + class13.__i_x[var15] -= var57.hue; + Formatting.__cy_d[var15] -= var57.saturation; + class214.__hf_k[var15] -= var57.lightness; + WorldMapSectionType.__h_n[var15] -= var57.hueMultiplier; + --Message.__bm_i[var15]; + } + } + } + + if(var14 >= 1 && var14 < 103) { + var15 = 0; + var16 = 0; + var17 = 0; + var18 = 0; + var19 = 0; + + for(var20 = -5; var20 < 109; ++var20) { + var21 = var20 + 5; + if(var21 >= 0 && var21 < 104) { + var15 += class13.__i_x[var21]; + var16 += Formatting.__cy_d[var21]; + var17 += class214.__hf_k[var21]; + var18 += WorldMapSectionType.__h_n[var21]; + var19 += Message.__bm_i[var21]; + } + + var22 = var20 - 5; + if(var22 >= 0 && var22 < 104) { + var15 -= class13.__i_x[var22]; + var16 -= Formatting.__cy_d[var22]; + var17 -= class214.__hf_k[var22]; + var18 -= WorldMapSectionType.__h_n[var22]; + var19 -= Message.__bm_i[var22]; + } + + if(var20 >= 1 && var20 < 103 && (!isLowDetail || (Tiles.Tiles_renderFlags[0][var14][var20] & 2) != 0 || (Tiles.Tiles_renderFlags[var5][var14][var20] & 16) == 0)) { + if(var5 < Tiles.Tiles_minPlane) { + Tiles.Tiles_minPlane = var5; + } + + var55 = Tiles.__bq_w[var5][var14][var20] & 255; + int var24 = Fonts.__kz_o[var5][var14][var20] & 255; + if(var55 > 0 || var24 > 0) { + int var25 = Tiles.Tiles_heights[var5][var14][var20]; + int var26 = Tiles.Tiles_heights[var5][var14 + 1][var20]; + int var27 = Tiles.Tiles_heights[var5][var14 + 1][var20 + 1]; + int var28 = Tiles.Tiles_heights[var5][var14][var20 + 1]; + int var29 = Huffman.__gd_e[var14][var20]; + int var30 = Huffman.__gd_e[var14 + 1][var20]; + int var31 = Huffman.__gd_e[var14 + 1][var20 + 1]; + int var32 = Huffman.__gd_e[var14][var20 + 1]; + int var33 = -1; + int var34 = -1; + int var35; + int var36; + int var37; + if(var55 > 0) { + var35 = var15 * 256 / var18; + var36 = var16 / var19; + var37 = var17 / var19; + var33 = WorldMapAreaData.method712(var35, var36, var37); + var35 = var35 + Tiles.__bq_p & 255; + var37 += Tiles.__bq_v; + if(var37 < 0) { + var37 = 0; + } else if(var37 > 255) { + var37 = 255; + } + + var34 = WorldMapAreaData.method712(var35, var36, var37); + } + + OverlayDefinition var38; + if(var5 > 0) { + boolean var69 = true; + if(var55 == 0 && class32.__ay_u[var5][var14][var20] != 0) { + var69 = false; + } + + if(var24 > 0) { + var37 = var24 - 1; + var38 = (OverlayDefinition)OverlayDefinition.__jf_f.get((long)var37); + OverlayDefinition var58; + if(var38 != null) { + var58 = var38; + } else { + byte[] var39 = OverlayDefinition.__jf_m.takeRecord(4, var37); + var38 = new OverlayDefinition(); + if(var39 != null) { + var38.read(new Buffer(var39), var37); + } + + var38.init(); + OverlayDefinition.__jf_f.put(var38, (long)var37); + var58 = var38; + } + + if(!var58.__o) { + var69 = false; + } + } + + if(var69 && var25 == var26 && var25 == var27 && var28 == var25) { + Tiles.__bq_a[var5][var14][var20] |= 2340; + } + } + + var35 = 0; + if(var34 != -1) { + var35 = Rasterizer3D.Rasterizer3D_colorPalette[class15.method183(var34, 96)]; + } + + if(var24 == 0) { + var65.addTile(var5, var14, var20, 0, 0, -1, var25, var26, var27, var28, class15.method183(var33, var29), class15.method183(var33, var30), class15.method183(var33, var31), class15.method183(var33, var32), 0, 0, 0, 0, var35, 0); + } else { + var36 = class32.__ay_u[var5][var14][var20] + 1; + byte var70 = class307.__kc_g[var5][var14][var20]; + int var59 = var24 - 1; + OverlayDefinition var40 = (OverlayDefinition)OverlayDefinition.__jf_f.get((long)var59); + if(var40 != null) { + var38 = var40; + } else { + byte[] var41 = OverlayDefinition.__jf_m.takeRecord(4, var59); + var40 = new OverlayDefinition(); + if(var41 != null) { + var40.read(new Buffer(var41), var59); + } + + var40.init(); + OverlayDefinition.__jf_f.put(var40, (long)var59); + var38 = var40; + } + + int var60 = var38.texture; + int var42; + int var43; + int var44; + int var45; + if(var60 >= 0) { + var43 = Rasterizer3D.Rasterizer3D_textureLoader.__w_213(var60); + var42 = -1; + } else if(var38.rgb == 16711935) { + var42 = -2; + var60 = -1; + var43 = -2; + } else { + var42 = WorldMapAreaData.method712(var38.hue, var38.saturation, var38.lightness); + var44 = var38.hue + Tiles.__bq_p & 255; + var45 = var38.lightness + Tiles.__bq_v; + if(var45 < 0) { + var45 = 0; + } else if(var45 > 255) { + var45 = 255; + } + + var43 = WorldMapAreaData.method712(var44, var38.saturation, var45); + } + + var44 = 0; + if(var43 != -2) { + var44 = Rasterizer3D.Rasterizer3D_colorPalette[class25.method348(var43, 96)]; + } + + if(var38.rgb2 != -1) { + var45 = var38.hue2 + Tiles.__bq_p & 255; + int var46 = var38.lightness2 + Tiles.__bq_v; + if(var46 < 0) { + var46 = 0; + } else if(var46 > 255) { + var46 = 255; + } + + var43 = WorldMapAreaData.method712(var45, var38.saturation2, var46); + var44 = Rasterizer3D.Rasterizer3D_colorPalette[class25.method348(var43, 96)]; + } + + var65.addTile(var5, var14, var20, var36, var70, var60, var25, var26, var27, var28, class15.method183(var33, var29), class15.method183(var33, var30), class15.method183(var33, var31), class15.method183(var33, var32), class25.method348(var42, var29), class25.method348(var42, var30), class25.method348(var42, var31), class25.method348(var42, var32), var35, var44); + } + } + } + } + } + } + + for(var14 = 1; var14 < 103; ++var14) { + for(var15 = 1; var15 < 103; ++var15) { + if((Tiles.Tiles_renderFlags[var5][var15][var14] & 8) != 0) { + var20 = 0; + } else if(var5 > 0 && (Tiles.Tiles_renderFlags[1][var15][var14] & 2) != 0) { + var20 = var5 - 1; + } else { + var20 = var5; + } + + var65.setTileMinPlane(var5, var15, var14, var20); + } + } + + Tiles.__bq_w[var5] = null; + Fonts.__kz_o[var5] = null; + class32.__ay_u[var5] = null; + class307.__kc_g[var5] = null; + Tiles.__bq_l[var5] = null; + } + + var65.__aw_247(-50, -10, -50); + + for(var5 = 0; var5 < 104; ++var5) { + for(var51 = 0; var51 < 104; ++var51) { + if((Tiles.Tiles_renderFlags[1][var5][var51] & 2) == 2) { + var65.setLinkBelow(var5, var51); + } + } + } + + var5 = 1; + var51 = 2; + var52 = 4; + + for(var53 = 0; var53 < 4; ++var53) { + if(var53 > 0) { + var5 <<= 3; + var51 <<= 3; + var52 <<= 3; + } + + for(var54 = 0; var54 <= var53; ++var54) { + for(var10 = 0; var10 <= 104; ++var10) { + for(var11 = 0; var11 <= 104; ++var11) { + short var68; + if((Tiles.__bq_a[var54][var11][var10] & var5) != 0) { + var12 = var10; + var13 = var10; + var14 = var54; + + for(var15 = var54; var12 > 0 && (Tiles.__bq_a[var54][var11][var12 - 1] & var5) != 0; --var12) { + ; + } + + while(var13 < 104 && (Tiles.__bq_a[var54][var11][var13 + 1] & var5) != 0) { + ++var13; + } + + label837: + while(var14 > 0) { + for(var16 = var12; var16 <= var13; ++var16) { + if((Tiles.__bq_a[var14 - 1][var11][var16] & var5) == 0) { + break label837; + } + } + + --var14; + } + + label826: + while(var15 < var53) { + for(var16 = var12; var16 <= var13; ++var16) { + if((Tiles.__bq_a[var15 + 1][var11][var16] & var5) == 0) { + break label826; + } + } + + ++var15; + } + + var16 = (var13 - var12 + 1) * (var15 + 1 - var14); + if(var16 >= 8) { + var68 = 240; + var18 = Tiles.Tiles_heights[var15][var11][var12] - var68; + var19 = Tiles.Tiles_heights[var14][var11][var12]; + Scene.Scene_addOccluder(var53, 1, var11 * 128, var11 * 128, var12 * 128, var13 * 128 + 128, var18, var19); + + for(var20 = var14; var20 <= var15; ++var20) { + for(var21 = var12; var21 <= var13; ++var21) { + Tiles.__bq_a[var20][var11][var21] &= ~var5; + } + } + } + } + + if((Tiles.__bq_a[var54][var11][var10] & var51) != 0) { + var12 = var11; + var13 = var11; + var14 = var54; + + for(var15 = var54; var12 > 0 && (Tiles.__bq_a[var54][var12 - 1][var10] & var51) != 0; --var12) { + ; + } + + while(var13 < 104 && (Tiles.__bq_a[var54][var13 + 1][var10] & var51) != 0) { + ++var13; + } + + label890: + while(var14 > 0) { + for(var16 = var12; var16 <= var13; ++var16) { + if((Tiles.__bq_a[var14 - 1][var16][var10] & var51) == 0) { + break label890; + } + } + + --var14; + } + + label879: + while(var15 < var53) { + for(var16 = var12; var16 <= var13; ++var16) { + if((Tiles.__bq_a[var15 + 1][var16][var10] & var51) == 0) { + break label879; + } + } + + ++var15; + } + + var16 = (var13 - var12 + 1) * (var15 + 1 - var14); + if(var16 >= 8) { + var68 = 240; + var18 = Tiles.Tiles_heights[var15][var12][var10] - var68; + var19 = Tiles.Tiles_heights[var14][var12][var10]; + Scene.Scene_addOccluder(var53, 2, var12 * 128, var13 * 128 + 128, var10 * 128, var10 * 128, var18, var19); + + for(var20 = var14; var20 <= var15; ++var20) { + for(var21 = var12; var21 <= var13; ++var21) { + Tiles.__bq_a[var20][var21][var10] &= ~var51; + } + } + } + } + + if((Tiles.__bq_a[var54][var11][var10] & var52) != 0) { + var12 = var11; + var13 = var11; + var14 = var10; + + for(var15 = var10; var14 > 0 && (Tiles.__bq_a[var54][var11][var14 - 1] & var52) != 0; --var14) { + ; + } + + while(var15 < 104 && (Tiles.__bq_a[var54][var11][var15 + 1] & var52) != 0) { + ++var15; + } + + label943: + while(var12 > 0) { + for(var16 = var14; var16 <= var15; ++var16) { + if((Tiles.__bq_a[var54][var12 - 1][var16] & var52) == 0) { + break label943; + } + } + + --var12; + } + + label932: + while(var13 < 104) { + for(var16 = var14; var16 <= var15; ++var16) { + if((Tiles.__bq_a[var54][var13 + 1][var16] & var52) == 0) { + break label932; + } + } + + ++var13; + } + + if((var15 - var14 + 1) * (var13 - var12 + 1) >= 4) { + var16 = Tiles.Tiles_heights[var54][var12][var14]; + Scene.Scene_addOccluder(var53, 4, var12 * 128, var13 * 128 + 128, var14 * 128, var15 * 128 + 128, var16, var16); + + for(var17 = var12; var17 <= var13; ++var17) { + for(var18 = var14; var18 <= var15; ++var18) { + Tiles.__bq_a[var54][var17][var18] &= ~var52; + } + } + } + } + } + } + } + } + + UserComparator10.method3352(true); + var5 = Tiles.Tiles_minPlane; + if(var5 > SoundSystem.plane) { + var5 = SoundSystem.plane; + } + + if(var5 < SoundSystem.plane - 1) { + var5 = SoundSystem.plane - 1; + } + + if(isLowDetail) { + class65.scene.init(Tiles.Tiles_minPlane); + } else { + class65.scene.init(0); + } + + for(var51 = 0; var51 < 104; ++var51) { + for(var52 = 0; var52 < 104; ++var52) { + TilePaint.method3061(var51, var52); + } + } + + class13.method163(); + ScriptEvent.method1179(); + ObjectDefinition.__jr_o.clear(); + PacketBufferNode var67; + if(TextureProvider.client.hasFrame()) { + var67 = Interpreter.method1915(ClientPacket.__gs_x, packetWriter.isaacCipher); + var67.packetBuffer.writeInt(1057001181); + packetWriter.__q_167(var67); + } + + if(!isInInstance) { + var51 = (GameObject.__eh_fy - 6) / 8; + var52 = (GameObject.__eh_fy + 6) / 8; + var53 = (WorldMapLabelSize.__s_fi - 6) / 8; + var54 = (WorldMapLabelSize.__s_fi + 6) / 8; + + for(var10 = var51 - 1; var10 <= var52 + 1; ++var10) { + for(var11 = var53 - 1; var11 <= var54 + 1; ++var11) { + if(var10 < var51 || var10 > var52 || var11 < var53 || var11 > var54) { + SecureRandomFuture.indexCache5.__ar_402("m" + var10 + "_" + var11); + SecureRandomFuture.indexCache5.__ar_402("l" + var10 + "_" + var11); + } + } + } + } + + GameShell.updateGameState(30); + class13.method163(); + BufferedSink.method3603(); + var67 = Interpreter.method1915(ClientPacket.__gs_bv, packetWriter.isaacCipher); + packetWriter.__q_167(var67); + class11.method145(); + } + } + } + } else { + class54.method1092(this); + } + + if(gameState == 30) { + this.doCycleLoggedIn(); + } else if(gameState == 40 || gameState == 45) { + this.doCycleLoggedOut(); + } + + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "106302203" + ) + @Export("methodDraw") + protected final void methodDraw(boolean var1) { + boolean var2; + label166: { + try { + if(class214.__hf_o == 2) { + if(class13.musicTrack == null) { + class13.musicTrack = MusicTrack.readTrack(class214.__hf_u, class30.musicTrackArchiveId, GrandExchangeOffer.musicTrackFileId); + if(class13.musicTrack == null) { + var2 = false; + break label166; + } + } + + if(class307.soundCache == null) { + class307.soundCache = new SoundCache(class214.__hf_q, class214.__hf_f); + } + + if(class214.midiPcmStream.loadMusicTrack(class13.musicTrack, class1.__f_m, class307.soundCache, 22050)) { + class214.midiPcmStream.clearAll(); + class214.midiPcmStream.__m_340(WorldMapLabel.__aj_e); + class214.midiPcmStream.setMusicTrack(class13.musicTrack, RectangleMode.musicTrackBoolean); + class214.__hf_o = 0; + class13.musicTrack = null; + class307.soundCache = null; + class214.__hf_u = null; + var2 = true; + break label166; + } + } + } catch (Exception var6) { + var6.printStackTrace(); + class214.midiPcmStream.clear(); + class214.__hf_o = 0; + class13.musicTrack = null; + class307.soundCache = null; + class214.__hf_u = null; + } + + var2 = false; + } + + if(var2 && __client_qq && WorldMapCacheName.pcmPlayer0 != null) { + WorldMapCacheName.pcmPlayer0.tryDiscard(); + } + + if((gameState == 10 || gameState == 20 || gameState == 30) && __client_oa != 0L && class203.currentTimeMs() > __client_oa) { + GroundItem.method2095(SpotAnimationDefinition.method4822()); + } + + int var4; + if(var1) { + for(var4 = 0; var4 < 100; ++var4) { + __client_od[var4] = true; + } + } + + if(gameState == 0) { + this.drawInitial(Login.Login_loadingPercent, Login.Login_loadingText, var1); + } else if(gameState == 5) { + IndexCacheLoader.drawTitle(class2.fontBold12, ScriptEvent.fontPlain11, DevicePcmPlayerProvider.fontPlain12); + } else if(gameState != 10 && gameState != 11) { + if(gameState == 20) { + IndexCacheLoader.drawTitle(class2.fontBold12, ScriptEvent.fontPlain11, DevicePcmPlayerProvider.fontPlain12); + } else if(gameState == 25) { + if(__client_gh == 1) { + if(__client_fe > __client_fn) { + __client_fn = __client_fe; + } + + var4 = (__client_fn * 50 - __client_fe * 50) / __client_fn; + class68.drawLoadingMessage("Loading - please wait." + "
    " + " (" + var4 + "%" + ")", false); + } else if(__client_gh == 2) { + if(__client_fk > __client_gp) { + __client_gp = __client_fk; + } + + var4 = (__client_gp * 50 - __client_fk * 50) / __client_gp + 50; + class68.drawLoadingMessage("Loading - please wait." + "
    " + " (" + var4 + "%" + ")", false); + } else { + class68.drawLoadingMessage("Loading - please wait.", false); + } + } else if(gameState == 30) { + this.drawLoggedIn(); + } else if(gameState == 40) { + class68.drawLoadingMessage("Connection lost" + "
    " + "Please wait - attempting to reestablish", false); + } else if(gameState == 45) { + class68.drawLoadingMessage("Please wait...", false); + } + } else { + IndexCacheLoader.drawTitle(class2.fontBold12, ScriptEvent.fontPlain11, DevicePcmPlayerProvider.fontPlain12); + } + + if(gameState == 30 && gameDrawingMode == 0 && !var1 && !isResizable) { + for(var4 = 0; var4 < rootWidgetCount; ++var4) { + if(__client_ot[var4]) { + class197.rasterProvider.draw(rootWidgetXs[var4], rootWidgetYs[var4], rootWidgetWidths[var4], rootWidgetHeights[var4]); + __client_ot[var4] = false; + } + } + } else if(gameState > 0) { + class197.rasterProvider.drawFull(0, 0); + + for(var4 = 0; var4 < rootWidgetCount; ++var4) { + __client_ot[var4] = false; + } + } + + } + + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1879956387" + ) + protected final void kill0() { + if(class196.varcs.hasUnwrittenChanges()) { + class196.varcs.write(); + } + + if(Projectile.mouseRecorder != null) { + Projectile.mouseRecorder.isRunning = false; + } + + Projectile.mouseRecorder = null; + packetWriter.close(); + if(KeyHandler.KeyHandler_instance != null) { + KeyHandler var1 = KeyHandler.KeyHandler_instance; + synchronized(KeyHandler.KeyHandler_instance) { + KeyHandler.KeyHandler_instance = null; + } + } + + if(MouseHandler.MouseHandler_instance != null) { + MouseHandler var8 = MouseHandler.MouseHandler_instance; + synchronized(MouseHandler.MouseHandler_instance) { + MouseHandler.MouseHandler_instance = null; + } + } + + class16.mouseWheel = null; + if(WorldMapCacheName.pcmPlayer0 != null) { + WorldMapCacheName.pcmPlayer0.shutdown(); + } + + if(AbstractIndexCache.pcmPlayer1 != null) { + AbstractIndexCache.pcmPlayer1.shutdown(); + } + + if(NetCache.NetCache_socket != null) { + NetCache.NetCache_socket.close(); + } + + RunException.method3431(); + if(TriBool.urlRequester != null) { + TriBool.urlRequester.close(); + TriBool.urlRequester = null; + } + + try { + class168.dat2File.close(); + + for(int var4 = 0; var4 < class168.idxCount; ++var4) { + IndexStoreAction.idxFiles[var4].close(); + } + + class168.idx255File.close(); + class168.randomDat.close(); + } catch (Exception var7) { + ; + } + + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1860808291" + ) + protected final void __au_110() { + } + + @ObfuscatedName("init") + public final void __init_109() { + try { + if(this.checkHost()) { + ClientParameter[] var1 = class4.method47(); + + int var9; + for(int var2 = 0; var2 < var1.length; ++var2) { + ClientParameter var3 = var1[var2]; + String var4 = this.getParameter(var3.id); + if(var4 != null) { + switch(Integer.parseInt(var3.id)) { + case 1: + useBufferedSocket = Integer.parseInt(var4) != 0; + case 2: + case 11: + case 13: + case 16: + default: + break; + case 3: + if(var4.equalsIgnoreCase("true")) { + isMembersWorld = true; + } else { + isMembersWorld = false; + } + break; + case 4: + if(clientType == -1) { + clientType = Integer.parseInt(var4); + } + break; + case 5: + worldProperties = Integer.parseInt(var4); + break; + case 6: + language = Integer.parseInt(var4); + break; + case 7: + int var6 = Integer.parseInt(var4); + ServerBuild[] var7 = new ServerBuild[]{ServerBuild.__iy_q, ServerBuild.__iy_w, ServerBuild.__iy_m, ServerBuild.__iy_f}; + ServerBuild[] var8 = var7; + var9 = 0; + + ServerBuild var5; + while(true) { + if(var9 >= var8.length) { + var5 = null; + break; + } + + ServerBuild var10 = var8[var9]; + if(var6 == var10.id) { + var5 = var10; + break; + } + + ++var9; + } + + class15.serverBuild = var5; + break; + case 8: + if(var4.equalsIgnoreCase("true")) { + ; + } + break; + case 9: + class21.__b_by = var4; + break; + case 10: + class22.studioGame = (StudioGame)ScriptFrame.findEnumerated(ClientPacket.method3664(), Integer.parseInt(var4)); + if(class22.studioGame == StudioGame.__is_u) { + KeyHandler.loginType = LoginType.__lx_m; + } else { + KeyHandler.loginType = LoginType.__lx_e; + } + break; + case 12: + worldId = Integer.parseInt(var4); + break; + case 14: + AbstractIndexCache.__ir_bu = Integer.parseInt(var4); + break; + case 15: + gameBuild = Integer.parseInt(var4); + break; + case 17: + ServerBuild.worldsUrl = var4; + } + } + } + + class237.method4539(); + class50.worldHost = this.getCodeBase().getHost(); + String var33 = class15.serverBuild.name; + byte var34 = 0; + + try { + class168.idxCount = 21; + PacketBuffer.__hx_z = var34; + + try { + class266.osName = System.getProperty("os.name"); + } catch (Exception var28) { + class266.osName = "Unknown"; + } + + WorldMapSection3.osNameLowerCase = class266.osName.toLowerCase(); + + try { + WorldMapSection1.userHomeDirectory = System.getProperty("user.home"); + if(WorldMapSection1.userHomeDirectory != null) { + WorldMapSection1.userHomeDirectory = WorldMapSection1.userHomeDirectory + "/"; + } + } catch (Exception var27) { + ; + } + + try { + if(WorldMapSection3.osNameLowerCase.startsWith("win")) { + if(WorldMapSection1.userHomeDirectory == null) { + WorldMapSection1.userHomeDirectory = System.getenv("USERPROFILE"); + } + } else if(WorldMapSection1.userHomeDirectory == null) { + WorldMapSection1.userHomeDirectory = System.getenv("HOME"); + } + + if(WorldMapSection1.userHomeDirectory != null) { + WorldMapSection1.userHomeDirectory = WorldMapSection1.userHomeDirectory + "/"; + } + } catch (Exception var26) { + ; + } + + if(WorldMapSection1.userHomeDirectory == null) { + WorldMapSection1.userHomeDirectory = "~/"; + } + + WorldMapSection2.cacheDirectoryLocations = new String[]{"c:/rscache/", "/rscache/", "c:/windows/", "c:/winnt/", "c:/", WorldMapSection1.userHomeDirectory, "/tmp/", ""}; + Canvas.__ao_s = new String[]{".jagex_cache_" + PacketBuffer.__hx_z, ".file_store_" + PacketBuffer.__hx_z}; + int var17 = 0; + + label259: + while(var17 < 4) { + String var37 = var17 == 0?"":"" + var17; + class337.clDat = new File(WorldMapSection1.userHomeDirectory, "jagex_cl_oldschool_" + var33 + var37 + ".dat"); + String var18 = null; + String var39 = null; + boolean var19 = false; + File var42; + if(class337.clDat.exists()) { + try { + AccessFile var20 = new AccessFile(class337.clDat, "rw", 10000L); + + int var11; + Buffer var41; + for(var41 = new Buffer((int)var20.length()); var41.index < var41.array.length; var41.index += var11) { + var11 = var20.read(var41.array, var41.index, var41.array.length - var41.index); + if(var11 == -1) { + throw new IOException(); + } + } + + var41.index = 0; + var11 = var41.readUnsignedByte(); + if(var11 < 1 || var11 > 3) { + throw new IOException("" + var11); + } + + int var12 = 0; + if(var11 > 1) { + var12 = var41.readUnsignedByte(); + } + + if(var11 <= 2) { + var18 = var41.readStringCp1252NullCircumfixed(); + if(var12 == 1) { + var39 = var41.readStringCp1252NullCircumfixed(); + } + } else { + var18 = var41.__aw_304(); + if(var12 == 1) { + var39 = var41.__aw_304(); + } + } + + var20.close(); + } catch (IOException var30) { + var30.printStackTrace(); + } + + if(var18 != null) { + var42 = new File(var18); + if(!var42.exists()) { + var18 = null; + } + } + + if(var18 != null) { + var42 = new File(var18, "test.dat"); + if(!DevicePcmPlayerProvider.method847(var42, true)) { + var18 = null; + } + } + } + + if(var18 == null && var17 == 0) { + label234: + for(var9 = 0; var9 < Canvas.__ao_s.length; ++var9) { + for(int var21 = 0; var21 < WorldMapSection2.cacheDirectoryLocations.length; ++var21) { + File var22 = new File(WorldMapSection2.cacheDirectoryLocations[var21] + Canvas.__ao_s[var9] + File.separatorChar + "oldschool" + File.separatorChar); + if(var22.exists() && DevicePcmPlayerProvider.method847(new File(var22, "test.dat"), true)) { + var18 = var22.toString(); + var19 = true; + break label234; + } + } + } + } + + if(var18 == null) { + var18 = WorldMapSection1.userHomeDirectory + File.separatorChar + "jagexcache" + var37 + File.separatorChar + "oldschool" + File.separatorChar + var33 + File.separatorChar; + var19 = true; + } + + if(var39 != null) { + File var43 = new File(var39); + var42 = new File(var18); + + try { + File[] var44 = var43.listFiles(); + File[] var23 = var44; + + for(int var13 = 0; var13 < var23.length; ++var13) { + File var14 = var23[var13]; + File var15 = new File(var42, var14.getName()); + boolean var16 = var14.renameTo(var15); + if(!var16) { + throw new IOException(); + } + } + } catch (Exception var29) { + var29.printStackTrace(); + } + + var19 = true; + } + + if(var19) { + class14.method167(new File(var18), (File)null); + } + + File var36 = new File(var18); + class168.__fs_o = var36; + if(!class168.__fs_o.exists()) { + class168.__fs_o.mkdirs(); + } + + File[] var38 = class168.__fs_o.listFiles(); + if(var38 != null) { + File[] var45 = var38; + + for(int var24 = 0; var24 < var45.length; ++var24) { + File var40 = var45[var24]; + if(!DevicePcmPlayerProvider.method847(var40, false)) { + ++var17; + continue label259; + } + } + } + break; + } + + File var35 = class168.__fs_o; + class171.__fo_f = var35; + if(!class171.__fo_f.exists()) { + throw new RuntimeException(""); + } + + class171.__fo_m = true; + Interpreter.method1976(); + class168.dat2File = new BufferedFile(new AccessFile(WorldMapIcon2.method315("main_file_cache.dat2"), "rw", 1048576000L), 5200, 0); + class168.idx255File = new BufferedFile(new AccessFile(WorldMapIcon2.method315("main_file_cache.idx255"), "rw", 1048576L), 6000, 0); + IndexStoreAction.idxFiles = new BufferedFile[class168.idxCount]; + + for(int var25 = 0; var25 < class168.idxCount; ++var25) { + IndexStoreAction.idxFiles[var25] = new BufferedFile(new AccessFile(WorldMapIcon2.method315("main_file_cache.idx" + var25), "rw", 1048576L), 6000, 0); + } + } catch (Exception var31) { + NpcDefinition.sendStackTrace((String)null, var31); + } + + TextureProvider.client = this; + RunException.__fx_w = clientType; + this.startThread(765, 503, 180); + } + } catch (RuntimeException var32) { + throw Players.method2120(var32, "client.init(" + ')'); + } + } + + @ObfuscatedName("ef") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-78" + ) + @Export("doCycleJs5") + void doCycleJs5() { + if(gameState != 1000) { + long var2 = class203.currentTimeMs(); + int var4 = (int)(var2 - NetCache.__iq_q); + NetCache.__iq_q = var2; + if(var4 > 200) { + var4 = 200; + } + + NetCache.__iq_f += var4; + boolean var1; + if(NetCache.NetCache_pendingResponsesCount == 0 && NetCache.NetCache_pendingPriorityResponsesCount == 0 && NetCache.NetCache_pendingWritesCount == 0 && NetCache.NetCache_pendingPriorityWritesCount == 0) { + var1 = true; + } else if(NetCache.NetCache_socket == null) { + var1 = false; + } else { + try { + label242: { + if(NetCache.__iq_f > 30000) { + throw new IOException(); + } + + NetFileRequest var5; + Buffer var6; + while(NetCache.NetCache_pendingPriorityResponsesCount < 200 && NetCache.NetCache_pendingPriorityWritesCount > 0) { + var5 = (NetFileRequest)NetCache.NetCache_pendingPriorityWrites.first(); + var6 = new Buffer(4); + var6.writeByte(1); + var6.writeMedium((int)var5.key); + NetCache.NetCache_socket.write(var6.array, 0, 4); + NetCache.NetCache_pendingPriorityResponses.put(var5, var5.key); + --NetCache.NetCache_pendingPriorityWritesCount; + ++NetCache.NetCache_pendingPriorityResponsesCount; + } + + while(NetCache.NetCache_pendingResponsesCount < 200 && NetCache.NetCache_pendingWritesCount > 0) { + var5 = (NetFileRequest)NetCache.NetCache_pendingWritesQueue.last(); + var6 = new Buffer(4); + var6.writeByte(0); + var6.writeMedium((int)var5.key); + NetCache.NetCache_socket.write(var6.array, 0, 4); + var5.removeDual(); + NetCache.NetCache_pendingResponses.put(var5, var5.key); + --NetCache.NetCache_pendingWritesCount; + ++NetCache.NetCache_pendingResponsesCount; + } + + for(int var17 = 0; var17 < 100; ++var17) { + int var18 = NetCache.NetCache_socket.available(); + if(var18 < 0) { + throw new IOException(); + } + + if(var18 == 0) { + break; + } + + NetCache.__iq_f = 0; + byte var7 = 0; + if(ModelData0.NetCache_currentResponse == null) { + var7 = 8; + } else if(NetCache.__iq_j == 0) { + var7 = 1; + } + + int var8; + int var9; + int var10; + int var12; + if(var7 > 0) { + var8 = var7 - NetCache.NetCache_responseHeaderBuffer.index; + if(var8 > var18) { + var8 = var18; + } + + NetCache.NetCache_socket.read(NetCache.NetCache_responseHeaderBuffer.array, NetCache.NetCache_responseHeaderBuffer.index, var8); + if(NetCache.__iq_b != 0) { + for(var9 = 0; var9 < var8; ++var9) { + NetCache.NetCache_responseHeaderBuffer.array[NetCache.NetCache_responseHeaderBuffer.index + var9] ^= NetCache.__iq_b; + } + } + + NetCache.NetCache_responseHeaderBuffer.index += var8; + if(NetCache.NetCache_responseHeaderBuffer.index < var7) { + break; + } + + if(ModelData0.NetCache_currentResponse == null) { + NetCache.NetCache_responseHeaderBuffer.index = 0; + var9 = NetCache.NetCache_responseHeaderBuffer.readUnsignedByte(); + var10 = NetCache.NetCache_responseHeaderBuffer.__ag_302(); + int var11 = NetCache.NetCache_responseHeaderBuffer.readUnsignedByte(); + var12 = NetCache.NetCache_responseHeaderBuffer.readInt(); + long var13 = (long)(var10 + (var9 << 16)); + NetFileRequest var15 = (NetFileRequest)NetCache.NetCache_pendingPriorityResponses.get(var13); + WorldComparator.__u_n = true; + if(var15 == null) { + var15 = (NetFileRequest)NetCache.NetCache_pendingResponses.get(var13); + WorldComparator.__u_n = false; + } + + if(var15 == null) { + throw new IOException(); + } + + int var16 = var11 == 0?5:9; + ModelData0.NetCache_currentResponse = var15; + class22.NetCache_responseArchiveBuffer = new Buffer(var12 + var16 + ModelData0.NetCache_currentResponse.padding); + class22.NetCache_responseArchiveBuffer.writeByte(var11); + class22.NetCache_responseArchiveBuffer.writeInt(var12); + NetCache.__iq_j = 8; + NetCache.NetCache_responseHeaderBuffer.index = 0; + } else if(NetCache.__iq_j == 0) { + if(NetCache.NetCache_responseHeaderBuffer.array[0] == -1) { + NetCache.__iq_j = 1; + NetCache.NetCache_responseHeaderBuffer.index = 0; + } else { + ModelData0.NetCache_currentResponse = null; + } + } + } else { + var8 = class22.NetCache_responseArchiveBuffer.array.length - ModelData0.NetCache_currentResponse.padding; + var9 = 512 - NetCache.__iq_j; + if(var9 > var8 - class22.NetCache_responseArchiveBuffer.index) { + var9 = var8 - class22.NetCache_responseArchiveBuffer.index; + } + + if(var9 > var18) { + var9 = var18; + } + + NetCache.NetCache_socket.read(class22.NetCache_responseArchiveBuffer.array, class22.NetCache_responseArchiveBuffer.index, var9); + if(NetCache.__iq_b != 0) { + for(var10 = 0; var10 < var9; ++var10) { + class22.NetCache_responseArchiveBuffer.array[class22.NetCache_responseArchiveBuffer.index + var10] ^= NetCache.__iq_b; + } + } + + class22.NetCache_responseArchiveBuffer.index += var9; + NetCache.__iq_j += var9; + if(var8 == class22.NetCache_responseArchiveBuffer.index) { + if(16711935L == ModelData0.NetCache_currentResponse.key) { + Players.NetCache_reference = class22.NetCache_responseArchiveBuffer; + + for(var10 = 0; var10 < 256; ++var10) { + IndexCache var19 = NetCache.NetCache_indexCaches[var10]; + if(var19 != null) { + Players.NetCache_reference.index = var10 * 8 + 5; + var12 = Players.NetCache_reference.readInt(); + int var20 = Players.NetCache_reference.readInt(); + var19.loadIndexReference(var12, var20); + } + } + } else { + NetCache.NetCache_crc.reset(); + NetCache.NetCache_crc.update(class22.NetCache_responseArchiveBuffer.array, 0, var8); + var10 = (int)NetCache.NetCache_crc.getValue(); + if(var10 != ModelData0.NetCache_currentResponse.crc) { + try { + NetCache.NetCache_socket.close(); + } catch (Exception var23) { + ; + } + + ++NetCache.NetCache_crcMismatches; + NetCache.NetCache_socket = null; + NetCache.__iq_b = (byte)((int)(Math.random() * 255.0D + 1.0D)); + var1 = false; + break label242; + } + + NetCache.NetCache_crcMismatches = 0; + NetCache.NetCache_ioExceptions = 0; + ModelData0.NetCache_currentResponse.indexCache.write((int)(ModelData0.NetCache_currentResponse.key & 65535L), class22.NetCache_responseArchiveBuffer.array, 16711680L == (ModelData0.NetCache_currentResponse.key & 16711680L), WorldComparator.__u_n); + } + + ModelData0.NetCache_currentResponse.remove(); + if(WorldComparator.__u_n) { + --NetCache.NetCache_pendingPriorityResponsesCount; + } else { + --NetCache.NetCache_pendingResponsesCount; + } + + NetCache.__iq_j = 0; + ModelData0.NetCache_currentResponse = null; + class22.NetCache_responseArchiveBuffer = null; + } else { + if(NetCache.__iq_j != 512) { + break; + } + + NetCache.__iq_j = 0; + } + } + } + + var1 = true; + } + } catch (IOException var24) { + try { + NetCache.NetCache_socket.close(); + } catch (Exception var22) { + ; + } + + ++NetCache.NetCache_ioExceptions; + NetCache.NetCache_socket = null; + var1 = false; + } + } + + if(!var1) { + this.doCycleJs5Connect(); + } + + } + } + + @ObfuscatedName("ev") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "111" + ) + @Export("doCycleJs5Connect") + void doCycleJs5Connect() { + if(NetCache.NetCache_crcMismatches >= 4) { + this.error("js5crc"); + gameState = 1000; + } else { + if(NetCache.NetCache_ioExceptions >= 4) { + if(gameState <= 5) { + this.error("js5io"); + gameState = 1000; + return; + } + + __client_dp = 3000; + NetCache.NetCache_ioExceptions = 3; + } + + if(--__client_dp + 1 <= 0) { + try { + if(js5ConnectState == 0) { + class210.js5SocketTask = GameShell.taskHandler.newSocketTask(class50.worldHost, class203.port3); + ++js5ConnectState; + } + + if(js5ConnectState == 1) { + if(class210.js5SocketTask.status == 2) { + this.js5Error(-1); + return; + } + + if(class210.js5SocketTask.status == 1) { + ++js5ConnectState; + } + } + + if(js5ConnectState == 2) { + if(useBufferedSocket) { + DynamicObject.js5Socket = BufferedFile.method2719((Socket)class210.js5SocketTask.result, 40000, 5000); + } else { + DynamicObject.js5Socket = new NetSocket((Socket)class210.js5SocketTask.result, GameShell.taskHandler, 5000); + } + + Buffer var1 = new Buffer(5); + var1.writeByte(15); + var1.writeInt(180); + DynamicObject.js5Socket.write(var1.array, 0, 5); + ++js5ConnectState; + GameObject.js5StartTimeMs = class203.currentTimeMs(); + } + + if(js5ConnectState == 3) { + if(DynamicObject.js5Socket.available() > 0 || !useBufferedSocket && gameState <= 5) { + int var5 = DynamicObject.js5Socket.readUnsignedByte(); + if(var5 != 0) { + this.js5Error(var5); + return; + } + + ++js5ConnectState; + } else if(class203.currentTimeMs() - GameObject.js5StartTimeMs > 30000L) { + this.js5Error(-2); + return; + } + } + + if(js5ConnectState == 4) { + AbstractSocket var10 = DynamicObject.js5Socket; + boolean var2 = gameState > 20; + if(NetCache.NetCache_socket != null) { + try { + NetCache.NetCache_socket.close(); + } catch (Exception var8) { + ; + } + + NetCache.NetCache_socket = null; + } + + NetCache.NetCache_socket = var10; + UserComparator9.method3343(var2); + NetCache.NetCache_responseHeaderBuffer.index = 0; + ModelData0.NetCache_currentResponse = null; + class22.NetCache_responseArchiveBuffer = null; + NetCache.__iq_j = 0; + + while(true) { + NetFileRequest var3 = (NetFileRequest)NetCache.NetCache_pendingPriorityResponses.first(); + if(var3 == null) { + while(true) { + var3 = (NetFileRequest)NetCache.NetCache_pendingResponses.first(); + if(var3 == null) { + if(NetCache.__iq_b != 0) { + try { + Buffer var11 = new Buffer(4); + var11.writeByte(4); + var11.writeByte(NetCache.__iq_b); + var11.writeShort(0); + NetCache.NetCache_socket.write(var11.array, 0, 4); + } catch (IOException var7) { + try { + NetCache.NetCache_socket.close(); + } catch (Exception var6) { + ; + } + + ++NetCache.NetCache_ioExceptions; + NetCache.NetCache_socket = null; + } + } + + NetCache.__iq_f = 0; + NetCache.__iq_q = class203.currentTimeMs(); + class210.js5SocketTask = null; + DynamicObject.js5Socket = null; + js5ConnectState = 0; + js5Errors = 0; + return; + } + + NetCache.NetCache_pendingWritesQueue.addLast(var3); + NetCache.NetCache_pendingWrites.put(var3, var3.key); + ++NetCache.NetCache_pendingWritesCount; + --NetCache.NetCache_pendingResponsesCount; + } + } + + NetCache.NetCache_pendingPriorityWrites.put(var3, var3.key); + ++NetCache.NetCache_pendingPriorityWritesCount; + --NetCache.NetCache_pendingPriorityResponsesCount; + } + } + } catch (IOException var9) { + this.js5Error(-3); + } + + } + } + } + + @ObfuscatedName("ea") + @ObfuscatedSignature( + signature = "(IS)V", + garbageValue = "2348" + ) + @Export("js5Error") + void js5Error(int var1) { + class210.js5SocketTask = null; + DynamicObject.js5Socket = null; + js5ConnectState = 0; + if(class2.port1 == class203.port3) { + class203.port3 = WorldMapArea.port2; + } else { + class203.port3 = class2.port1; + } + + ++js5Errors; + if(js5Errors >= 2 && (var1 == 7 || var1 == 9)) { + if(gameState <= 5) { + this.error("js5connect_full"); + gameState = 1000; + } else { + __client_dp = 3000; + } + } else if(js5Errors >= 2 && var1 == 6) { + this.error("js5connect_outofdate"); + gameState = 1000; + } else if(js5Errors >= 4) { + if(gameState <= 5) { + this.error("js5connect"); + gameState = 1000; + } else { + __client_dp = 3000; + } + } + + } + + @ObfuscatedName("fg") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-110" + ) + @Export("doCycleLoggedOut") + final void doCycleLoggedOut() { + Object var1 = packetWriter.getSocket(); + PacketBuffer var2 = packetWriter.packetBuffer; + + try { + if(loginState == 0) { + if(WorldMapIcon1.secureRandom == null && (secureRandomFuture.isDone() || __client_ex > 250)) { + WorldMapIcon1.secureRandom = secureRandomFuture.get(); + secureRandomFuture.shutdown(); + secureRandomFuture = null; + } + + if(WorldMapIcon1.secureRandom != null) { + if(var1 != null) { + ((AbstractSocket)var1).close(); + var1 = null; + } + + UserComparator3.socketTask = null; + __client_fh = false; + __client_ex = 0; + loginState = 1; + } + } + + if(loginState == 1) { + if(UserComparator3.socketTask == null) { + UserComparator3.socketTask = GameShell.taskHandler.newSocketTask(class50.worldHost, class203.port3); + } + + if(UserComparator3.socketTask.status == 2) { + throw new IOException(); + } + + if(UserComparator3.socketTask.status == 1) { + if(useBufferedSocket) { + var1 = BufferedFile.method2719((Socket)UserComparator3.socketTask.result, 40000, 5000); + } else { + var1 = new NetSocket((Socket)UserComparator3.socketTask.result, GameShell.taskHandler, 5000); + } + + packetWriter.setSocket((AbstractSocket)var1); + UserComparator3.socketTask = null; + loginState = 2; + } + } + + if(loginState == 2) { + packetWriter.__m_165(); + PacketBufferNode var4; + if(PacketBufferNode.__gg_u == 0) { + var4 = new PacketBufferNode(); + } else { + var4 = PacketBufferNode.packetBufferNodes[--PacketBufferNode.__gg_u]; + } + + var4.__m = null; + var4.__f = 0; + var4.packetBuffer = new PacketBuffer(5000); + var4.packetBuffer.writeByte(LoginPacket.__gl_m.id); + packetWriter.__q_167(var4); + packetWriter.__f_166(); + var2.index = 0; + loginState = 3; + } + + boolean var12; + int var13; + if(loginState == 3) { + if(WorldMapCacheName.pcmPlayer0 != null) { + WorldMapCacheName.pcmPlayer0.__ac_176(); + } + + if(AbstractIndexCache.pcmPlayer1 != null) { + AbstractIndexCache.pcmPlayer1.__ac_176(); + } + + var12 = true; + if(useBufferedSocket && !((AbstractSocket)var1).isAvailable(1)) { + var12 = false; + } + + if(var12) { + var13 = ((AbstractSocket)var1).readUnsignedByte(); + if(WorldMapCacheName.pcmPlayer0 != null) { + WorldMapCacheName.pcmPlayer0.__ac_176(); + } + + if(AbstractIndexCache.pcmPlayer1 != null) { + AbstractIndexCache.pcmPlayer1.__ac_176(); + } + + if(var13 != 0) { + IsaacCipher.method4093(var13); + return; + } + + var2.index = 0; + loginState = 4; + } + } + + int var25; + if(loginState == 4) { + if(var2.index < 8) { + var25 = ((AbstractSocket)var1).available(); + if(var25 > 8 - var2.index) { + var25 = 8 - var2.index; + } + + if(var25 > 0) { + ((AbstractSocket)var1).read(var2.array, var2.index, var25); + var2.index += var25; + } + } + + if(var2.index == 8) { + var2.index = 0; + MusicPatchNode2.__hd_fc = var2.readLong(); + loginState = 5; + } + } + + if(loginState == 5) { + packetWriter.packetBuffer.index = 0; + packetWriter.__m_165(); + PacketBuffer var3 = new PacketBuffer(500); + int[] var20 = new int[]{WorldMapIcon1.secureRandom.nextInt(), WorldMapIcon1.secureRandom.nextInt(), WorldMapIcon1.secureRandom.nextInt(), WorldMapIcon1.secureRandom.nextInt()}; + var3.index = 0; + var3.writeByte(1); + var3.writeInt(var20[0]); + var3.writeInt(var20[1]); + var3.writeInt(var20[2]); + var3.writeInt(var20[3]); + var3.writeLong(MusicPatchNode2.__hd_fc); + if(gameState == 40) { + var3.writeInt(Skills.__hc_ef[0]); + var3.writeInt(Skills.__hc_ef[1]); + var3.writeInt(Skills.__hc_ef[2]); + var3.writeInt(Skills.__hc_ef[3]); + } else { + var3.writeByte(field658.rsOrdinal()); + switch(field658.field1984) { + case 0: + case 3: + var3.writeMedium(class13.__i_af); + ++var3.index; + break; + case 1: + var3.index += 4; + break; + case 2: + var3.writeInt(((Integer)ReflectionCheck.clientPreferences.parameters.get(Integer.valueOf(class279.method5357(Login.Login_username)))).intValue()); + } + + var3.writeByte(class313.field3834.rsOrdinal()); + var3.writeStringCp1252NullTerminated(Login.Login_password); + } + + var3.encryptRsa(class83.__cm_m, class83.__cm_f); + Skills.__hc_ef = var20; + PacketBufferNode var6; + if(PacketBufferNode.__gg_u == 0) { + var6 = new PacketBufferNode(); + } else { + var6 = PacketBufferNode.packetBufferNodes[--PacketBufferNode.__gg_u]; + } + + var6.__m = null; + var6.__f = 0; + var6.packetBuffer = new PacketBuffer(5000); + var6.packetBuffer.index = 0; + if(gameState == 40) { + var6.packetBuffer.writeByte(LoginPacket.__gl_w.id); + } else { + var6.packetBuffer.writeByte(LoginPacket.__gl_q.id); + } + + var6.packetBuffer.writeShort(0); + int var14 = var6.packetBuffer.index; + var6.packetBuffer.writeInt(180); + var6.packetBuffer.writeInt(1); + var6.packetBuffer.writeByte(clientType); + var6.packetBuffer.__s_297(var3.array, 0, var3.index); + int var8 = var6.packetBuffer.index; + var6.packetBuffer.writeStringCp1252NullTerminated(Login.Login_username); + var6.packetBuffer.writeByte((isResizable?1:0) << 1 | (isLowDetail?1:0)); + var6.packetBuffer.writeShort(SoundCache.canvasWidth); + var6.packetBuffer.writeShort(Huffman.canvasHeight); + Varps.method4400(var6.packetBuffer); + var6.packetBuffer.writeStringCp1252NullTerminated(class21.__b_by); + var6.packetBuffer.writeInt(AbstractIndexCache.__ir_bu); + Buffer var9 = new Buffer(WorldMapLabelSize.platformInfo.size()); + WorldMapLabelSize.platformInfo.write(var9); + var6.packetBuffer.__s_297(var9.array, 0, var9.array.length); + var6.packetBuffer.writeByte(clientType); + var6.packetBuffer.writeInt(0); + var6.packetBuffer.writeInt(AbstractIndexCache.indexCache0.hash); + var6.packetBuffer.writeInt(Skeleton.indexCache1.hash); + var6.packetBuffer.writeInt(ObjectSound.indexCache2.hash); + var6.packetBuffer.writeInt(WorldMapIcon1.indexCache3.hash); + var6.packetBuffer.writeInt(class25.indexCache4.hash); + var6.packetBuffer.writeInt(SecureRandomFuture.indexCache5.hash); + var6.packetBuffer.writeInt(UserComparator3.indexCache6.hash); + var6.packetBuffer.writeInt(class40.indexCache7.hash); + var6.packetBuffer.writeInt(WorldMapSection3.indexCache8.hash); + var6.packetBuffer.writeInt(class238.indexCache9.hash); + var6.packetBuffer.writeInt(class16.indexCache10.hash); + var6.packetBuffer.writeInt(Login.indexCache11.hash); + var6.packetBuffer.writeInt(Formatting.indexCache12.hash); + var6.packetBuffer.writeInt(ByteArrayPool.indexCache13.hash); + var6.packetBuffer.writeInt(class2.indexCache14.hash); + var6.packetBuffer.writeInt(WorldMapSection1.indexCache15.hash); + var6.packetBuffer.writeInt(0); + var6.packetBuffer.writeInt(class22.indexCache16.hash); + var6.packetBuffer.writeInt(WorldMapLabelSize.__s_dq.hash); + var6.packetBuffer.writeInt(ItemContainer.__bc_dm.hash); + var6.packetBuffer.writeInt(AbstractByteArrayCopier.__gu_et.hash); + var6.packetBuffer.xteaEncrypt(var20, var8, var6.packetBuffer.index); + var6.packetBuffer.__y_299(var6.packetBuffer.index - var14); + packetWriter.__q_167(var6); + packetWriter.__f_166(); + packetWriter.isaacCipher = new IsaacCipher(var20); + int[] var10 = new int[4]; + + for(int var11 = 0; var11 < 4; ++var11) { + var10[var11] = var20[var11] + 50; + } + + var2.newIsaacCipher(var10); + loginState = 6; + } + + if(loginState == 6 && ((AbstractSocket)var1).available() > 0) { + var25 = ((AbstractSocket)var1).readUnsignedByte(); + if(var25 == 21 && gameState == 20) { + loginState = 9; + } else if(var25 == 2) { + loginState = 11; + } else if(var25 == 15 && gameState == 40) { + packetWriter.serverPacket0Length = -1; + loginState = 16; + } else if(var25 == 64) { + loginState = 7; + } else if(var25 == 23 && __client_ej < 1) { + ++__client_ej; + loginState = 0; + } else { + if(var25 != 29) { + IsaacCipher.method4093(var25); + return; + } + + loginState = 14; + } + } + + if(loginState == 7 && ((AbstractSocket)var1).available() > 0) { + WorldMapSection1.__as_ey = ((AbstractSocket)var1).readUnsignedByte(); + loginState = 8; + } + + if(loginState == 8 && ((AbstractSocket)var1).available() >= WorldMapSection1.__as_ey) { + ((AbstractSocket)var1).read(var2.array, 0, WorldMapSection1.__as_ey); + var2.index = 0; + loginState = 6; + } + + if(loginState == 9 && ((AbstractSocket)var1).available() > 0) { + __client_el = (((AbstractSocket)var1).readUnsignedByte() + 3) * 60; + loginState = 10; + } + + if(loginState == 10) { + __client_ex = 0; + class54.method1089("You have only just left another world.", "Your profile will be transferred in:", __client_el / 60 + " seconds."); + if(--__client_el <= 0) { + loginState = 0; + } + + } else { + if(loginState == 11 && ((AbstractSocket)var1).available() >= 1) { + __client_eo = ((AbstractSocket)var1).readUnsignedByte(); + loginState = 12; + } + + if(loginState == 12 && ((AbstractSocket)var1).available() >= __client_eo) { + var12 = ((AbstractSocket)var1).readUnsignedByte() == 1; + ((AbstractSocket)var1).read(var2.array, 0, 4); + var2.index = 0; + boolean var26 = false; + if(var12) { + var13 = var2.readByteIsaac() << 24; + var13 |= var2.readByteIsaac() << 16; + var13 |= var2.readByteIsaac() << 8; + var13 |= var2.readByteIsaac(); + int var15 = class279.method5357(Login.Login_username); + if(ReflectionCheck.clientPreferences.parameters.size() >= 10 && !ReflectionCheck.clientPreferences.parameters.containsKey(Integer.valueOf(var15))) { + Iterator var24 = ReflectionCheck.clientPreferences.parameters.entrySet().iterator(); + var24.next(); + var24.remove(); + } + + ReflectionCheck.clientPreferences.parameters.put(Integer.valueOf(var15), Integer.valueOf(var13)); + } + + if(Login_isUsernameRemembered) { + ReflectionCheck.clientPreferences.rememberedUsername = Login.Login_username; + } else { + ReflectionCheck.clientPreferences.rememberedUsername = null; + } + + WorldMapSection0.method247(); + rights = ((AbstractSocket)var1).readUnsignedByte(); + __client_mn = ((AbstractSocket)var1).readUnsignedByte() == 1; + localPlayerIndex = ((AbstractSocket)var1).readUnsignedByte(); + localPlayerIndex <<= 8; + localPlayerIndex += ((AbstractSocket)var1).readUnsignedByte(); + __client_jo = ((AbstractSocket)var1).readUnsignedByte(); + ((AbstractSocket)var1).read(var2.array, 0, 1); + var2.index = 0; + ServerPacket[] var5 = class27.method429(); + int var16 = var2.readSmartByteShortIsaac(); + if(var16 < 0 || var16 >= var5.length) { + throw new IOException(var16 + " " + var2.index); + } + + packetWriter.serverPacket0 = var5[var16]; + packetWriter.serverPacket0Length = packetWriter.serverPacket0.length; + ((AbstractSocket)var1).read(var2.array, 0, 2); + var2.index = 0; + packetWriter.serverPacket0Length = var2.__ag_302(); + + try { + Client var7 = TextureProvider.client; + JSObject.getWindow(var7).call("zap", (Object[])null); + } catch (Throwable var17) { + ; + } + + loginState = 13; + } + + if(loginState == 13) { + if(((AbstractSocket)var1).available() >= packetWriter.serverPacket0Length) { + var2.index = 0; + ((AbstractSocket)var1).read(var2.array, 0, packetWriter.serverPacket0Length); + timer.__w_456(); + WorldMapSection1.method808(); + class11.updatePlayer(var2); + GameObject.__eh_fy = -1; + class50.loadRegions(false, var2); + packetWriter.serverPacket0 = null; + } + + } else { + if(loginState == 14 && ((AbstractSocket)var1).available() >= 2) { + var2.index = 0; + ((AbstractSocket)var1).read(var2.array, 0, 2); + var2.index = 0; + IndexCacheLoader.__bd_er = var2.__ag_302(); + loginState = 15; + } + + if(loginState == 15 && ((AbstractSocket)var1).available() >= IndexCacheLoader.__bd_er) { + var2.index = 0; + ((AbstractSocket)var1).read(var2.array, 0, IndexCacheLoader.__bd_er); + var2.index = 0; + String var19 = var2.readStringCp1252NullTerminated(); + String var21 = var2.readStringCp1252NullTerminated(); + String var22 = var2.readStringCp1252NullTerminated(); + class54.method1089(var19, var21, var22); + GameShell.updateGameState(10); + } + + if(loginState != 16) { + ++__client_ex; + if(__client_ex > 2000) { + if(__client_ej < 1) { + if(class203.port3 == class2.port1) { + class203.port3 = WorldMapArea.port2; + } else { + class203.port3 = class2.port1; + } + + ++__client_ej; + loginState = 0; + } else { + IsaacCipher.method4093(-3); + } + } + } else { + if(packetWriter.serverPacket0Length == -1) { + if(((AbstractSocket)var1).available() < 2) { + return; + } + + ((AbstractSocket)var1).read(var2.array, 0, 2); + var2.index = 0; + packetWriter.serverPacket0Length = var2.__ag_302(); + } + + if(((AbstractSocket)var1).available() >= packetWriter.serverPacket0Length) { + ((AbstractSocket)var1).read(var2.array, 0, packetWriter.serverPacket0Length); + var2.index = 0; + var25 = packetWriter.serverPacket0Length; + timer.__u_458(); + packetWriter.__m_165(); + packetWriter.packetBuffer.index = 0; + packetWriter.serverPacket0 = null; + packetWriter.__k = null; + packetWriter.__n = null; + packetWriter.__i = null; + packetWriter.serverPacket0Length = 0; + packetWriter.__x = 0; + rebootTimer = 0; + menuOptionsCount = 0; + isMenuOpen = false; + minimapState = 0; + destinationX = 0; + + for(var13 = 0; var13 < 2048; ++var13) { + players[var13] = null; + } + + Canvas.localPlayer = null; + + for(var13 = 0; var13 < npcs.length; ++var13) { + Npc var23 = npcs[var13]; + if(var23 != null) { + var23.targetIndex = -1; + var23.false0 = false; + } + } + + SpriteMask.method4389(); + GameShell.updateGameState(30); + + for(var13 = 0; var13 < 100; ++var13) { + __client_od[var13] = true; + } + + AbstractByteArrayCopier.method4024(); + class11.updatePlayer(var2); + if(var25 != var2.index) { + throw new RuntimeException(); + } + } + } + } + } + } catch (IOException var18) { + if(__client_ej < 1) { + if(class2.port1 == class203.port3) { + class203.port3 = WorldMapArea.port2; + } else { + class203.port3 = class2.port1; + } + + ++__client_ej; + loginState = 0; + } else { + IsaacCipher.method4093(-2); + } + } + } + + @ObfuscatedName("fx") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1646308927" + ) + @Export("doCycleLoggedIn") + final void doCycleLoggedIn() { + if(rebootTimer > 1) { + --rebootTimer; + } + + if(__client_fd > 0) { + --__client_fd; + } + + if(__client_fh) { + __client_fh = false; + class48.method868(); + } else { + if(!isMenuOpen) { + class30.method569(); + } + + int var1; + for(var1 = 0; var1 < 100 && this.__hg_138(packetWriter); ++var1) { + ; + } + + if(gameState == 30) { + while(true) { + ReflectionCheck var2 = (ReflectionCheck)class322.reflectionChecks.last(); + boolean var29; + if(var2 == null) { + var29 = false; + } else { + var29 = true; + } + + int var3; + PacketBufferNode var30; + if(!var29) { + PacketBufferNode var14; + int var15; + if(timer.__q) { + var14 = Interpreter.method1915(ClientPacket.__gs_o, packetWriter.isaacCipher); + var14.packetBuffer.writeByte(0); + var15 = var14.packetBuffer.index; + timer.write(var14.packetBuffer); + var14.packetBuffer.__h_300(var14.packetBuffer.index - var15); + packetWriter.__q_167(var14); + timer.__o_457(); + } + + Object var34 = Projectile.mouseRecorder.lock; + int var4; + int var5; + int var6; + int var7; + int var8; + int var9; + int var10; + int var11; + int var12; + synchronized(Projectile.mouseRecorder.lock) { + if(!__client_ai) { + Projectile.mouseRecorder.index = 0; + } else if(MouseHandler.MouseHandler_lastButton != 0 || Projectile.mouseRecorder.index >= 40) { + var30 = null; + var3 = 0; + var4 = 0; + var5 = 0; + var6 = 0; + + for(var7 = 0; var7 < Projectile.mouseRecorder.index && (var30 == null || var30.packetBuffer.index - var3 < 246); ++var7) { + var4 = var7; + var8 = Projectile.mouseRecorder.ys[var7]; + if(var8 < -1) { + var8 = -1; + } else if(var8 > 65534) { + var8 = 65534; + } + + var9 = Projectile.mouseRecorder.xs[var7]; + if(var9 < -1) { + var9 = -1; + } else if(var9 > 65534) { + var9 = 65534; + } + + if(var9 != __client_cn || var8 != __client_cq) { + if(var30 == null) { + var30 = Interpreter.method1915(ClientPacket.__gs_ak, packetWriter.isaacCipher); + var30.packetBuffer.writeByte(0); + var3 = var30.packetBuffer.index; + var30.packetBuffer.index += 2; + var5 = 0; + var6 = 0; + } + + if(-1L != __client_ch) { + var10 = var9 - __client_cn; + var11 = var8 - __client_cq; + var12 = (int)((Projectile.mouseRecorder.millis[var7] - __client_ch) / 20L); + var5 = (int)((long)var5 + (Projectile.mouseRecorder.millis[var7] - __client_ch) % 20L); + } else { + var10 = var9; + var11 = var8; + var12 = Integer.MAX_VALUE; + } + + __client_cn = var9; + __client_cq = var8; + if(var12 < 8 && var10 >= -32 && var10 <= 31 && var11 >= -32 && var11 <= 31) { + var10 += 32; + var11 += 32; + var30.packetBuffer.writeShort((var12 << 12) + var11 + (var10 << 6)); + } else if(var12 < 32 && var10 >= -128 && var10 <= 127 && var11 >= -128 && var11 <= 127) { + var10 += 128; + var11 += 128; + var30.packetBuffer.writeByte(var12 + 128); + var30.packetBuffer.writeShort(var11 + (var10 << 8)); + } else if(var12 < 32) { + var30.packetBuffer.writeByte(var12 + 192); + if(var9 != -1 && var8 != -1) { + var30.packetBuffer.writeInt(var9 | var8 << 16); + } else { + var30.packetBuffer.writeInt(Integer.MIN_VALUE); + } + } else { + var30.packetBuffer.writeShort((var12 & 8191) + 57344); + if(var9 != -1 && var8 != -1) { + var30.packetBuffer.writeInt(var9 | var8 << 16); + } else { + var30.packetBuffer.writeInt(Integer.MIN_VALUE); + } + } + + ++var6; + __client_ch = Projectile.mouseRecorder.millis[var7]; + } + } + + if(var30 != null) { + var30.packetBuffer.__h_300(var30.packetBuffer.index - var3); + var7 = var30.packetBuffer.index; + var30.packetBuffer.index = var3; + var30.packetBuffer.writeByte(var5 / var6); + var30.packetBuffer.writeByte(var5 % var6); + var30.packetBuffer.index = var7; + packetWriter.__q_167(var30); + } + + if(var4 >= Projectile.mouseRecorder.index) { + Projectile.mouseRecorder.index = 0; + } else { + Projectile.mouseRecorder.index -= var4; + System.arraycopy(Projectile.mouseRecorder.xs, var4, Projectile.mouseRecorder.xs, 0, Projectile.mouseRecorder.index); + System.arraycopy(Projectile.mouseRecorder.ys, var4, Projectile.mouseRecorder.ys, 0, Projectile.mouseRecorder.index); + System.arraycopy(Projectile.mouseRecorder.millis, var4, Projectile.mouseRecorder.millis, 0, Projectile.mouseRecorder.index); + } + } + } + + PacketBufferNode var18; + if(MouseHandler.MouseHandler_lastButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_lastButton == 4 || MouseHandler.MouseHandler_lastButton == 2) { + long var16 = (MouseHandler.MouseHandler_lastPressedTimeMillis - mouseLastLastPressedTimeMillis * -1L) / 50L; + if(var16 > 4095L) { + var16 = 4095L; + } + + mouseLastLastPressedTimeMillis = MouseHandler.MouseHandler_lastPressedTimeMillis * -1L; + var3 = MouseHandler.MouseHandler_lastPressedY; + if(var3 < 0) { + var3 = 0; + } else if(var3 > Huffman.canvasHeight) { + var3 = Huffman.canvasHeight; + } + + var4 = MouseHandler.MouseHandler_lastPressedX; + if(var4 < 0) { + var4 = 0; + } else if(var4 > SoundCache.canvasWidth) { + var4 = SoundCache.canvasWidth; + } + + var5 = (int)var16; + var18 = Interpreter.method1915(ClientPacket.__gs_ap, packetWriter.isaacCipher); + var18.packetBuffer.writeShort((var5 << 1) + (MouseHandler.MouseHandler_lastButton == 2?1:0)); + var18.packetBuffer.writeShort(var4); + var18.packetBuffer.writeShort(var3); + packetWriter.__q_167(var18); + } + + if(KeyHandler.__an_cl > 0) { + var14 = Interpreter.method1915(ClientPacket.__gs_bj, packetWriter.isaacCipher); + var14.packetBuffer.writeShort(0); + var15 = var14.packetBuffer.index; + long var19 = class203.currentTimeMs(); + + for(var5 = 0; var5 < KeyHandler.__an_cl; ++var5) { + long var21 = var19 - __client_pp; + if(var21 > 16777215L) { + var21 = 16777215L; + } + + __client_pp = var19; + var14.packetBuffer.__ai_315(KeyHandler.__an_cp[var5]); + var14.packetBuffer.writeMedium((int)var21); + } + + var14.packetBuffer.__y_299(var14.packetBuffer.index - var15); + packetWriter.__q_167(var14); + } + + if(__client_iy > 0) { + --__client_iy; + } + + if(KeyHandler.KeyHandler_pressedKeys[96] || KeyHandler.KeyHandler_pressedKeys[97] || KeyHandler.KeyHandler_pressedKeys[98] || KeyHandler.KeyHandler_pressedKeys[99]) { + __client_is = true; + } + + if(__client_is && __client_iy <= 0) { + __client_iy = 20; + __client_is = false; + var14 = Interpreter.method1915(ClientPacket.__gs_at, packetWriter.isaacCipher); + var14.packetBuffer.__bx_323(cameraPitchTarget); + var14.packetBuffer.writeShortLE(minimapOrientation); + packetWriter.__q_167(var14); + } + + if(class230.__hy_az && !__client_cw) { + __client_cw = true; + var14 = Interpreter.method1915(ClientPacket.__gs_bf, packetWriter.isaacCipher); + var14.packetBuffer.writeByte(1); + packetWriter.__q_167(var14); + } + + if(!class230.__hy_az && __client_cw) { + __client_cw = false; + var14 = Interpreter.method1915(ClientPacket.__gs_bf, packetWriter.isaacCipher); + var14.packetBuffer.writeByte(0); + packetWriter.__q_167(var14); + } + + if(class60.worldMap0 != null) { + class60.worldMap0.__f_518(); + } + + class266.method5120(); + Message.method1228(); + if(gameState != 30) { + return; + } + + Canvas.method855(); + WorldMapIcon1.method212(); + ++packetWriter.__x; + if(packetWriter.__x > 750) { + class48.method868(); + return; + } + + var1 = Players.Players_count; + int[] var31 = Players.Players_indices; + + for(var3 = 0; var3 < var1; ++var3) { + Player var23 = players[var31[var3]]; + if(var23 != null) { + class65.method1232(var23, 1); + } + } + + for(var1 = 0; var1 < npcCount; ++var1) { + var15 = npcIndices[var1]; + Npc var24 = npcs[var15]; + if(var24 != null) { + class65.method1232(var24, var24.definition.size); + } + } + + Buddy.method5554(); + ++__client_gy; + if(mouseCrossColor != 0) { + mouseCrossState += 20; + if(mouseCrossState >= 400) { + mouseCrossColor = 0; + } + } + + if(BoundaryObject.__ej_jv != null) { + ++__client_ju; + if(__client_ju >= 15) { + class22.method295(BoundaryObject.__ej_jv); + BoundaryObject.__ej_jv = null; + } + } + + Widget var35 = Clock.mousedOverWidgetIf1; + Widget var32 = AccessFile.__dk_lm; + Clock.mousedOverWidgetIf1 = null; + AccessFile.__dk_lm = null; + draggedOnWidget = null; + __client_nt = false; + __client_nn = false; + __client_pm = 0; + + while(Decimator.method2490() && __client_pm < 128) { + if(rights >= 2 && KeyHandler.KeyHandler_pressedKeys[82] && IndexStoreAction.__ik_cn == 66) { + String var37 = KeyHandler.method839(); + TextureProvider.client.clipboardSetString(var37); + } else if(oculusOrbState != 1 || GzipDecompressor.__go_ck <= 0) { + __client_pn[__client_pm] = IndexStoreAction.__ik_cn; + __client_pq[__client_pm] = GzipDecompressor.__go_ck; + ++__client_pm; + } + } + + if(FriendSystem.method1868() && KeyHandler.KeyHandler_pressedKeys[82] && KeyHandler.KeyHandler_pressedKeys[81] && mouseWheelRotation != 0) { + var3 = Canvas.localPlayer.plane - mouseWheelRotation; + if(var3 < 0) { + var3 = 0; + } else if(var3 > 3) { + var3 = 3; + } + + if(var3 != Canvas.localPlayer.plane) { + var4 = Canvas.localPlayer.pathX[0] + class50.baseX; + var5 = Canvas.localPlayer.pathY[0] + GraphicsObject.baseY; + var18 = Interpreter.method1915(ClientPacket.__gs_bx, packetWriter.isaacCipher); + var18.packetBuffer.writeIntME(0); + var18.packetBuffer.writeShortLE(var5); + var18.packetBuffer.__ai_315(var3); + var18.packetBuffer.writeShort(var4); + packetWriter.__q_167(var18); + } + + mouseWheelRotation = 0; + } + + if(rootWidgetGroup != -1) { + class231.method4517(rootWidgetGroup, 0, 0, SoundCache.canvasWidth, Huffman.canvasHeight, 0, 0); + } + + ++cycleCntr; + + while(true) { + Widget var25; + Widget var36; + ScriptEvent var38; + do { + var38 = (ScriptEvent)__client_oh.removeLast(); + if(var38 == null) { + while(true) { + do { + var38 = (ScriptEvent)__client_oc.removeLast(); + if(var38 == null) { + while(true) { + do { + var38 = (ScriptEvent)scriptEvents.removeLast(); + if(var38 == null) { + this.__hi_139(); + WorldMapSectionType.method254(); + if(clickedWidget != null) { + this.__jh_142(); + } + + PacketBufferNode var40; + if(DevicePcmPlayerProvider.dragInventoryWidget != null) { + class22.method295(DevicePcmPlayerProvider.dragInventoryWidget); + ++itemDragDuration; + if(MouseHandler.MouseHandler_currentButton == 0) { + if(__client_jl) { + if(UserComparator6.__fg_jh == DevicePcmPlayerProvider.dragInventoryWidget && dragItemSlotSource != dragItemSlotDestination) { + Widget var39 = DevicePcmPlayerProvider.dragInventoryWidget; + byte var33 = 0; + if(__client_mb == 1 && var39.contentType == 206) { + var33 = 1; + } + + if(var39.itemIds[dragItemSlotDestination] <= 0) { + var33 = 0; + } + + if(class168.method3461(class1.getWidgetClickMask(var39))) { + var5 = dragItemSlotSource; + var6 = dragItemSlotDestination; + var39.itemIds[var6] = var39.itemIds[var5]; + var39.itemQuantities[var6] = var39.itemQuantities[var5]; + var39.itemIds[var5] = -1; + var39.itemQuantities[var5] = 0; + } else if(var33 == 1) { + var5 = dragItemSlotSource; + var6 = dragItemSlotDestination; + + while(var5 != var6) { + if(var5 > var6) { + var39.swapItems(var5 - 1, var5); + --var5; + } else if(var5 < var6) { + var39.swapItems(var5 + 1, var5); + ++var5; + } + } + } else { + var39.swapItems(dragItemSlotDestination, dragItemSlotSource); + } + + var40 = Interpreter.method1915(ClientPacket.__gs_ce, packetWriter.isaacCipher); + var40.packetBuffer.writeShort(dragItemSlotDestination); + var40.packetBuffer.writeShortLE(dragItemSlotSource); + var40.packetBuffer.writeInt(DevicePcmPlayerProvider.dragInventoryWidget.id); + var40.packetBuffer.__ai_315(var33); + packetWriter.__q_167(var40); + } + } else if(this.shouldLeftClickOpenMenu()) { + this.openMenu(__client_ja, __client_je); + } else if(menuOptionsCount > 0) { + var3 = __client_ja; + var4 = __client_je; + class231.method4520(UnitPriceComparator.tempMenuAction, var3, var4); + UnitPriceComparator.tempMenuAction = null; + } + + __client_ju = 10; + MouseHandler.MouseHandler_lastButton = 0; + DevicePcmPlayerProvider.dragInventoryWidget = null; + } else if(itemDragDuration >= 5 && (MouseHandler.MouseHandler_x > __client_ja + 5 || MouseHandler.MouseHandler_x < __client_ja - 5 || MouseHandler.MouseHandler_y > __client_je + 5 || MouseHandler.MouseHandler_y < __client_je - 5)) { + __client_jl = true; + } + } + + if(Scene.method3187()) { + var3 = Scene.Scene_selectedX; + var4 = Scene.Scene_selectedY; + var40 = Interpreter.method1915(ClientPacket.__gs_ct, packetWriter.isaacCipher); + var40.packetBuffer.writeByte(5); + var40.packetBuffer.__bo_322(var4 + GraphicsObject.baseY); + var40.packetBuffer.__bo_322(var3 + class50.baseX); + var40.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?(KeyHandler.KeyHandler_pressedKeys[81]?2:1):0); + packetWriter.__q_167(var40); + Scene.method3103(); + mouseCrossX = MouseHandler.MouseHandler_lastPressedX; + mouseCrossY = MouseHandler.MouseHandler_lastPressedY; + mouseCrossColor = 1; + mouseCrossState = 0; + destinationX = var3; + destinationY = var4; + } + + if(var35 != Clock.mousedOverWidgetIf1) { + if(var35 != null) { + class22.method295(var35); + } + + if(Clock.mousedOverWidgetIf1 != null) { + class22.method295(Clock.mousedOverWidgetIf1); + } + } + + if(var32 != AccessFile.__dk_lm && __client_lb == __client_ls) { + if(var32 != null) { + class22.method295(var32); + } + + if(AccessFile.__dk_lm != null) { + class22.method295(AccessFile.__dk_lm); + } + } + + if(AccessFile.__dk_lm != null) { + if(__client_lb < __client_ls) { + ++__client_lb; + if(__client_ls == __client_lb) { + class22.method295(AccessFile.__dk_lm); + } + } + } else if(__client_lb > 0) { + --__client_lb; + } + + class54.method1091(); + if(isCameraLocked) { + var3 = class3.__w_qs * 128 + 64; + var4 = MusicPatchPcmStream.__hq_qg * 128 + 64; + var5 = class32.getTileHeight(var3, var4, SoundSystem.plane) - AbstractWorldMapIcon.__ak_qj; + if(WorldMapSection1.cameraX < var3) { + WorldMapSection1.cameraX = (var3 - WorldMapSection1.cameraX) * class30.__ar_qw / 1000 + WorldMapSection1.cameraX + ClientPacket.__gs_qh; + if(WorldMapSection1.cameraX > var3) { + WorldMapSection1.cameraX = var3; + } + } + + if(WorldMapSection1.cameraX > var3) { + WorldMapSection1.cameraX -= class30.__ar_qw * (WorldMapSection1.cameraX - var3) / 1000 + ClientPacket.__gs_qh; + if(WorldMapSection1.cameraX < var3) { + WorldMapSection1.cameraX = var3; + } + } + + if(GrandExchangeEvents.cameraY < var5) { + GrandExchangeEvents.cameraY = (var5 - GrandExchangeEvents.cameraY) * class30.__ar_qw / 1000 + GrandExchangeEvents.cameraY + ClientPacket.__gs_qh; + if(GrandExchangeEvents.cameraY > var5) { + GrandExchangeEvents.cameraY = var5; + } + } + + if(GrandExchangeEvents.cameraY > var5) { + GrandExchangeEvents.cameraY -= class30.__ar_qw * (GrandExchangeEvents.cameraY - var5) / 1000 + ClientPacket.__gs_qh; + if(GrandExchangeEvents.cameraY < var5) { + GrandExchangeEvents.cameraY = var5; + } + } + + if(class11.cameraZ < var4) { + class11.cameraZ = (var4 - class11.cameraZ) * class30.__ar_qw / 1000 + class11.cameraZ + ClientPacket.__gs_qh; + if(class11.cameraZ > var4) { + class11.cameraZ = var4; + } + } + + if(class11.cameraZ > var4) { + class11.cameraZ -= class30.__ar_qw * (class11.cameraZ - var4) / 1000 + ClientPacket.__gs_qh; + if(class11.cameraZ < var4) { + class11.cameraZ = var4; + } + } + + var3 = GrandExchangeOffer.__x_rg * 128 + 64; + var4 = KeyHandler.__an_ra * 128 + 64; + var5 = class32.getTileHeight(var3, var4, SoundSystem.plane) - IndexStoreAction.__ik_rt; + var6 = var3 - WorldMapSection1.cameraX; + var7 = var5 - GrandExchangeEvents.cameraY; + var8 = var4 - class11.cameraZ; + var9 = (int)Math.sqrt((double)(var8 * var8 + var6 * var6)); + var10 = (int)(Math.atan2((double)var7, (double)var9) * 325.949D) & 2047; + var11 = (int)(Math.atan2((double)var6, (double)var8) * -325.949D) & 2047; + if(var10 < 128) { + var10 = 128; + } + + if(var10 > 383) { + var10 = 383; + } + + if(WorldMapIcon1.cameraPitch < var10) { + WorldMapIcon1.cameraPitch = (var10 - WorldMapIcon1.cameraPitch) * class171.__fo_ro / 1000 + WorldMapIcon1.cameraPitch + VertexNormal.__dq_rq; + if(WorldMapIcon1.cameraPitch > var10) { + WorldMapIcon1.cameraPitch = var10; + } + } + + if(WorldMapIcon1.cameraPitch > var10) { + WorldMapIcon1.cameraPitch -= class171.__fo_ro * (WorldMapIcon1.cameraPitch - var10) / 1000 + VertexNormal.__dq_rq; + if(WorldMapIcon1.cameraPitch < var10) { + WorldMapIcon1.cameraPitch = var10; + } + } + + var12 = var11 - MusicPatchNode.cameraYaw; + if(var12 > 1024) { + var12 -= 2048; + } + + if(var12 < -1024) { + var12 += 2048; + } + + if(var12 > 0) { + MusicPatchNode.cameraYaw = MusicPatchNode.cameraYaw + VertexNormal.__dq_rq + var12 * class171.__fo_ro / 1000; + MusicPatchNode.cameraYaw &= 2047; + } + + if(var12 < 0) { + MusicPatchNode.cameraYaw -= VertexNormal.__dq_rq + -var12 * class171.__fo_ro / 1000; + MusicPatchNode.cameraYaw &= 2047; + } + + int var26 = var11 - MusicPatchNode.cameraYaw; + if(var26 > 1024) { + var26 -= 2048; + } + + if(var26 < -1024) { + var26 += 2048; + } + + if(var26 < 0 && var12 > 0 || var26 > 0 && var12 < 0) { + MusicPatchNode.cameraYaw = var11; + } + } + + for(var3 = 0; var3 < 5; ++var3) { + ++__client_rk[var3]; + } + + class196.varcs.tryWrite(); + var3 = class22.method297(); + var4 = KeyHandler.KeyHandler_idleCycles; + if(var3 > 15000 && var4 > 15000) { + __client_fd = 250; + MouseHandler.MouseHandler_idleCycles = 14500; + var18 = Interpreter.method1915(ClientPacket.__gs_ax, packetWriter.isaacCipher); + packetWriter.__q_167(var18); + } + + WorldMapArea.friendSystem.__w_154(); + ++packetWriter.__d; + if(packetWriter.__d > 50) { + var18 = Interpreter.method1915(ClientPacket.__gs_c, packetWriter.isaacCipher); + packetWriter.__q_167(var18); + } + + try { + packetWriter.__f_166(); + } catch (IOException var27) { + class48.method868(); + } + + return; + } + + var36 = var38.widget; + if(var36.childIndex < 0) { + break; + } + + var25 = Huffman.getWidget(var36.parentId); + } while(var25 == null || var25.children == null || var36.childIndex >= var25.children.length || var36 != var25.children[var36.childIndex]); + + AbstractIndexCache.runScript(var38); + } + } + + var36 = var38.widget; + if(var36.childIndex < 0) { + break; + } + + var25 = Huffman.getWidget(var36.parentId); + } while(var25 == null || var25.children == null || var36.childIndex >= var25.children.length || var36 != var25.children[var36.childIndex]); + + AbstractIndexCache.runScript(var38); + } + } + + var36 = var38.widget; + if(var36.childIndex < 0) { + break; + } + + var25 = Huffman.getWidget(var36.parentId); + } while(var25 == null || var25.children == null || var36.childIndex >= var25.children.length || var36 != var25.children[var36.childIndex]); + + AbstractIndexCache.runScript(var38); + } + } + + var30 = Interpreter.method1915(ClientPacket.__gs_cw, packetWriter.isaacCipher); + var30.packetBuffer.writeByte(0); + var3 = var30.packetBuffer.index; + WorldMapLabel.method443(var30.packetBuffer); + var30.packetBuffer.__h_300(var30.packetBuffer.index - var3); + packetWriter.__q_167(var30); + } + } + } + } + + @ObfuscatedName("ge") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1792846917" + ) + @Export("__ge_137") + void __ge_137() { + int var1 = SoundCache.canvasWidth; + int var2 = Huffman.canvasHeight; + if(super.contentWidth < var1) { + var1 = super.contentWidth; + } + + if(super.contentHeight < var2) { + var2 = super.contentHeight; + } + + if(ReflectionCheck.clientPreferences != null) { + try { + Client var3 = TextureProvider.client; + Object[] var4 = new Object[]{Integer.valueOf(SpotAnimationDefinition.method4822())}; + JSObject.getWindow(var3).call("resize", var4); + } catch (Throwable var5) { + ; + } + } + + } + + @ObfuscatedName("gs") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1433182492" + ) + @Export("drawLoggedIn") + final void drawLoggedIn() { + if(rootWidgetGroup != -1) { + ClientPreferences.method1809(rootWidgetGroup); + } + + int var1; + for(var1 = 0; var1 < rootWidgetCount; ++var1) { + if(__client_od[var1]) { + __client_ot[var1] = true; + } + + __client_oq[var1] = __client_od[var1]; + __client_od[var1] = false; + } + + __client_oo = cycle; + __client_lq = -1; + __client_ln = -1; + UserComparator6.__fg_jh = null; + if(rootWidgetGroup != -1) { + rootWidgetCount = 0; + Interpreter.drawWidgets(rootWidgetGroup, 0, 0, SoundCache.canvasWidth, Huffman.canvasHeight, 0, 0, -1); + } + + Rasterizer2D.Rasterizer2D_resetClip(); + if(showMouseCross) { + if(mouseCrossColor == 1) { + KeyHandler.crossSprites[mouseCrossState / 100].__a_505(mouseCrossX - 8, mouseCrossY - 8); + } + + if(mouseCrossColor == 2) { + KeyHandler.crossSprites[mouseCrossState / 100 + 4].__a_505(mouseCrossX - 8, mouseCrossY - 8); + } + } + + int var2; + int var3; + int var4; + int var6; + int var7; + int var8; + if(!isMenuOpen) { + if(__client_lq != -1) { + class39.method741(__client_lq, __client_ln); + } + } else { + var1 = class25.menuX; + var2 = GameShell.menuY; + var3 = class214.menuWidth; + var4 = AbstractWorldMapIcon.menuHeight; + int var5 = 6116423; + Rasterizer2D.Rasterizer2D_fillRectangle(var1, var2, var3, var4, var5); + Rasterizer2D.Rasterizer2D_fillRectangle(var1 + 1, var2 + 1, var3 - 2, 16, 0); + Rasterizer2D.Rasterizer2D_drawRectangle(var1 + 1, var2 + 18, var3 - 2, var4 - 19, 0); + class2.fontBold12.draw("Choose Option", var1 + 3, var2 + 14, var5, -1); + var6 = MouseHandler.MouseHandler_x; + var7 = MouseHandler.MouseHandler_y; + + int var9; + int var10; + for(var8 = 0; var8 < menuOptionsCount; ++var8) { + var9 = var2 + (menuOptionsCount - 1 - var8) * 15 + 31; + var10 = 16777215; + if(var6 > var1 && var6 < var3 + var1 && var7 > var9 - 13 && var7 < var9 + 3) { + var10 = 16776960; + } + + Font var11 = class2.fontBold12; + String var12; + if(var8 < 0) { + var12 = ""; + } else if(menuTargetNames[var8].length() > 0) { + var12 = menuActions[var8] + " " + menuTargetNames[var8]; + } else { + var12 = menuActions[var8]; + } + + var11.draw(var12, var1 + 3, var9, var10, 0); + } + + var8 = class25.menuX; + var9 = GameShell.menuY; + var10 = class214.menuWidth; + int var13 = AbstractWorldMapIcon.menuHeight; + + for(int var14 = 0; var14 < rootWidgetCount; ++var14) { + if(rootWidgetXs[var14] + rootWidgetWidths[var14] > var8 && rootWidgetXs[var14] < var8 + var10 && rootWidgetYs[var14] + rootWidgetHeights[var14] > var9 && rootWidgetYs[var14] < var9 + var13) { + __client_ot[var14] = true; + } + } + } + + if(gameDrawingMode == 3) { + for(var1 = 0; var1 < rootWidgetCount; ++var1) { + if(__client_oq[var1]) { + Rasterizer2D.Rasterizer2D_moreAlpha(rootWidgetXs[var1], rootWidgetYs[var1], rootWidgetWidths[var1], rootWidgetHeights[var1], 16711935, 128); + } else if(__client_ot[var1]) { + Rasterizer2D.Rasterizer2D_moreAlpha(rootWidgetXs[var1], rootWidgetYs[var1], rootWidgetWidths[var1], rootWidgetHeights[var1], 16711680, 128); + } + } + } + + var1 = SoundSystem.plane; + var2 = Canvas.localPlayer.x; + var3 = Canvas.localPlayer.y; + var4 = __client_gy; + + for(ObjectSound var15 = (ObjectSound)ObjectSound.objectSounds.last(); var15 != null; var15 = (ObjectSound)ObjectSound.objectSounds.previous()) { + if(var15.soundEffectId != -1 || var15.soundEffectIds != null) { + var6 = 0; + if(var2 > var15.__o) { + var6 += var2 - var15.__o; + } else if(var2 < var15.__q) { + var6 += var15.__q - var2; + } + + if(var3 > var15.__u) { + var6 += var3 - var15.__u; + } else if(var3 < var15.__w) { + var6 += var15.__w - var3; + } + + if(var6 - 64 <= var15.__g && __client_qc != 0 && var1 == var15.__f) { + var6 -= 64; + if(var6 < 0) { + var6 = 0; + } + + var7 = (var15.__g - var6) * __client_qc / var15.__g; + Object var10000; + if(var15.stream1 == null) { + if(var15.soundEffectId >= 0) { + var10000 = null; + SoundEffect var16 = SoundEffect.readSoundEffect(class25.indexCache4, var15.soundEffectId, 0); + if(var16 != null) { + RawSound var17 = var16.toRawSound().resample(MilliClock.decimator); + RawPcmStream var18 = RawPcmStream.method2497(var17, 100, var7); + var18.__x_181(-1); + TaskHandler.pcmStreamMixer.addSubStream(var18); + var15.stream1 = var18; + } + } + } else { + var15.stream1.__a_182(var7); + } + + if(var15.stream2 == null) { + if(var15.soundEffectIds != null && (var15.__n -= var4) <= 0) { + var8 = (int)(Math.random() * (double)var15.soundEffectIds.length); + var10000 = null; + SoundEffect var20 = SoundEffect.readSoundEffect(class25.indexCache4, var15.soundEffectIds[var8], 0); + if(var20 != null) { + RawSound var21 = var20.toRawSound().resample(MilliClock.decimator); + RawPcmStream var19 = RawPcmStream.method2497(var21, 100, var7); + var19.__x_181(0); + TaskHandler.pcmStreamMixer.addSubStream(var19); + var15.stream2 = var19; + var15.__n = var15.__x + (int)(Math.random() * (double)(var15.__d - var15.__x)); + } + } + } else { + var15.stream2.__a_182(var7); + if(!var15.stream2.hasNext()) { + var15.stream2 = null; + } + } + } else { + if(var15.stream1 != null) { + TaskHandler.pcmStreamMixer.removeSubStream(var15.stream1); + var15.stream1 = null; + } + + if(var15.stream2 != null) { + TaskHandler.pcmStreamMixer.removeSubStream(var15.stream2); + var15.stream2 = null; + } + } + } + } + + __client_gy = 0; + } + + @ObfuscatedName("hg") + @ObfuscatedSignature( + signature = "(Lcl;I)Z", + garbageValue = "1488446149" + ) + @Export("__hg_138") + final boolean __hg_138(PacketWriter var1) { + AbstractSocket var2 = var1.getSocket(); + PacketBuffer var3 = var1.packetBuffer; + if(var2 == null) { + return false; + } else { + String var17; + int var18; + try { + int var5; + if(var1.serverPacket0 == null) { + if(var1.__e) { + if(!var2.isAvailable(1)) { + return false; + } + + var2.read(var1.packetBuffer.array, 0, 1); + var1.__x = 0; + var1.__e = false; + } + + var3.index = 0; + if(var3.__ig_334()) { + if(!var2.isAvailable(1)) { + return false; + } + + var2.read(var1.packetBuffer.array, 1, 1); + var1.__x = 0; + } + + var1.__e = true; + ServerPacket[] var4 = class27.method429(); + var5 = var3.readSmartByteShortIsaac(); + if(var5 < 0 || var5 >= var4.length) { + throw new IOException(var5 + " " + var3.index); + } + + var1.serverPacket0 = var4[var5]; + var1.serverPacket0Length = var1.serverPacket0.length; + } + + if(var1.serverPacket0Length == -1) { + if(!var2.isAvailable(1)) { + return false; + } + + var1.getSocket().read(var3.array, 0, 1); + var1.serverPacket0Length = var3.array[0] & 255; + } + + if(var1.serverPacket0Length == -2) { + if(!var2.isAvailable(2)) { + return false; + } + + var1.getSocket().read(var3.array, 0, 2); + var3.index = 0; + var1.serverPacket0Length = var3.__ag_302(); + } + + if(!var2.isAvailable(var1.serverPacket0Length)) { + return false; + } + + var3.index = 0; + var2.read(var3.array, 0, var1.serverPacket0Length); + var1.__x = 0; + timer.__m_453(); + var1.__i = var1.__n; + var1.__n = var1.__k; + var1.__k = var1.serverPacket0; + if(ServerPacket.__ge_ax == var1.serverPacket0) { + class16.method189(class190.field2344); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_be == var1.serverPacket0) { + isCameraLocked = true; + class3.__w_qs = var3.readUnsignedByte(); + MusicPatchPcmStream.__hq_qg = var3.readUnsignedByte(); + AbstractWorldMapIcon.__ak_qj = var3.__ag_302(); + ClientPacket.__gs_qh = var3.readUnsignedByte(); + class30.__ar_qw = var3.readUnsignedByte(); + if(class30.__ar_qw >= 100) { + WorldMapSection1.cameraX = class3.__w_qs * 128 + 64; + class11.cameraZ = MusicPatchPcmStream.__hq_qg * 128 + 64; + GrandExchangeEvents.cameraY = class32.getTileHeight(WorldMapSection1.cameraX, class11.cameraZ, SoundSystem.plane) - AbstractWorldMapIcon.__ak_qj; + } + + var1.serverPacket0 = null; + return true; + } + + int var16; + if(ServerPacket.__ge_aj == var1.serverPacket0) { + for(var16 = 0; var16 < players.length; ++var16) { + if(players[var16] != null) { + players[var16].sequence = -1; + } + } + + for(var16 = 0; var16 < npcs.length; ++var16) { + if(npcs[var16] != null) { + npcs[var16].sequence = -1; + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_s == var1.serverPacket0) { + Canvas.__ao_gk = var3.__bq_318(); + WorldMapSection3.__p_go = var3.readUnsignedByteNegate(); + + while(var3.index < var1.serverPacket0Length) { + var16 = var3.readUnsignedByte(); + class190 var56 = RunException.method3430()[var16]; + class16.method189(var56); + } + + var1.serverPacket0 = null; + return true; + } + + Widget var41; + if(ServerPacket.__ge_bx == var1.serverPacket0) { + var16 = var3.__aq_303(); + var5 = var3.__bf_332(); + var41 = Huffman.getWidget(var5); + if(var16 != var41.sequenceId || var16 == -1) { + var41.sequenceId = var16; + var41.modelFrame = 0; + var41.modelFrameCycle = 0; + class22.method295(var41); + } + + var1.serverPacket0 = null; + return true; + } + + Widget var52; + if(ServerPacket.__ge_ar == var1.serverPacket0) { + var16 = var3.__bf_332(); + var52 = Huffman.getWidget(var16); + var52.modelType = 3; + var52.modelId = Canvas.localPlayer.appearance.getChatHeadId(); + class22.method295(var52); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_f == var1.serverPacket0) { + TextureProvider.method2773(); + var1.serverPacket0 = null; + return false; + } + + if(ServerPacket.__ge_l == var1.serverPacket0) { + var16 = var3.__bp_331(); + var52 = Huffman.getWidget(var16); + + for(var18 = 0; var18 < var52.itemIds.length; ++var18) { + var52.itemIds[var18] = -1; + var52.itemIds[var18] = 0; + } + + class22.method295(var52); + var1.serverPacket0 = null; + return true; + } + + int var7; + int var8; + int var9; + int var10; + if(ServerPacket.__ge_bg == var1.serverPacket0) { + var16 = var3.readInt(); + var5 = var3.__ag_302(); + if(var16 < -70000) { + var5 += 32768; + } + + if(var16 >= 0) { + var41 = Huffman.getWidget(var16); + } else { + var41 = null; + } + + if(var41 != null) { + for(var7 = 0; var7 < var41.itemIds.length; ++var7) { + var41.itemIds[var7] = 0; + var41.itemQuantities[var7] = 0; + } + } + + PlayerType.method4547(var5); + var7 = var3.__ag_302(); + + for(var8 = 0; var8 < var7; ++var8) { + var9 = var3.__ag_302(); + var10 = var3.readUnsignedByte(); + if(var10 == 255) { + var10 = var3.__bf_332(); + } + + if(var41 != null && var8 < var41.itemIds.length) { + var41.itemIds[var8] = var9; + var41.itemQuantities[var8] = var10; + } + + WorldMapManager.itemContainerSetItem(var5, var8, var9 - 1, var10); + } + + if(var41 != null) { + class22.method295(var41); + } + + class12.method159(); + __client_nz[++__client_ns - 1 & 31] = var5 & 32767; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_e == var1.serverPacket0) { + class16.method189(class190.field2341); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bb == var1.serverPacket0) { + UserComparator7.method3360(var3, var1.serverPacket0Length); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bm == var1.serverPacket0) { + WorldMapSection3.__p_go = var3.readUnsignedByteNegate(); + Canvas.__ao_gk = var3.__bq_318(); + var1.serverPacket0 = null; + return true; + } + + boolean var47; + if(ServerPacket.__ge_b == var1.serverPacket0) { + var16 = var3.readInt(); + var47 = var3.readUnsignedByte() == 1; + var41 = Huffman.getWidget(var16); + if(var47 != var41.isHidden) { + var41.isHidden = var47; + class22.method295(var41); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bu == var1.serverPacket0) { + byte var60 = var3.__bn_319(); + var5 = var3.__bu_325(); + Varps.Varps_temp[var5] = var60; + if(Varps.Varps_main[var5] != var60) { + Varps.Varps_main[var5] = var60; + } + + IndexCache.method4703(var5); + __client_nr[++__client_nd - 1 & 31] = var5; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_a == var1.serverPacket0) { + class16.method189(class190.field2347); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bq == var1.serverPacket0) { + var16 = var3.readUnsignedByte(); + if(var3.readUnsignedByte() == 0) { + grandExchangeOffers[var16] = new GrandExchangeOffer(); + var3.index += 18; + } else { + --var3.index; + grandExchangeOffers[var16] = new GrandExchangeOffer(var3, false); + } + + __client_nv = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_cj == var1.serverPacket0) { + var16 = var3.__bm_326(); + rootWidgetGroup = var16; + this.__iu_141(false); + DevicePcmPlayerProvider.method845(var16); + WorldMapSection3.runWidgetOnLoadListener(rootWidgetGroup); + + for(var5 = 0; var5 < 100; ++var5) { + __client_od[var5] = true; + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bo == var1.serverPacket0) { + class12.method159(); + runEnergy = var3.readUnsignedByte(); + __client_ni = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + Widget var19; + if(ServerPacket.__ge_af == var1.serverPacket0) { + var16 = var3.__bm_326(); + var5 = var3.__bm_326(); + var18 = var3.__bm_326(); + var7 = var3.__bf_332(); + var19 = Huffman.getWidget(var7); + if(var16 != var19.modelAngleX || var18 != var19.modelAngleY || var5 != var19.modelZoom) { + var19.modelAngleX = var16; + var19.modelAngleY = var18; + var19.modelZoom = var5; + class22.method295(var19); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_al == var1.serverPacket0) { + hintArrowType = var3.readUnsignedByte(); + if(hintArrowType == 1) { + hintArrowNpcIndex = var3.__ag_302(); + } + + if(hintArrowType >= 2 && hintArrowType <= 6) { + if(hintArrowType == 2) { + hintArrowSubX = 64; + hintArrowSubY = 64; + } + + if(hintArrowType == 3) { + hintArrowSubX = 0; + hintArrowSubY = 64; + } + + if(hintArrowType == 4) { + hintArrowSubX = 128; + hintArrowSubY = 64; + } + + if(hintArrowType == 5) { + hintArrowSubX = 64; + hintArrowSubY = 0; + } + + if(hintArrowType == 6) { + hintArrowSubX = 64; + hintArrowSubY = 128; + } + + hintArrowType = 2; + hintArrowX = var3.__ag_302(); + hintArrowY = var3.__ag_302(); + hintArrowHeight = var3.readUnsignedByte(); + } + + if(hintArrowType == 10) { + hintArrowPlayerIndex = var3.__ag_302(); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_cv == var1.serverPacket0) { + Skeleton.method3062(var3, var1.serverPacket0Length); + ScriptFrame.method1138(); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_m == var1.serverPacket0) { + class50.loadRegions(false, var1.packetBuffer); + var1.serverPacket0 = null; + return true; + } + + Widget var58; + if(ServerPacket.__ge_ap == var1.serverPacket0) { + var16 = var3.__bu_325(); + var5 = var3.__by_324(); + var18 = var3.__bp_331(); + var58 = Huffman.getWidget(var18); + var58.__bh = var16 + (var5 << 16); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ba == var1.serverPacket0) { + if(rootWidgetGroup != -1) { + GrandExchangeEvents.method74(rootWidgetGroup, 0); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_h == var1.serverPacket0) { + var16 = var3.readInt(); + var5 = var3.__ag_302(); + if(var5 == 65535) { + var5 = -1; + } + + var18 = var3.__bf_332(); + var58 = Huffman.getWidget(var16); + ItemDefinition var54; + if(!var58.isIf3) { + if(var5 == -1) { + var58.modelType = 0; + var1.serverPacket0 = null; + return true; + } + + var54 = Skills.getItemDefinition(var5); + var58.modelType = 4; + var58.modelId = var5; + var58.modelAngleX = var54.xan2d; + var58.modelAngleY = var54.yan2d; + var58.modelZoom = var54.zoom2d * 100 / var18; + class22.method295(var58); + } else { + var58.itemId = var5; + var58.itemQuantity = var18; + var54 = Skills.getItemDefinition(var5); + var58.modelAngleX = var54.xan2d; + var58.modelAngleY = var54.yan2d; + var58.modelAngleZ = var54.zan2d; + var58.modelOffsetX = var54.offsetX2d; + var58.modelOffsetY = var54.offsetY2d; + var58.modelZoom = var54.zoom2d; + if(var54.isStackable == 1) { + var58.itemQuantityMode = 1; + } else { + var58.itemQuantityMode = 2; + } + + if(var58.__bf > 0) { + var58.modelZoom = var58.modelZoom * 32 / var58.__bf; + } else if(var58.rawWidth > 0) { + var58.modelZoom = var58.modelZoom * 32 / var58.rawWidth; + } + + class22.method295(var58); + } + + var1.serverPacket0 = null; + return true; + } + + String var6; + if(ServerPacket.__ge_w == var1.serverPacket0) { + var16 = var3.__ae_307(); + var47 = var3.readUnsignedByte() == 1; + var6 = ""; + boolean var44 = false; + if(var47) { + var6 = var3.readStringCp1252NullTerminated(); + if(WorldMapArea.friendSystem.isIgnored(new Username(var6, KeyHandler.loginType))) { + var44 = true; + } + } + + String var53 = var3.readStringCp1252NullTerminated(); + if(!var44) { + WorldMapIcon1.method219(var16, var6, var53); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bi == var1.serverPacket0) { + IndexCacheLoader.field512 = WorldMapElement.method4783(var3.readUnsignedByte()); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_n == var1.serverPacket0) { + class16.method189(class190.field2345); + var1.serverPacket0 = null; + return true; + } + + boolean var55; + if(ServerPacket.__ge_j == var1.serverPacket0) { + var55 = var3.readBoolean(); + if(var55) { + if(ClientParameter.field3645 == null) { + ClientParameter.field3645 = new class248(); + } + } else { + ClientParameter.field3645 = null; + } + + var1.serverPacket0 = null; + return true; + } + + long var21; + if(ServerPacket.__ge_aa == var1.serverPacket0) { + var16 = var3.__bt_330(); + var5 = var3.__bu_325(); + if(var5 == 65535) { + var5 = -1; + } + + var18 = var3.__bf_332(); + var7 = var3.__ag_302(); + if(var7 == 65535) { + var7 = -1; + } + + for(var8 = var7; var8 <= var5; ++var8) { + var21 = (long)var8 + ((long)var18 << 32); + Node var45 = widgetClickMasks.get(var21); + if(var45 != null) { + var45.remove(); + } + + widgetClickMasks.put(new IntegerNode(var16), var21); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_cy == var1.serverPacket0) { + class3.updateNpcs(true, var3); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_az == var1.serverPacket0) { + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.__a_474(var3); + } + + UserComparator8.method3349(); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_z == var1.serverPacket0) { + class16.method189(class190.field2346); + var1.serverPacket0 = null; + return true; + } + + String var37; + if(ServerPacket.__ge_by == var1.serverPacket0) { + var37 = var3.readStringCp1252NullTerminated(); + Object[] var51 = new Object[var37.length() + 1]; + + for(var18 = var37.length() - 1; var18 >= 0; --var18) { + if(var37.charAt(var18) == 's') { + var51[var18 + 1] = var3.readStringCp1252NullTerminated(); + } else { + var51[var18 + 1] = new Integer(var3.readInt()); + } + } + + var51[0] = new Integer(var3.readInt()); + ScriptEvent var43 = new ScriptEvent(); + var43.args0 = var51; + AbstractIndexCache.runScript(var43); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ag == var1.serverPacket0) { + class16.method189(class190.field2343); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_i == var1.serverPacket0) { + class16.method189(class190.field2350); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bj == var1.serverPacket0) { + destinationX = var3.readUnsignedByte(); + if(destinationX == 255) { + destinationX = 0; + } + + destinationY = var3.readUnsignedByte(); + if(destinationY == 255) { + destinationY = 0; + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_cr == var1.serverPacket0) { + for(var16 = 0; var16 < VarpDefinition.__ix_f; ++var16) { + VarpDefinition var50 = SecureRandomCallable.method1140(var16); + if(var50 != null) { + Varps.Varps_temp[var16] = 0; + Varps.Varps_main[var16] = 0; + } + } + + class12.method159(); + __client_nd += 32; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_an == var1.serverPacket0) { + var16 = var3.readInt(); + var5 = var3.__ag_302(); + if(var16 < -70000) { + var5 += 32768; + } + + if(var16 >= 0) { + var41 = Huffman.getWidget(var16); + } else { + var41 = null; + } + + for(; var3.index < var1.serverPacket0Length; WorldMapManager.itemContainerSetItem(var5, var7, var8 - 1, var9)) { + var7 = var3.__ae_307(); + var8 = var3.__ag_302(); + var9 = 0; + if(var8 != 0) { + var9 = var3.readUnsignedByte(); + if(var9 == 255) { + var9 = var3.readInt(); + } + } + + if(var41 != null && var7 >= 0 && var7 < var41.itemIds.length) { + var41.itemIds[var7] = var8; + var41.itemQuantities[var7] = var9; + } + } + + if(var41 != null) { + class22.method295(var41); + } + + class12.method159(); + __client_nz[++__client_ns - 1 & 31] = var5 & 32767; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bl == var1.serverPacket0) { + var16 = var3.__ag_302(); + var5 = var3.readUnsignedByte(); + var18 = var3.__ag_302(); + Ignored.queueSoundEffect(var16, var5, var18); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bc == var1.serverPacket0) { + var16 = var3.__bp_331(); + var5 = var3.__br_328(); + var18 = var3.__bl_327(); + var58 = Huffman.getWidget(var16); + if(var18 != var58.rawX || var5 != var58.rawY || var58.xAlignment != 0 || var58.yAlignment != 0) { + var58.rawX = var18; + var58.rawY = var5; + var58.xAlignment = 0; + var58.yAlignment = 0; + class22.method295(var58); + this.alignWidget(var58); + if(var58.type == 0) { + class39.revalidateWidgetScroll(Widget.widgets[var16 >> 16], var58, false); + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_aw == var1.serverPacket0) { + var16 = var3.__bm_326(); + var5 = var3.__bf_332(); + var41 = Huffman.getWidget(var5); + if(var41.modelType != 2 || var16 != var41.modelId) { + var41.modelType = 2; + var41.modelId = var16; + class22.method295(var41); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ao == var1.serverPacket0) { + World var40 = new World(); + var40.host = var3.readStringCp1252NullTerminated(); + var40.id = var3.__ag_302(); + var5 = var3.readInt(); + var40.properties = var5; + GameShell.updateGameState(45); + var2.close(); + var2 = null; + class31.changeWorld(var40); + var1.serverPacket0 = null; + return false; + } + + if(ServerPacket.__ge_ay == var1.serverPacket0) { + WorldMapArea.friendSystem.ignoreList.read(var3, var1.serverPacket0Length); + class229.method4512(); + __client_na = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ah == var1.serverPacket0) { + class3.updateNpcs(false, var3); + var1.serverPacket0 = null; + return true; + } + + WidgetGroupParent var20; + if(ServerPacket.__ge_cs == var1.serverPacket0) { + var16 = var3.readInt(); + var5 = var3.readInt(); + WidgetGroupParent var42 = (WidgetGroupParent)widgetGroupParents.get((long)var5); + var20 = (WidgetGroupParent)widgetGroupParents.get((long)var16); + if(var20 != null) { + MenuAction.closeWidgetGroup(var20, var42 == null || var42.group != var20.group); + } + + if(var42 != null) { + var42.remove(); + widgetGroupParents.put(var42, (long)var16); + } + + var19 = Huffman.getWidget(var5); + if(var19 != null) { + class22.method295(var19); + } + + var19 = Huffman.getWidget(var16); + if(var19 != null) { + class22.method295(var19); + class39.revalidateWidgetScroll(Widget.widgets[var19.id >>> 16], var19, true); + } + + if(rootWidgetGroup != -1) { + GrandExchangeEvents.method74(rootWidgetGroup, 1); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_p == var1.serverPacket0) { + var16 = var3.__bp_331(); + var5 = var3.__bu_325(); + var18 = var5 >> 10 & 31; + var7 = var5 >> 5 & 31; + var8 = var5 & 31; + var9 = (var7 << 11) + (var18 << 19) + (var8 << 3); + Widget var59 = Huffman.getWidget(var16); + if(var9 != var59.color) { + var59.color = var9; + class22.method295(var59); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_at == var1.serverPacket0) { + var16 = var3.readUnsignedByte(); + var5 = var3.readUnsignedByte(); + var18 = var3.readUnsignedByte(); + var7 = var3.readUnsignedByte(); + __client_rh[var16] = true; + __client_rd[var16] = var5; + __client_rl[var16] = var18; + __client_rj[var16] = var7; + __client_rk[var16] = 0; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ce == var1.serverPacket0) { + __client_pl = var3.readUnsignedByteNegate(); + publicChatMode = var3.readUnsignedByteNegate(); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bp == var1.serverPacket0) { + rebootTimer = var3.__ag_302() * 30; + __client_ni = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_v == var1.serverPacket0) { + Canvas.__ao_gk = var3.readUnsignedByteNegate(); + WorldMapSection3.__p_go = var3.readUnsignedByte(); + + for(var16 = WorldMapSection3.__p_go; var16 < WorldMapSection3.__p_go + 8; ++var16) { + for(var5 = Canvas.__ao_gk; var5 < Canvas.__ao_gk + 8; ++var5) { + if(groundItems[SoundSystem.plane][var16][var5] != null) { + groundItems[SoundSystem.plane][var16][var5] = null; + TilePaint.method3061(var16, var5); + } + } + } + + for(class68 var39 = (class68)__client_kh.last(); var39 != null; var39 = (class68)__client_kh.previous()) { + if(var39.field913 >= WorldMapSection3.__p_go && var39.field913 < WorldMapSection3.__p_go + 8 && var39.field901 >= Canvas.__ao_gk && var39.field901 < Canvas.__ao_gk + 8 && var39.field911 == SoundSystem.plane) { + var39.field910 = 0; + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ac == var1.serverPacket0) { + var16 = var3.__bf_332(); + var5 = var3.__bm_326(); + var41 = Huffman.getWidget(var16); + if(var41.modelType != 1 || var5 != var41.modelId) { + var41.modelType = 1; + var41.modelId = var5; + class22.method295(var41); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ak == var1.serverPacket0) { + var16 = var3.readUnsignedByte(); + BufferedNetSocket.method3500(var16); + var1.serverPacket0 = null; + return true; + } + + long var12; + long var24; + long var26; + if(ServerPacket.__ge_bs == var1.serverPacket0) { + var37 = var3.readStringCp1252NullTerminated(); + var24 = var3.readLong(); + var26 = (long)var3.__ag_302(); + var21 = (long)var3.readMedium(); + PlayerType var11 = (PlayerType)ScriptFrame.findEnumerated(class48.method865(), var3.readUnsignedByte()); + var12 = (var26 << 32) + var21; + boolean var46 = false; + + for(int var15 = 0; var15 < 100; ++var15) { + if(__client_pu[var15] == var12) { + var46 = true; + break; + } + } + + if(var11.isUser && WorldMapArea.friendSystem.isIgnored(new Username(var37, KeyHandler.loginType))) { + var46 = true; + } + + if(!var46 && __client_jc == 0) { + __client_pu[__client_pb] = var12; + __client_pb = (__client_pb + 1) % 100; + String var28 = AbstractFont.escapeBrackets(class233.method4527(KitDefinition.method4866(var3))); + if(var11.modIcon != -1) { + GrandExchangeEvents.addChatMessage(9, ItemContainer.method1170(var11.modIcon) + var37, var28, Clock.method3534(var24)); + } else { + GrandExchangeEvents.addChatMessage(9, var37, var28, Clock.method3534(var24)); + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_as == var1.serverPacket0) { + class16.method189(class190.field2342); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_y == var1.serverPacket0) { + var16 = var3.readInt(); + var17 = var3.readStringCp1252NullTerminated(); + var41 = Huffman.getWidget(var16); + if(!var17.equals(var41.text)) { + var41.text = var17; + class22.method295(var41); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ai == var1.serverPacket0) { + class50.loadRegions(true, var1.packetBuffer); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_q == var1.serverPacket0) { + isCameraLocked = false; + + for(var16 = 0; var16 < 5; ++var16) { + __client_rh[var16] = false; + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_cm == var1.serverPacket0) { + isCameraLocked = true; + GrandExchangeOffer.__x_rg = var3.readUnsignedByte(); + KeyHandler.__an_ra = var3.readUnsignedByte(); + IndexStoreAction.__ik_rt = var3.__ag_302(); + VertexNormal.__dq_rq = var3.readUnsignedByte(); + class171.__fo_ro = var3.readUnsignedByte(); + if(class171.__fo_ro >= 100) { + var16 = GrandExchangeOffer.__x_rg * 128 + 64; + var5 = KeyHandler.__an_ra * 128 + 64; + var18 = class32.getTileHeight(var16, var5, SoundSystem.plane) - IndexStoreAction.__ik_rt; + var7 = var16 - WorldMapSection1.cameraX; + var8 = var18 - GrandExchangeEvents.cameraY; + var9 = var5 - class11.cameraZ; + var10 = (int)Math.sqrt((double)(var9 * var9 + var7 * var7)); + WorldMapIcon1.cameraPitch = (int)(Math.atan2((double)var8, (double)var10) * 325.949D) & 2047; + MusicPatchNode.cameraYaw = (int)(Math.atan2((double)var7, (double)var9) * -325.949D) & 2047; + if(WorldMapIcon1.cameraPitch < 128) { + WorldMapIcon1.cameraPitch = 128; + } + + if(WorldMapIcon1.cameraPitch > 383) { + WorldMapIcon1.cameraPitch = 383; + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bv == var1.serverPacket0) { + var16 = var3.__bf_332(); + var5 = var3.__bm_326(); + var41 = Huffman.getWidget(var16); + if(var41 != null && var41.type == 0) { + if(var5 > var41.scrollHeight - var41.height) { + var5 = var41.scrollHeight - var41.height; + } + + if(var5 < 0) { + var5 = 0; + } + + if(var5 != var41.scrollY) { + var41.scrollY = var5; + class22.method295(var41); + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_au == var1.serverPacket0) { + var16 = var3.__by_324(); + Script.method2216(var16); + __client_nz[++__client_ns - 1 & 31] = var16 & 32767; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bk == var1.serverPacket0) { + var3.index += 28; + if(var3.__ax_313()) { + class234.method4535(var3, var3.index - 28); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_c == var1.serverPacket0) { + class12.method159(); + var16 = var3.__bt_330(); + var5 = var3.readUnsignedByteNegate(); + var18 = var3.readUnsignedByte(); + experience[var5] = var16; + currentLevels[var5] = var18; + levels[var5] = 1; + + for(var7 = 0; var7 < 98; ++var7) { + if(var16 >= Skills.Skills_experienceTable[var7]) { + levels[var5] = var7 + 2; + } + } + + changedSkills[++changedSkillsCount - 1 & 31] = var5; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bz == var1.serverPacket0) { + var16 = var3.readInt(); + var5 = var3.readInt(); + var18 = DynamicObject.method2222(); + PacketBufferNode var57 = Interpreter.method1915(ClientPacket.__gs_k, packetWriter.isaacCipher); + var57.packetBuffer.__ai_315(var18); + var57.packetBuffer.writeByte(GameShell.fps); + var57.packetBuffer.writeIntME(var16); + var57.packetBuffer.writeIntLE(var5); + packetWriter.__q_167(var57); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bt == var1.serverPacket0) { + class12.method159(); + weight = var3.__aq_303(); + __client_ni = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_aq == var1.serverPacket0) { + var55 = var3.readUnsignedByte() == 1; + if(var55) { + class15.__z_si = class203.currentTimeMs() - var3.readLong(); + FloorDecoration.grandExchangeEvents = new GrandExchangeEvents(var3, true); + } else { + FloorDecoration.grandExchangeEvents = null; + } + + __client_nc = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_av == var1.serverPacket0) { + WorldMapArea.friendSystem.__f_152(); + __client_na = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_t == var1.serverPacket0) { + byte[] var38 = new byte[var1.serverPacket0Length]; + var3.__jb_335(var38, 0, var38.length); + Buffer var49 = new Buffer(var38); + var6 = var49.readStringCp1252NullTerminated(); + WorldMapCacheName.method635(var6, true, false); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_k == var1.serverPacket0) { + class16.method189(class190.field2352); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bn == var1.serverPacket0) { + var16 = var3.index + var1.serverPacket0Length; + var5 = var3.__ag_302(); + var18 = var3.__ag_302(); + if(var5 != rootWidgetGroup) { + rootWidgetGroup = var5; + this.__iu_141(false); + DevicePcmPlayerProvider.method845(rootWidgetGroup); + WorldMapSection3.runWidgetOnLoadListener(rootWidgetGroup); + + for(var7 = 0; var7 < 100; ++var7) { + __client_od[var7] = true; + } + } + + WidgetGroupParent var23; + for(; var18-- > 0; var23.keep = true) { + var7 = var3.readInt(); + var8 = var3.__ag_302(); + var9 = var3.readUnsignedByte(); + var23 = (WidgetGroupParent)widgetGroupParents.get((long)var7); + if(var23 != null && var8 != var23.group) { + MenuAction.closeWidgetGroup(var23, true); + var23 = null; + } + + if(var23 == null) { + var23 = SecureRandomCallable.method1143(var7, var8, var9); + } + } + + for(var20 = (WidgetGroupParent)widgetGroupParents.first(); var20 != null; var20 = (WidgetGroupParent)widgetGroupParents.next()) { + if(var20.keep) { + var20.keep = false; + } else { + MenuAction.closeWidgetGroup(var20, true); + } + } + + widgetClickMasks = new NodeHashTable(512); + + while(var3.index < var16) { + var7 = var3.readInt(); + var8 = var3.__ag_302(); + var9 = var3.__ag_302(); + var10 = var3.readInt(); + + for(int var29 = var8; var29 <= var9; ++var29) { + var12 = (long)var29 + ((long)var7 << 32); + widgetClickMasks.put(new IntegerNode(var10), var12); + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_br == var1.serverPacket0) { + var16 = var3.__bb_317(); + var5 = var3.__bb_317(); + var6 = var3.readStringCp1252NullTerminated(); + if(var5 >= 1 && var5 <= 8) { + if(var6.equalsIgnoreCase("null")) { + var6 = null; + } + + playerMenuActions[var5 - 1] = var6; + playerOptionsPriorities[var5 - 1] = var16 == 0; + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ab == var1.serverPacket0) { + Clock.method3533(var3.readStringCp1252NullTerminated()); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_am == var1.serverPacket0) { + if(var1.serverPacket0Length == 0) { + PacketWriter.clanChat = null; + } else { + if(PacketWriter.clanChat == null) { + PacketWriter.clanChat = new ClanChat(KeyHandler.loginType, TextureProvider.client); + } + + PacketWriter.clanChat.readUpdate(var3); + } + + UserComparator8.method3349(); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_o == var1.serverPacket0) { + var16 = var3.__ag_302(); + var5 = var3.readInt(); + Varps.Varps_temp[var16] = var5; + if(Varps.Varps_main[var16] != var5) { + Varps.Varps_main[var16] = var5; + } + + IndexCache.method4703(var16); + __client_nr[++__client_nd - 1 & 31] = var16; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_g == var1.serverPacket0) { + class16.method189(class190.field2349); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_x == var1.serverPacket0) { + var16 = var3.readInt(); + WidgetGroupParent var48 = (WidgetGroupParent)widgetGroupParents.get((long)var16); + if(var48 != null) { + MenuAction.closeWidgetGroup(var48, true); + } + + if(__client_mo != null) { + class22.method295(__client_mo); + __client_mo = null; + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bf == var1.serverPacket0) { + for(var16 = 0; var16 < Varps.Varps_main.length; ++var16) { + if(Varps.Varps_temp[var16] != Varps.Varps_main[var16]) { + Varps.Varps_main[var16] = Varps.Varps_temp[var16]; + IndexCache.method4703(var16); + __client_nr[++__client_nd - 1 & 31] = var16; + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bd == var1.serverPacket0) { + WorldMapArea.friendSystem.__q_153(var3, var1.serverPacket0Length); + __client_na = cycleCntr; + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_r == var1.serverPacket0) { + var16 = var3.__bm_326(); + if(var16 == 65535) { + var16 = -1; + } + + AbstractUserComparator.method5437(var16); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ad == var1.serverPacket0) { + var16 = var3.__bj_329(); + var5 = var3.__bu_325(); + if(var5 == 65535) { + var5 = -1; + } + + HealthBar.method1994(var5, var16); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bw == var1.serverPacket0) { + var16 = var3.__bb_317(); + var5 = var3.__bp_331(); + var18 = var3.__bm_326(); + var20 = (WidgetGroupParent)widgetGroupParents.get((long)var5); + if(var20 != null) { + MenuAction.closeWidgetGroup(var20, var18 != var20.group); + } + + SecureRandomCallable.method1143(var5, var18, var16); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_d == var1.serverPacket0) { + var37 = var3.readStringCp1252NullTerminated(); + var24 = (long)var3.__ag_302(); + var26 = (long)var3.readMedium(); + PlayerType var30 = (PlayerType)ScriptFrame.findEnumerated(class48.method865(), var3.readUnsignedByte()); + long var31 = (var24 << 32) + var26; + boolean var33 = false; + + for(int var13 = 0; var13 < 100; ++var13) { + if(var31 == __client_pu[var13]) { + var33 = true; + break; + } + } + + if(WorldMapArea.friendSystem.isIgnored(new Username(var37, KeyHandler.loginType))) { + var33 = true; + } + + if(!var33 && __client_jc == 0) { + __client_pu[__client_pb] = var31; + __client_pb = (__client_pb + 1) % 100; + String var34 = AbstractFont.escapeBrackets(class233.method4527(KitDefinition.method4866(var3))); + byte var14; + if(var30.isPrivileged) { + var14 = 7; + } else { + var14 = 3; + } + + if(var30.modIcon != -1) { + WorldMapIcon1.method219(var14, ItemContainer.method1170(var30.modIcon) + var37, var34); + } else { + WorldMapIcon1.method219(var14, var37, var34); + } + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_u == var1.serverPacket0) { + var16 = var3.readInt(); + if(var16 != __client_il) { + __client_il = var16; + WorldMapArea.method428(); + } + + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_bh == var1.serverPacket0) { + minimapState = var3.readUnsignedByte(); + var1.serverPacket0 = null; + return true; + } + + if(ServerPacket.__ge_ae == var1.serverPacket0) { + var37 = var3.readStringCp1252NullTerminated(); + var17 = AbstractFont.escapeBrackets(class233.method4527(KitDefinition.method4866(var3))); + WorldMapIcon1.method219(6, var37, var17); + var1.serverPacket0 = null; + return true; + } + + NpcDefinition.sendStackTrace("" + (var1.serverPacket0 != null?var1.serverPacket0.id:-1) + "," + (var1.__n != null?var1.__n.id:-1) + "," + (var1.__i != null?var1.__i.id:-1) + "," + var1.serverPacket0Length, (Throwable)null); + TextureProvider.method2773(); + } catch (IOException var35) { + class48.method868(); + } catch (Exception var36) { + var17 = "" + (var1.serverPacket0 != null?var1.serverPacket0.id:-1) + "," + (var1.__n != null?var1.__n.id:-1) + "," + (var1.__i != null?var1.__i.id:-1) + "," + var1.serverPacket0Length + "," + (Canvas.localPlayer.pathX[0] + class50.baseX) + "," + (Canvas.localPlayer.pathY[0] + GraphicsObject.baseY) + ","; + + for(var18 = 0; var18 < var1.serverPacket0Length && var18 < 50; ++var18) { + var17 = var17 + var3.array[var18] + ","; + } + + NpcDefinition.sendStackTrace(var17, var36); + TextureProvider.method2773(); + } + + return true; + } + } + + @ObfuscatedName("hi") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-387903382" + ) + @Export("__hi_139") + final void __hi_139() { + boolean var1 = false; + + int var2; + int var5; + while(!var1) { + var1 = true; + + for(var2 = 0; var2 < menuOptionsCount - 1; ++var2) { + if(menuOpcodes[var2] < 1000 && menuOpcodes[var2 + 1] > 1000) { + String var3 = menuTargetNames[var2]; + menuTargetNames[var2] = menuTargetNames[var2 + 1]; + menuTargetNames[var2 + 1] = var3; + String var4 = menuActions[var2]; + menuActions[var2] = menuActions[var2 + 1]; + menuActions[var2 + 1] = var4; + var5 = menuOpcodes[var2]; + menuOpcodes[var2] = menuOpcodes[var2 + 1]; + menuOpcodes[var2 + 1] = var5; + var5 = menuArguments1[var2]; + menuArguments1[var2] = menuArguments1[var2 + 1]; + menuArguments1[var2 + 1] = var5; + var5 = menuArguments2[var2]; + menuArguments2[var2] = menuArguments2[var2 + 1]; + menuArguments2[var2 + 1] = var5; + var5 = menuArguments0[var2]; + menuArguments0[var2] = menuArguments0[var2 + 1]; + menuArguments0[var2 + 1] = var5; + boolean var6 = menuShiftClick[var2]; + menuShiftClick[var2] = menuShiftClick[var2 + 1]; + menuShiftClick[var2 + 1] = var6; + var1 = false; + } + } + } + + if(DevicePcmPlayerProvider.dragInventoryWidget == null) { + if(clickedWidget == null) { + int var16; + label279: { + int var15 = MouseHandler.MouseHandler_lastButton; + int var9; + int var13; + if(isMenuOpen) { + int var12; + if(var15 != 1 && (AbstractRasterProvider.__lp_ca || var15 != 4)) { + var2 = MouseHandler.MouseHandler_x; + var12 = MouseHandler.MouseHandler_y; + if(var2 < class25.menuX - 10 || var2 > class25.menuX + class214.menuWidth + 10 || var12 < GameShell.menuY - 10 || var12 > AbstractWorldMapIcon.menuHeight + GameShell.menuY + 10) { + isMenuOpen = false; + Players.method2112(class25.menuX, GameShell.menuY, class214.menuWidth, AbstractWorldMapIcon.menuHeight); + } + } + + if(var15 == 1 || !AbstractRasterProvider.__lp_ca && var15 == 4) { + var2 = class25.menuX; + var12 = GameShell.menuY; + var13 = class214.menuWidth; + var5 = MouseHandler.MouseHandler_lastPressedX; + var16 = MouseHandler.MouseHandler_lastPressedY; + int var7 = -1; + + for(int var17 = 0; var17 < menuOptionsCount; ++var17) { + var9 = (menuOptionsCount - 1 - var17) * 15 + var12 + 31; + if(var5 > var2 && var5 < var13 + var2 && var16 > var9 - 13 && var16 < var9 + 3) { + var7 = var17; + } + } + + if(var7 != -1) { + WorldMapSection0.method245(var7); + } + + isMenuOpen = false; + Players.method2112(class25.menuX, GameShell.menuY, class214.menuWidth, AbstractWorldMapIcon.menuHeight); + } + } else { + var2 = menuOptionsCount - 1; + if((var15 == 1 || !AbstractRasterProvider.__lp_ca && var15 == 4) && var2 >= 0) { + var13 = menuOpcodes[var2]; + if(var13 == 39 || var13 == 40 || var13 == 41 || var13 == 42 || var13 == 43 || var13 == 33 || var13 == 34 || var13 == 35 || var13 == 36 || var13 == 37 || var13 == 38 || var13 == 1005) { + var5 = menuArguments1[var2]; + var16 = menuArguments2[var2]; + Widget var14 = Huffman.getWidget(var16); + var9 = class1.getWidgetClickMask(var14); + boolean var8 = (var9 >> 28 & 1) != 0; + if(var8) { + break label279; + } + + Object var10000 = null; + if(class168.method3461(class1.getWidgetClickMask(var14))) { + break label279; + } + } + } + + if((var15 == 1 || !AbstractRasterProvider.__lp_ca && var15 == 4) && this.shouldLeftClickOpenMenu()) { + var15 = 2; + } + + if((var15 == 1 || !AbstractRasterProvider.__lp_ca && var15 == 4) && menuOptionsCount > 0) { + WorldMapSection0.method245(var2); + } + + if(var15 == 2 && menuOptionsCount > 0) { + this.openMenu(MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY); + } + } + + return; + } + + if(DevicePcmPlayerProvider.dragInventoryWidget != null && !__client_jl && menuOptionsCount > 0 && !this.shouldLeftClickOpenMenu()) { + int var10 = __client_ja; + int var11 = __client_je; + class231.method4520(UnitPriceComparator.tempMenuAction, var10, var11); + UnitPriceComparator.tempMenuAction = null; + } + + __client_jl = false; + itemDragDuration = 0; + if(DevicePcmPlayerProvider.dragInventoryWidget != null) { + class22.method295(DevicePcmPlayerProvider.dragInventoryWidget); + } + + DevicePcmPlayerProvider.dragInventoryWidget = Huffman.getWidget(var16); + dragItemSlotSource = var5; + __client_ja = MouseHandler.MouseHandler_lastPressedX; + __client_je = MouseHandler.MouseHandler_lastPressedY; + if(var2 >= 0) { + UnitPriceComparator.tempMenuAction = new MenuAction(); + UnitPriceComparator.tempMenuAction.argument1 = menuArguments1[var2]; + UnitPriceComparator.tempMenuAction.argument2 = menuArguments2[var2]; + UnitPriceComparator.tempMenuAction.opcode = menuOpcodes[var2]; + UnitPriceComparator.tempMenuAction.argument0 = menuArguments0[var2]; + UnitPriceComparator.tempMenuAction.action = menuActions[var2]; + } + + class22.method295(DevicePcmPlayerProvider.dragInventoryWidget); + } + } + } + + @ObfuscatedName("ht") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "109" + ) + @Export("shouldLeftClickOpenMenu") + final boolean shouldLeftClickOpenMenu() { + int var1 = menuOptionsCount - 1; + return (__client_ku == 1 && menuOptionsCount > 2 || UserComparator7.method3364(var1)) && !menuShiftClick[var1]; + } + + @ObfuscatedName("hj") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "1" + ) + @Export("openMenu") + final void openMenu(int var1, int var2) { + int var3 = class2.fontBold12.stringWidth("Choose Option"); + + int var4; + for(var4 = 0; var4 < menuOptionsCount; ++var4) { + Font var5 = class2.fontBold12; + String var6; + if(var4 < 0) { + var6 = ""; + } else if(menuTargetNames[var4].length() > 0) { + var6 = menuActions[var4] + " " + menuTargetNames[var4]; + } else { + var6 = menuActions[var4]; + } + + int var7 = var5.stringWidth(var6); + if(var7 > var3) { + var3 = var7; + } + } + + var3 += 8; + var4 = menuOptionsCount * 15 + 22; + int var8 = var1 - var3 / 2; + if(var3 + var8 > SoundCache.canvasWidth) { + var8 = SoundCache.canvasWidth - var3; + } + + if(var8 < 0) { + var8 = 0; + } + + int var9 = var2; + if(var4 + var2 > Huffman.canvasHeight) { + var9 = Huffman.canvasHeight - var4; + } + + if(var9 < 0) { + var9 = 0; + } + + class25.menuX = var8; + GameShell.menuY = var9; + class214.menuWidth = var3; + AbstractWorldMapIcon.menuHeight = menuOptionsCount * 15 + 22; + class65.scene.menuOpen(SoundSystem.plane, var1, var2, false); + isMenuOpen = true; + } + + @ObfuscatedName("iu") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "-271438207" + ) + @Export("__iu_141") + final void __iu_141(boolean var1) { + int var2 = rootWidgetGroup; + int var3 = SoundCache.canvasWidth; + int var4 = Huffman.canvasHeight; + if(GroundItemPile.loadWidgetGroup(var2)) { + WorldMapRegion.notRevalidateWidgetScroll(Widget.widgets[var2], -1, var3, var4, var1); + } + + } + + @ObfuscatedName("ip") + @ObfuscatedSignature( + signature = "(Lho;B)V", + garbageValue = "0" + ) + @Export("alignWidget") + void alignWidget(Widget var1) { + Widget var2 = var1.parentId == -1?null:Huffman.getWidget(var1.parentId); + int var3; + int var4; + if(var2 == null) { + var3 = SoundCache.canvasWidth; + var4 = Huffman.canvasHeight; + } else { + var3 = var2.width; + var4 = var2.height; + } + + WorldMapSection3.alignWidgetSize(var1, var3, var4, false); + OverlayDefinition.alignWidgetPosition(var1, var3, var4); + } + + @ObfuscatedName("jh") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "715978124" + ) + @Export("__jh_142") + final void __jh_142() { + class22.method295(clickedWidget); + ++MouseRecorder.widgetDragDuration; + if(__client_nt && __client_nn) { + int var1 = MouseHandler.MouseHandler_x; + int var2 = MouseHandler.MouseHandler_y; + var1 -= widgetClickX; + var2 -= widgetClickY; + if(var1 < __client_nw) { + var1 = __client_nw; + } + + if(var1 + clickedWidget.width > __client_nw + clickedWidgetParent.width) { + var1 = __client_nw + clickedWidgetParent.width - clickedWidget.width; + } + + if(var2 < __client_nl) { + var2 = __client_nl; + } + + if(var2 + clickedWidget.height > __client_nl + clickedWidgetParent.height) { + var2 = __client_nl + clickedWidgetParent.height - clickedWidget.height; + } + + int var3 = var1 - __client_nk; + int var4 = var2 - __client_np; + int var5 = clickedWidget.dragZoneSize; + if(MouseRecorder.widgetDragDuration > clickedWidget.dragThreshold && (var3 > var5 || var3 < -var5 || var4 > var5 || var4 < -var5)) { + isDraggingWidget = true; + } + + int var6 = var1 - __client_nw + clickedWidgetParent.scrollX; + int var7 = var2 - __client_nl + clickedWidgetParent.scrollY; + ScriptEvent var8; + if(clickedWidget.onDrag != null && isDraggingWidget) { + var8 = new ScriptEvent(); + var8.widget = clickedWidget; + var8.mouseX = var6; + var8.mouseY = var7; + var8.args0 = clickedWidget.onDrag; + AbstractIndexCache.runScript(var8); + } + + if(MouseHandler.MouseHandler_currentButton == 0) { + if(isDraggingWidget) { + if(clickedWidget.onDragComplete != null) { + var8 = new ScriptEvent(); + var8.widget = clickedWidget; + var8.mouseX = var6; + var8.mouseY = var7; + var8.dragTarget = draggedOnWidget; + var8.args0 = clickedWidget.onDragComplete; + AbstractIndexCache.runScript(var8); + } + + if(draggedOnWidget != null) { + Widget var9 = clickedWidget; + int var10 = WorldMapRegion.method568(class1.getWidgetClickMask(var9)); + Widget var15; + if(var10 == 0) { + var15 = null; + } else { + int var11 = 0; + + while(true) { + if(var11 >= var10) { + var15 = var9; + break; + } + + var9 = Huffman.getWidget(var9.parentId); + if(var9 == null) { + var15 = null; + break; + } + + ++var11; + } + } + + if(var15 != null) { + PacketBufferNode var12 = Interpreter.method1915(ClientPacket.__gs_bk, packetWriter.isaacCipher); + var12.packetBuffer.__bo_322(clickedWidget.childIndex); + var12.packetBuffer.__bo_322(draggedOnWidget.itemId); + var12.packetBuffer.writeShort(draggedOnWidget.childIndex); + var12.packetBuffer.writeIntLE(clickedWidget.id); + var12.packetBuffer.writeIntME(draggedOnWidget.id); + var12.packetBuffer.writeShort(clickedWidget.itemId); + packetWriter.__q_167(var12); + } + } + } else if(this.shouldLeftClickOpenMenu()) { + this.openMenu(__client_nk + widgetClickX, __client_np + widgetClickY); + } else if(menuOptionsCount > 0) { + int var13 = widgetClickX + __client_nk; + int var14 = widgetClickY + __client_np; + class231.method4520(UnitPriceComparator.tempMenuAction, var13, var14); + UnitPriceComparator.tempMenuAction = null; + } + + clickedWidget = null; + } + + } else { + if(MouseRecorder.widgetDragDuration > 1) { + clickedWidget = null; + } + + } + } + + @ObfuscatedName("kr") + @ObfuscatedSignature( + signature = "(B)Lkp;", + garbageValue = "-87" + ) + public Username username() { + return Canvas.localPlayer != null?Canvas.localPlayer.username:null; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;I)I", + garbageValue = "-1464358697" + ) + @Export("hashString") + public static int hashString(CharSequence var0) { + int var1 = var0.length(); + int var2 = 0; + + for(int var3 = 0; var3 < var1; ++var3) { + var2 = (var2 << 5) - var2 + HealthBar.charToByteCp1252(var0.charAt(var3)); + } + + return var2; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)I", + garbageValue = "0" + ) + public static int method1692(String var0) { + return var0.length() + 2; + } +} diff --git a/rs-client/src/main/java/ClientPacket.java b/rs-client/src/main/java/ClientPacket.java new file mode 100644 index 0000000000..7745a7e89c --- /dev/null +++ b/rs-client/src/main/java/ClientPacket.java @@ -0,0 +1,754 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gs") +@Implements("ClientPacket") +public class ClientPacket implements ClientPacketMarker { + @ObfuscatedName("qh") + @ObfuscatedGetter( + intValue = 1076448827 + ) + @Export("__gs_qh") + static int __gs_qh; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_m") + public static final ClientPacket __gs_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_f") + public static final ClientPacket __gs_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_q") + public static final ClientPacket __gs_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_w") + public static final ClientPacket __gs_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_o") + public static final ClientPacket __gs_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_u") + public static final ClientPacket __gs_u; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_g") + public static final ClientPacket __gs_g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_l") + public static final ClientPacket __gs_l; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_e") + public static final ClientPacket __gs_e; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_x") + public static final ClientPacket __gs_x; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_d") + public static final ClientPacket __gs_d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_k") + public static final ClientPacket __gs_k; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_n") + public static final ClientPacket __gs_n; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_i") + public static final ClientPacket __gs_i; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_a") + public static final ClientPacket __gs_a; + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_z") + public static final ClientPacket __gs_z; + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_j") + public static final ClientPacket __gs_j; + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_s") + public static final ClientPacket __gs_s; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_t") + public static final ClientPacket __gs_t; + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_y") + public static final ClientPacket __gs_y; + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_h") + public static final ClientPacket __gs_h; + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_b") + public static final ClientPacket __gs_b; + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_c") + public static final ClientPacket __gs_c; + @ObfuscatedName("r") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_r") + public static final ClientPacket __gs_r; + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_p") + public static final ClientPacket __gs_p; + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_v") + public static final ClientPacket __gs_v; + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ag") + public static final ClientPacket __gs_ag; + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_aq") + public static final ClientPacket __gs_aq; + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_aj") + public static final ClientPacket __gs_aj; + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_av") + public static final ClientPacket __gs_av; + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ar") + public static final ClientPacket __gs_ar; + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ac") + public static final ClientPacket __gs_ac; + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ay") + public static final ClientPacket __gs_ay; + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ah") + public static final ClientPacket __gs_ah; + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ak") + public static final ClientPacket __gs_ak; + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_aw") + public static final ClientPacket __gs_aw; + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_al") + public static final ClientPacket __gs_al; + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ab") + public static final ClientPacket __gs_ab; + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ae") + public static final ClientPacket __gs_ae; + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_at") + public static final ClientPacket __gs_at; + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ad") + public static final ClientPacket __gs_ad; + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ap") + public static final ClientPacket __gs_ap; + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_as") + public static final ClientPacket __gs_as; + @ObfuscatedName("am") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_am") + static final ClientPacket __gs_am; + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_an") + public static final ClientPacket __gs_an; + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_az") + public static final ClientPacket __gs_az; + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_au") + public static final ClientPacket __gs_au; + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ao") + public static final ClientPacket __gs_ao; + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_aa") + public static final ClientPacket __gs_aa; + @ObfuscatedName("ax") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ax") + public static final ClientPacket __gs_ax; + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_af") + public static final ClientPacket __gs_af; + @ObfuscatedName("ai") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ai") + public static final ClientPacket __gs_ai; + @ObfuscatedName("ba") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ba") + public static final ClientPacket __gs_ba; + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bb") + public static final ClientPacket __gs_bb; + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bs") + public static final ClientPacket __gs_bs; + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bq") + public static final ClientPacket __gs_bq; + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bn") + public static final ClientPacket __gs_bn; + @ObfuscatedName("bk") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bk") + public static final ClientPacket __gs_bk; + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bd") + public static final ClientPacket __gs_bd; + @ObfuscatedName("bc") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bc") + public static final ClientPacket __gs_bc; + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bo") + public static final ClientPacket __gs_bo; + @ObfuscatedName("bx") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bx") + public static final ClientPacket __gs_bx; + @ObfuscatedName("by") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_by") + public static final ClientPacket __gs_by; + @ObfuscatedName("bu") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bu") + public static final ClientPacket __gs_bu; + @ObfuscatedName("bm") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bm") + public static final ClientPacket __gs_bm; + @ObfuscatedName("bl") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bl") + public static final ClientPacket __gs_bl; + @ObfuscatedName("br") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_br") + public static final ClientPacket __gs_br; + @ObfuscatedName("bj") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bj") + public static final ClientPacket __gs_bj; + @ObfuscatedName("bi") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bi") + public static final ClientPacket __gs_bi; + @ObfuscatedName("bz") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bz") + public static final ClientPacket __gs_bz; + @ObfuscatedName("bg") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bg") + public static final ClientPacket __gs_bg; + @ObfuscatedName("bt") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bt") + public static final ClientPacket __gs_bt; + @ObfuscatedName("bp") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bp") + public static final ClientPacket __gs_bp; + @ObfuscatedName("bf") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bf") + public static final ClientPacket __gs_bf; + @ObfuscatedName("bh") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bh") + public static final ClientPacket __gs_bh; + @ObfuscatedName("be") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_be") + public static final ClientPacket __gs_be; + @ObfuscatedName("bv") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bv") + public static final ClientPacket __gs_bv; + @ObfuscatedName("bw") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_bw") + public static final ClientPacket __gs_bw; + @ObfuscatedName("cr") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cr") + public static final ClientPacket __gs_cr; + @ObfuscatedName("cv") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cv") + public static final ClientPacket __gs_cv; + @ObfuscatedName("ce") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ce") + public static final ClientPacket __gs_ce; + @ObfuscatedName("cy") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cy") + public static final ClientPacket __gs_cy; + @ObfuscatedName("cs") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cs") + public static final ClientPacket __gs_cs; + @ObfuscatedName("cm") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cm") + public static final ClientPacket __gs_cm; + @ObfuscatedName("cj") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cj") + public static final ClientPacket __gs_cj; + @ObfuscatedName("cu") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cu") + public static final ClientPacket __gs_cu; + @ObfuscatedName("cb") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cb") + public static final ClientPacket __gs_cb; + @ObfuscatedName("ck") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ck") + public static final ClientPacket __gs_ck; + @ObfuscatedName("cn") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cn") + public static final ClientPacket __gs_cn; + @ObfuscatedName("cq") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cq") + public static final ClientPacket __gs_cq; + @ObfuscatedName("ch") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ch") + public static final ClientPacket __gs_ch; + @ObfuscatedName("cw") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cw") + public static final ClientPacket __gs_cw; + @ObfuscatedName("cg") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cg") + public static final ClientPacket __gs_cg; + @ObfuscatedName("cf") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cf") + public static final ClientPacket __gs_cf; + @ObfuscatedName("cp") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cp") + public static final ClientPacket __gs_cp; + @ObfuscatedName("cl") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cl") + public static final ClientPacket __gs_cl; + @ObfuscatedName("ct") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ct") + public static final ClientPacket __gs_ct; + @ObfuscatedName("cz") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cz") + public static final ClientPacket __gs_cz; + @ObfuscatedName("cc") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_cc") + public static final ClientPacket __gs_cc; + @ObfuscatedName("ci") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__gs_ci") + static final ClientPacket __gs_ci; + @ObfuscatedName("cd") + @ObfuscatedGetter( + intValue = -286923745 + ) + @Export("id") + final int id; + @ObfuscatedName("cx") + @ObfuscatedGetter( + intValue = -1759434223 + ) + @Export("length") + final int length; + + static { + __gs_m = new ClientPacket(0, 8); + __gs_f = new ClientPacket(1, 3); + __gs_q = new ClientPacket(2, 14); + __gs_w = new ClientPacket(3, 7); + __gs_o = new ClientPacket(4, -1); + __gs_u = new ClientPacket(5, 7); + __gs_g = new ClientPacket(6, 7); + __gs_l = new ClientPacket(7, 8); + __gs_e = new ClientPacket(8, -1); + __gs_x = new ClientPacket(9, 4); + __gs_d = new ClientPacket(10, 7); + __gs_k = new ClientPacket(11, 10); + __gs_n = new ClientPacket(12, 13); + __gs_i = new ClientPacket(13, -1); + __gs_a = new ClientPacket(14, 8); + __gs_z = new ClientPacket(15, 3); + __gs_j = new ClientPacket(16, -2); + __gs_s = new ClientPacket(17, 4); + __gs_t = new ClientPacket(18, 15); + __gs_y = new ClientPacket(19, 8); + __gs_h = new ClientPacket(20, 0); + __gs_b = new ClientPacket(21, 8); + __gs_c = new ClientPacket(22, 0); + __gs_r = new ClientPacket(23, 11); + __gs_p = new ClientPacket(24, 2); + __gs_v = new ClientPacket(25, -2); + __gs_ag = new ClientPacket(26, 8); + __gs_aq = new ClientPacket(27, 3); + __gs_aj = new ClientPacket(28, -1); + __gs_av = new ClientPacket(29, 7); + __gs_ar = new ClientPacket(30, 2); + __gs_ac = new ClientPacket(31, 3); + __gs_ay = new ClientPacket(32, 8); + __gs_ah = new ClientPacket(33, 3); + __gs_ak = new ClientPacket(34, -1); + __gs_aw = new ClientPacket(35, 5); + __gs_al = new ClientPacket(36, 2); + __gs_ab = new ClientPacket(37, 0); + __gs_ae = new ClientPacket(38, -1); + __gs_at = new ClientPacket(39, 4); + __gs_ad = new ClientPacket(40, 8); + __gs_ap = new ClientPacket(41, 6); + __gs_as = new ClientPacket(42, 2); + __gs_am = new ClientPacket(43, -1); + __gs_an = new ClientPacket(44, 15); + __gs_az = new ClientPacket(45, 4); + __gs_au = new ClientPacket(46, 8); + __gs_ao = new ClientPacket(47, 3); + __gs_aa = new ClientPacket(48, 8); + __gs_ax = new ClientPacket(49, 0); + __gs_af = new ClientPacket(50, 3); + __gs_ai = new ClientPacket(51, 7); + __gs_ba = new ClientPacket(52, -1); + __gs_bb = new ClientPacket(53, 13); + __gs_bs = new ClientPacket(54, -1); + __gs_bq = new ClientPacket(55, 9); + __gs_bn = new ClientPacket(56, 3); + __gs_bk = new ClientPacket(57, 16); + __gs_bd = new ClientPacket(58, 8); + __gs_bc = new ClientPacket(59, 3); + __gs_bo = new ClientPacket(60, -1); + __gs_bx = new ClientPacket(61, 9); + __gs_by = new ClientPacket(62, 3); + __gs_bu = new ClientPacket(63, 16); + __gs_bm = new ClientPacket(64, 8); + __gs_bl = new ClientPacket(65, 8); + __gs_br = new ClientPacket(66, 8); + __gs_bj = new ClientPacket(67, -2); + __gs_bi = new ClientPacket(68, 8); + __gs_bz = new ClientPacket(69, 4); + __gs_bg = new ClientPacket(70, 6); + __gs_bt = new ClientPacket(71, 3); + __gs_bp = new ClientPacket(72, 8); + __gs_bf = new ClientPacket(73, 1); + __gs_bh = new ClientPacket(74, 7); + __gs_be = new ClientPacket(75, 3); + __gs_bv = new ClientPacket(76, 0); + __gs_bw = new ClientPacket(77, -1); + __gs_cr = new ClientPacket(78, -1); + __gs_cv = new ClientPacket(79, 7); + __gs_ce = new ClientPacket(80, 9); + __gs_cy = new ClientPacket(81, 11); + __gs_cs = new ClientPacket(82, 16); + __gs_cm = new ClientPacket(83, 3); + __gs_cj = new ClientPacket(84, 8); + __gs_cu = new ClientPacket(85, 8); + __gs_cb = new ClientPacket(86, 9); + __gs_ck = new ClientPacket(87, 8); + __gs_cn = new ClientPacket(88, -1); + __gs_cq = new ClientPacket(89, 7); + __gs_ch = new ClientPacket(90, -1); + __gs_cw = new ClientPacket(91, -1); + __gs_cg = new ClientPacket(92, 13); + __gs_cf = new ClientPacket(93, 3); + __gs_cp = new ClientPacket(94, 7); + __gs_cl = new ClientPacket(95, -1); + __gs_ct = new ClientPacket(96, -1); + __gs_cz = new ClientPacket(97, -1); + __gs_cc = new ClientPacket(98, 8); + __gs_ci = new ClientPacket(99, 7); + } + + ClientPacket(int var1, int var2) { + this.id = var1; + this.length = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)[Lis;", + garbageValue = "-26" + ) + public static StudioGame[] method3664() { + return new StudioGame[]{StudioGame.__is_q, StudioGame.__is_m, StudioGame.__is_o, StudioGame.__is_u, StudioGame.__is_f, StudioGame.__is_w}; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)[Lcj;", + garbageValue = "-43" + ) + static AttackOption[] method3665() { + return new AttackOption[]{AttackOption.AttackOption_hidden, AttackOption.AttackOption_leftClickWhereAvailable, AttackOption.AttackOption_alwaysRightClick, AttackOption.AttackOption_dependsOnCombatLevels}; + } +} diff --git a/rs-client/src/main/java/ClientPacketMarker.java b/rs-client/src/main/java/ClientPacketMarker.java new file mode 100644 index 0000000000..610094e054 --- /dev/null +++ b/rs-client/src/main/java/ClientPacketMarker.java @@ -0,0 +1,7 @@ +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("gb") +@Implements("ClientPacketMarker") +public interface ClientPacketMarker { +} diff --git a/rs-client/src/main/java/ClientParameter.java b/rs-client/src/main/java/ClientParameter.java new file mode 100644 index 0000000000..2023de1536 --- /dev/null +++ b/rs-client/src/main/java/ClientParameter.java @@ -0,0 +1,204 @@ +import java.net.URL; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ji") +@Implements("ClientParameter") +public class ClientParameter { + @ObfuscatedName("se") + @ObfuscatedSignature( + signature = "Liu;" + ) + public static class248 field3645; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_m") + static final ClientParameter __ji_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_f") + static final ClientParameter __ji_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_q") + static final ClientParameter __ji_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_w") + static final ClientParameter __ji_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_o") + static final ClientParameter __ji_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_u") + static final ClientParameter __ji_u; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_g") + static final ClientParameter __ji_g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_l") + static final ClientParameter __ji_l; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_e") + static final ClientParameter __ji_e; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_x") + static final ClientParameter __ji_x; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_d") + static final ClientParameter __ji_d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_k") + static final ClientParameter __ji_k; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_n") + public static final ClientParameter __ji_n; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_i") + public static final ClientParameter __ji_i; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_a") + static final ClientParameter __ji_a; + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_z") + static final ClientParameter __ji_z; + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_j") + static final ClientParameter __ji_j; + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_s") + static final ClientParameter __ji_s; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lji;" + ) + @Export("__ji_t") + static final ClientParameter __ji_t; + @ObfuscatedName("fp") + @ObfuscatedSignature( + signature = "Lfu;" + ) + @Export("__ji_fp") + static AbstractSocket __ji_fp; + @ObfuscatedName("y") + @Export("id") + public final String id; + + static { + __ji_m = new ClientParameter("8", "8"); + __ji_f = new ClientParameter("15", "15"); + __ji_q = new ClientParameter("7", "7"); + __ji_w = new ClientParameter("10", "10"); + __ji_o = new ClientParameter("16", "16"); + __ji_u = new ClientParameter("12", "12"); + __ji_g = new ClientParameter("3", "3"); + __ji_l = new ClientParameter("6", "6"); + __ji_e = new ClientParameter("17", "17"); + __ji_x = new ClientParameter("5", "5"); + __ji_d = new ClientParameter("9", "9"); + __ji_k = new ClientParameter("14", "14"); + __ji_n = new ClientParameter("18", "18"); + __ji_i = new ClientParameter("13", "13"); + __ji_a = new ClientParameter("4", "4"); + __ji_z = new ClientParameter("1", "1"); + __ji_j = new ClientParameter("11", "11"); + __ji_s = new ClientParameter("2", "2"); + __ji_t = new ClientParameter("19", "19"); + } + + ClientParameter(String var1, String var2) { + this.id = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1723515140" + ) + @Export("loadWorlds") + static boolean loadWorlds() { + try { + if(FriendLoginUpdate.__kn_x == null) { + FriendLoginUpdate.__kn_x = TriBool.urlRequester.request(new URL(ServerBuild.worldsUrl)); + } else if(FriendLoginUpdate.__kn_x.isDone()) { + byte[] var0 = FriendLoginUpdate.__kn_x.getResponse(); + Buffer var1 = new Buffer(var0); + var1.readInt(); + World.worldsCount = var1.__ag_302(); + ItemContainer.worlds = new World[World.worldsCount]; + + World var3; + for(int var2 = 0; var2 < World.worldsCount; var3.index = var2++) { + var3 = ItemContainer.worlds[var2] = new World(); + var3.id = var1.__ag_302(); + var3.properties = var1.readInt(); + var3.host = var1.readStringCp1252NullTerminated(); + var3.activity = var1.readStringCp1252NullTerminated(); + var3.location = var1.readUnsignedByte(); + var3.population = var1.__aq_303(); + } + + MilliClock.method3400(ItemContainer.worlds, 0, ItemContainer.worlds.length - 1, World.__bt_e, World.__bt_l); + FriendLoginUpdate.__kn_x = null; + return true; + } + } catch (Exception var4) { + var4.printStackTrace(); + FriendLoginUpdate.__kn_x = null; + } + + return false; + } +} diff --git a/rs-client/src/main/java/ClientPreferences.java b/rs-client/src/main/java/ClientPreferences.java new file mode 100644 index 0000000000..fdde50a4f3 --- /dev/null +++ b/rs-client/src/main/java/ClientPreferences.java @@ -0,0 +1,162 @@ +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bf") +@Implements("ClientPreferences") +public class ClientPreferences { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1548448409 + ) + @Export("__bf_m") + static int __bf_m; + @ObfuscatedName("gr") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("headIconPrayerSprites") + static Sprite[] headIconPrayerSprites; + @ObfuscatedName("q") + @Export("roofsHidden") + boolean roofsHidden; + @ObfuscatedName("w") + @Export("titleMusicDisabled") + boolean titleMusicDisabled; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -359530975 + ) + @Export("windowMode") + int windowMode; + @ObfuscatedName("u") + @Export("rememberedUsername") + String rememberedUsername; + @ObfuscatedName("g") + @Export("hideUsername") + boolean hideUsername; + @ObfuscatedName("l") + @Export("parameters") + LinkedHashMap parameters; + + static { + __bf_m = 6; + } + + ClientPreferences() { + this.windowMode = 1; + this.rememberedUsername = null; + this.hideUsername = false; + this.parameters = new LinkedHashMap(); + this.__m_150(true); + } + + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + ClientPreferences(Buffer var1) { + this.windowMode = 1; + this.rememberedUsername = null; + this.hideUsername = false; + this.parameters = new LinkedHashMap(); + if(var1 != null && var1.array != null) { + int var2 = var1.readUnsignedByte(); + if(var2 >= 0 && var2 <= __bf_m) { + if(var1.readUnsignedByte() == 1) { + this.roofsHidden = true; + } + + if(var2 > 1) { + this.titleMusicDisabled = var1.readUnsignedByte() == 1; + } + + if(var2 > 3) { + this.windowMode = var1.readUnsignedByte(); + } + + if(var2 > 2) { + int var3 = var1.readUnsignedByte(); + + for(int var4 = 0; var4 < var3; ++var4) { + int var5 = var1.readInt(); + int var6 = var1.readInt(); + this.parameters.put(Integer.valueOf(var5), Integer.valueOf(var6)); + } + } + + if(var2 > 4) { + this.rememberedUsername = var1.readStringCp1252NullTerminatedOrNull(); + } + + if(var2 > 5) { + this.hideUsername = var1.readBoolean(); + } + } else { + this.__m_150(true); + } + } else { + this.__m_150(true); + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "1213718182" + ) + @Export("__m_150") + void __m_150(boolean var1) { + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Lgr;", + garbageValue = "-469810794" + ) + @Export("toBuffer") + Buffer toBuffer() { + Buffer var1 = new Buffer(100); + var1.writeByte(__bf_m); + var1.writeByte(this.roofsHidden?1:0); + var1.writeByte(this.titleMusicDisabled?1:0); + var1.writeByte(this.windowMode); + var1.writeByte(this.parameters.size()); + Iterator var2 = this.parameters.entrySet().iterator(); + + while(var2.hasNext()) { + Entry var3 = (Entry)var2.next(); + var1.writeInt(((Integer)var3.getKey()).intValue()); + var1.writeInt(((Integer)var3.getValue()).intValue()); + } + + var1.writeStringCp1252NullTerminated(this.rememberedUsername != null?this.rememberedUsername:""); + var1.writeBoolean(this.hideUsername); + return var1; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "-1" + ) + public static int method1808(int var0) { + return HitSplatDefinition.method4972(ViewportMouse.ViewportMouse_entityTags[var0]); + } + + @ObfuscatedName("jl") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "0" + ) + static final void method1809(int var0) { + if(GroundItemPile.loadWidgetGroup(var0)) { + NetFileRequest.method4555(Widget.widgets[var0], -1); + } + } +} diff --git a/rs-client/src/main/java/Clock.java b/rs-client/src/main/java/Clock.java new file mode 100644 index 0000000000..b814aa2d99 --- /dev/null +++ b/rs-client/src/main/java/Clock.java @@ -0,0 +1,90 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fa") +@Implements("Clock") +public abstract class Clock { + @ObfuscatedName("lu") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("mousedOverWidgetIf1") + static Widget mousedOverWidgetIf1; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "61" + ) + @Export("mark") + public abstract void mark(); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-126803683" + ) + @Export("wait") + public abstract int wait(int var1, int var2); + + @ObfuscatedName("m") + public static String method3534(long var0) { + if(var0 > 0L && var0 < 6582952005840035281L) { + if(0L == var0 % 37L) { + return null; + } else { + int var2 = 0; + + for(long var3 = var0; var3 != 0L; var3 /= 37L) { + ++var2; + } + + StringBuilder var5; + char var8; + for(var5 = new StringBuilder(var2); var0 != 0L; var5.append(var8)) { + long var6 = var0; + var0 /= 37L; + var8 = class306.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("kz") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "-1555959688" + ) + static void method3533(String var0) { + class21.__b_by = var0; + + try { + String var1 = TextureProvider.client.getParameter(ClientParameter.__ji_n.id); + String var2 = TextureProvider.client.getParameter(ClientParameter.__ji_i.id); + String var3 = var1 + "settings=" + var0 + "; version=1; path=/; domain=" + var2; + if(var0.length() == 0) { + var3 = var3 + "; Expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0"; + } else { + var3 = var3 + "; Expires=" + WorldMapSectionType.method252(class203.currentTimeMs() + 94608000000L) + "; Max-Age=" + 94608000L; + } + + class46.method850(TextureProvider.client, "document.cookie=\"" + var3 + "\""); + } catch (Throwable var4) { + ; + } + + } +} diff --git a/rs-client/src/main/java/CollisionMap.java b/rs-client/src/main/java/CollisionMap.java new file mode 100644 index 0000000000..7d335a8657 --- /dev/null +++ b/rs-client/src/main/java/CollisionMap.java @@ -0,0 +1,512 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fy") +@Implements("CollisionMap") +public class CollisionMap { + @ObfuscatedName("ah") + @ObfuscatedGetter( + intValue = 264774249 + ) + @Export("xInset") + int xInset; + @ObfuscatedName("ak") + @ObfuscatedGetter( + intValue = -1037712787 + ) + @Export("yInset") + int yInset; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = 674483785 + ) + @Export("xSize") + int xSize; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = -871458249 + ) + @Export("ySize") + int ySize; + @ObfuscatedName("ab") + @Export("flags") + public int[][] flags; + + public CollisionMap(int var1, int var2) { + this.xInset = 0; + this.yInset = 0; + this.xSize = var1; + this.ySize = var2; + this.flags = new int[this.xSize][this.ySize]; + this.clear(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1687025486" + ) + @Export("clear") + public void clear() { + for(int var1 = 0; var1 < this.xSize; ++var1) { + for(int var2 = 0; var2 < this.ySize; ++var2) { + if(var1 != 0 && var2 != 0 && var1 < this.xSize - 5 && var2 < this.ySize - 5) { + this.flags[var1][var2] = 16777216; + } else { + this.flags[var1][var2] = 16777215; + } + } + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIIZB)V", + garbageValue = "2" + ) + @Export("__f_283") + public void __f_283(int var1, int var2, int var3, int var4, boolean var5) { + var1 -= this.xInset; + var2 -= this.yInset; + if(var3 == 0) { + if(var4 == 0) { + this.__u_287(var1, var2, 128); + this.__u_287(var1 - 1, var2, 8); + } + + if(var4 == 1) { + this.__u_287(var1, var2, 2); + this.__u_287(var1, var2 + 1, 32); + } + + if(var4 == 2) { + this.__u_287(var1, var2, 8); + this.__u_287(var1 + 1, var2, 128); + } + + if(var4 == 3) { + this.__u_287(var1, var2, 32); + this.__u_287(var1, var2 - 1, 2); + } + } + + if(var3 == 1 || var3 == 3) { + if(var4 == 0) { + this.__u_287(var1, var2, 1); + this.__u_287(var1 - 1, var2 + 1, 16); + } + + if(var4 == 1) { + this.__u_287(var1, var2, 4); + this.__u_287(var1 + 1, var2 + 1, 64); + } + + if(var4 == 2) { + this.__u_287(var1, var2, 16); + this.__u_287(var1 + 1, var2 - 1, 1); + } + + if(var4 == 3) { + this.__u_287(var1, var2, 64); + this.__u_287(var1 - 1, var2 - 1, 4); + } + } + + if(var3 == 2) { + if(var4 == 0) { + this.__u_287(var1, var2, 130); + this.__u_287(var1 - 1, var2, 8); + this.__u_287(var1, var2 + 1, 32); + } + + if(var4 == 1) { + this.__u_287(var1, var2, 10); + this.__u_287(var1, var2 + 1, 32); + this.__u_287(var1 + 1, var2, 128); + } + + if(var4 == 2) { + this.__u_287(var1, var2, 40); + this.__u_287(var1 + 1, var2, 128); + this.__u_287(var1, var2 - 1, 2); + } + + if(var4 == 3) { + this.__u_287(var1, var2, 160); + this.__u_287(var1, var2 - 1, 2); + this.__u_287(var1 - 1, var2, 8); + } + } + + if(var5) { + if(var3 == 0) { + if(var4 == 0) { + this.__u_287(var1, var2, 65536); + this.__u_287(var1 - 1, var2, 4096); + } + + if(var4 == 1) { + this.__u_287(var1, var2, 1024); + this.__u_287(var1, var2 + 1, 16384); + } + + if(var4 == 2) { + this.__u_287(var1, var2, 4096); + this.__u_287(var1 + 1, var2, 65536); + } + + if(var4 == 3) { + this.__u_287(var1, var2, 16384); + this.__u_287(var1, var2 - 1, 1024); + } + } + + if(var3 == 1 || var3 == 3) { + if(var4 == 0) { + this.__u_287(var1, var2, 512); + this.__u_287(var1 - 1, var2 + 1, 8192); + } + + if(var4 == 1) { + this.__u_287(var1, var2, 2048); + this.__u_287(var1 + 1, var2 + 1, 32768); + } + + if(var4 == 2) { + this.__u_287(var1, var2, 8192); + this.__u_287(var1 + 1, var2 - 1, 512); + } + + if(var4 == 3) { + this.__u_287(var1, var2, 32768); + this.__u_287(var1 - 1, var2 - 1, 2048); + } + } + + if(var3 == 2) { + if(var4 == 0) { + this.__u_287(var1, var2, 66560); + this.__u_287(var1 - 1, var2, 4096); + this.__u_287(var1, var2 + 1, 16384); + } + + if(var4 == 1) { + this.__u_287(var1, var2, 5120); + this.__u_287(var1, var2 + 1, 16384); + this.__u_287(var1 + 1, var2, 65536); + } + + if(var4 == 2) { + this.__u_287(var1, var2, 20480); + this.__u_287(var1 + 1, var2, 65536); + this.__u_287(var1, var2 - 1, 1024); + } + + if(var4 == 3) { + this.__u_287(var1, var2, 81920); + this.__u_287(var1, var2 - 1, 1024); + this.__u_287(var1 - 1, var2, 4096); + } + } + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIIIZI)V", + garbageValue = "1813281219" + ) + @Export("__q_284") + public void __q_284(int var1, int var2, int var3, int var4, boolean var5) { + int var6 = 256; + if(var5) { + var6 += 131072; + } + + var1 -= this.xInset; + var2 -= this.yInset; + + for(int var7 = var1; var7 < var3 + var1; ++var7) { + if(var7 >= 0 && var7 < this.xSize) { + for(int var8 = var2; var8 < var2 + var4; ++var8) { + if(var8 >= 0 && var8 < this.ySize) { + this.__u_287(var7, var8, var6); + } + } + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1082834717" + ) + @Export("__w_285") + public void __w_285(int var1, int var2) { + var1 -= this.xInset; + var2 -= this.yInset; + this.flags[var1][var2] |= 2097152; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "2022671149" + ) + @Export("__o_286") + public void __o_286(int var1, int var2) { + var1 -= this.xInset; + var2 -= this.yInset; + this.flags[var1][var2] |= 262144; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "953350100" + ) + @Export("__u_287") + void __u_287(int var1, int var2, int var3) { + this.flags[var1][var2] |= var3; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(IIIIZB)V", + garbageValue = "54" + ) + @Export("__g_288") + public void __g_288(int var1, int var2, int var3, int var4, boolean var5) { + var1 -= this.xInset; + var2 -= this.yInset; + if(var3 == 0) { + if(var4 == 0) { + this.__e_290(var1, var2, 128); + this.__e_290(var1 - 1, var2, 8); + } + + if(var4 == 1) { + this.__e_290(var1, var2, 2); + this.__e_290(var1, var2 + 1, 32); + } + + if(var4 == 2) { + this.__e_290(var1, var2, 8); + this.__e_290(var1 + 1, var2, 128); + } + + if(var4 == 3) { + this.__e_290(var1, var2, 32); + this.__e_290(var1, var2 - 1, 2); + } + } + + if(var3 == 1 || var3 == 3) { + if(var4 == 0) { + this.__e_290(var1, var2, 1); + this.__e_290(var1 - 1, var2 + 1, 16); + } + + if(var4 == 1) { + this.__e_290(var1, var2, 4); + this.__e_290(var1 + 1, var2 + 1, 64); + } + + if(var4 == 2) { + this.__e_290(var1, var2, 16); + this.__e_290(var1 + 1, var2 - 1, 1); + } + + if(var4 == 3) { + this.__e_290(var1, var2, 64); + this.__e_290(var1 - 1, var2 - 1, 4); + } + } + + if(var3 == 2) { + if(var4 == 0) { + this.__e_290(var1, var2, 130); + this.__e_290(var1 - 1, var2, 8); + this.__e_290(var1, var2 + 1, 32); + } + + if(var4 == 1) { + this.__e_290(var1, var2, 10); + this.__e_290(var1, var2 + 1, 32); + this.__e_290(var1 + 1, var2, 128); + } + + if(var4 == 2) { + this.__e_290(var1, var2, 40); + this.__e_290(var1 + 1, var2, 128); + this.__e_290(var1, var2 - 1, 2); + } + + if(var4 == 3) { + this.__e_290(var1, var2, 160); + this.__e_290(var1, var2 - 1, 2); + this.__e_290(var1 - 1, var2, 8); + } + } + + if(var5) { + if(var3 == 0) { + if(var4 == 0) { + this.__e_290(var1, var2, 65536); + this.__e_290(var1 - 1, var2, 4096); + } + + if(var4 == 1) { + this.__e_290(var1, var2, 1024); + this.__e_290(var1, var2 + 1, 16384); + } + + if(var4 == 2) { + this.__e_290(var1, var2, 4096); + this.__e_290(var1 + 1, var2, 65536); + } + + if(var4 == 3) { + this.__e_290(var1, var2, 16384); + this.__e_290(var1, var2 - 1, 1024); + } + } + + if(var3 == 1 || var3 == 3) { + if(var4 == 0) { + this.__e_290(var1, var2, 512); + this.__e_290(var1 - 1, var2 + 1, 8192); + } + + if(var4 == 1) { + this.__e_290(var1, var2, 2048); + this.__e_290(var1 + 1, var2 + 1, 32768); + } + + if(var4 == 2) { + this.__e_290(var1, var2, 8192); + this.__e_290(var1 + 1, var2 - 1, 512); + } + + if(var4 == 3) { + this.__e_290(var1, var2, 32768); + this.__e_290(var1 - 1, var2 - 1, 2048); + } + } + + if(var3 == 2) { + if(var4 == 0) { + this.__e_290(var1, var2, 66560); + this.__e_290(var1 - 1, var2, 4096); + this.__e_290(var1, var2 + 1, 16384); + } + + if(var4 == 1) { + this.__e_290(var1, var2, 5120); + this.__e_290(var1, var2 + 1, 16384); + this.__e_290(var1 + 1, var2, 65536); + } + + if(var4 == 2) { + this.__e_290(var1, var2, 20480); + this.__e_290(var1 + 1, var2, 65536); + this.__e_290(var1, var2 - 1, 1024); + } + + if(var4 == 3) { + this.__e_290(var1, var2, 81920); + this.__e_290(var1, var2 - 1, 1024); + this.__e_290(var1 - 1, var2, 4096); + } + } + } + + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(IIIIIZB)V", + garbageValue = "23" + ) + @Export("__l_289") + public void __l_289(int var1, int var2, int var3, int var4, int var5, boolean var6) { + int var7 = 256; + if(var6) { + var7 += 131072; + } + + var1 -= this.xInset; + var2 -= this.yInset; + int var8; + if(var5 == 1 || var5 == 3) { + var8 = var3; + var3 = var4; + var4 = var8; + } + + for(var8 = var1; var8 < var3 + var1; ++var8) { + if(var8 >= 0 && var8 < this.xSize) { + for(int var9 = var2; var9 < var2 + var4; ++var9) { + if(var9 >= 0 && var9 < this.ySize) { + this.__e_290(var8, var9, var7); + } + } + } + } + + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "52290294" + ) + @Export("__e_290") + void __e_290(int var1, int var2, int var3) { + this.flags[var1][var2] &= ~var3; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "37" + ) + @Export("__x_291") + public void __x_291(int var1, int var2) { + var1 -= this.xInset; + var2 -= this.yInset; + this.flags[var1][var2] &= -262145; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIIB)I", + garbageValue = "108" + ) + public static int method3632(int var0, int var1, int var2) { + var2 &= 3; + return var2 == 0?var0:(var2 == 1?var1:(var2 == 2?7 - var0:7 - var1)); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(CII)I", + garbageValue = "616878226" + ) + static int method3631(char var0, int var1) { + int var2 = var0 << 4; + if(Character.isUpperCase(var0) || Character.isTitleCase(var0)) { + var0 = Character.toLowerCase(var0); + var2 = (var0 << 4) + 1; + } + + return var2; + } +} diff --git a/rs-client/src/main/java/Decimator.java b/rs-client/src/main/java/Decimator.java new file mode 100644 index 0000000000..339f08741d --- /dev/null +++ b/rs-client/src/main/java/Decimator.java @@ -0,0 +1,246 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dp") +@Implements("Decimator") +public class Decimator { + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1376358157 + ) + @Export("inputRate") + int inputRate; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -876645877 + ) + @Export("outputRate") + int outputRate; + @ObfuscatedName("u") + @Export("table") + int[][] table; + + public Decimator(int var1, int var2) { + if(var2 != var1) { + int var4 = var1; + int var5 = var2; + if(var2 > var1) { + var4 = var2; + var5 = var1; + } + + while(var5 != 0) { + int var6 = var4 % var5; + var4 = var5; + var5 = var6; + } + + var1 /= var4; + var2 /= var4; + this.inputRate = var1; + this.outputRate = var2; + this.table = new int[var1][14]; + + for(int var7 = 0; var7 < var1; ++var7) { + int[] var8 = this.table[var7]; + double var9 = (double)var7 / (double)var1 + 6.0D; + int var11 = (int)Math.floor(var9 - 7.0D + 1.0D); + if(var11 < 0) { + var11 = 0; + } + + int var12 = (int)Math.ceil(var9 + 7.0D); + if(var12 > 14) { + var12 = 14; + } + + for(double var13 = (double)var2 / (double)var1; var11 < var12; ++var11) { + double var15 = ((double)var11 - var9) * 3.141592653589793D; + double var17 = var13; + if(var15 < -1.0E-4D || var15 > 1.0E-4D) { + var17 = var13 * (Math.sin(var15) / var15); + } + + var17 *= 0.54D + 0.46D * Math.cos(((double)var11 - var9) * 0.2243994752564138D); + var8[var11] = (int)Math.floor(0.5D + var17 * 65536.0D); + } + } + + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BI)[B", + garbageValue = "1292206986" + ) + @Export("resample") + byte[] resample(byte[] var1) { + if(this.table != null) { + int var2 = (int)((long)var1.length * (long)this.outputRate / (long)this.inputRate) + 14; + int[] var3 = new int[var2]; + int var4 = 0; + int var5 = 0; + + int var6; + for(var6 = 0; var6 < var1.length; ++var6) { + byte var7 = var1[var6]; + int[] var8 = this.table[var5]; + + int var9; + for(var9 = 0; var9 < 14; ++var9) { + var3[var9 + var4] += var8[var9] * var7; + } + + var5 += this.outputRate; + var9 = var5 / this.inputRate; + var4 += var9; + var5 -= var9 * this.inputRate; + } + + var1 = new byte[var2]; + + for(var6 = 0; var6 < var2; ++var6) { + int var10 = var3[var6] + 32768 >> 16; + if(var10 < -128) { + var1[var6] = -128; + } else if(var10 > 127) { + var1[var6] = 127; + } else { + var1[var6] = (byte)var10; + } + } + } + + return var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-1419232405" + ) + @Export("scaleRate") + int scaleRate(int var1) { + if(this.table != null) { + var1 = (int)((long)this.outputRate * (long)var1 / (long)this.inputRate); + } + + return var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "25" + ) + @Export("scalePosition") + int scalePosition(int var1) { + if(this.table != null) { + var1 = (int)((long)this.outputRate * (long)var1 / (long)this.inputRate) + 6; + } + + return var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1214582149" + ) + public static final boolean method2490() { + KeyHandler var0 = KeyHandler.KeyHandler_instance; + synchronized(KeyHandler.KeyHandler_instance) { + if(KeyHandler.__an_ct == KeyHandler.__an_cc) { + return false; + } else { + IndexStoreAction.__ik_cn = KeyHandler.__an_cf[KeyHandler.__an_ct]; + GzipDecompressor.__go_ck = KeyHandler.__an_cg[KeyHandler.__an_ct]; + KeyHandler.__an_ct = KeyHandler.__an_ct + 1 & 127; + return true; + } + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Ldu;IIII)Z", + garbageValue = "555449756" + ) + static final boolean method2491(Model var0, int var1, int var2, int var3) { + boolean var4 = ViewportMouse.ViewportMouse_isInViewport; + if(!var4) { + return false; + } else { + int var5; + int var6; + int var7; + int var8; + int var11; + int var12; + int var13; + int var16; + int var17; + if(!ViewportMouse.ViewportMouse_false0) { + var5 = Scene.Scene_cameraPitchSine; + var6 = Scene.Scene_cameraPitchCosine; + var7 = Scene.Scene_cameraYawSine; + var8 = Scene.Scene_cameraYawCosine; + byte var9 = 50; + short var10 = 3500; + var11 = (ViewportMouse.ViewportMouse_x - Rasterizer3D.Rasterizer3D_clipMidX) * var9 / Rasterizer3D.Rasterizer3D_zoom; + var12 = (ViewportMouse.ViewportMouse_y - Rasterizer3D.Rasterizer3D_clipMidY) * var9 / Rasterizer3D.Rasterizer3D_zoom; + var13 = (ViewportMouse.ViewportMouse_x - Rasterizer3D.Rasterizer3D_clipMidX) * var10 / Rasterizer3D.Rasterizer3D_zoom; + int var14 = (ViewportMouse.ViewportMouse_y - Rasterizer3D.Rasterizer3D_clipMidY) * var10 / Rasterizer3D.Rasterizer3D_zoom; + int var15 = Rasterizer3D.method3007(var12, var9, var6, var5); + var16 = Rasterizer3D.method3008(var12, var9, var6, var5); + var12 = var15; + var15 = Rasterizer3D.method3007(var14, var10, var6, var5); + var17 = Rasterizer3D.method3008(var14, var10, var6, var5); + var14 = var15; + var15 = Rasterizer3D.method3005(var11, var16, var8, var7); + var16 = Rasterizer3D.method3006(var11, var16, var8, var7); + var11 = var15; + var15 = Rasterizer3D.method3005(var13, var17, var8, var7); + var17 = Rasterizer3D.method3006(var13, var17, var8, var7); + AccessFile.__dk_o = (var11 + var15) / 2; + ViewportMouse.__dm_u = (var14 + var12) / 2; + ViewportMouse.__dm_g = (var17 + var16) / 2; + ViewportMouse.__dm_l = (var15 - var11) / 2; + class311.__ka_e = (var14 - var12) / 2; + Skeleton.__ek_x = (var17 - var16) / 2; + GraphicsObject.__bw_d = Math.abs(ViewportMouse.__dm_l); + ViewportMouse.__dm_k = Math.abs(class311.__ka_e); + class248.__iu_n = Math.abs(Skeleton.__ek_x); + } + + var5 = var0.xMid + var1; + var6 = var2 + var0.yMid; + var7 = var3 + var0.zMid; + var8 = var0.xMidOffset; + var16 = var0.yMidOffset; + var17 = var0.zMidOffset; + var11 = AccessFile.__dk_o - var5; + var12 = ViewportMouse.__dm_u - var6; + var13 = ViewportMouse.__dm_g - var7; + return Math.abs(var11) > var8 + GraphicsObject.__bw_d?false:(Math.abs(var12) > var16 + ViewportMouse.__dm_k?false:(Math.abs(var13) > var17 + class248.__iu_n?false:(Math.abs(var13 * class311.__ka_e - var12 * Skeleton.__ek_x) > var17 * ViewportMouse.__dm_k + var16 * class248.__iu_n?false:(Math.abs(var11 * Skeleton.__ek_x - var13 * ViewportMouse.__dm_l) > var8 * class248.__iu_n + var17 * GraphicsObject.__bw_d?false:Math.abs(var12 * ViewportMouse.__dm_l - var11 * class311.__ka_e) <= var8 * ViewportMouse.__dm_k + var16 * GraphicsObject.__bw_d)))); + } + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-858740470" + ) + static int method2492(int var0, Script var1, boolean var2) { + if(var0 == 5630) { + Client.__client_fd = 250; + return 1; + } else { + return 2; + } + } +} diff --git a/rs-client/src/main/java/DemotingHashTable.java b/rs-client/src/main/java/DemotingHashTable.java new file mode 100644 index 0000000000..58ac1934ac --- /dev/null +++ b/rs-client/src/main/java/DemotingHashTable.java @@ -0,0 +1,142 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ec") +@Implements("DemotingHashTable") +public final class DemotingHashTable { + @ObfuscatedName("m") + @Export("capacity") + int capacity; + @ObfuscatedName("f") + @Export("remaining") + int remaining; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("hashTable") + IterableNodeHashTable hashTable; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ljc;" + ) + @Export("queue") + IterableDualNodeQueue queue; + + public DemotingHashTable(int var1, int var2) { + this.queue = new IterableDualNodeQueue(); + this.capacity = var1; + this.remaining = var1; + + int var3; + for(var3 = 1; var3 + var3 < var1 && var3 < var2; var3 += var3) { + ; + } + + this.hashTable = new IterableNodeHashTable(var3); + } + + @ObfuscatedName("m") + @Export("get") + public Object get(long var1) { + Wrapper var3 = (Wrapper)this.hashTable.get(var1); + if(var3 == null) { + return null; + } else { + Object var4 = var3.get(); + if(var4 == null) { + var3.remove(); + var3.removeDual(); + this.remaining += var3.size; + return null; + } else { + if(var3.isSoft()) { + DirectWrapper var5 = new DirectWrapper(var4, var3.size); + this.hashTable.put(var5, var3.key); + this.queue.add(var5); + var5.keyDual = 0L; + var3.remove(); + var3.removeDual(); + } else { + this.queue.add(var3); + var3.keyDual = 0L; + } + + return var4; + } + } + } + + @ObfuscatedName("f") + @Export("remove") + void remove(long var1) { + Wrapper var3 = (Wrapper)this.hashTable.get(var1); + this.removeWrapper(var3); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Leu;)V" + ) + @Export("removeWrapper") + void removeWrapper(Wrapper var1) { + if(var1 != null) { + var1.remove(); + var1.removeDual(); + this.remaining += var1.size; + } + + } + + @ObfuscatedName("w") + @Export("put") + public void put(Object var1, long var2, int var4) { + if(var4 > this.capacity) { + throw new IllegalStateException(); + } else { + this.remove(var2); + this.remaining -= var4; + + while(this.remaining < 0) { + Wrapper var5 = (Wrapper)this.queue.__q_448(); + this.removeWrapper(var5); + } + + DirectWrapper var6 = new DirectWrapper(var1, var4); + this.hashTable.put(var6, var2); + this.queue.add(var6); + var6.keyDual = 0L; + } + } + + @ObfuscatedName("o") + @Export("demote") + public void demote(int var1) { + for(Wrapper var2 = (Wrapper)this.queue.__w_449(); var2 != null; var2 = (Wrapper)this.queue.__u_451()) { + if(var2.isSoft()) { + if(var2.get() == null) { + var2.remove(); + var2.removeDual(); + this.remaining += var2.size; + } + } else if(++var2.keyDual > (long)var1) { + SoftWrapper var3 = new SoftWrapper(var2.get(), var2.size); + this.hashTable.put(var3, var2.key); + DualNodeDeque.method5220(var3, var2); + var2.remove(); + var2.removeDual(); + } + } + + } + + @ObfuscatedName("u") + @Export("clear") + public void clear() { + this.queue.clear(); + this.hashTable.clear(); + this.remaining = this.capacity; + } +} diff --git a/rs-client/src/main/java/DesktopPlatformInfoProvider.java b/rs-client/src/main/java/DesktopPlatformInfoProvider.java new file mode 100644 index 0000000000..c99809fbaf --- /dev/null +++ b/rs-client/src/main/java/DesktopPlatformInfoProvider.java @@ -0,0 +1,191 @@ +import java.util.Random; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lu") +@Implements("DesktopPlatformInfoProvider") +public class DesktopPlatformInfoProvider implements PlatformInfoProvider { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Llb;", + garbageValue = "-843739713" + ) + public PlatformInfo get() { + byte var1; + if(WorldMapSection3.osNameLowerCase.startsWith("win")) { + var1 = 1; + } else if(WorldMapSection3.osNameLowerCase.startsWith("mac")) { + var1 = 2; + } else if(WorldMapSection3.osNameLowerCase.startsWith("linux")) { + var1 = 3; + } else { + var1 = 4; + } + + String var2; + try { + var2 = System.getProperty("os.arch").toLowerCase(); + } catch (Exception var35) { + var2 = ""; + } + + String var3; + try { + var3 = System.getProperty("os.version").toLowerCase(); + } catch (Exception var34) { + var3 = ""; + } + + String var4 = "Unknown"; + String var5 = "1.1"; + + try { + var4 = System.getProperty("java.vendor"); + var5 = System.getProperty("java.version"); + } catch (Exception var33) { + ; + } + + boolean var29; + if(!var2.startsWith("amd64") && !var2.startsWith("x86_64")) { + var29 = false; + } else { + var29 = true; + } + + byte var7 = 0; + if(var1 == 1) { + if(var3.indexOf("4.0") != -1) { + var7 = 1; + } else if(var3.indexOf("4.1") != -1) { + var7 = 2; + } else if(var3.indexOf("4.9") != -1) { + var7 = 3; + } else if(var3.indexOf("5.0") != -1) { + var7 = 4; + } else if(var3.indexOf("5.1") != -1) { + var7 = 5; + } else if(var3.indexOf("5.2") != -1) { + var7 = 8; + } else if(var3.indexOf("6.0") != -1) { + var7 = 6; + } else if(var3.indexOf("6.1") != -1) { + var7 = 7; + } else if(var3.indexOf("6.2") != -1) { + var7 = 9; + } else if(var3.indexOf("6.3") != -1) { + var7 = 10; + } else if(var3.indexOf("10.0") != -1) { + var7 = 11; + } + } else if(var1 == 2) { + if(var3.indexOf("10.4") != -1) { + var7 = 20; + } else if(var3.indexOf("10.5") != -1) { + var7 = 21; + } else if(var3.indexOf("10.6") != -1) { + var7 = 22; + } else if(var3.indexOf("10.7") != -1) { + var7 = 23; + } else if(var3.indexOf("10.8") != -1) { + var7 = 24; + } else if(var3.indexOf("10.9") != -1) { + var7 = 25; + } else if(var3.indexOf("10.10") != -1) { + var7 = 26; + } else if(var3.indexOf("10.11") != -1) { + var7 = 27; + } else if(var3.indexOf("10.12") != -1) { + var7 = 28; + } else if(var3.indexOf("10.13") != -1) { + var7 = 29; + } + } + + byte var8; + if(var4.toLowerCase().indexOf("sun") != -1) { + var8 = 1; + } else if(var4.toLowerCase().indexOf("microsoft") != -1) { + var8 = 2; + } else if(var4.toLowerCase().indexOf("apple") != -1) { + var8 = 3; + } else if(var4.toLowerCase().indexOf("oracle") != -1) { + var8 = 5; + } else { + var8 = 4; + } + + int var9 = 2; + int var10 = 0; + + try { + while(var9 < var5.length()) { + char var11 = var5.charAt(var9); + if(var11 < '0' || var11 > '9') { + break; + } + + var10 = var10 * 10 + (var11 - '0'); + ++var9; + } + } catch (Exception var38) { + ; + } + + int var39 = var10; + var9 = var5.indexOf(46, 2) + 1; + var10 = 0; + + try { + while(var9 < var5.length()) { + char var12 = var5.charAt(var9); + if(var12 < '0' || var12 > '9') { + break; + } + + var10 = var12 - '0' + var10 * 10; + ++var9; + } + } catch (Exception var37) { + ; + } + + int var40 = var10; + var9 = var5.indexOf(95, 4) + 1; + var10 = 0; + + try { + while(var9 < var5.length()) { + char var13 = var5.charAt(var9); + if(var13 < '0' || var13 > '9') { + break; + } + + var10 = var13 - '0' + var10 * 10; + ++var9; + } + } catch (Exception var36) { + ; + } + + Runtime.getRuntime(); + int var15 = (int)((long)((new Random()).nextInt(31457280) + 230686720) / 1048576L) + 1; + int var16; + if(var39 > 3) { + var16 = Runtime.getRuntime().availableProcessors(); + } else { + var16 = 0; + } + + byte var17 = 0; + String var18 = ""; + String var19 = ""; + String var20 = ""; + String var21 = ""; + String var22 = ""; + String var23 = ""; + int[] var28 = new int[3]; + return new PlatformInfo(var1, var29, var7, var8, var39, var40, var10, false, var15, var16, var17, 0, var18, var19, var20, var21, 0, 0, 0, 0, var22, var23, var28, 0, ""); + } +} diff --git a/rs-client/src/main/java/DevicePcmPlayer.java b/rs-client/src/main/java/DevicePcmPlayer.java new file mode 100644 index 0000000000..b76b322285 --- /dev/null +++ b/rs-client/src/main/java/DevicePcmPlayer.java @@ -0,0 +1,125 @@ +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.DataLine.Info; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ax") +@Implements("DevicePcmPlayer") +public class DevicePcmPlayer extends PcmPlayer { + @ObfuscatedName("m") + @Export("format") + AudioFormat format; + @ObfuscatedName("f") + @Export("line") + SourceDataLine line; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -106586673 + ) + @Export("capacity2") + int capacity2; + @ObfuscatedName("w") + @Export("byteSamples") + byte[] byteSamples; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "949670609" + ) + @Export("init") + protected void init() { + this.format = new AudioFormat((float)class309.PcmPlayer_sampleRate, 16, PcmPlayer.isStereo?2:1, true, false); + this.byteSamples = new byte[256 << (PcmPlayer.isStereo?2:1)]; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1738349775" + ) + @Export("open") + protected void open(int var1) throws LineUnavailableException { + try { + Info var2 = new Info(SourceDataLine.class, this.format, var1 << (PcmPlayer.isStereo?2:1)); + this.line = (SourceDataLine)AudioSystem.getLine(var2); + this.line.open(); + this.line.start(); + this.capacity2 = var1; + } catch (LineUnavailableException var5) { + int var4 = (var1 >>> 1 & 1431655765) + (var1 & 1431655765); + var4 = (var4 >>> 2 & 858993459) + (var4 & 858993459); + var4 = (var4 >>> 4) + var4 & 252645135; + var4 += var4 >>> 8; + var4 += var4 >>> 16; + int var3 = var4 & 255; + if(var3 != 1) { + this.open(World.method1759(var1)); + } else { + this.line = null; + throw var5; + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "0" + ) + @Export("position") + protected int position() { + return this.capacity2 - (this.line.available() >> (PcmPlayer.isStereo?2:1)); + } + + @ObfuscatedName("w") + @Export("write") + protected void write() { + int var1 = 256; + if(PcmPlayer.isStereo) { + var1 <<= 1; + } + + for(int var2 = 0; var2 < var1; ++var2) { + int var3 = super.samples[var2]; + if((var3 + 8388608 & -16777216) != 0) { + var3 = 8388607 ^ var3 >> 31; + } + + this.byteSamples[var2 * 2] = (byte)(var3 >> 8); + this.byteSamples[var2 * 2 + 1] = (byte)(var3 >> 16); + } + + this.line.write(this.byteSamples, 0, var1 << 1); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "244995961" + ) + @Export("close") + protected void close() { + if(this.line != null) { + this.line.close(); + this.line = null; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-191421600" + ) + @Export("discard") + protected void discard() { + this.line.flush(); + } +} diff --git a/rs-client/src/main/java/DevicePcmPlayerProvider.java b/rs-client/src/main/java/DevicePcmPlayerProvider.java new file mode 100644 index 0000000000..b5bda991c5 --- /dev/null +++ b/rs-client/src/main/java/DevicePcmPlayerProvider.java @@ -0,0 +1,796 @@ +import java.io.File; +import java.io.RandomAccessFile; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("az") +@Implements("DevicePcmPlayerProvider") +public class DevicePcmPlayerProvider implements PcmPlayerProvider { + @ObfuscatedName("fu") + @ObfuscatedSignature( + signature = "Lkk;" + ) + @Export("fontPlain12") + static Font fontPlain12; + @ObfuscatedName("jf") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("dragInventoryWidget") + static Widget dragInventoryWidget; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)Lco;", + garbageValue = "-49" + ) + public PcmPlayer player() { + return new DevicePcmPlayer(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/io/File;ZI)Z", + garbageValue = "248065919" + ) + public static boolean method847(File var0, boolean var1) { + try { + RandomAccessFile var2 = new RandomAccessFile(var0, "rw"); + int var3 = var2.read(); + var2.seek(0L); + var2.write(var3); + var2.seek(0L); + var2.close(); + if(var1) { + var0.delete(); + } + + return true; + } catch (Exception var4) { + return false; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1746647997" + ) + public static void method841() { + KitDefinition.KitDefinition_cached.clear(); + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "([BB)V", + garbageValue = "-9" + ) + @Export("decodeSprite") + static void decodeSprite(byte[] var0) { + Buffer var1 = new Buffer(var0); + var1.index = var0.length - 2; + class328.indexedSpriteCount = var1.__ag_302(); + class328.indexedSpriteOffsetXs = new int[class328.indexedSpriteCount]; + class328.indexedSpriteOffsetYs = new int[class328.indexedSpriteCount]; + VarbitDefinition.indexedSpriteWidths = new int[class328.indexedSpriteCount]; + SecureRandomCallable.indexedSpriteHeights = new int[class328.indexedSpriteCount]; + class328.spritePixels = new byte[class328.indexedSpriteCount][]; + var1.index = var0.length - 7 - class328.indexedSpriteCount * 8; + class328.indexedSpriteWidth = var1.__ag_302(); + class328.indexedSpriteHeight = var1.__ag_302(); + int var2 = (var1.readUnsignedByte() & 255) + 1; + + int var3; + for(var3 = 0; var3 < class328.indexedSpriteCount; ++var3) { + class328.indexedSpriteOffsetXs[var3] = var1.__ag_302(); + } + + for(var3 = 0; var3 < class328.indexedSpriteCount; ++var3) { + class328.indexedSpriteOffsetYs[var3] = var1.__ag_302(); + } + + for(var3 = 0; var3 < class328.indexedSpriteCount; ++var3) { + VarbitDefinition.indexedSpriteWidths[var3] = var1.__ag_302(); + } + + for(var3 = 0; var3 < class328.indexedSpriteCount; ++var3) { + SecureRandomCallable.indexedSpriteHeights[var3] = var1.__ag_302(); + } + + var1.index = var0.length - 7 - class328.indexedSpriteCount * 8 - (var2 - 1) * 3; + class328.indexedSpritePalette = new int[var2]; + + for(var3 = 1; var3 < var2; ++var3) { + class328.indexedSpritePalette[var3] = var1.readMedium(); + if(class328.indexedSpritePalette[var3] == 0) { + class328.indexedSpritePalette[var3] = 1; + } + } + + var1.index = 0; + + for(var3 = 0; var3 < class328.indexedSpriteCount; ++var3) { + int var4 = VarbitDefinition.indexedSpriteWidths[var3]; + int var5 = SecureRandomCallable.indexedSpriteHeights[var3]; + int var6 = var4 * var5; + byte[] var7 = new byte[var6]; + class328.spritePixels[var3] = var7; + int var8 = var1.readUnsignedByte(); + int var9; + if(var8 == 0) { + for(var9 = 0; var9 < var6; ++var9) { + var7[var9] = var1.readByte(); + } + } else if(var8 == 1) { + for(var9 = 0; var9 < var4; ++var9) { + for(int var10 = 0; var10 < var5; ++var10) { + var7[var9 + var10 * var4] = var1.readByte(); + } + } + } + } + + } + + @ObfuscatedName("ga") + @ObfuscatedSignature( + signature = "(Lbz;II)V", + garbageValue = "-1590224882" + ) + static final void method840(Actor var0, int var1) { + WorldMapLabel.worldToScreen(var0.x, var0.y, var1); + } + + @ObfuscatedName("ir") + @ObfuscatedSignature( + signature = "([Lho;IIIIIIIII)V", + garbageValue = "-1516599170" + ) + @Export("drawWidgetGroup") + static final void drawWidgetGroup(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); + Rasterizer3D.Rasterizer3D_method1(); + + for(int var9 = 0; var9 < var0.length; ++var9) { + Widget var10 = var0[var9]; + if(var10 != null && (var10.parentId == var1 || var1 == -1412584499 && var10 == Client.clickedWidget)) { + int var11; + if(var8 == -1) { + Client.rootWidgetXs[Client.rootWidgetCount] = var10.x + var6; + Client.rootWidgetYs[Client.rootWidgetCount] = var7 + var10.y; + Client.rootWidgetWidths[Client.rootWidgetCount] = var10.width; + Client.rootWidgetHeights[Client.rootWidgetCount] = var10.height; + var11 = ++Client.rootWidgetCount - 1; + } else { + var11 = var8; + } + + var10.rootIndex = var11; + var10.cycle = Client.cycle; + if(!var10.isIf3 || !PacketBufferNode.method3673(var10)) { + if(var10.contentType > 0) { + class15.method186(var10); + } + + int var12 = var10.x + var6; + int var13 = var7 + var10.y; + int var14 = var10.transparency; + int var15; + int var16; + if(var10 == Client.clickedWidget) { + if(var1 != -1412584499 && !var10.isScrollBar) { + class279.__jx_ne = var0; + class54.__bs_nb = var6; + class157.__fw_nm = var7; + continue; + } + + if(Client.isDraggingWidget && Client.__client_nn) { + var15 = MouseHandler.MouseHandler_x; + var16 = MouseHandler.MouseHandler_y; + var15 -= Client.widgetClickX; + var16 -= Client.widgetClickY; + if(var15 < Client.__client_nw) { + var15 = Client.__client_nw; + } + + if(var15 + var10.width > Client.__client_nw + Client.clickedWidgetParent.width) { + var15 = Client.__client_nw + Client.clickedWidgetParent.width - var10.width; + } + + if(var16 < Client.__client_nl) { + var16 = Client.__client_nl; + } + + if(var16 + var10.height > Client.__client_nl + Client.clickedWidgetParent.height) { + var16 = Client.__client_nl + Client.clickedWidgetParent.height - var10.height; + } + + var12 = var15; + var13 = var16; + } + + if(!var10.isScrollBar) { + var14 = 128; + } + } + + int var17; + int var18; + int var20; + int var21; + int var22; + int var30; + if(var10.type == 2) { + var15 = var2; + var16 = var3; + var17 = var4; + var18 = var5; + } else if(var10.type == 9) { + var30 = var12; + var20 = var13; + var21 = var12 + var10.width; + var22 = var13 + var10.height; + if(var21 < var12) { + var30 = var21; + var21 = var12; + } + + if(var22 < var13) { + var20 = var22; + var22 = var13; + } + + ++var21; + ++var22; + var15 = var30 > var2?var30:var2; + var16 = var20 > var3?var20:var3; + var17 = var21 < var4?var21:var4; + var18 = var22 < var5?var22:var5; + } else { + var30 = var12 + var10.width; + var20 = var13 + var10.height; + var15 = var12 > var2?var12:var2; + var16 = var13 > var3?var13:var3; + var17 = var30 < var4?var30:var4; + var18 = var20 < var5?var20:var5; + } + + if(!var10.isIf3 || var15 < var17 && var16 < var18) { + if(var10.contentType != 0) { + if(var10.contentType == 1336) { + if(Client.displayFps) { + var13 += 15; + fontPlain12.drawRightAligned("Fps:" + GameShell.fps, var12 + var10.width, var13, 16776960, -1); + var13 += 15; + Runtime var38 = Runtime.getRuntime(); + var20 = (int)((var38.totalMemory() - var38.freeMemory()) / 1024L); + var21 = 16776960; + if(var20 > 327680 && !Client.isLowDetail) { + var21 = 16711680; + } + + fontPlain12.drawRightAligned("Mem:" + var20 + "k", var12 + var10.width, var13, var21, -1); + var13 += 15; + } + continue; + } + + if(var10.contentType == 1337) { + Client.__client_lq = var12; + Client.__client_ln = var13; + class40.drawEntities(var12, var13, var10.width, var10.height); + Client.__client_od[var10.rootIndex] = true; + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); + continue; + } + + if(var10.contentType == 1338) { + MouseRecorder.method1189(var10, var12, var13, var11); + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); + continue; + } + + if(var10.contentType == 1339) { + class22.method296(var10, var12, var13, var11); + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); + continue; + } + + if(var10.contentType == 1400) { + class60.worldMap0.draw(var12, var13, var10.width, var10.height, Client.cycle); + } + + if(var10.contentType == 1401) { + class60.worldMap0.drawOverview(var12, var13, var10.width, var10.height); + } + + if(var10.contentType == 1402) { + class16.field85.method1782(var12, Client.cycle); + } + } + + if(var10.type == 0) { + if(!var10.isIf3 && PacketBufferNode.method3673(var10) && var10 != Clock.mousedOverWidgetIf1) { + continue; + } + + if(!var10.isIf3) { + if(var10.scrollY > var10.scrollHeight - var10.height) { + var10.scrollY = var10.scrollHeight - var10.height; + } + + if(var10.scrollY < 0) { + var10.scrollY = 0; + } + } + + drawWidgetGroup(var0, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11); + if(var10.children != null) { + drawWidgetGroup(var10.children, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11); + } + + WidgetGroupParent var19 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var10.id); + if(var19 != null) { + Interpreter.drawWidgets(var19.group, var15, var16, var17, var18, var12, var13, var11); + } + + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); + Rasterizer3D.Rasterizer3D_method1(); + } + + if(Client.isResizable || Client.__client_oq[var11] || Client.gameDrawingMode > 1) { + if(var10.type == 0 && !var10.isIf3 && var10.scrollHeight > var10.height) { + class11.method148(var12 + var10.width, var13, var10.scrollY, var10.height, var10.scrollHeight); + } + + if(var10.type != 1) { + int var23; + int var24; + int var25; + int var26; + if(var10.type == 2) { + var30 = 0; + + for(var20 = 0; var20 < var10.rawHeight; ++var20) { + for(var21 = 0; var21 < var10.rawWidth; ++var21) { + var22 = var12 + var21 * (var10.paddingX + 32); + var23 = var13 + var20 * (var10.paddingY + 32); + if(var30 < 20) { + var22 += var10.inventoryXOffsets[var30]; + var23 += var10.inventoryYOffsets[var30]; + } + + if(var10.itemIds[var30] <= 0) { + if(var10.inventorySprites != null && var30 < 20) { + Sprite var42 = var10.getInventorySprite(var30); + if(var42 != null) { + var42.__a_505(var22, var23); + } else if(Widget.__ho_j) { + class22.method295(var10); + } + } + } else { + boolean var39 = false; + boolean var40 = false; + var26 = var10.itemIds[var30] - 1; + if(var22 + 32 > var2 && var22 < var4 && var23 + 32 > var3 && var23 < var5 || var10 == dragInventoryWidget && var30 == Client.dragItemSlotSource) { + Sprite var27; + if(Client.isItemSelected == 1 && var30 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) { + var27 = class226.getItemSprite(var26, var10.itemQuantities[var30], 2, 0, 2, false); + } else { + var27 = class226.getItemSprite(var26, var10.itemQuantities[var30], 1, 3153952, 2, false); + } + + if(var27 != null) { + if(var10 == dragInventoryWidget && var30 == Client.dragItemSlotSource) { + var24 = MouseHandler.MouseHandler_x - Client.__client_ja; + var25 = MouseHandler.MouseHandler_y - Client.__client_je; + if(var24 < 5 && var24 > -5) { + var24 = 0; + } + + if(var25 < 5 && var25 > -5) { + var25 = 0; + } + + if(Client.itemDragDuration < 5) { + var24 = 0; + var25 = 0; + } + + var27.__h_508(var22 + var24, var23 + var25, 128); + if(var1 != -1) { + Widget var28 = var0[var1 & 65535]; + int var29; + if(var23 + var25 < Rasterizer2D.Rasterizer2D_yClipStart && var28.scrollY > 0) { + var29 = (Rasterizer2D.Rasterizer2D_yClipStart - var23 - var25) * Client.__client_gy / 3; + if(var29 > Client.__client_gy * 10) { + var29 = Client.__client_gy * 10; + } + + if(var29 > var28.scrollY) { + var29 = var28.scrollY; + } + + var28.scrollY -= var29; + Client.__client_je += var29; + class22.method295(var28); + } + + if(var25 + var23 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var28.scrollY < var28.scrollHeight - var28.height) { + var29 = (var23 + var25 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.__client_gy / 3; + if(var29 > Client.__client_gy * 10) { + var29 = Client.__client_gy * 10; + } + + if(var29 > var28.scrollHeight - var28.height - var28.scrollY) { + var29 = var28.scrollHeight - var28.height - var28.scrollY; + } + + var28.scrollY += var29; + Client.__client_je -= var29; + class22.method295(var28); + } + } + } else if(var10 == BoundaryObject.__ej_jv && var30 == Client.__client_jz) { + var27.__h_508(var22, var23, 128); + } else { + var27.__a_505(var22, var23); + } + } else { + class22.method295(var10); + } + } + } + + ++var30; + } + } + } else if(var10.type == 3) { + if(class238.runCs1(var10)) { + var30 = var10.color2; + if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor2 != 0) { + var30 = var10.mouseOverColor2; + } + } else { + var30 = var10.color; + if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor != 0) { + var30 = var10.mouseOverColor; + } + } + + if(var10.fill) { + switch(var10.rectangleMode.id) { + case 1: + Rasterizer2D.drawGradient(var12, var13, var10.width, var10.height, var10.color, var10.color2); + break; + case 2: + Rasterizer2D.drawGradientAlpha(var12, var13, var10.width, var10.height, var10.color, var10.color2, 255 - (var10.transparency & 255), 255 - (var10.__af & 255)); + break; + default: + if(var14 == 0) { + Rasterizer2D.Rasterizer2D_fillRectangle(var12, var13, var10.width, var10.height, var30); + } else { + Rasterizer2D.Rasterizer2D_moreAlpha(var12, var13, var10.width, var10.height, var30, 256 - (var14 & 255)); + } + } + } else if(var14 == 0) { + Rasterizer2D.Rasterizer2D_drawRectangle(var12, var13, var10.width, var10.height, var30); + } else { + Rasterizer2D.Rasterizer2D_drawRectangleAlpha(var12, var13, var10.width, var10.height, var30, 256 - (var14 & 255)); + } + } else { + Font var36; + if(var10.type == 4) { + var36 = var10.getFont(); + if(var36 == null) { + if(Widget.__ho_j) { + class22.method295(var10); + } + } else { + String var45 = var10.text; + if(class238.runCs1(var10)) { + var20 = var10.color2; + if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor2 != 0) { + var20 = var10.mouseOverColor2; + } + + if(var10.text2.length() > 0) { + var45 = var10.text2; + } + } else { + var20 = var10.color; + if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor != 0) { + var20 = var10.mouseOverColor; + } + } + + if(var10.isIf3 && var10.itemId != -1) { + ItemDefinition var46 = Skills.getItemDefinition(var10.itemId); + var45 = var46.name; + if(var45 == null) { + var45 = "null"; + } + + if((var46.isStackable == 1 || var10.itemQuantity != 1) && var10.itemQuantity != -1) { + var45 = BufferedFile.colorStartTag(16748608) + var45 + "" + " " + 'x' + GrandExchangeEvent.method88(var10.itemQuantity); + } + } + + if(var10 == Client.__client_mo) { + var45 = "Please wait..."; + var20 = var10.color; + } + + if(!var10.isIf3) { + var45 = MouseRecorder.method1194(var45, var10); + } + + var36.drawLines(var45, var12, var13, var10.width, var10.height, var20, var10.textShadowed?0:-1, var10.textXAlignment, var10.textYAlignment, var10.textLineHeight); + } + } else if(var10.type == 5) { + Sprite var37; + if(!var10.isIf3) { + var37 = var10.getSprite(class238.runCs1(var10)); + if(var37 != null) { + var37.__a_505(var12, var13); + } else if(Widget.__ho_j) { + class22.method295(var10); + } + } else { + if(var10.itemId != -1) { + var37 = class226.getItemSprite(var10.itemId, var10.itemQuantity, var10.outline, var10.spriteShadow, var10.itemQuantityMode, false); + } else { + var37 = var10.getSprite(false); + } + + if(var37 == null) { + if(Widget.__ho_j) { + class22.method295(var10); + } + } else { + var20 = var37.width; + var21 = var37.height; + if(!var10.spriteTiling) { + var22 = var10.width * 4096 / var20; + if(var10.spriteAngle != 0) { + var37.__ak_515(var10.width / 2 + var12, var10.height / 2 + var13, var10.spriteAngle, var22); + } else if(var14 != 0) { + var37.__c_509(var12, var13, var10.width, var10.height, 256 - (var14 & 255)); + } else if(var20 == var10.width && var21 == var10.height) { + var37.__a_505(var12, var13); + } else { + var37.__j_506(var12, var13, var10.width, var10.height); + } + } else { + Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height); + var22 = (var20 - 1 + var10.width) / var20; + var23 = (var21 - 1 + var10.height) / var21; + + for(var24 = 0; var24 < var22; ++var24) { + for(var25 = 0; var25 < var23; ++var25) { + if(var10.spriteAngle != 0) { + var37.__ak_515(var20 / 2 + var12 + var20 * var24, var21 / 2 + var13 + var25 * var21, var10.spriteAngle, 4096); + } else if(var14 != 0) { + var37.__h_508(var12 + var20 * var24, var13 + var21 * var25, 256 - (var14 & 255)); + } else { + var37.__a_505(var12 + var20 * var24, var13 + var25 * var21); + } + } + } + + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); + } + } + } + } else { + ItemDefinition var34; + if(var10.type == 6) { + boolean var43 = class238.runCs1(var10); + if(var43) { + var20 = var10.sequenceId2; + } else { + var20 = var10.sequenceId; + } + + Model var41 = null; + var22 = 0; + if(var10.itemId != -1) { + var34 = Skills.getItemDefinition(var10.itemId); + if(var34 != null) { + var34 = var34.__x_430(var10.itemQuantity); + var41 = var34.getModel(1); + if(var41 != null) { + var41.calculateBoundsCylinder(); + var22 = var41.height / 2; + } else { + class22.method295(var10); + } + } + } else if(var10.modelType == 5) { + if(var10.modelId == 0) { + var41 = Client.__client_ru.getModel((SequenceDefinition)null, -1, (SequenceDefinition)null, -1); + } else { + var41 = Canvas.localPlayer.getModel(); + } + } else if(var20 == -1) { + var41 = var10.getModel((SequenceDefinition)null, -1, var43, Canvas.localPlayer.appearance); + if(var41 == null && Widget.__ho_j) { + class22.method295(var10); + } + } else { + SequenceDefinition var47 = WorldMapAreaData.getSequenceDefinition(var20); + var41 = var10.getModel(var47, var10.modelFrame, var43, Canvas.localPlayer.appearance); + if(var41 == null && Widget.__ho_j) { + class22.method295(var10); + } + } + + Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13); + var23 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16; + var24 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16; + if(var41 != null) { + if(!var10.isIf3) { + var41.__c_234(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var23, var24); + } else { + var41.calculateBoundsCylinder(); + if(var10.modelOrthog) { + var41.__p_235(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var22 + var23 + var10.modelOffsetY, var24 + var10.modelOffsetY, var10.modelZoom); + } else { + var41.__c_234(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var23 + var22 + var10.modelOffsetY, var24 + var10.modelOffsetY); + } + } + } + + Rasterizer3D.Rasterizer3D_method3(); + } else { + if(var10.type == 7) { + var36 = var10.getFont(); + if(var36 == null) { + if(Widget.__ho_j) { + class22.method295(var10); + } + continue; + } + + var20 = 0; + + for(var21 = 0; var21 < var10.rawHeight; ++var21) { + for(var22 = 0; var22 < var10.rawWidth; ++var22) { + if(var10.itemIds[var20] > 0) { + var34 = Skills.getItemDefinition(var10.itemIds[var20] - 1); + String var31; + if(var34.isStackable != 1 && var10.itemQuantities[var20] == 1) { + var31 = BufferedFile.colorStartTag(16748608) + var34.name + ""; + } else { + var31 = BufferedFile.colorStartTag(16748608) + var34.name + "" + " " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var20]); + } + + var25 = var22 * (var10.paddingX + 115) + var12; + var26 = var21 * (var10.paddingY + 12) + var13; + if(var10.textXAlignment == 0) { + var36.draw(var31, var25, var26, var10.color, var10.textShadowed?0:-1); + } else if(var10.textXAlignment == 1) { + var36.drawCentered(var31, var10.width / 2 + var25, var26, var10.color, var10.textShadowed?0:-1); + } else { + var36.drawRightAligned(var31, var25 + var10.width - 1, var26, var10.color, var10.textShadowed?0:-1); + } + } + + ++var20; + } + } + } + + if(var10.type == 8 && var10 == AccessFile.__dk_lm && Client.__client_ls == Client.__client_lb) { + var30 = 0; + var20 = 0; + Font var32 = fontPlain12; + String var33 = var10.text; + + String var44; + for(var33 = MouseRecorder.method1194(var33, var10); var33.length() > 0; var20 = var20 + var32.ascent + 1) { + var24 = var33.indexOf("
    "); + if(var24 != -1) { + var44 = var33.substring(0, var24); + var33 = var33.substring(var24 + 4); + } else { + var44 = var33; + var33 = ""; + } + + var25 = var32.stringWidth(var44); + if(var25 > var30) { + var30 = var25; + } + } + + var30 += 6; + var20 += 7; + var24 = var12 + var10.width - 5 - var30; + var25 = var13 + var10.height + 5; + if(var24 < var12 + 5) { + var24 = var12 + 5; + } + + if(var30 + var24 > var4) { + var24 = var4 - var30; + } + + if(var25 + var20 > var5) { + var25 = var5 - var20; + } + + Rasterizer2D.Rasterizer2D_fillRectangle(var24, var25, var30, var20, 16777120); + Rasterizer2D.Rasterizer2D_drawRectangle(var24, var25, var30, var20, 0); + var33 = var10.text; + var26 = var25 + var32.ascent + 2; + + for(var33 = MouseRecorder.method1194(var33, var10); var33.length() > 0; var26 = var26 + var32.ascent + 1) { + int var35 = var33.indexOf("
    "); + if(var35 != -1) { + var44 = var33.substring(0, var35); + var33 = var33.substring(var35 + 4); + } else { + var44 = var33; + var33 = ""; + } + + var32.draw(var44, var24 + 3, var26, 0, -1); + } + } + + if(var10.type == 9) { + if(var10.__ba) { + var30 = var12; + var20 = var13 + var10.height; + var21 = var12 + var10.width; + var22 = var13; + } else { + var30 = var12; + var20 = var13; + var21 = var12 + var10.width; + var22 = var13 + var10.height; + } + + if(var10.lineWid == 1) { + Rasterizer2D.Rasterizer2D_drawLine(var30, var20, var21, var22, var10.color); + } else { + class190.method3669(var30, var20, var21, var22, var10.color, var10.lineWid); + } + } + } + } + } + } + } + } + } + } + } + + } + + @ObfuscatedName("jy") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1666917204" + ) + static final void method845(int var0) { + if(GroundItemPile.loadWidgetGroup(var0)) { + Widget[] var1 = Widget.widgets[var0]; + + for(int var2 = 0; var2 < var1.length; ++var2) { + Widget var3 = var1[var2]; + if(var3 != null) { + var3.modelFrame = 0; + var3.modelFrameCycle = 0; + } + } + + } + } +} diff --git a/rs-client/src/main/java/DirectByteArrayCopier.java b/rs-client/src/main/java/DirectByteArrayCopier.java new file mode 100644 index 0000000000..546bc285e8 --- /dev/null +++ b/rs-client/src/main/java/DirectByteArrayCopier.java @@ -0,0 +1,36 @@ +import java.nio.ByteBuffer; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gv") +@Implements("DirectByteArrayCopier") +public class DirectByteArrayCopier extends AbstractByteArrayCopier { + @ObfuscatedName("m") + @Export("directBuffer") + ByteBuffer directBuffer; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[B", + garbageValue = "-1219910462" + ) + byte[] get() { + byte[] var1 = new byte[this.directBuffer.capacity()]; + this.directBuffer.position(0); + this.directBuffer.get(var1); + return var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "([BI)V", + garbageValue = "-2034091753" + ) + void set(byte[] var1) { + this.directBuffer = ByteBuffer.allocateDirect(var1.length); + this.directBuffer.position(0); + this.directBuffer.put(var1); + } +} diff --git a/rs-client/src/main/java/DirectWrapper.java b/rs-client/src/main/java/DirectWrapper.java new file mode 100644 index 0000000000..cf3f5cab78 --- /dev/null +++ b/rs-client/src/main/java/DirectWrapper.java @@ -0,0 +1,26 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("ew") +@Implements("DirectWrapper") +public class DirectWrapper extends Wrapper { + @ObfuscatedName("m") + @Export("obj") + Object obj; + + DirectWrapper(Object var1, int var2) { + super(var2); + this.obj = var1; + } + + @ObfuscatedName("m") + Object get() { + return this.obj; + } + + @ObfuscatedName("f") + boolean isSoft() { + return false; + } +} diff --git a/rs-client/src/main/java/DualNode.java b/rs-client/src/main/java/DualNode.java new file mode 100644 index 0000000000..434d68ecff --- /dev/null +++ b/rs-client/src/main/java/DualNode.java @@ -0,0 +1,35 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fn") +@Implements("DualNode") +public class DualNode extends Node { + @ObfuscatedName("cg") + @Export("keyDual") + public long keyDual; + @ObfuscatedName("cf") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("previousDual") + public DualNode previousDual; + @ObfuscatedName("cp") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("nextDual") + public DualNode nextDual; + + @ObfuscatedName("cg") + @Export("removeDual") + public void removeDual() { + if(this.nextDual != null) { + this.nextDual.previousDual = this.previousDual; + this.previousDual.nextDual = this.nextDual; + this.previousDual = null; + this.nextDual = null; + } + } +} diff --git a/rs-client/src/main/java/DualNodeDeque.java b/rs-client/src/main/java/DualNodeDeque.java new file mode 100644 index 0000000000..b84ff91bd3 --- /dev/null +++ b/rs-client/src/main/java/DualNodeDeque.java @@ -0,0 +1,106 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jp") +@Implements("DualNodeDeque") +public final class DualNodeDeque { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("sentinel") + DualNode sentinel; + + public DualNodeDeque() { + this.sentinel = new DualNode(); + this.sentinel.previousDual = this.sentinel; + this.sentinel.nextDual = this.sentinel; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lfn;)V" + ) + @Export("addFirst") + public void addFirst(DualNode var1) { + if(var1.nextDual != null) { + var1.removeDual(); + } + + var1.nextDual = this.sentinel.nextDual; + var1.previousDual = this.sentinel; + var1.nextDual.previousDual = var1; + var1.previousDual.nextDual = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lfn;)V" + ) + @Export("addLast") + public void addLast(DualNode var1) { + if(var1.nextDual != null) { + var1.removeDual(); + } + + var1.nextDual = this.sentinel; + var1.previousDual = this.sentinel.previousDual; + var1.nextDual.previousDual = var1; + var1.previousDual.nextDual = var1; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "()Lfn;" + ) + @Export("removeLast") + public DualNode removeLast() { + DualNode var1 = this.sentinel.previousDual; + if(var1 == this.sentinel) { + return null; + } else { + var1.removeDual(); + return var1; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "()Lfn;" + ) + @Export("last") + public DualNode last() { + DualNode var1 = this.sentinel.previousDual; + return var1 == this.sentinel?null:var1; + } + + @ObfuscatedName("u") + @Export("clear") + public void clear() { + while(true) { + DualNode var1 = this.sentinel.previousDual; + if(var1 == this.sentinel) { + return; + } + + var1.removeDual(); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lfn;Lfn;)V" + ) + public static void method5220(DualNode var0, DualNode var1) { + if(var0.nextDual != null) { + var0.removeDual(); + } + + var0.nextDual = var1; + var0.previousDual = var1.previousDual; + var0.nextDual.previousDual = var0; + var0.previousDual.nextDual = var0; + } +} diff --git a/rs-client/src/main/java/DynamicObject.java b/rs-client/src/main/java/DynamicObject.java new file mode 100644 index 0000000000..891cc10b79 --- /dev/null +++ b/rs-client/src/main/java/DynamicObject.java @@ -0,0 +1,634 @@ +import java.lang.management.GarbageCollectorMXBean; +import java.lang.management.ManagementFactory; +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cf") +@Implements("DynamicObject") +public class DynamicObject extends Entity { + @ObfuscatedName("df") + @ObfuscatedSignature( + signature = "Lfu;" + ) + @Export("js5Socket") + static AbstractSocket js5Socket; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1369707199 + ) + @Export("id") + int id; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1713856147 + ) + @Export("type") + int type; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 141031459 + ) + @Export("orientation") + int orientation; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 844945979 + ) + @Export("plane") + int plane; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -351084819 + ) + @Export("x") + int x; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -126308963 + ) + @Export("y") + int y; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Ljh;" + ) + @Export("sequenceDefinition") + SequenceDefinition sequenceDefinition; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -2017547185 + ) + @Export("frame") + int frame; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1596313489 + ) + @Export("cycleStart") + int cycleStart; + + @ObfuscatedSignature( + signature = "(IIIIIIIZLex;)V" + ) + DynamicObject(int var1, int var2, int var3, int var4, int var5, int var6, int var7, boolean var8, Entity var9) { + this.id = var1; + this.type = var2; + this.orientation = var3; + this.plane = var4; + this.x = var5; + this.y = var6; + if(var7 != -1) { + this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(var7); + this.frame = 0; + this.cycleStart = Client.cycle - 1; + if(this.sequenceDefinition.__t == 0 && var9 != null && var9 instanceof DynamicObject) { + DynamicObject var10 = (DynamicObject)var9; + if(this.sequenceDefinition == var10.sequenceDefinition) { + this.frame = var10.frame; + this.cycleStart = var10.cycleStart; + return; + } + } + + if(var8 && this.sequenceDefinition.frameCount != -1) { + this.frame = (int)(Math.random() * (double)this.sequenceDefinition.frameIds.length); + this.cycleStart -= (int)(Math.random() * (double)this.sequenceDefinition.frameLengths[this.frame]); + } + } + + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + protected final Model getModel() { + if(this.sequenceDefinition != null) { + int var1 = Client.cycle - this.cycleStart; + if(var1 > 100 && this.sequenceDefinition.frameCount > 0) { + var1 = 100; + } + + label55: { + do { + do { + if(var1 <= this.sequenceDefinition.frameLengths[this.frame]) { + break label55; + } + + var1 -= this.sequenceDefinition.frameLengths[this.frame]; + ++this.frame; + } while(this.frame < this.sequenceDefinition.frameIds.length); + + this.frame -= this.sequenceDefinition.frameCount; + } while(this.frame >= 0 && this.frame < this.sequenceDefinition.frameIds.length); + + this.sequenceDefinition = null; + } + + this.cycleStart = Client.cycle - var1; + } + + ObjectDefinition var12 = class50.getObjectDefinition(this.id); + if(var12.transforms != null) { + var12 = var12.transform(); + } + + if(var12 == null) { + return null; + } else { + int var2; + int var3; + if(this.orientation != 1 && this.orientation != 3) { + var2 = var12.sizeX; + var3 = var12.sizeY; + } else { + var2 = var12.sizeY; + var3 = var12.sizeX; + } + + int var4 = (var2 >> 1) + this.x; + int var5 = (var2 + 1 >> 1) + this.x; + int var6 = (var3 >> 1) + this.y; + int var7 = (var3 + 1 >> 1) + this.y; + int[][] var8 = Tiles.Tiles_heights[this.plane]; + int var9 = var8[var5][var6] + var8[var4][var6] + var8[var4][var7] + var8[var5][var7] >> 2; + int var10 = (this.x << 7) + (var2 << 6); + int var11 = (this.y << 7) + (var3 << 6); + return var12.getModelDynamic(this.type, this.orientation, var8, var10, var9, var11, this.sequenceDefinition, this.frame); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "([Ljava/lang/String;[SIII)V", + garbageValue = "1172859329" + ) + static void method2218(String[] var0, short[] var1, int var2, int var3) { + if(var2 < var3) { + int var4 = (var3 + var2) / 2; + int var5 = var2; + String var6 = var0[var4]; + var0[var4] = var0[var3]; + var0[var3] = var6; + short var7 = var1[var4]; + var1[var4] = var1[var3]; + var1[var3] = var7; + + for(int var8 = var2; var8 < var3; ++var8) { + if(var6 == null || var0[var8] != null && var0[var8].compareTo(var6) < (var8 & 1)) { + String var9 = var0[var8]; + var0[var8] = var0[var5]; + var0[var5] = var9; + short var10 = var1[var8]; + var1[var8] = var1[var5]; + var1[var5++] = var10; + } + } + + var0[var3] = var0[var5]; + var0[var5] = var6; + var1[var3] = var1[var5]; + var1[var5] = var7; + method2218(var0, var1, var2, var5 - 1); + method2218(var0, var1, var5 + 1, var3); + } + + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "-83" + ) + static int method2223(int var0, Script var1, boolean var2) { + if(var0 == 5000) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.publicChatMode; + return 1; + } else if(var0 == 5001) { + class179.Interpreter_intStackSize -= 3; + Client.publicChatMode = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + IndexCacheLoader.field512 = WorldMapElement.method4783(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + if(IndexCacheLoader.field512 == null) { + IndexCacheLoader.field512 = class310.field3805; + } + + Client.__client_pl = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + PacketBufferNode var18 = Interpreter.method1915(ClientPacket.__gs_z, Client.packetWriter.isaacCipher); + var18.packetBuffer.writeByte(Client.publicChatMode); + var18.packetBuffer.writeByte(IndexCacheLoader.field512.field3804); + var18.packetBuffer.writeByte(Client.__client_pl); + Client.packetWriter.__q_167(var18); + return 1; + } else { + String var3; + int var4; + if(var0 == 5002) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + class179.Interpreter_intStackSize -= 2; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + int var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + PacketBufferNode var6 = Interpreter.method1915(ClientPacket.__gs_ae, Client.packetWriter.isaacCipher); + var6.packetBuffer.writeByte(WorldMapRegion.method550(var3) + 2); + var6.packetBuffer.writeStringCp1252NullTerminated(var3); + var6.packetBuffer.writeByte(var4 - 1); + var6.packetBuffer.writeByte(var5); + Client.packetWriter.__q_167(var6); + return 1; + } else { + int var10; + if(var0 == 5003) { + class179.Interpreter_intStackSize -= 2; + var10 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Message var15 = Message.method1226(var10, var4); + if(var15 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.count; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.cycle; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.sender != null?var15.sender:""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.prefix != null?var15.prefix:""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.text != null?var15.text:""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.isFromFriend()?1:(var15.isFromIgnored()?2:0); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 5004) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Message var16 = NetCache.method4708(var10); + if(var16 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var16.type; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var16.cycle; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16.sender != null?var16.sender:""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16.prefix != null?var16.prefix:""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16.text != null?var16.text:""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var16.isFromFriend()?1:(var16.isFromIgnored()?2:0); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 5005) { + if(IndexCacheLoader.field512 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = IndexCacheLoader.field512.field3804; + } + + return 1; + } else if(var0 == 5008) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + String var14 = var3.toLowerCase(); + byte var17 = 0; + if(var14.startsWith("yellow:")) { + var17 = 0; + var3 = var3.substring("yellow:".length()); + } else if(var14.startsWith("red:")) { + var17 = 1; + var3 = var3.substring("red:".length()); + } else if(var14.startsWith("green:")) { + var17 = 2; + var3 = var3.substring("green:".length()); + } else if(var14.startsWith("cyan:")) { + var17 = 3; + var3 = var3.substring("cyan:".length()); + } else if(var14.startsWith("purple:")) { + var17 = 4; + var3 = var3.substring("purple:".length()); + } else if(var14.startsWith("white:")) { + var17 = 5; + var3 = var3.substring("white:".length()); + } else if(var14.startsWith("flash1:")) { + var17 = 6; + var3 = var3.substring("flash1:".length()); + } else if(var14.startsWith("flash2:")) { + var17 = 7; + var3 = var3.substring("flash2:".length()); + } else if(var14.startsWith("flash3:")) { + var17 = 8; + var3 = var3.substring("flash3:".length()); + } else if(var14.startsWith("glow1:")) { + var17 = 9; + var3 = var3.substring("glow1:".length()); + } else if(var14.startsWith("glow2:")) { + var17 = 10; + var3 = var3.substring("glow2:".length()); + } else if(var14.startsWith("glow3:")) { + var17 = 11; + var3 = var3.substring("glow3:".length()); + } else if(Client.language != 0) { + if(var14.startsWith("yellow:")) { + var17 = 0; + var3 = var3.substring("yellow:".length()); + } else if(var14.startsWith("red:")) { + var17 = 1; + var3 = var3.substring("red:".length()); + } else if(var14.startsWith("green:")) { + var17 = 2; + var3 = var3.substring("green:".length()); + } else if(var14.startsWith("cyan:")) { + var17 = 3; + var3 = var3.substring("cyan:".length()); + } else if(var14.startsWith("purple:")) { + var17 = 4; + var3 = var3.substring("purple:".length()); + } else if(var14.startsWith("white:")) { + var17 = 5; + var3 = var3.substring("white:".length()); + } else if(var14.startsWith("flash1:")) { + var17 = 6; + var3 = var3.substring("flash1:".length()); + } else if(var14.startsWith("flash2:")) { + var17 = 7; + var3 = var3.substring("flash2:".length()); + } else if(var14.startsWith("flash3:")) { + var17 = 8; + var3 = var3.substring("flash3:".length()); + } else if(var14.startsWith("glow1:")) { + var17 = 9; + var3 = var3.substring("glow1:".length()); + } else if(var14.startsWith("glow2:")) { + var17 = 10; + var3 = var3.substring("glow2:".length()); + } else if(var14.startsWith("glow3:")) { + var17 = 11; + var3 = var3.substring("glow3:".length()); + } + } + + var14 = var3.toLowerCase(); + byte var7 = 0; + if(var14.startsWith("wave:")) { + var7 = 1; + var3 = var3.substring("wave:".length()); + } else if(var14.startsWith("wave2:")) { + var7 = 2; + var3 = var3.substring("wave2:".length()); + } else if(var14.startsWith("shake:")) { + var7 = 3; + var3 = var3.substring("shake:".length()); + } else if(var14.startsWith("scroll:")) { + var7 = 4; + var3 = var3.substring("scroll:".length()); + } else if(var14.startsWith("slide:")) { + var7 = 5; + var3 = var3.substring("slide:".length()); + } else if(Client.language != 0) { + if(var14.startsWith("wave:")) { + var7 = 1; + var3 = var3.substring("wave:".length()); + } else if(var14.startsWith("wave2:")) { + var7 = 2; + var3 = var3.substring("wave2:".length()); + } else if(var14.startsWith("shake:")) { + var7 = 3; + var3 = var3.substring("shake:".length()); + } else if(var14.startsWith("scroll:")) { + var7 = 4; + var3 = var3.substring("scroll:".length()); + } else if(var14.startsWith("slide:")) { + var7 = 5; + var3 = var3.substring("slide:".length()); + } + } + + PacketBufferNode var8 = Interpreter.method1915(ClientPacket.__gs_cz, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeByte(0); + int var9 = var8.packetBuffer.index; + var8.packetBuffer.writeByte(var4); + var8.packetBuffer.writeByte(var17); + var8.packetBuffer.writeByte(var7); + TextureProvider.method2777(var8.packetBuffer, var3); + var8.packetBuffer.__h_300(var8.packetBuffer.index - var9); + Client.packetWriter.__q_167(var8); + return 1; + } else if(var0 == 5009) { + Interpreter.Interpreter_stringStackSize -= 2; + var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize]; + String var12 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1]; + PacketBufferNode var11 = Interpreter.method1915(ClientPacket.__gs_v, Client.packetWriter.isaacCipher); + var11.packetBuffer.writeShort(0); + int var13 = var11.packetBuffer.index; + var11.packetBuffer.writeStringCp1252NullTerminated(var3); + TextureProvider.method2777(var11.packetBuffer, var12); + var11.packetBuffer.__y_299(var11.packetBuffer.index - var13); + Client.packetWriter.__q_167(var11); + return 1; + } else if(var0 != 5015) { + if(var0 == 5016) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_pl; + return 1; + } else if(var0 == 5017) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WidgetGroupParent.method1174(var10); + return 1; + } else if(var0 == 5018) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class12.method161(var10); + return 1; + } else if(var0 == 5019) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = SpriteMask.method4391(var10); + return 1; + } else if(var0 == 5020) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + BoundaryObject.method3235(var3); + return 1; + } else if(var0 == 5021) { + Client.__client_pz = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize].toLowerCase().trim(); + return 1; + } else if(var0 == 5022) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Client.__client_pz; + return 1; + } else if(var0 == 5023) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + System.out.println(var3); + return 1; + } else { + return 2; + } + } else { + if(Canvas.localPlayer != null && Canvas.localPlayer.username != null) { + var3 = Canvas.localPlayer.username.getName(); + } else { + var3 = ""; + } + + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3; + return 1; + } + } + } + } + + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "47188688" + ) + protected static int method2222() { + int var0 = 0; + if(AbstractIndexCache.garbageCollector == null || !AbstractIndexCache.garbageCollector.isValid()) { + try { + Iterator var1 = ManagementFactory.getGarbageCollectorMXBeans().iterator(); + + while(var1.hasNext()) { + GarbageCollectorMXBean var2 = (GarbageCollectorMXBean)var1.next(); + if(var2.isValid()) { + AbstractIndexCache.garbageCollector = var2; + GameShell.garbageCollectorLastCheckTimeMs = -1L; + GameShell.garbageCollectorLastCollectionTime = -1L; + } + } + } catch (Throwable var11) { + ; + } + } + + if(AbstractIndexCache.garbageCollector != null) { + long var9 = class203.currentTimeMs(); + long var3 = AbstractIndexCache.garbageCollector.getCollectionTime(); + if(GameShell.garbageCollectorLastCollectionTime != -1L) { + long var5 = var3 - GameShell.garbageCollectorLastCollectionTime; + long var7 = var9 - GameShell.garbageCollectorLastCheckTimeMs; + if(0L != var7) { + var0 = (int)(var5 * 100L / var7); + } + } + + GameShell.garbageCollectorLastCollectionTime = var3; + GameShell.garbageCollectorLastCheckTimeMs = var9; + } + + return var0; + } + + @ObfuscatedName("hx") + @ObfuscatedSignature( + signature = "(IIZI)V", + garbageValue = "2072073729" + ) + static final void method2224(int var0, int var1, boolean var2) { + if(!var2 || var0 != GameObject.__eh_fy || WorldMapLabelSize.__s_fi != var1) { + GameObject.__eh_fy = var0; + WorldMapLabelSize.__s_fi = var1; + GameShell.updateGameState(25); + class68.drawLoadingMessage("Loading - please wait.", true); + int var3 = class50.baseX; + int var4 = GraphicsObject.baseY; + class50.baseX = (var0 - 6) * 8; + GraphicsObject.baseY = (var1 - 6) * 8; + int var5 = class50.baseX - var3; + int var6 = GraphicsObject.baseY - var4; + var3 = class50.baseX; + var4 = GraphicsObject.baseY; + + int var7; + int var9; + for(var7 = 0; var7 < 32768; ++var7) { + Npc var8 = Client.npcs[var7]; + if(var8 != null) { + for(var9 = 0; var9 < 10; ++var9) { + var8.pathX[var9] -= var5; + var8.pathY[var9] -= var6; + } + + var8.x -= var5 * 128; + var8.y -= var6 * 128; + } + } + + for(var7 = 0; var7 < 2048; ++var7) { + Player var21 = Client.players[var7]; + if(var21 != null) { + for(var9 = 0; var9 < 10; ++var9) { + var21.pathX[var9] -= var5; + var21.pathY[var9] -= var6; + } + + var21.x -= var5 * 128; + var21.y -= var6 * 128; + } + } + + byte var20 = 0; + byte var18 = 104; + byte var22 = 1; + if(var5 < 0) { + var20 = 103; + var18 = -1; + var22 = -1; + } + + byte var10 = 0; + byte var11 = 104; + byte var12 = 1; + if(var6 < 0) { + var10 = 103; + var11 = -1; + var12 = -1; + } + + int var14; + for(int var13 = var20; var13 != var18; var13 += var22) { + for(var14 = var10; var11 != var14; var14 += var12) { + int var15 = var13 + var5; + int var16 = var14 + var6; + + for(int var17 = 0; var17 < 4; ++var17) { + if(var15 >= 0 && var16 >= 0 && var15 < 104 && var16 < 104) { + Client.groundItems[var17][var13][var14] = Client.groundItems[var17][var15][var16]; + } else { + Client.groundItems[var17][var13][var14] = null; + } + } + } + } + + for(class68 var19 = (class68)Client.__client_kh.last(); var19 != null; var19 = (class68)Client.__client_kh.previous()) { + var19.field913 -= var5; + var19.field901 -= var6; + if(var19.field913 < 0 || var19.field901 < 0 || var19.field913 >= 104 || var19.field901 >= 104) { + var19.remove(); + } + } + + if(Client.destinationX != 0) { + Client.destinationX -= var5; + Client.destinationY -= var6; + } + + Client.soundEffectCount = 0; + Client.isCameraLocked = false; + WorldMapSection1.cameraX -= var5 << 7; + class11.cameraZ -= var6 << 7; + MouseHandler.oculusOrbFocalPointX -= var5 << 7; + ScriptEvent.oculusOrbFocalPointY -= var6 << 7; + Client.__client_ph = -1; + Client.graphicsObjects.clear(); + Client.projectiles.clear(); + + for(var14 = 0; var14 < 4; ++var14) { + Client.collisionMaps[var14].clear(); + } + + } + } +} diff --git a/rs-client/src/main/java/Entity.java b/rs-client/src/main/java/Entity.java new file mode 100644 index 0000000000..e1b55d193e --- /dev/null +++ b/rs-client/src/main/java/Entity.java @@ -0,0 +1,41 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ex") +@Implements("Entity") +public abstract class Entity extends DualNode { + @ObfuscatedName("cw") + @ObfuscatedGetter( + intValue = 849583845 + ) + @Export("height") + public int height; + + protected Entity() { + this.height = 1000; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + @Export("getModel") + protected Model getModel() { + return null; + } + + @ObfuscatedName("cy") + @Export("renderDraw") + void renderDraw(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9) { + Model var11 = this.getModel(); + if(var11 != null) { + this.height = var11.height; + var11.renderDraw(var1, var2, var3, var4, var5, var6, var7, var8, var9); + } + + } +} diff --git a/rs-client/src/main/java/EnumDefinition.java b/rs-client/src/main/java/EnumDefinition.java new file mode 100644 index 0000000000..28d6576ba4 --- /dev/null +++ b/rs-client/src/main/java/EnumDefinition.java @@ -0,0 +1,128 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jw") +@Implements("EnumDefinition") +public class EnumDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("EnumDefinition_indexCache") + public static AbstractIndexCache EnumDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("EnumDefinition_cached") + static EvictingDualNodeHashTable EnumDefinition_cached; + @ObfuscatedName("q") + @Export("keyType") + public char keyType; + @ObfuscatedName("w") + @Export("valType") + public char valType; + @ObfuscatedName("o") + @Export("defaultString") + public String defaultString; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1948115527 + ) + @Export("defaultInt") + public int defaultInt; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -12324053 + ) + @Export("size0") + public int size0; + @ObfuscatedName("l") + @Export("keys") + public int[] keys; + @ObfuscatedName("e") + @Export("intVals") + public int[] intVals; + @ObfuscatedName("x") + @Export("stringVals") + public String[] stringVals; + + static { + EnumDefinition_cached = new EvictingDualNodeHashTable(64); + } + + EnumDefinition() { + this.defaultString = "null"; + this.size0 = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-230039710" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-1255400805" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.keyType = (char)var1.readUnsignedByte(); + } else if(var2 == 2) { + this.valType = (char)var1.readUnsignedByte(); + } else if(var2 == 3) { + this.defaultString = var1.readStringCp1252NullTerminated(); + } else if(var2 == 4) { + this.defaultInt = var1.readInt(); + } else { + int var3; + if(var2 == 5) { + this.size0 = var1.__ag_302(); + this.keys = new int[this.size0]; + this.stringVals = new String[this.size0]; + + for(var3 = 0; var3 < this.size0; ++var3) { + this.keys[var3] = var1.readInt(); + this.stringVals[var3] = var1.readStringCp1252NullTerminated(); + } + } else if(var2 == 6) { + this.size0 = var1.__ag_302(); + this.keys = new int[this.size0]; + this.intVals = new int[this.size0]; + + for(var3 = 0; var3 < this.size0; ++var3) { + this.keys[var3] = var1.readInt(); + this.intVals[var3] = var1.readInt(); + } + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "1" + ) + @Export("size") + public int size() { + return this.size0; + } +} diff --git a/rs-client/src/main/java/Enumerated.java b/rs-client/src/main/java/Enumerated.java new file mode 100644 index 0000000000..9667cfd0d9 --- /dev/null +++ b/rs-client/src/main/java/Enumerated.java @@ -0,0 +1,14 @@ +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gc") +@Implements("Enumerated") +public interface Enumerated { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + int rsOrdinal(); +} diff --git a/rs-client/src/main/java/EvictingDualNodeHashTable.java b/rs-client/src/main/java/EvictingDualNodeHashTable.java new file mode 100644 index 0000000000..0201ac4f50 --- /dev/null +++ b/rs-client/src/main/java/EvictingDualNodeHashTable.java @@ -0,0 +1,105 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("er") +@Implements("EvictingDualNodeHashTable") +public final class EvictingDualNodeHashTable { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("__m") + DualNode __m; + @ObfuscatedName("f") + @Export("capacity") + int capacity; + @ObfuscatedName("q") + @Export("remainingCapacity") + int remainingCapacity; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("hashTable") + NodeHashTable hashTable; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Ljp;" + ) + @Export("deque") + DualNodeDeque deque; + + public EvictingDualNodeHashTable(int var1) { + this.__m = new DualNode(); + this.deque = new DualNodeDeque(); + this.capacity = var1; + this.remainingCapacity = var1; + + int var2; + for(var2 = 1; var2 + var2 < var1; var2 += var2) { + ; + } + + this.hashTable = new NodeHashTable(var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(J)Lfn;" + ) + @Export("get") + public DualNode get(long var1) { + DualNode var3 = (DualNode)this.hashTable.get(var1); + if(var3 != null) { + this.deque.addFirst(var3); + } + + return var3; + } + + @ObfuscatedName("f") + @Export("remove") + public void remove(long var1) { + DualNode var3 = (DualNode)this.hashTable.get(var1); + if(var3 != null) { + var3.remove(); + var3.removeDual(); + ++this.remainingCapacity; + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lfn;J)V" + ) + @Export("put") + public void put(DualNode var1, long var2) { + if(this.remainingCapacity == 0) { + DualNode var4 = this.deque.removeLast(); + var4.remove(); + var4.removeDual(); + if(var4 == this.__m) { + var4 = this.deque.removeLast(); + var4.remove(); + var4.removeDual(); + } + } else { + --this.remainingCapacity; + } + + this.hashTable.put(var1, var2); + this.deque.addFirst(var1); + } + + @ObfuscatedName("w") + @Export("clear") + public void clear() { + this.deque.clear(); + this.hashTable.clear(); + this.__m = new DualNode(); + this.remainingCapacity = this.capacity; + } +} diff --git a/rs-client/src/main/java/FaceNormal.java b/rs-client/src/main/java/FaceNormal.java new file mode 100644 index 0000000000..c301844a78 --- /dev/null +++ b/rs-client/src/main/java/FaceNormal.java @@ -0,0 +1,121 @@ +import java.applet.Applet; +import java.net.URL; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; +import netscape.javascript.JSObject; + +@ObfuscatedName("el") +@Implements("FaceNormal") +public class FaceNormal { + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 422473713 + ) + @Export("__el_x") + public static int __el_x; + @ObfuscatedName("gm") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("__el_gm") + static Sprite __el_gm; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -2074333261 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1376860893 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 2619977 + ) + @Export("__q") + int __q; + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIII)Lcg;", + garbageValue = "-1788849120" + ) + static Script method3236(int var0, int var1, int var2) { + int var3 = UnitPriceComparator.method125(var1, var0); + Script var4 = WidgetGroupParent.method1175(var3, var0); + if(var4 != null) { + return var4; + } else { + var3 = PacketBuffer.method4081(var2, var0); + var4 = WidgetGroupParent.method1175(var3, var0); + return var4 != null?var4:null; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;ILjava/lang/String;I)Z", + garbageValue = "-1495992318" + ) + static boolean method3237(String var0, int var1, String var2) { + if(var1 == 0) { + try { + if(!class50.__af_f.startsWith("win")) { + throw new Exception(); + } else if(!var0.startsWith("http://") && !var0.startsWith("https://")) { + throw new Exception(); + } else { + String var13 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*"; + + for(int var4 = 0; var4 < var0.length(); ++var4) { + if(var13.indexOf(var0.charAt(var4)) == -1) { + throw new Exception(); + } + } + + Runtime.getRuntime().exec("cmd /c start \"j\" \"" + var0 + "\""); + return true; + } + } catch (Throwable var8) { + return false; + } + } else if(var1 == 1) { + try { + Applet var7 = class50.__af_m; + Object[] var5 = new Object[]{(new URL(class50.__af_m.getCodeBase(), var0)).toString()}; + Object var3 = JSObject.getWindow(var7).call(var2, var5); + return var3 != null; + } catch (Throwable var9) { + return false; + } + } else if(var1 == 2) { + try { + class50.__af_m.getAppletContext().showDocument(new URL(class50.__af_m.getCodeBase(), var0), "_blank"); + return true; + } catch (Exception var10) { + return false; + } + } else if(var1 == 3) { + try { + class46.method851(class50.__af_m, "loggedout"); + } catch (Throwable var12) { + ; + } + + try { + class50.__af_m.getAppletContext().showDocument(new URL(class50.__af_m.getCodeBase(), var0), "_top"); + return true; + } catch (Exception var11) { + return false; + } + } else { + throw new IllegalArgumentException(); + } + } +} diff --git a/rs-client/src/main/java/FloorDecoration.java b/rs-client/src/main/java/FloorDecoration.java new file mode 100644 index 0000000000..da05438d44 --- /dev/null +++ b/rs-client/src/main/java/FloorDecoration.java @@ -0,0 +1,117 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("do") +@Implements("FloorDecoration") +public final class FloorDecoration { + @ObfuscatedName("sm") + @ObfuscatedSignature( + signature = "Lg;" + ) + @Export("grandExchangeEvents") + static GrandExchangeEvents grandExchangeEvents; + @ObfuscatedName("my") + @ObfuscatedGetter( + intValue = -1344682613 + ) + @Export("selectedSpellFlags") + static int selectedSpellFlags; + @ObfuscatedName("m") + @ObfuscatedGetter( + longValue = -5063688075016130813L + ) + @Export("tag") + public long tag; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1358154703 + ) + @Export("tileHeight") + int tileHeight; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1309467119 + ) + @Export("x") + int x; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 318503957 + ) + @Export("y") + int y; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("entity") + public Entity entity; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1241982749 + ) + @Export("flags") + int flags; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Lir;I)I", + garbageValue = "-1749538901" + ) + static int method2853(AbstractIndexCache var0, AbstractIndexCache var1) { + int var2 = 0; + if(var0.tryLoadRecordByNames("title.jpg", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("logo", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("logo_deadman_mode", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("titlebox", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("titlebutton", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("runes", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("title_mute", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("options_radio_buttons,0", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("options_radio_buttons,2", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("options_radio_buttons,4", "")) { + ++var2; + } + + if(var1.tryLoadRecordByNames("options_radio_buttons,6", "")) { + ++var2; + } + + var1.tryLoadRecordByNames("sl_back", ""); + var1.tryLoadRecordByNames("sl_flags", ""); + var1.tryLoadRecordByNames("sl_arrows", ""); + var1.tryLoadRecordByNames("sl_stars", ""); + var1.tryLoadRecordByNames("sl_button", ""); + return var2; + } +} diff --git a/rs-client/src/main/java/Font.java b/rs-client/src/main/java/Font.java new file mode 100644 index 0000000000..57d955d98c --- /dev/null +++ b/rs-client/src/main/java/Font.java @@ -0,0 +1,96 @@ +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("kk") +@Implements("Font") +public final class Font extends AbstractFont { + public Font(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5, int[] var6, byte[][] var7) { + super(var1, var2, var3, var4, var5, var6, var7); + } + + public Font(byte[] var1) { + super(var1); + } + + @ObfuscatedName("m") + final void drawGlyph(byte[] var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = var3 * Rasterizer2D.Rasterizer2D_width + var2; + int var8 = Rasterizer2D.Rasterizer2D_width - var4; + int var9 = 0; + int var10 = 0; + int var11; + if(var3 < Rasterizer2D.Rasterizer2D_yClipStart) { + var11 = Rasterizer2D.Rasterizer2D_yClipStart - var3; + var5 -= var11; + var3 = Rasterizer2D.Rasterizer2D_yClipStart; + var10 += var11 * var4; + var7 += var11 * Rasterizer2D.Rasterizer2D_width; + } + + if(var3 + var5 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var5 -= var3 + var5 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var2 < Rasterizer2D.Rasterizer2D_xClipStart) { + var11 = Rasterizer2D.Rasterizer2D_xClipStart - var2; + var4 -= var11; + var2 = Rasterizer2D.Rasterizer2D_xClipStart; + var10 += var11; + var7 += var11; + var9 += var11; + var8 += var11; + } + + if(var2 + var4 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var11 = var2 + var4 - Rasterizer2D.Rasterizer2D_xClipEnd; + var4 -= var11; + var9 += var11; + var8 += var11; + } + + if(var4 > 0 && var5 > 0) { + AbstractFont.AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var1, var6, var10, var7, var4, var5, var8, var9); + } + } + + @ObfuscatedName("f") + final void drawGlyphAlpha(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + int var8 = var3 * Rasterizer2D.Rasterizer2D_width + var2; + int var9 = Rasterizer2D.Rasterizer2D_width - var4; + int var10 = 0; + int var11 = 0; + int var12; + if(var3 < Rasterizer2D.Rasterizer2D_yClipStart) { + var12 = Rasterizer2D.Rasterizer2D_yClipStart - var3; + var5 -= var12; + var3 = Rasterizer2D.Rasterizer2D_yClipStart; + var11 += var12 * var4; + var8 += var12 * Rasterizer2D.Rasterizer2D_width; + } + + if(var3 + var5 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var5 -= var3 + var5 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var2 < Rasterizer2D.Rasterizer2D_xClipStart) { + var12 = Rasterizer2D.Rasterizer2D_xClipStart - var2; + var4 -= var12; + var2 = Rasterizer2D.Rasterizer2D_xClipStart; + var11 += var12; + var8 += var12; + var10 += var12; + var9 += var12; + } + + if(var2 + var4 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var12 = var2 + var4 - Rasterizer2D.Rasterizer2D_xClipEnd; + var4 -= var12; + var10 += var12; + var9 += var12; + } + + if(var4 > 0 && var5 > 0) { + AbstractFont.AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, var11, var8, var4, var5, var9, var10, var7); + } + } +} diff --git a/rs-client/src/main/java/FontName.java b/rs-client/src/main/java/FontName.java new file mode 100644 index 0000000000..621620cf0b --- /dev/null +++ b/rs-client/src/main/java/FontName.java @@ -0,0 +1,588 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kx") +@Implements("FontName") +public class FontName { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("FontName_plain11") + public static final FontName FontName_plain11; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("FontName_plain12") + public static final FontName FontName_plain12; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("FontName_bold12") + public static final FontName FontName_bold12; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("FontName_verdana11") + public static final FontName FontName_verdana11; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("FontName_verdana13") + public static final FontName FontName_verdana13; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("FontName_verdana15") + public static final FontName FontName_verdana15; + @ObfuscatedName("g") + @Export("__g") + String __g; + + static { + FontName_plain11 = new FontName("p11_full"); + FontName_plain12 = new FontName("p12_full"); + FontName_bold12 = new FontName("b12_full"); + FontName_verdana11 = new FontName("verdana_11pt_regular"); + FontName_verdana13 = new FontName("verdana_13pt_regular"); + FontName_verdana15 = new FontName("verdana_15pt_regular"); + } + + FontName(String var1) { + this.__g = var1; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IIIZII)J", + garbageValue = "1039369805" + ) + public static long method5637(int var0, int var1, int var2, boolean var3, int var4) { + long var5 = (long)((var0 & 127) << 0 | (var1 & 127) << 7 | (var2 & 3) << 14) | ((long)var4 & 4294967295L) << 17; + if(var3) { + var5 |= 65536L; + } + + return var5; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1587423260" + ) + static void method5636() { + Login.__cu_bk = false; + Login.__cu_g.drawAt(Login.__cu_q, 0); + Fonts.__kz_l.drawAt(Login.__cu_q + 382, 0); + WorldMapSectionType.__h_e.__q_496(Login.__cu_q + 382 - WorldMapSectionType.__h_e.subWidth / 2, 18); + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;II)V", + garbageValue = "-871458249" + ) + static final void method5638(String var0, int var1) { + PacketBufferNode var2 = Interpreter.method1915(ClientPacket.__gs_bw, Client.packetWriter.isaacCipher); + var2.packetBuffer.writeByte(WorldMapRegion.method550(var0) + 1); + var2.packetBuffer.writeStringCp1252NullTerminated(var0); + var2.packetBuffer.writeByte(var1); + Client.packetWriter.__q_167(var2); + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-1336396061" + ) + static int method5639(int var0, Script var1, boolean var2) { + if(var0 == 3600) { + if(WorldMapArea.friendSystem.__g == 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -2; + } else if(WorldMapArea.friendSystem.__g == 1) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.friendsList.size(); + } + + return 1; + } else { + int var3; + if(var0 == 3601) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(WorldMapArea.friendSystem.__m_151() && var3 >= 0 && var3 < WorldMapArea.friendSystem.friendsList.size()) { + Friend var8 = (Friend)WorldMapArea.friendSystem.friendsList.get(var3); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var8.name(); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var8.previousName(); + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 3602) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(WorldMapArea.friendSystem.__m_151() && var3 >= 0 && var3 < WorldMapArea.friendSystem.friendsList.size()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ((Buddy)WorldMapArea.friendSystem.friendsList.get(var3)).world0; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3603) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(WorldMapArea.friendSystem.__m_151() && var3 >= 0 && var3 < WorldMapArea.friendSystem.friendsList.size()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ((Buddy)WorldMapArea.friendSystem.friendsList.get(var3)).rank; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else { + String var5; + if(var0 == 3604) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + int var6 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + method5638(var5, var6); + return 1; + } else if(var0 == 3605) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + WorldMapArea.friendSystem.__l_157(var5); + return 1; + } else if(var0 == 3606) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + WorldMapArea.friendSystem.removeFriend(var5); + return 1; + } else if(var0 == 3607) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + WorldMapArea.friendSystem.__x_159(var5); + return 1; + } else if(var0 == 3608) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + WorldMapArea.friendSystem.removeIgnore(var5); + return 1; + } else if(var0 == 3609) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var5 = NpcDefinition.method5161(var5); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.isFriended(new Username(var5, KeyHandler.loginType), false)?1:0; + return 1; + } else if(var0 == 3611) { + if(PacketWriter.clanChat != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = PacketWriter.clanChat.name; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 3612) { + if(PacketWriter.clanChat != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = PacketWriter.clanChat.size(); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3613) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(PacketWriter.clanChat != null && var3 < PacketWriter.clanChat.size()) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = PacketWriter.clanChat.get(var3).username().getName(); + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 3614) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(PacketWriter.clanChat != null && var3 < PacketWriter.clanChat.size()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ((Buddy)PacketWriter.clanChat.get(var3)).world(); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3615) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(PacketWriter.clanChat != null && var3 < PacketWriter.clanChat.size()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ((Buddy)PacketWriter.clanChat.get(var3)).rank; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3616) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = PacketWriter.clanChat != null?PacketWriter.clanChat.__k:0; + return 1; + } else if(var0 == 3617) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + IndexStoreActionHandler.method4655(var5); + return 1; + } else if(var0 == 3618) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = PacketWriter.clanChat != null?PacketWriter.clanChat.rank:0; + return 1; + } else if(var0 == 3619) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + class31.method574(var5); + return 1; + } else if(var0 == 3620) { + class12.method158(); + return 1; + } else if(var0 == 3621) { + if(!WorldMapArea.friendSystem.__m_151()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.ignoreList.size(); + } + + return 1; + } else if(var0 == 3622) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(WorldMapArea.friendSystem.__m_151() && var3 >= 0 && var3 < WorldMapArea.friendSystem.ignoreList.size()) { + Ignored var4 = (Ignored)WorldMapArea.friendSystem.ignoreList.get(var3); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.name(); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.previousName(); + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 3623) { + var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var5 = NpcDefinition.method5161(var5); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.isIgnored(new Username(var5, KeyHandler.loginType))?1:0; + return 1; + } else if(var0 == 3624) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(PacketWriter.clanChat != null && var3 < PacketWriter.clanChat.size() && PacketWriter.clanChat.get(var3).username().__equals_466(Canvas.localPlayer.username)) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3625) { + if(PacketWriter.clanChat != null && PacketWriter.clanChat.owner != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = PacketWriter.clanChat.owner; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 3626) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(PacketWriter.clanChat != null && var3 < PacketWriter.clanChat.size() && ((ClanMate)PacketWriter.clanChat.get(var3)).isFriend()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 != 3627) { + if(var0 == 3628) { + WorldMapArea.friendSystem.friendsList.removeComparator(); + return 1; + } else { + boolean var7; + if(var0 == 3629) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator1(var7)); + return 1; + } else if(var0 == 3630) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator2(var7)); + return 1; + } else if(var0 == 3631) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator3(var7)); + return 1; + } else if(var0 == 3632) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator4(var7)); + return 1; + } else if(var0 == 3633) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator5(var7)); + return 1; + } else if(var0 == 3634) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator6(var7)); + return 1; + } else if(var0 == 3635) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator7(var7)); + return 1; + } else if(var0 == 3636) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator8(var7)); + return 1; + } else if(var0 == 3637) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator9(var7)); + return 1; + } else if(var0 == 3638) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator10(var7)); + return 1; + } else if(var0 == 3639) { + WorldMapArea.friendSystem.friendsList.sort(); + return 1; + } else if(var0 == 3640) { + WorldMapArea.friendSystem.ignoreList.removeComparator(); + return 1; + } else if(var0 == 3641) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.ignoreList.addComparator(new UserComparator1(var7)); + return 1; + } else if(var0 == 3642) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.ignoreList.addComparator(new UserComparator2(var7)); + return 1; + } else if(var0 == 3643) { + WorldMapArea.friendSystem.ignoreList.sort(); + return 1; + } else if(var0 == 3644) { + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.removeComparator(); + } + + return 1; + } else if(var0 == 3645) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator1(var7)); + } + + return 1; + } else if(var0 == 3646) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator2(var7)); + } + + return 1; + } else if(var0 == 3647) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator3(var7)); + } + + return 1; + } else if(var0 == 3648) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator4(var7)); + } + + return 1; + } else if(var0 == 3649) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator5(var7)); + } + + return 1; + } else if(var0 == 3650) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator6(var7)); + } + + return 1; + } else if(var0 == 3651) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator7(var7)); + } + + return 1; + } else if(var0 == 3652) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator8(var7)); + } + + return 1; + } else if(var0 == 3653) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator9(var7)); + } + + return 1; + } else if(var0 == 3654) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new UserComparator10(var7)); + } + + return 1; + } else if(var0 == 3655) { + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.sort(); + } + + return 1; + } else if(var0 == 3656) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapArea.friendSystem.friendsList.addComparator(new class157(var7)); + return 1; + } else if(var0 == 3657) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.addComparator(new class157(var7)); + } + + return 1; + } else { + return 2; + } + } + } else { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(PacketWriter.clanChat != null && var3 < PacketWriter.clanChat.size() && ((ClanMate)PacketWriter.clanChat.get(var3)).isIgnored()) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } + } + } + } + + @ObfuscatedName("fp") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1831101083" + ) + static final void method5641() { + class4.method55(); + Tile.method2867(); + DevicePcmPlayerProvider.method841(); + WorldMapManager.method673(); + WorldMapLabel.method440(); + class72.method1780(); + SequenceDefinition.SequenceDefinition_cached.clear(); + SequenceDefinition.__jh_o.clear(); + UserComparator3.method3379(); + VarbitDefinition.VarbitDefinition_cached.clear(); + VarpDefinition.VarpDefinition_cached.clear(); + GrandExchangeEvents.method69(); + Buffer.method3915(); + StructDefinition.__jq_f.clear(); + InvDefinition.method4754(); + Projectile.method2089(); + PlayerAppearance.PlayerAppearance_cachedModels.clear(); + class157.method3382(); + ((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).clear(); + Script.Script_cached.clear(); + AbstractIndexCache.indexCache0.__b_400(); + Skeleton.indexCache1.__b_400(); + WorldMapIcon1.indexCache3.__b_400(); + class25.indexCache4.__b_400(); + SecureRandomFuture.indexCache5.__b_400(); + UserComparator3.indexCache6.__b_400(); + class40.indexCache7.__b_400(); + WorldMapSection3.indexCache8.__b_400(); + class238.indexCache9.__b_400(); + class16.indexCache10.__b_400(); + Login.indexCache11.__b_400(); + Formatting.indexCache12.__b_400(); + } + + @ObfuscatedName("gg") + @ObfuscatedSignature( + signature = "(IIIIZI)V", + garbageValue = "-2003105831" + ) + @Export("setViewportShape") + static final void setViewportShape(int var0, int var1, int var2, int var3, boolean var4) { + if(var2 < 1) { + var2 = 1; + } + + if(var3 < 1) { + var3 = 1; + } + + int var5 = var3 - 334; + int var6; + if(var5 < 0) { + var6 = Client.__client_rw; + } else if(var5 >= 100) { + var6 = Client.__client_rm; + } else { + var6 = (Client.__client_rm - Client.__client_rw) * var5 / 100 + Client.__client_rw; + } + + int var7 = var3 * var6 * 512 / (var2 * 334); + int var8; + int var9; + short var10; + if(var7 < Client.__client_rs) { + var10 = Client.__client_rs; + var6 = var10 * var2 * 334 / (var3 * 512); + if(var6 > Client.__client_ri) { + var6 = Client.__client_ri; + var8 = var3 * var6 * 512 / (var10 * 334); + var9 = (var2 - var8) / 2; + if(var4) { + Rasterizer2D.Rasterizer2D_resetClip(); + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var9, var3, -16777216); + Rasterizer2D.Rasterizer2D_fillRectangle(var0 + var2 - var9, var1, var9, var3, -16777216); + } + + var0 += var9; + var2 -= var9 * 2; + } + } else if(var7 > Client.__client_rp) { + var10 = Client.__client_rp; + var6 = var10 * var2 * 334 / (var3 * 512); + if(var6 < Client.__client_rv) { + var6 = Client.__client_rv; + var8 = var10 * var2 * 334 / (var6 * 512); + var9 = (var3 - var8) / 2; + if(var4) { + Rasterizer2D.Rasterizer2D_resetClip(); + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var2, var9, -16777216); + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var3 + var1 - var9, var2, var9, -16777216); + } + + var1 += var9; + var3 -= var9 * 2; + } + } + + Client.viewportZoom = var3 * var6 / 334; + if(var2 != Client.viewportWidth || var3 != Client.viewportHeight) { + ScriptEvent.method1183(var2, var3); + } + + Client.viewportOffsetX = var0; + Client.viewportOffsetY = var1; + Client.viewportWidth = var2; + Client.viewportHeight = var3; + } + + @ObfuscatedName("km") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "51" + ) + static final void method5635() { + for(int var0 = 0; var0 < Players.Players_count; ++var0) { + Player var1 = Client.players[Players.Players_indices[var0]]; + var1.__u_128(); + } + + } +} diff --git a/rs-client/src/main/java/Fonts.java b/rs-client/src/main/java/Fonts.java new file mode 100644 index 0000000000..0da8788136 --- /dev/null +++ b/rs-client/src/main/java/Fonts.java @@ -0,0 +1,89 @@ +import java.util.HashMap; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kz") +@Implements("Fonts") +public class Fonts { + @ObfuscatedName("sc") + @ObfuscatedSignature( + signature = "Lff;" + ) + @Export("indexStore255") + static IndexStore indexStore255; + @ObfuscatedName("o") + @Export("__kz_o") + static byte[][][] __kz_o; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("__kz_l") + static Sprite __kz_l; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__m") + AbstractIndexCache __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__f") + AbstractIndexCache __f; + @ObfuscatedName("q") + @Export("map") + HashMap map; + + @ObfuscatedSignature( + signature = "(Lir;Lir;)V" + ) + public Fonts(AbstractIndexCache var1, AbstractIndexCache var2) { + this.__m = var1; + this.__f = var2; + this.map = new HashMap(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([Lkx;I)Ljava/util/HashMap;", + garbageValue = "-1683788995" + ) + @Export("createMap") + public HashMap createMap(FontName[] var1) { + HashMap var2 = new HashMap(); + FontName[] var3 = var1; + + for(int var4 = 0; var4 < var3.length; ++var4) { + FontName var5 = var3[var4]; + if(this.map.containsKey(var5)) { + var2.put(var5, this.map.get(var5)); + } else { + AbstractIndexCache var7 = this.__m; + AbstractIndexCache var8 = this.__f; + String var9 = var5.__g; + int var10 = var7.getArchiveId(var9); + int var11 = var7.getRecordId(var10, ""); + Font var6 = SpriteIds.method5823(var7, var8, var10, var11); + if(var6 != null) { + this.map.put(var5, var6); + var2.put(var5, var6); + } + } + } + + return var2; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)Lbt;", + garbageValue = "2102006478" + ) + static World method5647() { + return World.__bt_g < World.worldsCount?ItemContainer.worlds[++World.__bt_g - 1]:null; + } +} diff --git a/rs-client/src/main/java/Formatting.java b/rs-client/src/main/java/Formatting.java new file mode 100644 index 0000000000..7c021f1425 --- /dev/null +++ b/rs-client/src/main/java/Formatting.java @@ -0,0 +1,126 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cy") +@Implements("Formatting") +public class Formatting { + @ObfuscatedName("d") + @Export("__cy_d") + static int[] __cy_d; + @ObfuscatedName("dh") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache12") + static IndexCache indexCache12; + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "1654486766" + ) + static int method2023(int var0, Script var1, boolean var2) { + Widget var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + if(var0 == 1700) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.itemId; + return 1; + } else if(var0 == 1701) { + if(var3.itemId != -1) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.itemQuantity; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 1702) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.childIndex; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-162828509" + ) + static int method2022(int var0, Script var1, boolean var2) { + int var3; + int var4; + int var6; + if(var0 == 3400) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + EnumDefinition var5 = Interpreter.getEnum(var3); + if(var5.valType != 's') { + ; + } + + for(var6 = 0; var6 < var5.size0; ++var6) { + if(var4 == var5.keys[var6]) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var5.stringVals[var6]; + var5 = null; + break; + } + } + + if(var5 != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var5.defaultString; + } + + return 1; + } else if(var0 != 3408) { + if(var0 == 3411) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + EnumDefinition var10 = Interpreter.getEnum(var3); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var10.size(); + return 1; + } else { + return 2; + } + } else { + class179.Interpreter_intStackSize -= 4; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + int var9 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + var6 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + EnumDefinition var7 = Interpreter.getEnum(var9); + if(var3 == var7.keyType && var4 == var7.valType) { + for(int var8 = 0; var8 < var7.size0; ++var8) { + if(var6 == var7.keys[var8]) { + if(var4 == 115) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var7.stringVals[var8]; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var7.intVals[var8]; + } + + var7 = null; + break; + } + } + + if(var7 != null) { + if(var4 == 115) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var7.defaultString; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var7.defaultInt; + } + } + + return 1; + } else { + if(var4 == 115) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = "null"; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } + } + } +} diff --git a/rs-client/src/main/java/Frames.java b/rs-client/src/main/java/Frames.java new file mode 100644 index 0000000000..30895668fb --- /dev/null +++ b/rs-client/src/main/java/Frames.java @@ -0,0 +1,90 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("en") +@Implements("Frames") +public class Frames extends DualNode { + @ObfuscatedName("o") + @Export("IndexStoreActionHandler_thread") + static Thread IndexStoreActionHandler_thread; + @ObfuscatedName("bc") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("__en_bc") + static IndexedSprite[] __en_bc; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "[Ldz;" + ) + @Export("frames") + Animation[] frames; + + @ObfuscatedSignature( + signature = "(Lir;Lir;IZ)V", + garbageValue = "0" + ) + public Frames(AbstractIndexCache var1, AbstractIndexCache var2, int var3, boolean var4) { + NodeDeque var5 = new NodeDeque(); + int var6 = var1.__s_396(var3); + this.frames = new Animation[var6]; + int[] var7 = var1.__j_395(var3); + + for(int var8 = 0; var8 < var7.length; ++var8) { + byte[] var9 = var1.takeRecord(var3, var7[var8]); + Skeleton var10 = null; + int var11 = (var9[0] & 255) << 8 | var9[1] & 255; + + for(Skeleton var12 = (Skeleton)var5.last(); var12 != null; var12 = (Skeleton)var5.previous()) { + if(var11 == var12.id) { + var10 = var12; + break; + } + } + + if(var10 == null) { + byte[] var13 = var2.getRecord(var11, 0); + var10 = new Skeleton(var11, var13); + var5.addFirst(var10); + } + + this.frames[var7[var8]] = new Animation(var9, var10); + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1018278334" + ) + @Export("hasAlphaTransform") + public boolean hasAlphaTransform(int var1) { + return this.frames[var1].hasAlphaTransform; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;I)V", + garbageValue = "1204337492" + ) + public static void method3241(AbstractIndexCache var0) { + VarcInt.__iw_m = var0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Llh;ILjava/lang/String;I)Ljava/lang/String;", + garbageValue = "1776656760" + ) + static String method3238(IterableNodeHashTable var0, int var1, String var2) { + if(var0 == null) { + return var2; + } else { + ObjectNode var3 = (ObjectNode)var0.get((long)var1); + return var3 == null?var2:(String)var3.obj; + } + } +} diff --git a/rs-client/src/main/java/Friend.java b/rs-client/src/main/java/Friend.java new file mode 100644 index 0000000000..7fb5401ec7 --- /dev/null +++ b/rs-client/src/main/java/Friend.java @@ -0,0 +1,43 @@ +import java.util.concurrent.ScheduledExecutorService; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kq") +@Implements("Friend") +public class Friend extends Buddy { + @ObfuscatedName("l") + @Export("soundSystemExecutor") + static ScheduledExecutorService soundSystemExecutor; + @ObfuscatedName("m") + @Export("__m") + boolean __m; + @ObfuscatedName("f") + @Export("__f") + boolean __f; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lkq;I)I", + garbageValue = "-1559116693" + ) + @Export("compareTo00") + int compareTo00(Friend var1) { + return super.world0 == Client.worldId && Client.worldId != var1.world0?-1:(Client.worldId == var1.world0 && super.world0 != Client.worldId?1:(super.world0 != 0 && var1.world0 == 0?-1:(var1.world0 != 0 && super.world0 == 0?1:(this.__m && !var1.__m?-1:(!this.__m && var1.__m?1:(this.__f && !var1.__f?-1:(!this.__f && var1.__f?1:(super.world0 != 0?super.int2 - var1.int2:var1.int2 - super.int2)))))))); + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(Ljs;I)I", + garbageValue = "1627362569" + ) + public int compareTo0(User var1) { + return this.compareTo00((Friend)var1); + } + + @ObfuscatedName("compareTo") + public int compareTo(Object var1) { + return this.compareTo00((Friend)var1); + } +} diff --git a/rs-client/src/main/java/FriendLoginUpdate.java b/rs-client/src/main/java/FriendLoginUpdate.java new file mode 100644 index 0000000000..950f6b6589 --- /dev/null +++ b/rs-client/src/main/java/FriendLoginUpdate.java @@ -0,0 +1,40 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kn") +@Implements("FriendLoginUpdate") +public class FriendLoginUpdate extends Link { + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Ley;" + ) + @Export("__kn_x") + static UrlRequest __kn_x; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1390885889 + ) + @Export("time") + public int time; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lkp;" + ) + @Export("username") + public Username username; + @ObfuscatedName("o") + @Export("world") + public short world; + + @ObfuscatedSignature( + signature = "(Lkp;I)V" + ) + FriendLoginUpdate(Username var1, int var2) { + this.time = (int)(class203.currentTimeMs() / 1000L); + this.username = var1; + this.world = (short)var2; + } +} diff --git a/rs-client/src/main/java/FriendSystem.java b/rs-client/src/main/java/FriendSystem.java new file mode 100644 index 0000000000..0f02e5ef71 --- /dev/null +++ b/rs-client/src/main/java/FriendSystem.java @@ -0,0 +1,333 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bh") +@Implements("FriendSystem") +public class FriendSystem { + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("loginType") + final LoginType loginType; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lkg;" + ) + @Export("friendsList") + public final FriendsList friendsList; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lkj;" + ) + @Export("ignoreList") + public final IgnoreList ignoreList; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1477282369 + ) + @Export("__g") + int __g; + + @ObfuscatedSignature( + signature = "(Llx;)V" + ) + FriendSystem(LoginType var1) { + this.__g = 0; + this.loginType = var1; + this.friendsList = new FriendsList(var1); + this.ignoreList = new IgnoreList(var1); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "-114" + ) + @Export("__m_151") + boolean __m_151() { + return this.__g == 2; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2125539725" + ) + @Export("__f_152") + final void __f_152() { + this.__g = 1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-1440726810" + ) + @Export("__q_153") + final void __q_153(Buffer var1, int var2) { + this.friendsList.read(var1, var2); + this.__g = 2; + GrandExchangeOffer.method121(); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1408945788" + ) + @Export("__w_154") + final void __w_154() { + for(FriendLoginUpdate var1 = (FriendLoginUpdate)this.friendsList.friendLoginUpdates.__f_438(); var1 != null; var1 = (FriendLoginUpdate)this.friendsList.friendLoginUpdates.__q_439()) { + if((long)var1.time < class203.currentTimeMs() / 1000L - 5L) { + if(var1.world > 0) { + WorldMapIcon1.method219(5, "", var1.username + " has logged in."); + } + + if(var1.world == 0) { + WorldMapIcon1.method219(5, "", var1.username + " has logged out."); + } + + var1.remove(); + } + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1170844364" + ) + @Export("clear") + final void clear() { + this.__g = 0; + this.friendsList.clear(); + this.ignoreList.clear(); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lkp;ZI)Z", + garbageValue = "2057092629" + ) + @Export("isFriended") + final boolean isFriended(Username var1, boolean var2) { + return var1 != null && (var1.__equals_466(Canvas.localPlayer.username) || this.friendsList.isFriended(var1, var2)); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Lkp;I)Z", + garbageValue = "1482725020" + ) + @Export("isIgnored") + final boolean isIgnored(Username var1) { + return var1 != null && this.ignoreList.contains(var1); + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "-1721017960" + ) + @Export("__l_157") + final void __l_157(String var1) { + if(var1 != null) { + Username var2 = new Username(var1, this.loginType); + if(var2.hasCleanName()) { + StringBuilder var10000; + String var4; + if(this.__e_158()) { + var10000 = null; + var4 = "Your friend list is full. Max of 200 for free users, and 400 for members"; + WorldMapIcon1.method219(30, "", var4); + } else if(Canvas.localPlayer.username.__equals_466(var2)) { + var10000 = null; + var4 = "You can\'t add yourself to your own friend list"; + WorldMapIcon1.method219(30, "", var4); + } else { + Object var10001; + if(this.isFriended(var2, false)) { + var10000 = (new StringBuilder()).append(var1); + var10001 = null; + var4 = var10000.append(" is already on your friend list").toString(); + WorldMapIcon1.method219(30, "", var4); + } else if(this.isIgnored(var2)) { + var10000 = new StringBuilder(); + var10001 = null; + var10000 = var10000.append("Please remove ").append(var1); + var10001 = null; + var4 = var10000.append(" from your ignore list first").toString(); + WorldMapIcon1.method219(30, "", var4); + } else { + PacketBufferNode var3 = Interpreter.method1915(ClientPacket.__gs_cn, Client.packetWriter.isaacCipher); + var3.packetBuffer.writeByte(WorldMapRegion.method550(var1)); + var3.packetBuffer.writeStringCp1252NullTerminated(var1); + Client.packetWriter.__q_167(var3); + } + } + } + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "57" + ) + @Export("__e_158") + final boolean __e_158() { + return this.friendsList.isFull() || this.friendsList.size() >= 200 && Client.__client_jo != 1; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "30" + ) + @Export("__x_159") + final void __x_159(String var1) { + if(var1 != null) { + Username var2 = new Username(var1, this.loginType); + if(var2.hasCleanName()) { + StringBuilder var10000; + String var4; + if(this.__a_160()) { + var10000 = null; + var4 = "Your ignore list is full. Max of 100 for free users, and 400 for members"; + WorldMapIcon1.method219(30, "", var4); + } else if(Canvas.localPlayer.username.__equals_466(var2)) { + var10000 = null; + var4 = "You can\'t add yourself to your own ignore list"; + WorldMapIcon1.method219(30, "", var4); + } else if(this.isIgnored(var2)) { + class22.method294(var1); + } else if(this.isFriended(var2, false)) { + var10000 = new StringBuilder(); + Object var10001 = null; + var10000 = var10000.append("Please remove ").append(var1); + var10001 = null; + var4 = var10000.append(" from your friend list first").toString(); + WorldMapIcon1.method219(30, "", var4); + } else { + PacketBufferNode var3 = Interpreter.method1915(ClientPacket.__gs_ch, Client.packetWriter.isaacCipher); + var3.packetBuffer.writeByte(WorldMapRegion.method550(var1)); + var3.packetBuffer.writeStringCp1252NullTerminated(var1); + Client.packetWriter.__q_167(var3); + } + } + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "120" + ) + @Export("__a_160") + final boolean __a_160() { + return this.ignoreList.isFull() || this.ignoreList.size() >= 100 && Client.__client_jo != 1; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "-2122207917" + ) + @Export("removeFriend") + final void removeFriend(String var1) { + if(var1 != null) { + Username var2 = new Username(var1, this.loginType); + if(var2.hasCleanName()) { + if(this.friendsList.removeByUsername(var2)) { + WorldMapManager.method668(); + PacketBufferNode var3 = Interpreter.method1915(ClientPacket.__gs_bs, Client.packetWriter.isaacCipher); + var3.packetBuffer.writeByte(WorldMapRegion.method550(var1)); + var3.packetBuffer.writeStringCp1252NullTerminated(var1); + Client.packetWriter.__q_167(var3); + } + + GrandExchangeOffer.method121(); + } + } + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "-1673636127" + ) + @Export("removeIgnore") + final void removeIgnore(String var1) { + if(var1 != null) { + Username var2 = new Username(var1, this.loginType); + if(var2.hasCleanName()) { + if(this.ignoreList.removeByUsername(var2)) { + WorldMapManager.method668(); + PacketBufferNode var3 = Interpreter.method1915(ClientPacket.__gs_aj, Client.packetWriter.isaacCipher); + var3.packetBuffer.writeByte(WorldMapRegion.method550(var1)); + var3.packetBuffer.writeStringCp1252NullTerminated(var1); + Client.packetWriter.__q_167(var3); + } + + class229.method4512(); + } + } + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(Lkp;S)Z", + garbageValue = "-543" + ) + @Export("__t_161") + final boolean __t_161(Username var1) { + Friend var2 = (Friend)this.friendsList.getByUsername(var1); + return var2 != null && var2.hasWorld(); + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "866157286" + ) + static int method1867(int var0, Script var1, boolean var2) { + Widget var3; + if(var0 >= 2000) { + var0 -= 1000; + var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + } else { + var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + } + + if(var0 == 1927) { + if(Interpreter.__bv_y >= 10) { + throw new RuntimeException(); + } else if(var3.__ee == null) { + return 0; + } else { + ScriptEvent var4 = new ScriptEvent(); + var4.widget = var3; + var4.args0 = var3.__ee; + var4.__d = Interpreter.__bv_y + 1; + Client.scriptEvents.addFirst(var4); + return 1; + } + } else { + return 2; + } + } + + @ObfuscatedName("kb") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "0" + ) + public static boolean method1868() { + return Client.rights >= 2; + } +} diff --git a/rs-client/src/main/java/FriendsList.java b/rs-client/src/main/java/FriendsList.java new file mode 100644 index 0000000000..dd2ac0d342 --- /dev/null +++ b/rs-client/src/main/java/FriendsList.java @@ -0,0 +1,156 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kg") +@Implements("FriendsList") +public class FriendsList extends UserList { + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("loginType") + final LoginType loginType; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -217526077 + ) + @Export("__x") + int __x; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Ljy;" + ) + @Export("friendLoginUpdates") + public LinkDeque friendLoginUpdates; + + @ObfuscatedSignature( + signature = "(Llx;)V" + ) + public FriendsList(LoginType var1) { + super(400); + this.__x = 1; + this.friendLoginUpdates = new LinkDeque(); + this.loginType = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljs;", + garbageValue = "-2063112195" + ) + User newInstance() { + return new Friend(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)[Ljs;", + garbageValue = "861814350" + ) + User[] newTypedArray(int var1) { + return new Friend[var1]; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lkp;ZI)Z", + garbageValue = "1557073132" + ) + @Export("isFriended") + public boolean isFriended(Username var1, boolean var2) { + Friend var3 = (Friend)this.getByUsername(var1); + return var3 != null && (!var2 || var3.world0 != 0); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Lgr;IB)V", + garbageValue = "-11" + ) + @Export("read") + public void read(Buffer var1, int var2) { + while(true) { + if(var1.index < var2) { + boolean var3 = var1.readUnsignedByte() == 1; + Username var4 = new Username(var1.readStringCp1252NullTerminated(), this.loginType); + Username var5 = new Username(var1.readStringCp1252NullTerminated(), this.loginType); + int var6 = var1.__ag_302(); + int var7 = var1.readUnsignedByte(); + int var8 = var1.readUnsignedByte(); + boolean var9 = (var8 & 2) != 0; + boolean var10 = (var8 & 1) != 0; + if(var6 > 0) { + var1.readStringCp1252NullTerminated(); + var1.readUnsignedByte(); + var1.readInt(); + } + + var1.readStringCp1252NullTerminated(); + if(var4 != null && var4.hasCleanName()) { + Friend var11 = (Friend)this.getByCurrentUsername(var4); + if(var3) { + Friend var12 = (Friend)this.getByCurrentUsername(var5); + if(var12 != null && var12 != var11) { + if(var11 != null) { + this.remove(var12); + } else { + var11 = var12; + } + } + } + + if(var11 != null) { + this.changeName(var11, var4, var5); + if(var6 != var11.world0) { + boolean var14 = true; + + for(FriendLoginUpdate var13 = (FriendLoginUpdate)this.friendLoginUpdates.__f_438(); var13 != null; var13 = (FriendLoginUpdate)this.friendLoginUpdates.__q_439()) { + if(var13.username.__equals_466(var4)) { + if(var6 != 0 && var13.world == 0) { + var13.remove(); + var14 = false; + } else if(var6 == 0 && var13.world != 0) { + var13.remove(); + var14 = false; + } + } + } + + if(var14) { + this.friendLoginUpdates.__m_437(new FriendLoginUpdate(var4, var6)); + } + } + } else { + if(this.size() >= 400) { + continue; + } + + var11 = (Friend)this.addLast(var4, var5); + } + + if(var6 != var11.world0) { + var11.int2 = ++this.__x - 1; + if(var11.world0 == -1 && var6 == 0) { + var11.int2 = -(var11.int2 * -1377538447) * 120689297; + } + + var11.world0 = var6; + } + + var11.rank = var7; + var11.__m = var9; + var11.__f = var10; + continue; + } + + throw new IllegalStateException(); + } + + this.sort(); + return; + } + } +} diff --git a/rs-client/src/main/java/GameObject.java b/rs-client/src/main/java/GameObject.java new file mode 100644 index 0000000000..85f50711d9 --- /dev/null +++ b/rs-client/src/main/java/GameObject.java @@ -0,0 +1,111 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("eh") +@Implements("GameObject") +public final class GameObject { + @ObfuscatedName("ds") + @ObfuscatedGetter( + longValue = -6104270600047501055L + ) + @Export("js5StartTimeMs") + static long js5StartTimeMs; + @ObfuscatedName("fy") + @ObfuscatedGetter( + intValue = -457229589 + ) + @Export("__eh_fy") + static int __eh_fy; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1393658667 + ) + @Export("orientation") + int orientation; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 2095667225 + ) + @Export("plane") + int plane; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1791908691 + ) + @Export("height") + int height; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 109300811 + ) + @Export("centerX") + int centerX; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 714046631 + ) + @Export("centerY") + int centerY; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("entity") + public Entity entity; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1017836867 + ) + @Export("startX") + int startX; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -379698951 + ) + @Export("endX") + int endX; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1519796265 + ) + @Export("startY") + int startY; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -607228629 + ) + @Export("endY") + int endY; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 1941106389 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -1043687633 + ) + @Export("lastDrawn") + int lastDrawn; + @ObfuscatedName("n") + @ObfuscatedGetter( + longValue = -114546124748632877L + ) + @Export("tag") + public long tag; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -161115901 + ) + @Export("flags") + int flags; + + GameObject() { + this.tag = 0L; + this.flags = 0; + } +} diff --git a/rs-client/src/main/java/GameShell.java b/rs-client/src/main/java/GameShell.java new file mode 100644 index 0000000000..0fb0767d13 --- /dev/null +++ b/rs-client/src/main/java/GameShell.java @@ -0,0 +1,1132 @@ +import java.applet.Applet; +import java.awt.Color; +import java.awt.Container; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.LayoutManager; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.StringSelection; +import java.awt.event.ActionEvent; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import java.awt.image.ImageObserver; +import java.net.URL; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ba") +@Implements("GameShell") +public abstract class GameShell extends Applet implements Runnable, FocusListener, WindowListener { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfz;" + ) + @Export("taskHandler") + protected static TaskHandler taskHandler; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lba;" + ) + @Export("gameShell") + static GameShell gameShell; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -281664295 + ) + @Export("__ba_q") + static int __ba_q; + @ObfuscatedName("o") + @ObfuscatedGetter( + longValue = 5666519919949401915L + ) + @Export("stopTimeMs") + static long stopTimeMs; + @ObfuscatedName("u") + @Export("isKilled") + static boolean isKilled; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1179083285 + ) + @Export("__ba_l") + static int __ba_l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1698831905 + ) + @Export("__ba_e") + static int __ba_e; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 425367827 + ) + @Export("__ba_d") + static int __ba_d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 1789653893 + ) + @Export("fps") + protected static int fps; + @ObfuscatedName("a") + @Export("__ba_a") + static long[] __ba_a; + @ObfuscatedName("j") + @Export("__ba_j") + static long[] __ba_j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = -2078849253 + ) + @Export("__ba_s") + static int __ba_s; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = -1042005999 + ) + @Export("__ba_aw") + static int __ba_aw; + @ObfuscatedName("an") + @Export("hasFocus") + static volatile boolean hasFocus; + @ObfuscatedName("ao") + @ObfuscatedGetter( + longValue = 1013162399149344707L + ) + @Export("garbageCollectorLastCollectionTime") + static long garbageCollectorLastCollectionTime; + @ObfuscatedName("aa") + @ObfuscatedGetter( + longValue = -3607118089363666005L + ) + @Export("garbageCollectorLastCheckTimeMs") + static long garbageCollectorLastCheckTimeMs; + @ObfuscatedName("kl") + @ObfuscatedGetter( + intValue = 1875936371 + ) + @Export("menuY") + static int menuY; + @ObfuscatedName("g") + @Export("hasErrored") + boolean hasErrored; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = -1854329683 + ) + @Export("contentWidth") + protected int contentWidth; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = -628781469 + ) + @Export("contentHeight") + protected int contentHeight; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 781373219 + ) + @Export("canvasX") + int canvasX; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 198681537 + ) + @Export("canvasY") + int canvasY; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = 740831949 + ) + @Export("contentWidth0") + int contentWidth0; + @ObfuscatedName("ag") + @ObfuscatedGetter( + intValue = -2057041525 + ) + @Export("contentHeight0") + int contentHeight0; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = -2071955075 + ) + @Export("maxCanvasWidth") + int maxCanvasWidth; + @ObfuscatedName("aj") + @ObfuscatedGetter( + intValue = 1911308233 + ) + @Export("maxCanvasHeight") + int maxCanvasHeight; + @ObfuscatedName("ac") + @Export("frame") + Frame frame; + @ObfuscatedName("ay") + @Export("canvas") + java.awt.Canvas canvas; + @ObfuscatedName("ah") + @Export("__ah") + volatile boolean __ah; + @ObfuscatedName("al") + @Export("resizeCanvasNextFrame") + boolean resizeCanvasNextFrame; + @ObfuscatedName("ab") + @Export("isCanvasInvalid") + volatile boolean isCanvasInvalid; + @ObfuscatedName("ae") + @ObfuscatedGetter( + longValue = 956221087975405011L + ) + @Export("canvasSetTimeMs") + volatile long canvasSetTimeMs; + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "Lam;" + ) + @Export("mouseWheelHandler") + MouseWheelHandler mouseWheelHandler; + @ObfuscatedName("as") + @Export("clipboard") + Clipboard clipboard; + @ObfuscatedName("am") + @Export("eventQueue") + final EventQueue eventQueue; + + static { + gameShell = null; + __ba_q = 0; + stopTimeMs = 0L; + isKilled = false; + __ba_e = 20; + __ba_d = 1; + fps = 0; + __ba_a = new long[32]; + __ba_j = new long[32]; + __ba_aw = 500; + hasFocus = true; + garbageCollectorLastCollectionTime = -1L; + garbageCollectorLastCheckTimeMs = -1L; + } + + protected GameShell() { + this.hasErrored = false; + this.canvasX = 0; + this.canvasY = 0; + this.__ah = true; + this.resizeCanvasNextFrame = false; + this.isCanvasInvalid = false; + this.canvasSetTimeMs = 0L; + EventQueue var1 = null; + + try { + var1 = Toolkit.getDefaultToolkit().getSystemEventQueue(); + } catch (Throwable var3) { + ; + } + + this.eventQueue = var1; + DevicePcmPlayerProvider var2 = new DevicePcmPlayerProvider(); + class65.pcmPlayerProvider = var2; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "-90" + ) + @Export("setMaxCanvasSize") + protected final void setMaxCanvasSize(int var1, int var2) { + if(this.maxCanvasWidth != var1 || var2 != this.maxCanvasHeight) { + this.__ay_96(); + } + + this.maxCanvasWidth = var1; + this.maxCanvasHeight = var2; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ljava/lang/Object;I)V", + garbageValue = "1799804313" + ) + @Export("post") + final void post(Object var1) { + if(this.eventQueue != null) { + for(int var2 = 0; var2 < 50 && this.eventQueue.peekEvent() != null; ++var2) { + class203.method4010(1L); + } + + if(var1 != null) { + this.eventQueue.postEvent(new ActionEvent(var1, 1001, "dummy")); + } + + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(B)Lfv;", + garbageValue = "-83" + ) + @Export("mouseWheel") + protected MouseWheel mouseWheel() { + if(this.mouseWheelHandler == null) { + this.mouseWheelHandler = new MouseWheelHandler(); + this.mouseWheelHandler.addTo(this.canvas); + } + + return this.mouseWheelHandler; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-443545586" + ) + @Export("setUpClipboard") + protected void setUpClipboard() { + this.clipboard = this.getToolkit().getSystemClipboard(); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "1151252237" + ) + @Export("clipboardSetString") + protected void clipboardSetString(String var1) { + this.clipboard.setContents(new StringSelection(var1), (ClipboardOwner)null); + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1806283276" + ) + @Export("setUpKeyboard") + protected final void setUpKeyboard() { + if(TaskHandler.javaVendor.toLowerCase().indexOf("microsoft") != -1) { + KeyHandler.KeyHandler_keyCodes[186] = 57; + KeyHandler.KeyHandler_keyCodes[187] = 27; + KeyHandler.KeyHandler_keyCodes[188] = 71; + KeyHandler.KeyHandler_keyCodes[189] = 26; + KeyHandler.KeyHandler_keyCodes[190] = 72; + KeyHandler.KeyHandler_keyCodes[191] = 73; + KeyHandler.KeyHandler_keyCodes[192] = 58; + KeyHandler.KeyHandler_keyCodes[219] = 42; + KeyHandler.KeyHandler_keyCodes[220] = 74; + KeyHandler.KeyHandler_keyCodes[221] = 43; + KeyHandler.KeyHandler_keyCodes[222] = 59; + KeyHandler.KeyHandler_keyCodes[223] = 28; + } else { + KeyHandler.KeyHandler_keyCodes[44] = 71; + KeyHandler.KeyHandler_keyCodes[45] = 26; + KeyHandler.KeyHandler_keyCodes[46] = 72; + KeyHandler.KeyHandler_keyCodes[47] = 73; + KeyHandler.KeyHandler_keyCodes[59] = 57; + KeyHandler.KeyHandler_keyCodes[61] = 27; + KeyHandler.KeyHandler_keyCodes[91] = 42; + KeyHandler.KeyHandler_keyCodes[92] = 74; + KeyHandler.KeyHandler_keyCodes[93] = 43; + KeyHandler.KeyHandler_keyCodes[192] = 28; + KeyHandler.KeyHandler_keyCodes[222] = 58; + KeyHandler.KeyHandler_keyCodes[520] = 59; + } + + java.awt.Canvas var1 = this.canvas; + var1.setFocusTraversalKeysEnabled(false); + var1.addKeyListener(KeyHandler.KeyHandler_instance); + var1.addFocusListener(KeyHandler.KeyHandler_instance); + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "312180645" + ) + @Export("setUpMouse") + protected final void setUpMouse() { + java.awt.Canvas var1 = this.canvas; + var1.addMouseListener(MouseHandler.MouseHandler_instance); + var1.addMouseMotionListener(MouseHandler.MouseHandler_instance); + var1.addFocusListener(MouseHandler.MouseHandler_instance); + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-338689747" + ) + @Export("resizeCanvas") + final void resizeCanvas() { + Container var1 = this.container(); + if(var1 != null) { + Bounds var2 = this.getFrameContentBounds(); + this.contentWidth = Math.max(var2.__q, this.contentWidth0); + this.contentHeight = Math.max(var2.__w, this.contentHeight0); + if(this.contentWidth <= 0) { + this.contentWidth = 1; + } + + if(this.contentHeight <= 0) { + this.contentHeight = 1; + } + + SoundCache.canvasWidth = Math.min(this.contentWidth, this.maxCanvasWidth); + Huffman.canvasHeight = Math.min(this.contentHeight, this.maxCanvasHeight); + this.canvasX = (this.contentWidth - SoundCache.canvasWidth) / 2; + this.canvasY = 0; + this.canvas.setSize(SoundCache.canvasWidth, Huffman.canvasHeight); + class197.rasterProvider = new RasterProvider(SoundCache.canvasWidth, Huffman.canvasHeight, this.canvas); + if(var1 == this.frame) { + Insets var3 = this.frame.getInsets(); + this.canvas.setLocation(this.canvasX + var3.left, var3.top + this.canvasY); + } else { + this.canvas.setLocation(this.canvasX, this.canvasY); + } + + this.__ah = true; + this.__j_113(); + } + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1773624745" + ) + @Export("__j_113") + protected abstract void __j_113(); + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "116" + ) + @Export("clearBackground") + void clearBackground() { + int var1 = this.canvasX; + int var2 = this.canvasY; + int var3 = this.contentWidth - SoundCache.canvasWidth - var1; + int var4 = this.contentHeight - Huffman.canvasHeight - var2; + if(var1 > 0 || var3 > 0 || var2 > 0 || var4 > 0) { + try { + Container var5 = this.container(); + int var6 = 0; + int var7 = 0; + if(var5 == this.frame) { + Insets var8 = this.frame.getInsets(); + var6 = var8.left; + var7 = var8.top; + } + + Graphics var10 = var5.getGraphics(); + var10.setColor(Color.black); + if(var1 > 0) { + var10.fillRect(var6, var7, var1, this.contentHeight); + } + + if(var2 > 0) { + var10.fillRect(var6, var7, this.contentWidth, var2); + } + + if(var3 > 0) { + var10.fillRect(var6 + this.contentWidth - var3, var7, var3, this.contentHeight); + } + + if(var4 > 0) { + var10.fillRect(var6, var7 + this.contentHeight - var4, this.contentWidth, var4); + } + } catch (Exception var9) { + ; + } + } + + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1897767688" + ) + @Export("replaceCanvas") + final void replaceCanvas() { + java.awt.Canvas var1 = this.canvas; + var1.removeKeyListener(KeyHandler.KeyHandler_instance); + var1.removeFocusListener(KeyHandler.KeyHandler_instance); + KeyHandler.__an_cw = -1; + java.awt.Canvas var2 = this.canvas; + var2.removeMouseListener(MouseHandler.MouseHandler_instance); + var2.removeMouseMotionListener(MouseHandler.MouseHandler_instance); + var2.removeFocusListener(MouseHandler.MouseHandler_instance); + MouseHandler.MouseHandler_currentButton0 = 0; + if(this.mouseWheelHandler != null) { + this.mouseWheelHandler.removeFrom(this.canvas); + } + + this.addCanvas(); + java.awt.Canvas var3 = this.canvas; + var3.setFocusTraversalKeysEnabled(false); + var3.addKeyListener(KeyHandler.KeyHandler_instance); + var3.addFocusListener(KeyHandler.KeyHandler_instance); + java.awt.Canvas var4 = this.canvas; + var4.addMouseListener(MouseHandler.MouseHandler_instance); + var4.addMouseMotionListener(MouseHandler.MouseHandler_instance); + var4.addFocusListener(MouseHandler.MouseHandler_instance); + if(this.mouseWheelHandler != null) { + this.mouseWheelHandler.addTo(this.canvas); + } + + this.__ay_96(); + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "559367680" + ) + @Export("startThread") + protected final void startThread(int var1, int var2, int var3) { + try { + if(gameShell != null) { + ++__ba_q; + if(__ba_q >= 3) { + this.error("alreadyloaded"); + return; + } + + this.getAppletContext().showDocument(this.getDocumentBase(), "_self"); + return; + } + + gameShell = this; + SoundCache.canvasWidth = var1; + Huffman.canvasHeight = var2; + RunException.revision = var3; + RunException.applet = this; + if(taskHandler == null) { + taskHandler = new TaskHandler(); + } + + taskHandler.newThreadTask(this, 1); + } catch (Exception var5) { + NpcDefinition.sendStackTrace((String)null, var5); + this.error("crash"); + } + + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "72" + ) + @Export("addCanvas") + final synchronized void addCanvas() { + Container var1 = this.container(); + if(this.canvas != null) { + this.canvas.removeFocusListener(this); + var1.remove(this.canvas); + } + + SoundCache.canvasWidth = Math.max(var1.getWidth(), this.contentWidth0); + Huffman.canvasHeight = Math.max(var1.getHeight(), this.contentHeight0); + Insets var2; + if(this.frame != null) { + var2 = this.frame.getInsets(); + SoundCache.canvasWidth -= var2.right + var2.left; + Huffman.canvasHeight -= var2.top + var2.bottom; + } + + this.canvas = new Canvas(this); + var1.setBackground(Color.BLACK); + var1.setLayout((LayoutManager)null); + var1.add(this.canvas); + this.canvas.setSize(SoundCache.canvasWidth, Huffman.canvasHeight); + this.canvas.setVisible(true); + this.canvas.setBackground(Color.BLACK); + if(var1 == this.frame) { + var2 = this.frame.getInsets(); + this.canvas.setLocation(var2.left + this.canvasX, var2.top + this.canvasY); + } else { + this.canvas.setLocation(this.canvasX, this.canvasY); + } + + this.canvas.addFocusListener(this); + this.canvas.requestFocus(); + this.__ah = true; + if(class197.rasterProvider != null && SoundCache.canvasWidth == class197.rasterProvider.width && Huffman.canvasHeight == class197.rasterProvider.height) { + ((RasterProvider)class197.rasterProvider).setComponent(this.canvas); + class197.rasterProvider.drawFull(0, 0); + } else { + class197.rasterProvider = new RasterProvider(SoundCache.canvasWidth, Huffman.canvasHeight, this.canvas); + } + + this.isCanvasInvalid = false; + this.canvasSetTimeMs = class203.currentTimeMs(); + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "1" + ) + @Export("checkHost") + protected final boolean checkHost() { + String var1 = this.getDocumentBase().getHost().toLowerCase(); + if(!var1.equals("jagex.com") && !var1.endsWith(".jagex.com")) { + if(!var1.equals("runescape.com") && !var1.endsWith(".runescape.com")) { + if(var1.endsWith("127.0.0.1")) { + return true; + } else { + while(var1.length() > 0 && var1.charAt(var1.length() - 1) >= '0' && var1.charAt(var1.length() - 1) <= '9') { + var1 = var1.substring(0, var1.length() - 1); + } + + if(var1.endsWith("192.168.1.")) { + return true; + } else { + this.error("invalidhost"); + return false; + } + } + } else { + return true; + } + } else { + return true; + } + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "0" + ) + @Export("__av_93") + void __av_93() { + long var1 = class203.currentTimeMs(); + long var3 = __ba_j[__ba_s]; + __ba_j[__ba_s] = var1; + __ba_s = __ba_s + 1 & 31; + if(var3 != 0L && var1 > var3) { + ; + } + + synchronized(this) { + class230.__hy_az = hasFocus; + } + + this.__al_111(); + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-2" + ) + @Export("__ar_94") + void __ar_94() { + Container var1 = this.container(); + long var2 = class203.currentTimeMs(); + long var4 = __ba_a[GrandExchangeEvents.__g_z]; + __ba_a[GrandExchangeEvents.__g_z] = var2; + GrandExchangeEvents.__g_z = GrandExchangeEvents.__g_z + 1 & 31; + if(var4 != 0L && var2 > var4) { + int var6 = (int)(var2 - var4); + fps = ((var6 >> 1) + 32000) / var6; + } + + if(++__ba_aw - 1 > 50) { + __ba_aw -= 50; + this.__ah = true; + this.canvas.setSize(SoundCache.canvasWidth, Huffman.canvasHeight); + this.canvas.setVisible(true); + if(var1 == this.frame) { + Insets var7 = this.frame.getInsets(); + this.canvas.setLocation(var7.left + this.canvasX, this.canvasY + var7.top); + } else { + this.canvas.setLocation(this.canvasX, this.canvasY); + } + } + + if(this.isCanvasInvalid) { + this.replaceCanvas(); + } + + this.__ac_95(); + this.methodDraw(this.__ah); + if(this.__ah) { + this.clearBackground(); + } + + this.__ah = false; + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1999661001" + ) + @Export("__ac_95") + final void __ac_95() { + Bounds var1 = this.getFrameContentBounds(); + if(var1.__q != this.contentWidth || this.contentHeight != var1.__w || this.resizeCanvasNextFrame) { + this.resizeCanvas(); + this.resizeCanvasNextFrame = false; + } + + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1147427427" + ) + @Export("__ay_96") + final void __ay_96() { + this.resizeCanvasNextFrame = true; + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1252384656" + ) + @Export("kill") + final synchronized void kill() { + if(!isKilled) { + isKilled = true; + + try { + this.canvas.removeFocusListener(this); + } catch (Exception var5) { + ; + } + + try { + this.kill0(); + } catch (Exception var4) { + ; + } + + if(this.frame != null) { + try { + System.exit(0); + } catch (Throwable var3) { + ; + } + } + + if(taskHandler != null) { + try { + taskHandler.close(); + } catch (Exception var2) { + ; + } + } + + this.__au_110(); + } + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1297880469" + ) + @Export("setUp") + protected abstract void setUp(); + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1445885427" + ) + @Export("__al_111") + protected abstract void __al_111(); + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "106302203" + ) + @Export("methodDraw") + protected abstract void methodDraw(boolean var1); + + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1879956387" + ) + @Export("kill0") + protected abstract void kill0(); + + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;ZB)V", + garbageValue = "41" + ) + @Export("drawInitial") + protected final void drawInitial(int var1, String var2, boolean var3) { + try { + Graphics var4 = this.canvas.getGraphics(); + if(class231.__hb_av == null) { + class231.__hb_av = new java.awt.Font("Helvetica", 1, 13); + class60.__bo_ar = this.canvas.getFontMetrics(class231.__hb_av); + } + + if(var3) { + var4.setColor(Color.black); + var4.fillRect(0, 0, SoundCache.canvasWidth, Huffman.canvasHeight); + } + + Color var5 = new Color(140, 17, 17); + + try { + if(PlayerType.__ij_ak == null) { + PlayerType.__ij_ak = this.canvas.createImage(304, 34); + } + + Graphics var6 = PlayerType.__ij_ak.getGraphics(); + var6.setColor(var5); + var6.drawRect(0, 0, 303, 33); + var6.fillRect(2, 2, var1 * 3, 30); + var6.setColor(Color.black); + var6.drawRect(1, 1, 301, 31); + var6.fillRect(var1 * 3 + 2, 2, 300 - var1 * 3, 30); + var6.setFont(class231.__hb_av); + var6.setColor(Color.white); + var6.drawString(var2, (304 - class60.__bo_ar.stringWidth(var2)) / 2, 22); + var4.drawImage(PlayerType.__ij_ak, SoundCache.canvasWidth / 2 - 152, Huffman.canvasHeight / 2 - 18, (ImageObserver)null); + } catch (Exception var9) { + int var7 = SoundCache.canvasWidth / 2 - 152; + int var8 = Huffman.canvasHeight / 2 - 18; + var4.setColor(var5); + var4.drawRect(var7, var8, 303, 33); + var4.fillRect(var7 + 2, var8 + 2, var1 * 3, 30); + var4.setColor(Color.black); + var4.drawRect(var7 + 1, var8 + 1, 301, 31); + var4.fillRect(var1 * 3 + var7 + 2, var8 + 2, 300 - var1 * 3, 30); + var4.setFont(class231.__hb_av); + var4.setColor(Color.white); + var4.drawString(var2, var7 + (304 - class60.__bo_ar.stringWidth(var2)) / 2, var8 + 22); + } + } catch (Exception var10) { + this.canvas.repaint(); + } + + } + + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1283386969" + ) + @Export("__ad_108") + protected final void __ad_108() { + PlayerType.__ij_ak = null; + class231.__hb_av = null; + class60.__bo_ar = null; + } + + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "39" + ) + @Export("error") + protected void error(String var1) { + if(!this.hasErrored) { + this.hasErrored = true; + System.out.println("error_game_" + var1); + + try { + this.getAppletContext().showDocument(new URL(this.getCodeBase(), "error_game_" + var1 + ".ws"), "_self"); + } catch (Exception var3) { + ; + } + + } + } + + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "(I)Ljava/awt/Container;", + garbageValue = "-46071869" + ) + @Export("container") + Container container() { + return (Container)(this.frame != null?this.frame:this); + } + + @ObfuscatedName("am") + @ObfuscatedSignature( + signature = "(I)Lla;", + garbageValue = "-1214277427" + ) + @Export("getFrameContentBounds") + Bounds getFrameContentBounds() { + Container var1 = this.container(); + int var2 = Math.max(var1.getWidth(), this.contentWidth0); + int var3 = Math.max(var1.getHeight(), this.contentHeight0); + if(this.frame != null) { + Insets var4 = this.frame.getInsets(); + var2 -= var4.right + var4.left; + var3 -= var4.bottom + var4.top; + } + + return new Bounds(var2, var3); + } + + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "-111" + ) + @Export("hasFrame") + protected final boolean hasFrame() { + return this.frame != null; + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1860808291" + ) + @Export("__au_110") + protected abstract void __au_110(); + + @Export("__destroy_99") + @ObfuscatedName("destroy") + public final void __destroy_99() { + if(this == gameShell && !isKilled) { + stopTimeMs = class203.currentTimeMs(); + class203.method4010(5000L); + this.kill(); + } + } + + @Export("paint") + @ObfuscatedName("paint") + public final synchronized void paint(Graphics var1) { + if(this == gameShell && !isKilled) { + this.__ah = true; + if(class203.currentTimeMs() - this.canvasSetTimeMs > 1000L) { + Rectangle var2 = var1.getClipBounds(); + if(var2 == null || var2.width >= SoundCache.canvasWidth && var2.height >= Huffman.canvasHeight) { + this.isCanvasInvalid = true; + } + } + + } + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + try { + if(TaskHandler.javaVendor != null) { + String var1 = TaskHandler.javaVendor.toLowerCase(); + if(var1.indexOf("sun") != -1 || var1.indexOf("apple") != -1) { + String var2 = TaskHandler.javaVersion; + if(var2.equals("1.1") || var2.startsWith("1.1.") || var2.equals("1.2") || var2.startsWith("1.2.") || var2.equals("1.3") || var2.startsWith("1.3.") || var2.equals("1.4") || var2.startsWith("1.4.") || var2.equals("1.5") || var2.startsWith("1.5.") || var2.equals("1.6.0")) { + this.error("wrongjava"); + return; + } + + if(var2.startsWith("1.6.0_")) { + int var3; + for(var3 = 6; var3 < var2.length() && class159.method3394(var2.charAt(var3)); ++var3) { + ; + } + + String var4 = var2.substring(6, var3); + if(UserComparator4.method3336(var4) && MouseHandler.method1085(var4) < 10) { + this.error("wrongjava"); + return; + } + } + + __ba_d = 5; + } + } + + this.setFocusCycleRoot(true); + this.addCanvas(); + this.setUp(); + + Object var8; + try { + var8 = new NanoClock(); + } catch (Throwable var6) { + var8 = new MilliClock(); + } + + UserComparator6.clock = (Clock)var8; + + while(0L == stopTimeMs || class203.currentTimeMs() < stopTimeMs) { + __ba_l = UserComparator6.clock.wait(__ba_e, __ba_d); + + for(int var5 = 0; var5 < __ba_l; ++var5) { + this.__av_93(); + } + + this.__ar_94(); + this.post(this.canvas); + } + } catch (Exception var7) { + NpcDefinition.sendStackTrace((String)null, var7); + this.error("crash"); + } + + this.kill(); + } + + @Export("__start_97") + @ObfuscatedName("start") + public final void __start_97() { + if(this == gameShell && !isKilled) { + stopTimeMs = 0L; + } + } + + @Export("update") + @ObfuscatedName("update") + public final void update(Graphics var1) { + this.paint(var1); + } + + @Export("focusGained") + @ObfuscatedName("focusGained") + public final void focusGained(FocusEvent var1) { + hasFocus = true; + this.__ah = true; + } + + @Export("windowActivated") + @ObfuscatedName("windowActivated") + public final void windowActivated(WindowEvent var1) { + } + + @Export("windowClosed") + @ObfuscatedName("windowClosed") + public final void windowClosed(WindowEvent var1) { + } + + @Export("windowClosing") + @ObfuscatedName("windowClosing") + public final void windowClosing(WindowEvent var1) { + this.__destroy_99(); + } + + @Export("windowDeiconified") + @ObfuscatedName("windowDeiconified") + public final void windowDeiconified(WindowEvent var1) { + } + + @Export("windowOpened") + @ObfuscatedName("windowOpened") + public final void windowOpened(WindowEvent var1) { + } + + @Export("__init_109") + @ObfuscatedName("init") + public abstract void __init_109(); + + @Export("__stop_98") + @ObfuscatedName("stop") + public final void __stop_98() { + if(this == gameShell && !isKilled) { + stopTimeMs = class203.currentTimeMs() + 4000L; + } + } + + @Export("windowIconified") + @ObfuscatedName("windowIconified") + public final void windowIconified(WindowEvent var1) { + } + + @Export("windowDeactivated") + @ObfuscatedName("windowDeactivated") + public final void windowDeactivated(WindowEvent var1) { + } + + @Export("focusLost") + @ObfuscatedName("focusLost") + public final void focusLost(FocusEvent var1) { + hasFocus = false; + } + + @ObfuscatedName("ec") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "17" + ) + @Export("updateGameState") + static void updateGameState(int var0) { + if(var0 != Client.gameState) { + if(Client.gameState == 0) { + TextureProvider.client.__ad_108(); + } + + if(var0 == 20 || var0 == 40 || var0 == 45) { + Client.loginState = 0; + Client.__client_ex = 0; + Client.__client_ej = 0; + Client.timer.__q_455(var0); + if(var0 != 20) { + class15.method184(false); + } + } + + if(var0 != 20 && var0 != 40 && ClientParameter.__ji_fp != null) { + ClientParameter.__ji_fp.close(); + ClientParameter.__ji_fp = null; + } + + if(Client.gameState == 25) { + Client.__client_gh = 0; + Client.__client_fe = 0; + Client.__client_fn = 1; + Client.__client_fk = 0; + Client.__client_gp = 1; + } + + if(var0 != 5 && var0 != 10) { + if(var0 == 20) { + class2.method27(class16.indexCache10, WorldMapSection3.indexCache8, true, Client.gameState == 11?4:0); + } else if(var0 == 11) { + class2.method27(class16.indexCache10, WorldMapSection3.indexCache8, false, 4); + } else { + class80.method2015(); + } + } else { + class2.method27(class16.indexCache10, WorldMapSection3.indexCache8, true, 0); + } + + Client.gameState = var0; + } + } + + @ObfuscatedName("kv") + @ObfuscatedSignature( + signature = "(Lho;II)Ljava/lang/String;", + garbageValue = "2016931356" + ) + static String method1060(Widget var0, int var1) { + int var3 = class1.getWidgetClickMask(var0); + boolean var2 = (var3 >> var1 + 1 & 1) != 0; + return !var2 && var0.onOp == null?null:(var0.actions != null && var0.actions.length > var1 && var0.actions[var1] != null && var0.actions[var1].trim().length() != 0?var0.actions[var1]:null); + } +} diff --git a/rs-client/src/main/java/GrandExchangeEvent.java b/rs-client/src/main/java/GrandExchangeEvent.java new file mode 100644 index 0000000000..77af9c38ae --- /dev/null +++ b/rs-client/src/main/java/GrandExchangeEvent.java @@ -0,0 +1,432 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("l") +@Implements("GrandExchangeEvent") +public class GrandExchangeEvent { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -633089807 + ) + @Export("world") + public final int world; + @ObfuscatedName("f") + @ObfuscatedGetter( + longValue = -6503890758391257651L + ) + @Export("__f") + public final long __f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lx;" + ) + @Export("grandExchangeOffer") + public final GrandExchangeOffer grandExchangeOffer; + @ObfuscatedName("w") + @Export("string1") + String string1; + @ObfuscatedName("o") + @Export("string2") + String string2; + + @ObfuscatedSignature( + signature = "(Lgr;BI)V" + ) + GrandExchangeEvent(Buffer var1, byte var2, int var3) { + this.string1 = var1.readStringCp1252NullTerminated(); + this.string2 = var1.readStringCp1252NullTerminated(); + this.world = var1.__ag_302(); + this.__f = var1.readLong(); + int var4 = var1.readInt(); + int var5 = var1.readInt(); + this.grandExchangeOffer = new GrandExchangeOffer(); + this.grandExchangeOffer.__o_9(2); + this.grandExchangeOffer.__u_10(var2); + this.grandExchangeOffer.unitPrice = var4; + this.grandExchangeOffer.totalQuantity = var5; + this.grandExchangeOffer.currentQuantity = 0; + this.grandExchangeOffer.currentPrice = 0; + this.grandExchangeOffer.id = var3; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "1672323214" + ) + @Export("__m_3") + public String __m_3() { + return this.string1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "-271438207" + ) + @Export("__f_4") + public String __f_4() { + return this.string2; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lby;II)V", + garbageValue = "-1003049523" + ) + @Export("runScript0") + static void runScript0(ScriptEvent var0, int var1) { + Object[] var2 = var0.args0; + Script var3; + int var17; + if(class12.method162(var0.type0)) { + class15.worldMapEvent = (WorldMapEvent)var2[0]; + WorldMapElement var4 = ViewportMouse.getWorldMapElement(class15.worldMapEvent.mapElement); + var3 = FaceNormal.method3236(var0.type0, var4.__o, var4.category); + } else { + var17 = ((Integer)var2[0]).intValue(); + var3 = SoundSystem.method2451(var17); + } + + if(var3 != null) { + class179.Interpreter_intStackSize = 0; + Interpreter.Interpreter_stringStackSize = 0; + var17 = -1; + int[] var5 = var3.opcodes; + int[] var6 = var3.intOperands; + byte var7 = -1; + Interpreter.Interpreter_frameDepth = 0; + Interpreter.__bv_s = false; + + try { + int var10; + try { + Username.Interpreter_intLocals = new int[var3.localIntCount]; + int var8 = 0; + Interpreter.Interpreter_stringLocals = new String[var3.localStringCount]; + int var9 = 0; + + int var11; + String var18; + for(var10 = 1; var10 < var2.length; ++var10) { + if(var2[var10] instanceof Integer) { + var11 = ((Integer)var2[var10]).intValue(); + if(var11 == -2147483647) { + var11 = var0.mouseX; + } + + if(var11 == -2147483646) { + var11 = var0.mouseY; + } + + if(var11 == -2147483645) { + var11 = var0.widget != null?var0.widget.id:-1; + } + + if(var11 == -2147483644) { + var11 = var0.opIndex; + } + + if(var11 == -2147483643) { + var11 = var0.widget != null?var0.widget.childIndex:-1; + } + + if(var11 == -2147483642) { + var11 = var0.dragTarget != null?var0.dragTarget.id:-1; + } + + if(var11 == -2147483641) { + var11 = var0.dragTarget != null?var0.dragTarget.childIndex:-1; + } + + if(var11 == -2147483640) { + var11 = var0.keyTyped; + } + + if(var11 == -2147483639) { + var11 = var0.keyPressed; + } + + Username.Interpreter_intLocals[var8++] = var11; + } else if(var2[var10] instanceof String) { + var18 = (String)var2[var10]; + if(var18.equals("event_opbase")) { + var18 = var0.targetName; + } + + Interpreter.Interpreter_stringLocals[var9++] = var18; + } + } + + var10 = 0; + Interpreter.__bv_y = var0.__d; + + while(true) { + ++var10; + if(var10 > var1) { + throw new RuntimeException(); + } + + ++var17; + int var29 = var5[var17]; + int var20; + if(var29 >= 100) { + boolean var32; + if(var3.intOperands[var17] == 1) { + var32 = true; + } else { + var32 = false; + } + + var20 = class196.method3736(var29, var3, var32); + switch(var20) { + case 0: + return; + case 1: + default: + break; + case 2: + throw new IllegalStateException(); + } + } else if(var29 == 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6[var17]; + } else if(var29 == 1) { + var11 = var6[var17]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Varps.Varps_main[var11]; + } else if(var29 == 2) { + var11 = var6[var17]; + Varps.Varps_main[var11] = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + IndexCache.method4703(var11); + } else if(var29 == 3) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.stringOperands[var17]; + } else if(var29 == 6) { + var17 += var6[var17]; + } else if(var29 == 7) { + class179.Interpreter_intStackSize -= 2; + if(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] != Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]) { + var17 += var6[var17]; + } + } else if(var29 == 8) { + class179.Interpreter_intStackSize -= 2; + if(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] == Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]) { + var17 += var6[var17]; + } + } else if(var29 == 9) { + class179.Interpreter_intStackSize -= 2; + if(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] < Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]) { + var17 += var6[var17]; + } + } else if(var29 == 10) { + class179.Interpreter_intStackSize -= 2; + if(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] > Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]) { + var17 += var6[var17]; + } + } else if(var29 == 21) { + if(Interpreter.Interpreter_frameDepth == 0) { + return; + } + + ScriptFrame var34 = Interpreter.Interpreter_frames[--Interpreter.Interpreter_frameDepth]; + var3 = var34.script; + var5 = var3.opcodes; + var6 = var3.intOperands; + var17 = var34.pc; + Username.Interpreter_intLocals = var34.intLocals; + Interpreter.Interpreter_stringLocals = var34.stringLocals; + } else if(var29 == 25) { + var11 = var6[var17]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapSection2.getVarbit(var11); + } else if(var29 == 27) { + var11 = var6[var17]; + class68.method1695(var11, Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + } else if(var29 == 31) { + class179.Interpreter_intStackSize -= 2; + if(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] <= Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]) { + var17 += var6[var17]; + } + } else if(var29 == 32) { + class179.Interpreter_intStackSize -= 2; + if(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] >= Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]) { + var17 += var6[var17]; + } + } else if(var29 == 33) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Username.Interpreter_intLocals[var6[var17]]; + } else if(var29 == 34) { + Username.Interpreter_intLocals[var6[var17]] = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + } else if(var29 == 35) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Interpreter.Interpreter_stringLocals[var6[var17]]; + } else if(var29 == 36) { + Interpreter.Interpreter_stringLocals[var6[var17]] = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + } else if(var29 == 37) { + var11 = var6[var17]; + Interpreter.Interpreter_stringStackSize -= var11; + String var31 = class277.method5356(Interpreter.Interpreter_stringStack, Interpreter.Interpreter_stringStackSize, var11); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var31; + } else if(var29 == 38) { + --class179.Interpreter_intStackSize; + } else if(var29 == 39) { + --Interpreter.Interpreter_stringStackSize; + } else { + int var15; + if(var29 != 40) { + if(var29 == 42) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class196.varcs.getInt(var6[var17]); + } else if(var29 == 43) { + class196.varcs.setInt(var6[var17], Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + } else if(var29 == 44) { + var11 = var6[var17] >> 16; + var20 = var6[var17] & 65535; + int var21 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var21 < 0 || var21 > 5000) { + throw new RuntimeException(); + } + + Interpreter.Interpreter_arrayLengths[var11] = var21; + byte var22 = -1; + if(var20 == 105) { + var22 = 0; + } + + for(var15 = 0; var15 < var21; ++var15) { + Interpreter.Interpreter_arrays[var11][var15] = var22; + } + } else if(var29 == 45) { + var11 = var6[var17]; + var20 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var20 < 0 || var20 >= Interpreter.Interpreter_arrayLengths[var11]) { + throw new RuntimeException(); + } + + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Interpreter.Interpreter_arrays[var11][var20]; + } else if(var29 == 46) { + var11 = var6[var17]; + class179.Interpreter_intStackSize -= 2; + var20 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + if(var20 < 0 || var20 >= Interpreter.Interpreter_arrayLengths[var11]) { + throw new RuntimeException(); + } + + Interpreter.Interpreter_arrays[var11][var20] = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + } else if(var29 == 47) { + var18 = class196.varcs.getStringOld(var6[var17]); + if(var18 == null) { + var18 = "null"; + } + + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var18; + } else if(var29 == 48) { + class196.varcs.setStringOld(var6[var17], Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]); + } else if(var29 == 49) { + var18 = class196.varcs.getString(var6[var17]); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var18; + } else if(var29 == 50) { + class196.varcs.setString(var6[var17], Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]); + } else { + if(var29 != 60) { + throw new IllegalStateException(); + } + + IterableNodeHashTable var33 = var3.switches[var6[var17]]; + IntegerNode var30 = (IntegerNode)var33.get((long)Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + if(var30 != null) { + var17 += var30.integer; + } + } + } else { + var11 = var6[var17]; + Script var12 = SoundSystem.method2451(var11); + int[] var13 = new int[var12.localIntCount]; + String[] var14 = new String[var12.localStringCount]; + + for(var15 = 0; var15 < var12.intArgumentCount; ++var15) { + var13[var15] = Interpreter.Interpreter_intStack[var15 + (class179.Interpreter_intStackSize - var12.intArgumentCount)]; + } + + for(var15 = 0; var15 < var12.stringArgumentCount; ++var15) { + var14[var15] = Interpreter.Interpreter_stringStack[var15 + (Interpreter.Interpreter_stringStackSize - var12.stringArgumentCount)]; + } + + class179.Interpreter_intStackSize -= var12.intArgumentCount; + Interpreter.Interpreter_stringStackSize -= var12.stringArgumentCount; + ScriptFrame var19 = new ScriptFrame(); + var19.script = var3; + var19.pc = var17; + var19.intLocals = Username.Interpreter_intLocals; + var19.stringLocals = Interpreter.Interpreter_stringLocals; + Interpreter.Interpreter_frames[++Interpreter.Interpreter_frameDepth - 1] = var19; + var3 = var12; + var5 = var12.opcodes; + var6 = var12.intOperands; + var17 = -1; + Username.Interpreter_intLocals = var13; + Interpreter.Interpreter_stringLocals = var14; + } + } + } + } catch (Exception var27) { + StringBuilder var24 = new StringBuilder(30); + var24.append("").append(var3.key).append(" "); + + for(var10 = Interpreter.Interpreter_frameDepth - 1; var10 >= 0; --var10) { + var24.append("").append(Interpreter.Interpreter_frames[var10].script.key).append(" "); + } + + var24.append("").append(var7); + NpcDefinition.sendStackTrace(var24.toString(), var27); + } + } finally { + if(Interpreter.__bv_s) { + Interpreter.__bv_t = true; + WorldMapLabelSize.method198(); + Interpreter.__bv_t = false; + Interpreter.__bv_s = false; + } + + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IS)I", + garbageValue = "1404" + ) + public static int method80(int var0) { + long var2 = ViewportMouse.ViewportMouse_entityTags[var0]; + int var1 = (int)(var2 >>> 14 & 3L); + return var1; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-1385318222" + ) + public static int method87(int var0, int var1) { + int var2; + for(var2 = 0; var1 > 0; --var1) { + var2 = var2 << 1 | var0 & 1; + var0 >>>= 1; + } + + return var2; + } + + @ObfuscatedName("iq") + @ObfuscatedSignature( + signature = "(II)Ljava/lang/String;", + garbageValue = "1819478902" + ) + static final String method88(int var0) { + String var1 = Integer.toString(var0); + + for(int var2 = var1.length() - 3; var2 > 0; var2 -= 3) { + var1 = var1.substring(0, var2) + "," + var1.substring(var2); + } + + return var1.length() > 9?" " + BufferedFile.colorStartTag(65408) + var1.substring(0, var1.length() - 8) + "M" + " " + " (" + var1 + ")" + "":(var1.length() > 6?" " + BufferedFile.colorStartTag(16777215) + var1.substring(0, var1.length() - 4) + "K" + " " + " (" + var1 + ")" + "":" " + BufferedFile.colorStartTag(16776960) + var1 + ""); + } +} diff --git a/rs-client/src/main/java/GrandExchangeEvents.java b/rs-client/src/main/java/GrandExchangeEvents.java new file mode 100644 index 0000000000..f23a12fa99 --- /dev/null +++ b/rs-client/src/main/java/GrandExchangeEvents.java @@ -0,0 +1,185 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("g") +@Implements("GrandExchangeEvents") +public class GrandExchangeEvents { + @ObfuscatedName("f") + @Export("__g_f") + public static Comparator __g_f; + @ObfuscatedName("q") + @Export("__g_q") + public static Comparator __g_q; + @ObfuscatedName("w") + @Export("__g_w") + public static Comparator __g_w; + @ObfuscatedName("o") + @Export("__g_o") + public static Comparator __g_o; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -1605454211 + ) + @Export("__g_z") + static int __g_z; + @ObfuscatedName("hs") + @ObfuscatedGetter( + intValue = 1326137897 + ) + @Export("cameraY") + static int cameraY; + @ObfuscatedName("m") + @Export("events") + public final List events; + + static { + __g_f = new class12(); + new WorldComparator(); + __g_q = new UnitPriceComparator(); + __g_w = new class11(); + __g_o = new TotalQuantityComparator(); + } + + @ObfuscatedSignature( + signature = "(Lgr;Z)V", + garbageValue = "1" + ) + public GrandExchangeEvents(Buffer var1, boolean var2) { + int var3 = var1.__ag_302(); + boolean var4 = var1.readUnsignedByte() == 1; + byte var5; + if(var4) { + var5 = 1; + } else { + var5 = 0; + } + + int var6 = var1.__ag_302(); + this.events = new ArrayList(var6); + + for(int var7 = 0; var7 < var6; ++var7) { + this.events.add(new GrandExchangeEvent(var1, var5, var3)); + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/util/Comparator;ZI)V", + garbageValue = "1070318468" + ) + @Export("sort") + public void sort(Comparator var1, boolean var2) { + if(var2) { + Collections.sort(this.events, var1); + } else { + Collections.sort(this.events, Collections.reverseOrder(var1)); + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V", + garbageValue = "1601363438" + ) + @Export("addChatMessage") + static void addChatMessage(int var0, String var1, String var2, String var3) { + ChatChannel var4 = (ChatChannel)Messages.Messages_channels.get(Integer.valueOf(var0)); + if(var4 == null) { + var4 = new ChatChannel(); + Messages.Messages_channels.put(Integer.valueOf(var0), var4); + } + + Message var5 = var4.addMessage(var0, var1, var2, var3); + Messages.Messages_hashTable.put(var5, (long)var5.count); + Messages.Messages_queue.add(var5); + Client.chatCycle = Client.cycleCntr; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "0" + ) + public static void method69() { + HitSplatDefinition.HitSplatDefinition_cached.clear(); + HitSplatDefinition.__jm_o.clear(); + HitSplatDefinition.HitSplatDefinition_cachedFonts.clear(); + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "620886402" + ) + static int method75(int var0, Script var1, boolean var2) { + Widget var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + if(var0 == 2600) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollX; + return 1; + } else if(var0 == 2601) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollY; + return 1; + } else if(var0 == 2602) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.text; + return 1; + } else if(var0 == 2603) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollWidth; + return 1; + } else if(var0 == 2604) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollHeight; + return 1; + } else if(var0 == 2605) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelZoom; + return 1; + } else if(var0 == 2606) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelAngleX; + return 1; + } else if(var0 == 2607) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelAngleZ; + return 1; + } else if(var0 == 2608) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelAngleY; + return 1; + } else if(var0 == 2609) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.transparency; + return 1; + } else if(var0 == 2610) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.__af; + return 1; + } else if(var0 == 2611) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.color; + return 1; + } else if(var0 == 2612) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.color2; + return 1; + } else if(var0 == 2613) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.rectangleMode.rsOrdinal(); + return 1; + } else if(var0 == 2614) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.__bv?1:0; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("ju") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-635606409" + ) + static final void method74(int var0, int var1) { + if(GroundItemPile.loadWidgetGroup(var0)) { + class30.method570(Widget.widgets[var0], var1); + } + } +} diff --git a/rs-client/src/main/java/GrandExchangeOffer.java b/rs-client/src/main/java/GrandExchangeOffer.java new file mode 100644 index 0000000000..9afb606857 --- /dev/null +++ b/rs-client/src/main/java/GrandExchangeOffer.java @@ -0,0 +1,181 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("x") +@Implements("GrandExchangeOffer") +public class GrandExchangeOffer { + @ObfuscatedName("rg") + @ObfuscatedGetter( + intValue = -1286287981 + ) + @Export("__x_rg") + static int __x_rg; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -812708185 + ) + @Export("musicTrackFileId") + public static int musicTrackFileId; + @ObfuscatedName("m") + @Export("state") + byte state; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1136727241 + ) + @Export("id") + public int id; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1627453165 + ) + @Export("unitPrice") + public int unitPrice; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 562564821 + ) + @Export("totalQuantity") + public int totalQuantity; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1413132419 + ) + @Export("currentQuantity") + public int currentQuantity; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 396420073 + ) + @Export("currentPrice") + public int currentPrice; + + public GrandExchangeOffer() { + } + + @ObfuscatedSignature( + signature = "(Lgr;Z)V", + garbageValue = "0" + ) + public GrandExchangeOffer(Buffer var1, boolean var2) { + this.state = var1.readByte(); + this.id = var1.__ag_302(); + this.unitPrice = var1.readInt(); + this.totalQuantity = var1.readInt(); + this.currentQuantity = var1.readInt(); + this.currentPrice = var1.readInt(); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1084140748" + ) + @Export("status") + public int status() { + return this.state & 7; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1007396683" + ) + @Export("type") + public int type() { + return (this.state & 8) == 8?1:0; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1339285061" + ) + @Export("__o_9") + void __o_9(int var1) { + this.state &= -8; + this.state = (byte)(this.state | var1 & 7); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "743094900" + ) + @Export("__u_10") + void __u_10(int var1) { + this.state &= -9; + if(var1 == 1) { + this.state = (byte)(this.state | 8); + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lhx;I)I", + garbageValue = "-756558077" + ) + static int method105(PacketBuffer var0) { + int var1 = var0.readBits(2); + int var2; + if(var1 == 0) { + var2 = 0; + } else if(var1 == 1) { + var2 = var0.readBits(5); + } else if(var1 == 2) { + var2 = var0.readBits(8); + } else { + var2 = var0.readBits(11); + } + + return var2; + } + + @ObfuscatedName("ez") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "50" + ) + static int method101() { + if(Client.indexCacheLoaders != null && Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) { + int var0 = 0; + + for(int var1 = 0; var1 <= Client.indexCacheLoaderIndex; ++var1) { + var0 += ((IndexCacheLoader)Client.indexCacheLoaders.get(var1)).__w; + } + + return var0 * 10000 / Client.__client_sx; + } else { + return 10000; + } + } + + @ObfuscatedName("kf") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-304562381" + ) + static final void method121() { + for(int var0 = 0; var0 < Players.Players_count; ++var0) { + Player var1 = Client.players[Players.Players_indices[var0]]; + var1.__q_125(); + } + + Iterator var2 = Messages.Messages_hashTable.iterator(); + + while(var2.hasNext()) { + Message var3 = (Message)var2.next(); + var3.clearIsFromFriend(); + } + + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.clearFriends(); + } + + } +} diff --git a/rs-client/src/main/java/GraphicsObject.java b/rs-client/src/main/java/GraphicsObject.java new file mode 100644 index 0000000000..a9152aa015 --- /dev/null +++ b/rs-client/src/main/java/GraphicsObject.java @@ -0,0 +1,154 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bw") +@Implements("GraphicsObject") +public final class GraphicsObject extends Entity { + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -1807262579 + ) + @Export("__bw_d") + static int __bw_d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__bw_k") + static IndexedSprite __bw_k; + @ObfuscatedName("fr") + @ObfuscatedGetter( + intValue = -438288575 + ) + @Export("baseY") + static int baseY; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -289084031 + ) + @Export("id") + int id; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1245488067 + ) + @Export("cycleStart") + int cycleStart; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 432847573 + ) + @Export("plane") + int plane; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1189549567 + ) + @Export("x") + int x; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1416438985 + ) + @Export("y") + int y; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1156757009 + ) + @Export("height") + int height; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Ljh;" + ) + @Export("sequenceDefinition") + SequenceDefinition sequenceDefinition; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 1541221595 + ) + @Export("frame") + int frame; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1950327625 + ) + @Export("frameCycle") + int frameCycle; + @ObfuscatedName("x") + @Export("isFinished") + boolean isFinished; + + GraphicsObject(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + this.frame = 0; + this.frameCycle = 0; + this.isFinished = false; + this.id = var1; + this.plane = var2; + this.x = var3; + this.y = var4; + this.height = var5; + this.cycleStart = var7 + var6; + int var8 = class50.getSpotAnimationDefinition(this.id).sequence; + if(var8 != -1) { + this.isFinished = false; + this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(var8); + } else { + this.isFinished = true; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-730240149" + ) + @Export("advance") + final void advance(int var1) { + if(!this.isFinished) { + this.frameCycle += var1; + + while(this.frameCycle > this.sequenceDefinition.frameLengths[this.frame]) { + this.frameCycle -= this.sequenceDefinition.frameLengths[this.frame]; + ++this.frame; + if(this.frame >= this.sequenceDefinition.frameIds.length) { + this.isFinished = true; + break; + } + } + + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + protected final Model getModel() { + SpotAnimationDefinition var1 = class50.getSpotAnimationDefinition(this.id); + Model var2; + if(!this.isFinished) { + var2 = var1.getModel(this.frame); + } else { + var2 = var1.getModel(-1); + } + + return var2 == null?null:var2; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(IIIII)I", + garbageValue = "1241216858" + ) + static final int method1986(int var0, int var1, int var2, int var3) { + int var4 = 65536 - Rasterizer3D.Rasterizer3D_cosine[var2 * 1024 / var3] >> 1; + return ((65536 - var4) * var0 >> 16) + (var4 * var1 >> 16); + } +} diff --git a/rs-client/src/main/java/GroundItem.java b/rs-client/src/main/java/GroundItem.java new file mode 100644 index 0000000000..223075772e --- /dev/null +++ b/rs-client/src/main/java/GroundItem.java @@ -0,0 +1,68 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ck") +@Implements("GroundItem") +public final class GroundItem extends Entity { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 893970699 + ) + @Export("id") + int id; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 454094667 + ) + @Export("quantity") + int quantity; + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + protected final Model getModel() { + return Skills.getItemDefinition(this.id).getModel(this.quantity); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1050170563" + ) + static void method2094() { + Messages.Messages_channels.clear(); + Messages.Messages_hashTable.clear(); + Messages.Messages_queue.clear(); + Messages.Messages_count = 0; + } + + @ObfuscatedName("gw") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "411352848" + ) + static void method2095(int var0) { + Client.__client_oa = 0L; + if(var0 >= 2) { + Client.isResizable = true; + } else { + Client.isResizable = false; + } + + if(SpotAnimationDefinition.method4822() == 1) { + TextureProvider.client.setMaxCanvasSize(765, 503); + } else { + TextureProvider.client.setMaxCanvasSize(7680, 2160); + } + + if(Client.gameState >= 25) { + AbstractByteArrayCopier.method4024(); + } + + } +} diff --git a/rs-client/src/main/java/GroundItemPile.java b/rs-client/src/main/java/GroundItemPile.java new file mode 100644 index 0000000000..1f5d488216 --- /dev/null +++ b/rs-client/src/main/java/GroundItemPile.java @@ -0,0 +1,106 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dr") +@Implements("GroundItemPile") +public final class GroundItemPile { + @ObfuscatedName("ao") + @ObfuscatedGetter( + intValue = -704675849 + ) + @Export("__dr_ao") + static int __dr_ao; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("second") + Entity second; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -325682933 + ) + @Export("tileHeight") + int tileHeight; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1363136655 + ) + @Export("x") + int x; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 968072997 + ) + @Export("y") + int y; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("first") + Entity first; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("third") + Entity third; + @ObfuscatedName("g") + @ObfuscatedGetter( + longValue = -3696674445500472687L + ) + @Export("tag") + long tag; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1659262853 + ) + @Export("height") + int height; + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "-60" + ) + @Export("loadWidgetGroup") + public static boolean loadWidgetGroup(int var0) { + if(Widget.loadedWidgetGroups[var0]) { + return true; + } else if(!Widget.Widget_indexCache.tryLoadArchive(var0)) { + return false; + } else { + int var1 = Widget.Widget_indexCache.__s_396(var0); + if(var1 == 0) { + Widget.loadedWidgetGroups[var0] = true; + return true; + } else { + if(Widget.widgets[var0] == null) { + Widget.widgets[var0] = new Widget[var1]; + } + + for(int var2 = 0; var2 < var1; ++var2) { + if(Widget.widgets[var0][var2] == null) { + byte[] var3 = Widget.Widget_indexCache.takeRecord(var0, var2); + if(var3 != null) { + Widget.widgets[var0][var2] = new Widget(); + Widget.widgets[var0][var2].id = var2 + (var0 << 16); + if(var3[0] == -1) { + Widget.widgets[var0][var2].decode(new Buffer(var3)); + } else { + Widget.widgets[var0][var2].decodeLegacy(new Buffer(var3)); + } + } + } + } + + Widget.loadedWidgetGroups[var0] = true; + return true; + } + } + } +} diff --git a/rs-client/src/main/java/GzipDecompressor.java b/rs-client/src/main/java/GzipDecompressor.java new file mode 100644 index 0000000000..1e2fb1a529 --- /dev/null +++ b/rs-client/src/main/java/GzipDecompressor.java @@ -0,0 +1,75 @@ +import java.util.zip.Inflater; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("go") +@Implements("GzipDecompressor") +public class GzipDecompressor { + @ObfuscatedName("ck") + @Export("__go_ck") + public static char __go_ck; + @ObfuscatedName("m") + @Export("inflater") + Inflater inflater; + + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1000000" + ) + GzipDecompressor(int var1, int var2, int var3) { + } + + public GzipDecompressor() { + this(-1, 1000000, 1000000); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;[BB)V", + garbageValue = "-105" + ) + @Export("decompress") + public void decompress(Buffer var1, byte[] var2) { + if(var1.array[var1.index] == 31 && var1.array[var1.index + 1] == -117) { + if(this.inflater == null) { + this.inflater = new Inflater(true); + } + + try { + this.inflater.setInput(var1.array, var1.index + 10, var1.array.length - (var1.index + 8 + 10)); + this.inflater.inflate(var2); + } catch (Exception var4) { + this.inflater.reset(); + throw new RuntimeException(""); + } + + this.inflater.reset(); + } else { + throw new RuntimeException(""); + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Ljq;", + garbageValue = "-1060388349" + ) + public static StructDefinition method3702(int var0) { + StructDefinition var1 = (StructDefinition)StructDefinition.__jq_f.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = StructDefinition.__jq_m.takeRecord(34, var0); + var1 = new StructDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + var1.init(); + StructDefinition.__jq_f.put(var1, (long)var0); + return var1; + } + } +} diff --git a/rs-client/src/main/java/HealthBar.java b/rs-client/src/main/java/HealthBar.java new file mode 100644 index 0000000000..5e59f095ee --- /dev/null +++ b/rs-client/src/main/java/HealthBar.java @@ -0,0 +1,184 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cr") +@Implements("HealthBar") +public class HealthBar extends Node { + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lii;" + ) + @Export("definition") + HealthBarDefinition definition; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lja;" + ) + @Export("updates") + IterableNodeDeque updates; + + @ObfuscatedSignature( + signature = "(Lii;)V" + ) + HealthBar(HealthBarDefinition var1) { + this.updates = new IterableNodeDeque(); + this.definition = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIIIB)V", + garbageValue = "56" + ) + @Export("put") + void put(int var1, int var2, int var3, int var4) { + HealthBarUpdate var5 = null; + int var6 = 0; + + for(HealthBarUpdate var7 = (HealthBarUpdate)this.updates.last(); var7 != null; var7 = (HealthBarUpdate)this.updates.previous()) { + ++var6; + if(var7.cycle == var1) { + var7.set(var1, var2, var3, var4); + return; + } + + if(var7.cycle <= var1) { + var5 = var7; + } + } + + if(var5 == null) { + if(var6 < 4) { + this.updates.addLast(new HealthBarUpdate(var1, var2, var3, var4)); + } + + } else { + IterableNodeDeque.IterableNodeDeque_addBefore(new HealthBarUpdate(var1, var2, var3, var4), var5); + if(var6 >= 4) { + this.updates.last().remove(); + } + + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Lbg;", + garbageValue = "1594721795" + ) + @Export("get") + HealthBarUpdate get(int var1) { + HealthBarUpdate var2 = (HealthBarUpdate)this.updates.last(); + if(var2 != null && var2.cycle <= var1) { + for(HealthBarUpdate var3 = (HealthBarUpdate)this.updates.previous(); var3 != null && var3.cycle <= var1; var3 = (HealthBarUpdate)this.updates.previous()) { + var2.remove(); + var2 = var3; + } + + if(this.definition.int5 + var2.cycleOffset + var2.cycle > var1) { + return var2; + } else { + var2.remove(); + return null; + } + } else { + return null; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "611019365" + ) + @Export("isEmpty") + boolean isEmpty() { + return this.updates.isEmpty(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(CI)B", + garbageValue = "798421382" + ) + @Export("charToByteCp1252") + public static byte charToByteCp1252(char var0) { + byte var1; + if(var0 > 0 && var0 < 128 || var0 >= 160 && var0 <= 255) { + var1 = (byte)var0; + } else if(var0 == 8364) { + var1 = -128; + } else if(var0 == 8218) { + var1 = -126; + } else if(var0 == 402) { + var1 = -125; + } else if(var0 == 8222) { + var1 = -124; + } else if(var0 == 8230) { + var1 = -123; + } else if(var0 == 8224) { + var1 = -122; + } else if(var0 == 8225) { + var1 = -121; + } else if(var0 == 710) { + var1 = -120; + } else if(var0 == 8240) { + var1 = -119; + } else if(var0 == 352) { + var1 = -118; + } else if(var0 == 8249) { + var1 = -117; + } else if(var0 == 338) { + var1 = -116; + } else if(var0 == 381) { + var1 = -114; + } else if(var0 == 8216) { + var1 = -111; + } else if(var0 == 8217) { + var1 = -110; + } else if(var0 == 8220) { + var1 = -109; + } else if(var0 == 8221) { + var1 = -108; + } else if(var0 == 8226) { + var1 = -107; + } else if(var0 == 8211) { + var1 = -106; + } else if(var0 == 8212) { + var1 = -105; + } else if(var0 == 732) { + var1 = -104; + } else if(var0 == 8482) { + var1 = -103; + } else if(var0 == 353) { + var1 = -102; + } else if(var0 == 8250) { + var1 = -101; + } else if(var0 == 339) { + var1 = -100; + } else if(var0 == 382) { + var1 = -98; + } else if(var0 == 376) { + var1 = -97; + } else { + var1 = 63; + } + + return var1; + } + + @ObfuscatedName("fo") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-1326999134" + ) + static void method1994(int var0, int var1) { + if(Client.__client_qf != 0 && var0 != -1) { + Login.method2076(Login.indexCache11, var0, 0, Client.__client_qf, false); + Client.__client_qq = true; + } + + } +} diff --git a/rs-client/src/main/java/HealthBarDefinition.java b/rs-client/src/main/java/HealthBarDefinition.java new file mode 100644 index 0000000000..80128ffc07 --- /dev/null +++ b/rs-client/src/main/java/HealthBarDefinition.java @@ -0,0 +1,215 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ii") +@Implements("HealthBarDefinition") +public class HealthBarDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__ii_m") + public static AbstractIndexCache __ii_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__ii_f") + public static AbstractIndexCache __ii_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("HealthBarDefinition_cached") + public static EvictingDualNodeHashTable HealthBarDefinition_cached; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("HealthBarDefinition_cachedSprites") + static EvictingDualNodeHashTable HealthBarDefinition_cachedSprites; + @ObfuscatedName("lx") + @ObfuscatedGetter( + intValue = 1912123225 + ) + @Export("selectedItemSlot") + static int selectedItemSlot; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1515955705 + ) + @Export("__o") + public int __o; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 390656615 + ) + @Export("int1") + public int int1; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 1890433231 + ) + @Export("int2") + public int int2; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1180353973 + ) + @Export("int3") + public int int3; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -1956457117 + ) + @Export("int4") + public int int4; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -642961053 + ) + @Export("int5") + public int int5; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 1310001257 + ) + @Export("spriteId1") + int spriteId1; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -1707680631 + ) + @Export("spriteId2") + int spriteId2; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -354704697 + ) + @Export("width") + public int width; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 166567703 + ) + @Export("widthPadding") + public int widthPadding; + + static { + HealthBarDefinition_cached = new EvictingDualNodeHashTable(64); + HealthBarDefinition_cachedSprites = new EvictingDualNodeHashTable(64); + } + + public HealthBarDefinition() { + this.int1 = 255; + this.int2 = 255; + this.int3 = -1; + this.int4 = 1; + this.int5 = 70; + this.spriteId1 = -1; + this.spriteId2 = -1; + this.width = 30; + this.widthPadding = 0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "280763431" + ) + @Export("read") + public void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;IB)V", + garbageValue = "10" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + var1.__ag_302(); + } else if(var2 == 2) { + this.int1 = var1.readUnsignedByte(); + } else if(var2 == 3) { + this.int2 = var1.readUnsignedByte(); + } else if(var2 == 4) { + this.int3 = 0; + } else if(var2 == 5) { + this.int5 = var1.__ag_302(); + } else if(var2 == 6) { + var1.readUnsignedByte(); + } else if(var2 == 7) { + this.spriteId1 = var1.__ap_310(); + } else if(var2 == 8) { + this.spriteId2 = var1.__ap_310(); + } else if(var2 == 11) { + this.int3 = var1.__ag_302(); + } else if(var2 == 14) { + this.width = var1.readUnsignedByte(); + } else if(var2 == 15) { + this.widthPadding = var1.readUnsignedByte(); + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)Lln;", + garbageValue = "-97" + ) + @Export("getSprite1") + public Sprite getSprite1() { + if(this.spriteId1 < 0) { + return null; + } else { + Sprite var1 = (Sprite)HealthBarDefinition_cachedSprites.get((long)this.spriteId1); + if(var1 != null) { + return var1; + } else { + var1 = class322.readSprite(__ii_f, this.spriteId1, 0); + if(var1 != null) { + HealthBarDefinition_cachedSprites.put(var1, (long)this.spriteId1); + } + + return var1; + } + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(B)Lln;", + garbageValue = "-17" + ) + @Export("getSprite2") + public Sprite getSprite2() { + if(this.spriteId2 < 0) { + return null; + } else { + Sprite var1 = (Sprite)HealthBarDefinition_cachedSprites.get((long)this.spriteId2); + if(var1 != null) { + return var1; + } else { + var1 = class322.readSprite(__ii_f, this.spriteId2, 0); + if(var1 != null) { + HealthBarDefinition_cachedSprites.put(var1, (long)this.spriteId2); + } + + return var1; + } + } + } +} diff --git a/rs-client/src/main/java/HealthBarUpdate.java b/rs-client/src/main/java/HealthBarUpdate.java new file mode 100644 index 0000000000..4970ba4bd4 --- /dev/null +++ b/rs-client/src/main/java/HealthBarUpdate.java @@ -0,0 +1,94 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bg") +@Implements("HealthBarUpdate") +public class HealthBarUpdate extends Node { + @ObfuscatedName("gl") + @Export("regionMapArchives") + static byte[][] regionMapArchives; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 2103089795 + ) + @Export("cycle") + int cycle; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1821995313 + ) + @Export("health") + int health; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -820353645 + ) + @Export("health2") + int health2; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1876302639 + ) + @Export("cycleOffset") + int cycleOffset; + + HealthBarUpdate(int var1, int var2, int var3, int var4) { + this.cycle = var1; + this.health = var2; + this.health2 = var3; + this.cycleOffset = var4; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "-631434243" + ) + @Export("set") + void set(int var1, int var2, int var3, int var4) { + this.cycle = var1; + this.health = var2; + this.health2 = var3; + this.cycleOffset = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;I)Ljava/lang/String;", + garbageValue = "342552136" + ) + public static String method1722(CharSequence var0) { + long var3 = 0L; + int var5 = var0.length(); + + for(int var6 = 0; var6 < var5; ++var6) { + var3 *= 37L; + char var7 = var0.charAt(var6); + if(var7 >= 'A' && var7 <= 'Z') { + var3 += (long)(var7 + 1 - 65); + } else if(var7 >= 'a' && var7 <= 'z') { + var3 += (long)(var7 + 1 - 97); + } else if(var7 >= '0' && var7 <= '9') { + var3 += (long)(var7 + 27 - 48); + } + + if(var3 >= 177917621779460413L) { + break; + } + } + + while(0L == var3 % 37L && var3 != 0L) { + var3 /= 37L; + } + + String var8 = Clock.method3534(var3); + if(var8 == null) { + var8 = ""; + } + + return var8; + } +} diff --git a/rs-client/src/main/java/HitSplatDefinition.java b/rs-client/src/main/java/HitSplatDefinition.java new file mode 100644 index 0000000000..80ade46bc1 --- /dev/null +++ b/rs-client/src/main/java/HitSplatDefinition.java @@ -0,0 +1,414 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jm") +@Implements("HitSplatDefinition") +public class HitSplatDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jm_m") + static AbstractIndexCache __jm_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jm_f") + static AbstractIndexCache __jm_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jm_q") + static AbstractIndexCache __jm_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("HitSplatDefinition_cached") + static EvictingDualNodeHashTable HitSplatDefinition_cached; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__jm_o") + static EvictingDualNodeHashTable __jm_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("HitSplatDefinition_cachedFonts") + static EvictingDualNodeHashTable HitSplatDefinition_cachedFonts; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 431076793 + ) + @Export("fontId") + int fontId; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -1151968735 + ) + @Export("surfaceOffsetY") + public int __n; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -102270561 + ) + @Export("__i") + public int __i; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -1533306389 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -1677628889 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 1683792491 + ) + @Export("__j") + int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 1845590719 + ) + @Export("__s") + int __s; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = -389283589 + ) + @Export("__t") + public int __t; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = 1751286975 + ) + @Export("__y") + public int __y; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 199815415 + ) + @Export("__h") + public int __h; + @ObfuscatedName("b") + @Export("__b") + String __b; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 1003116765 + ) + @Export("__c") + public int __c; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = 1498880475 + ) + @Export("__r") + public int __r; + @ObfuscatedName("p") + @Export("transforms") + public int[] transforms; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = 516423393 + ) + @Export("transformVarbit") + int transformVarbit; + @ObfuscatedName("ag") + @ObfuscatedGetter( + intValue = -1841054487 + ) + @Export("transformVarp") + int transformVarp; + + static { + HitSplatDefinition_cached = new EvictingDualNodeHashTable(64); + __jm_o = new EvictingDualNodeHashTable(64); + HitSplatDefinition_cachedFonts = new EvictingDualNodeHashTable(20); + } + + HitSplatDefinition() { + this.fontId = -1; + this.__n = 16777215; + this.__i = 70; + this.__a = -1; + this.__z = -1; + this.__j = -1; + this.__s = -1; + this.__t = 0; + this.__y = 0; + this.__h = -1; + this.__b = ""; + this.__c = -1; + this.__r = 0; + this.transformVarbit = -1; + this.transformVarp = -1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1963348982" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "1789835753" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.fontId = var1.__ap_310(); + } else if(var2 == 2) { + this.__n = var1.readMedium(); + } else if(var2 == 3) { + this.__a = var1.__ap_310(); + } else if(var2 == 4) { + this.__j = var1.__ap_310(); + } else if(var2 == 5) { + this.__z = var1.__ap_310(); + } else if(var2 == 6) { + this.__s = var1.__ap_310(); + } else if(var2 == 7) { + this.__t = var1.__aq_303(); + } else if(var2 == 8) { + this.__b = var1.readStringCp1252NullCircumfixed(); + } else if(var2 == 9) { + this.__i = var1.__ag_302(); + } else if(var2 == 10) { + this.__y = var1.__aq_303(); + } else if(var2 == 11) { + this.__h = 0; + } else if(var2 == 12) { + this.__c = var1.readUnsignedByte(); + } else if(var2 == 13) { + this.__r = var1.__aq_303(); + } else if(var2 == 14) { + this.__h = var1.__ag_302(); + } else if(var2 == 17 || var2 == 18) { + this.transformVarbit = var1.__ag_302(); + if(this.transformVarbit == 65535) { + this.transformVarbit = -1; + } + + this.transformVarp = var1.__ag_302(); + if(this.transformVarp == 65535) { + this.transformVarp = -1; + } + + int var3 = -1; + if(var2 == 18) { + var3 = var1.__ag_302(); + if(var3 == 65535) { + var3 = -1; + } + } + + int var4 = var1.readUnsignedByte(); + this.transforms = new int[var4 + 2]; + + for(int var5 = 0; var5 <= var4; ++var5) { + this.transforms[var5] = var1.__ag_302(); + if(this.transforms[var5] == 65535) { + this.transforms[var5] = -1; + } + } + + this.transforms[var4 + 1] = var3; + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(B)Ljm;", + garbageValue = "-35" + ) + @Export("transform") + public final HitSplatDefinition transform() { + int var1 = -1; + if(this.transformVarbit != -1) { + var1 = WorldMapSection2.getVarbit(this.transformVarbit); + } else if(this.transformVarp != -1) { + var1 = Varps.Varps_main[this.transformVarp]; + } + + int var2; + if(var1 >= 0 && var1 < this.transforms.length - 1) { + var2 = this.transforms[var1]; + } else { + var2 = this.transforms[this.transforms.length - 1]; + } + + return var2 != -1?class72.getHitSplatDefinition(var2):null; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IS)Ljava/lang/String;", + garbageValue = "1000" + ) + @Export("getString") + public String getString(int var1) { + String var2 = this.__b; + + while(true) { + int var3 = var2.indexOf("%1"); + if(var3 < 0) { + return var2; + } + + var2 = var2.substring(0, var3) + ByteArrayPool.method4001(var1, false) + var2.substring(var3 + 2); + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)Lln;", + garbageValue = "-1692599381" + ) + @Export("__g_417") + public Sprite __g_417() { + if(this.__a < 0) { + return null; + } else { + Sprite var1 = (Sprite)__jm_o.get((long)this.__a); + if(var1 != null) { + return var1; + } else { + var1 = class322.readSprite(__jm_f, this.__a, 0); + if(var1 != null) { + __jm_o.put(var1, (long)this.__a); + } + + return var1; + } + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(B)Lln;", + garbageValue = "-15" + ) + @Export("__l_418") + public Sprite __l_418() { + if(this.__z < 0) { + return null; + } else { + Sprite var1 = (Sprite)__jm_o.get((long)this.__z); + if(var1 != null) { + return var1; + } else { + var1 = class322.readSprite(__jm_f, this.__z, 0); + if(var1 != null) { + __jm_o.put(var1, (long)this.__z); + } + + return var1; + } + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)Lln;", + garbageValue = "-49" + ) + @Export("__e_419") + public Sprite __e_419() { + if(this.__j < 0) { + return null; + } else { + Sprite var1 = (Sprite)__jm_o.get((long)this.__j); + if(var1 != null) { + return var1; + } else { + var1 = class322.readSprite(__jm_f, this.__j, 0); + if(var1 != null) { + __jm_o.put(var1, (long)this.__j); + } + + return var1; + } + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(I)Lln;", + garbageValue = "393569067" + ) + @Export("__x_420") + public Sprite __x_420() { + if(this.__s < 0) { + return null; + } else { + Sprite var1 = (Sprite)__jm_o.get((long)this.__s); + if(var1 != null) { + return var1; + } else { + var1 = class322.readSprite(__jm_f, this.__s, 0); + if(var1 != null) { + __jm_o.put(var1, (long)this.__s); + } + + return var1; + } + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(I)Lkk;", + garbageValue = "1389815135" + ) + @Export("getFont") + public Font getFont() { + if(this.fontId == -1) { + return null; + } else { + Font var1 = (Font)HitSplatDefinition_cachedFonts.get((long)this.fontId); + if(var1 != null) { + return var1; + } else { + var1 = SpriteIds.method5823(__jm_f, __jm_q, this.fontId, 0); + if(var1 != null) { + HitSplatDefinition_cachedFonts.put(var1, (long)this.fontId); + } + + return var1; + } + } + } + + @ObfuscatedName("o") + public static int method4972(long var0) { + return (int)(var0 >>> 17 & 4294967295L); + } +} diff --git a/rs-client/src/main/java/Huffman.java b/rs-client/src/main/java/Huffman.java new file mode 100644 index 0000000000..4561d9a722 --- /dev/null +++ b/rs-client/src/main/java/Huffman.java @@ -0,0 +1,334 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gd") +@Implements("Huffman") +public class Huffman { + @ObfuscatedName("e") + @Export("__gd_e") + static int[][] __gd_e; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -842662451 + ) + @Export("canvasHeight") + public static int canvasHeight; + @ObfuscatedName("m") + @Export("__m") + int[] __m; + @ObfuscatedName("f") + @Export("__f") + byte[] __f; + @ObfuscatedName("q") + @Export("__q") + int[] __q; + + public Huffman(byte[] var1) { + int var2 = var1.length; + this.__m = new int[var2]; + this.__f = var1; + int[] var3 = new int[33]; + this.__q = new int[8]; + int var4 = 0; + + for(int var5 = 0; var5 < var2; ++var5) { + byte var6 = var1[var5]; + if(var6 != 0) { + int var7 = 1 << 32 - var6; + int var8 = var3[var6]; + this.__m[var5] = var8; + int var9; + int var10; + int var11; + int var12; + if((var8 & var7) != 0) { + var9 = var3[var6 - 1]; + } else { + var9 = var8 | var7; + + for(var10 = var6 - 1; var10 >= 1; --var10) { + var11 = var3[var10]; + if(var11 != var8) { + break; + } + + var12 = 1 << 32 - var10; + if((var11 & var12) != 0) { + var3[var10] = var3[var10 - 1]; + break; + } + + var3[var10] = var11 | var12; + } + } + + var3[var6] = var9; + + for(var10 = var6 + 1; var10 <= 32; ++var10) { + if(var8 == var3[var10]) { + var3[var10] = var9; + } + } + + var10 = 0; + + for(var11 = 0; var11 < var6; ++var11) { + var12 = Integer.MIN_VALUE >>> var11; + if((var8 & var12) != 0) { + if(this.__q[var10] == 0) { + this.__q[var10] = var4; + } + + var10 = this.__q[var10]; + } else { + ++var10; + } + + if(var10 >= this.__q.length) { + int[] var13 = new int[this.__q.length * 2]; + + for(int var14 = 0; var14 < this.__q.length; ++var14) { + var13[var14] = this.__q[var14]; + } + + this.__q = var13; + } + + var12 >>>= 1; + } + + this.__q[var10] = ~var5; + if(var10 >= var4) { + var4 = var10 + 1; + } + } + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BII[BIB)I", + garbageValue = "64" + ) + @Export("__m_293") + public int __m_293(byte[] var1, int var2, int var3, byte[] var4, int var5) { + int var6 = 0; + int var7 = var5 << 3; + + for(var3 += var2; var2 < var3; ++var2) { + int var8 = var1[var2] & 255; + int var9 = this.__m[var8]; + byte var10 = this.__f[var8]; + if(var10 == 0) { + throw new RuntimeException(""); + } + + int var11 = var7 >> 3; + int var12 = var7 & 7; + var6 &= -var12 >> 31; + int var13 = (var10 + var12 - 1 >> 3) + var11; + var12 += 24; + var4[var11] = (byte)(var6 |= var9 >>> var12); + if(var11 < var13) { + ++var11; + var12 -= 8; + var4[var11] = (byte)(var6 = var9 >>> var12); + if(var11 < var13) { + ++var11; + var12 -= 8; + var4[var11] = (byte)(var6 = var9 >>> var12); + if(var11 < var13) { + ++var11; + var12 -= 8; + var4[var11] = (byte)(var6 = var9 >>> var12); + if(var11 < var13) { + ++var11; + var12 -= 8; + var4[var11] = (byte)(var6 = var9 << -var12); + } + } + } + } + + var7 += var10; + } + + return (var7 + 7 >> 3) - var5; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "([BI[BIII)I", + garbageValue = "-2094399899" + ) + @Export("__f_294") + public int __f_294(byte[] var1, int var2, byte[] var3, int var4, int var5) { + if(var5 == 0) { + return 0; + } else { + int var6 = 0; + var5 += var4; + int var7 = var2; + + while(true) { + byte var8 = var1[var7]; + if(var8 < 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + int var9; + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 64) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 32) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 16) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 8) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 4) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 2) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + if((var8 & 1) != 0) { + var6 = this.__q[var6]; + } else { + ++var6; + } + + if((var9 = this.__q[var6]) < 0) { + var3[var4++] = (byte)(~var9); + if(var4 >= var5) { + break; + } + + var6 = 0; + } + + ++var7; + } + + return var7 + 1 - var2; + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Lho;", + garbageValue = "60" + ) + @Export("getWidget") + public static Widget getWidget(int var0) { + int var1 = var0 >> 16; + int var2 = var0 & 65535; + if(Widget.widgets[var1] == null || Widget.widgets[var1][var2] == null) { + boolean var3 = GroundItemPile.loadWidgetGroup(var1); + if(!var3) { + return null; + } + } + + return Widget.widgets[var1][var2]; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([Ljava/lang/String;[SB)V", + garbageValue = "-20" + ) + public static void method3695(String[] var0, short[] var1) { + DynamicObject.method2218(var0, var1, 0, var0.length - 1); + } +} diff --git a/rs-client/src/main/java/IgnoreList.java b/rs-client/src/main/java/IgnoreList.java new file mode 100644 index 0000000000..17bef395e7 --- /dev/null +++ b/rs-client/src/main/java/IgnoreList.java @@ -0,0 +1,153 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kj") +@Implements("IgnoreList") +public class IgnoreList extends UserList { + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("loginType") + final LoginType loginType; + + @ObfuscatedSignature( + signature = "(Llx;)V" + ) + public IgnoreList(LoginType var1) { + super(400); + this.loginType = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljs;", + garbageValue = "-2063112195" + ) + User newInstance() { + return new Ignored(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)[Ljs;", + garbageValue = "861814350" + ) + User[] newTypedArray(int var1) { + return new Ignored[var1]; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;IB)V", + garbageValue = "32" + ) + @Export("read") + public void read(Buffer var1, int var2) { + while(true) { + if(var1.index < var2) { + int var3 = var1.readUnsignedByte(); + boolean var4 = (var3 & 1) == 1; + Username var5 = new Username(var1.readStringCp1252NullTerminated(), this.loginType); + Username var6 = new Username(var1.readStringCp1252NullTerminated(), this.loginType); + var1.readStringCp1252NullTerminated(); + if(var5 != null && var5.hasCleanName()) { + Ignored var7 = (Ignored)this.getByCurrentUsername(var5); + if(var4) { + Ignored var8 = (Ignored)this.getByCurrentUsername(var6); + if(var8 != null && var8 != var7) { + if(var7 != null) { + this.remove(var8); + } else { + var7 = var8; + } + } + } + + if(var7 != null) { + this.changeName(var7, var5, var6); + continue; + } + + if(this.size() < 400) { + int var9 = this.size(); + var7 = (Ignored)this.addLast(var5, var6); + var7.id = var9; + } + continue; + } + + throw new IllegalStateException(); + } + + return; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;IZB)I", + garbageValue = "5" + ) + static int method5438(CharSequence var0, int var1, boolean var2) { + if(var1 >= 2 && var1 <= 36) { + boolean var3 = false; + boolean var4 = false; + int var5 = 0; + int var6 = var0.length(); + + for(int var7 = 0; var7 < var6; ++var7) { + char var8 = var0.charAt(var7); + if(var7 == 0) { + if(var8 == '-') { + var3 = true; + continue; + } + + if(var8 == '+') { + continue; + } + } + + int var10; + if(var8 >= '0' && var8 <= '9') { + var10 = var8 - '0'; + } else if(var8 >= 'A' && var8 <= 'Z') { + var10 = var8 - '7'; + } else { + if(var8 < 'a' || var8 > 'z') { + throw new NumberFormatException(); + } + + var10 = var8 - 'W'; + } + + if(var10 >= var1) { + throw new NumberFormatException(); + } + + if(var3) { + var10 = -var10; + } + + int var9 = var10 + var5 * var1; + if(var9 / var1 != var5) { + throw new NumberFormatException(); + } + + var5 = var9; + var4 = true; + } + + if(!var4) { + throw new NumberFormatException(); + } else { + return var5; + } + } else { + throw new IllegalArgumentException(""); + } + } +} diff --git a/rs-client/src/main/java/Ignored.java b/rs-client/src/main/java/Ignored.java new file mode 100644 index 0000000000..1a0cca68eb --- /dev/null +++ b/rs-client/src/main/java/Ignored.java @@ -0,0 +1,61 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ks") +@Implements("Ignored") +public class Ignored extends User { + @ObfuscatedName("at") + @Export("__ks_at") + protected static String __ks_at; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 344024525 + ) + @Export("id") + int id; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lks;I)I", + garbageValue = "-842469150" + ) + @Export("compareTo00") + int compareTo00(Ignored var1) { + return this.id - var1.id; + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(Ljs;I)I", + garbageValue = "1627362569" + ) + public int compareTo0(User var1) { + return this.compareTo00((Ignored)var1); + } + + @ObfuscatedName("compareTo") + public int compareTo(Object var1) { + return this.compareTo00((Ignored)var1); + } + + @ObfuscatedName("fv") + @ObfuscatedSignature( + signature = "(IIIB)V", + garbageValue = "-68" + ) + @Export("queueSoundEffect") + static void queueSoundEffect(int var0, int var1, int var2) { + if(Client.__client_qp != 0 && var1 != 0 && Client.soundEffectCount < 50) { + Client.soundEffectIds[Client.soundEffectCount] = var0; + Client.unknownSoundValues1[Client.soundEffectCount] = var1; + Client.queuedSoundEffectDelays[Client.soundEffectCount] = var2; + Client.soundEffects[Client.soundEffectCount] = null; + Client.soundLocations[Client.soundEffectCount] = 0; + ++Client.soundEffectCount; + } + + } +} diff --git a/rs-client/src/main/java/IndexCache.java b/rs-client/src/main/java/IndexCache.java new file mode 100644 index 0000000000..e10c660ead --- /dev/null +++ b/rs-client/src/main/java/IndexCache.java @@ -0,0 +1,565 @@ +import java.util.zip.CRC32; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("it") +@Implements("IndexCache") +public class IndexCache extends AbstractIndexCache { + @ObfuscatedName("aj") + @Export("IndexCache_crc") + static CRC32 IndexCache_crc; + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Lff;" + ) + @Export("indexStore") + IndexStore indexStore; + @ObfuscatedName("r") + @ObfuscatedSignature( + signature = "Lff;" + ) + @Export("referenceStore") + IndexStore referenceStore; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -1579549759 + ) + @Export("index") + int index; + @ObfuscatedName("v") + @Export("__v") + volatile boolean __v; + @ObfuscatedName("ag") + @Export("__ag") + boolean __ag; + @ObfuscatedName("aq") + @Export("validArchives") + volatile boolean[] validArchives; + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = 1472870917 + ) + @Export("indexReferenceCrc") + int indexReferenceCrc; + @ObfuscatedName("ar") + @ObfuscatedGetter( + intValue = -785528219 + ) + @Export("indexReferenceVersion") + int indexReferenceVersion; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = -1884661133 + ) + @Export("__ac") + int __ac; + + static { + IndexCache_crc = new CRC32(); + } + + @ObfuscatedSignature( + signature = "(Lff;Lff;IZZZ)V" + ) + public IndexCache(IndexStore var1, IndexStore var2, int var3, boolean var4, boolean var5, boolean var6) { + super(var4, var5); + this.__v = false; + this.__ag = false; + this.__ac = -1; + this.indexStore = var1; + this.referenceStore = var2; + this.index = var3; + this.__ag = var6; + int var8 = this.index; + if(Players.NetCache_reference != null) { + Players.NetCache_reference.index = var8 * 8 + 5; + int var9 = Players.NetCache_reference.readInt(); + int var10 = Players.NetCache_reference.readInt(); + this.loadIndexReference(var9, var10); + } else { + PacketBuffer.requestNetFile((IndexCache)null, 255, 255, 0, (byte)0, true); + NetCache.NetCache_indexCaches[var8] = this; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2102142648" + ) + void __f_392(int var1) { + int var2 = this.index; + long var3 = (long)((var2 << 16) + var1); + NetFileRequest var5 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var3); + if(var5 != null) { + NetCache.NetCache_pendingWritesQueue.addLast(var5); + } + + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-1809769865" + ) + int archiveLoadPercent(int var1) { + return super.archives[var1] != null?100:(this.validArchives[var1]?100:class54.method1086(this.index, var1)); + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1829145107" + ) + void loadArchive(int var1) { + if(this.indexStore != null && this.validArchives != null && this.validArchives[var1]) { + IndexStore var2 = this.indexStore; + byte[] var4 = null; + NodeDeque var5 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { + for(IndexStoreAction var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var6 != null; var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) { + if(var6.key == (long)var1 && var2 == var6.indexStore && var6.type == 0) { + var4 = var6.data; + break; + } + } + } + + if(var4 != null) { + this.load(var2, var1, var4, true); + } else { + byte[] var9 = var2.read(var1); + this.load(var2, var1, var9, true); + } + } else { + PacketBuffer.requestNetFile(this, this.index, var1, super.archiveCrcs[var1], (byte)2, true); + } + + } + + @ObfuscatedName("cx") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1750279412" + ) + @Export("__cx_404") + public boolean __cx_404() { + return this.__v; + } + + @ObfuscatedName("ca") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1671499504" + ) + @Export("__ca_405") + public int __ca_405() { + if(this.__v) { + return 100; + } else if(super.archives != null) { + return 99; + } else { + int var1 = class54.method1086(255, this.index); + if(var1 >= 100) { + var1 = 99; + } + + return var1; + } + } + + @ObfuscatedName("co") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-1621053520" + ) + @Export("loadIndexReference") + public void loadIndexReference(int var1, int var2) { + this.indexReferenceCrc = var1; + this.indexReferenceVersion = var2; + if(this.referenceStore != null) { + int var3 = this.index; + IndexStore var4 = this.referenceStore; + byte[] var6 = null; + NodeDeque var7 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { + for(IndexStoreAction var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var8 != null; var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) { + if(var8.key == (long)var3 && var4 == var8.indexStore && var8.type == 0) { + var6 = var8.data; + break; + } + } + } + + if(var6 != null) { + this.load(var4, var3, var6, true); + } else { + byte[] var11 = var4.read(var3); + this.load(var4, var3, var11, true); + } + } else { + PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); + } + + } + + @ObfuscatedName("de") + @ObfuscatedSignature( + signature = "(I[BZZB)V", + garbageValue = "24" + ) + @Export("write") + public void write(int var1, byte[] var2, boolean var3, boolean var4) { + if(var3) { + if(this.__v) { + throw new RuntimeException(); + } + + if(this.referenceStore != null) { + Widget.method4499(this.index, var2, this.referenceStore); + } + + this.setIndexReference(var2); + this.loadAllLocal(); + } else { + var2[var2.length - 2] = (byte)(super.archiveVersions[var1] >> 8); + var2[var2.length - 1] = (byte)super.archiveVersions[var1]; + if(this.indexStore != null) { + Widget.method4499(var1, var2, this.indexStore); + this.validArchives[var1] = true; + } + + if(var4) { + super.archives[var1] = Projectile.byteArrayToObject(var2, false); + } + } + + } + + @ObfuscatedName("dx") + @ObfuscatedSignature( + signature = "(Lff;I[BZI)V", + garbageValue = "-2045340856" + ) + @Export("load") + void load(IndexStore var1, int var2, byte[] var3, boolean var4) { + int var5; + if(var1 == this.referenceStore) { + if(this.__v) { + throw new RuntimeException(); + } + + if(var3 == null) { + PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); + return; + } + + IndexCache_crc.reset(); + IndexCache_crc.update(var3, 0, var3.length); + var5 = (int)IndexCache_crc.getValue(); + if(var5 != this.indexReferenceCrc) { + PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); + return; + } + + Buffer var9 = new Buffer(Strings.decompressBytes(var3)); + int var7 = var9.readUnsignedByte(); + if(var7 != 5 && var7 != 6) { + throw new RuntimeException(var7 + "," + this.index + "," + var2); + } + + int var8 = 0; + if(var7 >= 6) { + var8 = var9.readInt(); + } + + if(var8 != this.indexReferenceVersion) { + PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); + return; + } + + this.setIndexReference(var3); + this.loadAllLocal(); + } else { + if(!var4 && var2 == this.__ac) { + this.__v = true; + } + + if(var3 == null || var3.length <= 2) { + this.validArchives[var2] = false; + if(this.__ag || var4) { + PacketBuffer.requestNetFile(this, this.index, var2, super.archiveCrcs[var2], (byte)2, var4); + } + + return; + } + + IndexCache_crc.reset(); + IndexCache_crc.update(var3, 0, var3.length - 2); + var5 = (int)IndexCache_crc.getValue(); + int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255); + if(var5 != super.archiveCrcs[var2] || var6 != super.archiveVersions[var2]) { + this.validArchives[var2] = false; + if(this.__ag || var4) { + PacketBuffer.requestNetFile(this, this.index, var2, super.archiveCrcs[var2], (byte)2, var4); + } + + return; + } + + this.validArchives[var2] = true; + if(var4) { + super.archives[var2] = Projectile.byteArrayToObject(var3, false); + } + } + + } + + @ObfuscatedName("dt") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1357733042" + ) + @Export("loadAllLocal") + void loadAllLocal() { + this.validArchives = new boolean[super.archives.length]; + + int var1; + for(var1 = 0; var1 < this.validArchives.length; ++var1) { + this.validArchives[var1] = false; + } + + if(this.indexStore == null) { + this.__v = true; + } else { + this.__ac = -1; + + for(var1 = 0; var1 < this.validArchives.length; ++var1) { + if(super.recordCounts[var1] > 0) { + Npc.method2009(var1, this.indexStore, this); + this.__ac = var1; + } + } + + if(this.__ac == -1) { + this.__v = true; + } + + } + } + + @ObfuscatedName("dn") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "0" + ) + @Export("__dn_407") + public boolean __dn_407(int var1) { + return this.validArchives[var1]; + } + + @ObfuscatedName("df") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1419648188" + ) + @Export("__df_408") + public boolean __df_408(int var1) { + return this.__j_395(var1) != null; + } + + @ObfuscatedName("da") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1809381772" + ) + @Export("loadPercent") + public int loadPercent() { + int var1 = 0; + int var2 = 0; + + int var3; + for(var3 = 0; var3 < super.archives.length; ++var3) { + if(super.recordCounts[var3] > 0) { + var1 += 100; + var2 += this.archiveLoadPercent(var3); + } + } + + if(var1 == 0) { + return 100; + } else { + var3 = var2 * 100 / var1; + return var3; + } + } + + @ObfuscatedName("jc") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-34" + ) + static final void method4703(int var0) { + class12.method159(); + + for(ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) { + if(var1.obj != null) { + var1.set(); + } + } + + int var4 = SecureRandomCallable.method1140(var0).type; + if(var4 != 0) { + int var2 = Varps.Varps_main[var0]; + if(var4 == 1) { + if(var2 == 1) { + Rasterizer3D.Rasterizer3D_setBrightness(0.9D); + ((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.9D); + } + + if(var2 == 2) { + Rasterizer3D.Rasterizer3D_setBrightness(0.8D); + ((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.8D); + } + + if(var2 == 3) { + Rasterizer3D.Rasterizer3D_setBrightness(0.7D); + ((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.7D); + } + + if(var2 == 4) { + Rasterizer3D.Rasterizer3D_setBrightness(0.6D); + ((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).setBrightness(0.6D); + } + + ObjectDefinition.method5041(); + } + + if(var4 == 3) { + short var3 = 0; + if(var2 == 0) { + var3 = 255; + } + + if(var2 == 1) { + var3 = 192; + } + + if(var2 == 2) { + var3 = 128; + } + + if(var2 == 3) { + var3 = 64; + } + + if(var2 == 4) { + var3 = 0; + } + + if(var3 != Client.__client_qf) { + if(Client.__client_qf == 0 && Client.__client_qy != -1) { + Login.method2076(UserComparator3.indexCache6, Client.__client_qy, 0, var3, false); + Client.__client_qq = false; + } else if(var3 == 0) { + class214.midiPcmStream.clear(); + class214.__hf_o = 1; + class214.__hf_u = null; + Client.__client_qq = false; + } else { + class203.method4008(var3); + } + + Client.__client_qf = var3; + } + } + + if(var4 == 4) { + if(var2 == 0) { + Client.__client_qp = 127; + } + + if(var2 == 1) { + Client.__client_qp = 96; + } + + if(var2 == 2) { + Client.__client_qp = 64; + } + + if(var2 == 3) { + Client.__client_qp = 32; + } + + if(var2 == 4) { + Client.__client_qp = 0; + } + } + + if(var4 == 5) { + Client.__client_ku = var2; + } + + if(var4 == 6) { + Client.chatEffects = var2; + } + + if(var4 == 9) { + Client.__client_mb = var2; + } + + if(var4 == 10) { + if(var2 == 0) { + Client.__client_qc = 127; + } + + if(var2 == 1) { + Client.__client_qc = 96; + } + + if(var2 == 2) { + Client.__client_qc = 64; + } + + if(var2 == 3) { + Client.__client_qc = 32; + } + + if(var2 == 4) { + Client.__client_qc = 0; + } + } + + if(var4 == 17) { + Client.followerIndex = var2 & 65535; + } + + if(var4 == 18) { + Client.playerAttackOption = (AttackOption)ScriptFrame.findEnumerated(ClientPacket.method3665(), var2); + if(Client.playerAttackOption == null) { + Client.playerAttackOption = AttackOption.AttackOption_dependsOnCombatLevels; + } + } + + if(var4 == 19) { + if(var2 == -1) { + Client.combatTargetPlayerIndex = -1; + } else { + Client.combatTargetPlayerIndex = var2 & 2047; + } + } + + if(var4 == 22) { + Client.npcAttackOption = (AttackOption)ScriptFrame.findEnumerated(ClientPacket.method3665(), var2); + if(Client.npcAttackOption == null) { + Client.npcAttackOption = AttackOption.AttackOption_dependsOnCombatLevels; + } + } + + } + } +} diff --git a/rs-client/src/main/java/IndexCacheLoader.java b/rs-client/src/main/java/IndexCacheLoader.java new file mode 100644 index 0000000000..54d9978e81 --- /dev/null +++ b/rs-client/src/main/java/IndexCacheLoader.java @@ -0,0 +1,709 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bd") +@Implements("IndexCacheLoader") +public class IndexCacheLoader { + @ObfuscatedName("pf") + @ObfuscatedSignature( + signature = "Lko;" + ) + static class310 field512; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__bd_u") + static IndexedSprite __bd_u; + @ObfuscatedName("x") + @Export("__bd_x") + public static short[][] __bd_x; + @ObfuscatedName("er") + @ObfuscatedGetter( + intValue = 636454135 + ) + @Export("__bd_er") + static int __bd_er; + @ObfuscatedName("gw") + @Export("regionMapArchiveIds") + static int[] regionMapArchiveIds; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache") + final IndexCache indexCache; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1459455501 + ) + @Export("__q") + final int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 782003089 + ) + @Export("__w") + int __w; + + @ObfuscatedSignature( + signature = "(Lit;Ljava/lang/String;)V" + ) + IndexCacheLoader(IndexCache var1, String var2) { + this.__w = 0; + this.indexCache = var1; + this.__q = var1.__t_397(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1352221725" + ) + @Export("__m_122") + boolean __m_122() { + this.__w = 0; + + for(int var1 = 0; var1 < this.__q; ++var1) { + if(!this.indexCache.__df_408(var1) || this.indexCache.__dn_407(var1)) { + ++this.__w; + } + } + + return this.__w >= this.__q; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Lkk;Lkk;Lkk;I)V", + garbageValue = "839403460" + ) + @Export("drawTitle") + static void drawTitle(Font var0, Font var1, Font var2) { + Login.__cu_q = (SoundCache.canvasWidth - 765) / 2; + Login.__cu_y = Login.__cu_q + 202; + Varps.__hv_h = Login.__cu_y + 180; + int var9; + int var11; + int var19; + byte var23; + int var24; + int var27; + int var28; + int var48; + if(Login.__cu_bk) { + if(class30.__ar_bd == null) { + class30.__ar_bd = class2.method20(WorldMapSection3.indexCache8, "sl_back", ""); + } + + IndexCache var36; + int var37; + int var39; + IndexedSprite[] var40; + if(Frames.__en_bc == null) { + var36 = WorldMapSection3.indexCache8; + var39 = var36.getArchiveId("sl_flags"); + var37 = var36.getRecordId(var39, ""); + if(!SpriteMask.method4392(var36, var39, var37)) { + var40 = null; + } else { + var40 = WorldMapLabel.method444(); + } + + Frames.__en_bc = var40; + } + + if(AttackOption.__cj_bo == null) { + var36 = WorldMapSection3.indexCache8; + var39 = var36.getArchiveId("sl_arrows"); + var37 = var36.getRecordId(var39, ""); + if(!SpriteMask.method4392(var36, var39, var37)) { + var40 = null; + } else { + var40 = WorldMapLabel.method444(); + } + + AttackOption.__cj_bo = var40; + } + + if(UrlRequest.__ey_bx == null) { + var36 = WorldMapSection3.indexCache8; + var39 = var36.getArchiveId("sl_stars"); + var37 = var36.getRecordId(var39, ""); + if(!SpriteMask.method4392(var36, var39, var37)) { + var40 = null; + } else { + var40 = WorldMapLabel.method444(); + } + + UrlRequest.__ey_bx = var40; + } + + if(SecureRandomFuture.__cn_bu == null) { + SecureRandomFuture.__cn_bu = MenuAction.method2025(WorldMapSection3.indexCache8, "leftarrow", ""); + } + + if(NetSocket.__fb_bm == null) { + NetSocket.__fb_bm = MenuAction.method2025(WorldMapSection3.indexCache8, "rightarrow", ""); + } + + Rasterizer2D.Rasterizer2D_fillRectangle(Login.__cu_q, 23, 765, 480, 0); + Rasterizer2D.drawGradient(Login.__cu_q, 0, 125, 23, 12425273, 9135624); + Rasterizer2D.drawGradient(Login.__cu_q + 125, 0, 640, 23, 5197647, 2697513); + var0.drawCentered("Select a world", Login.__cu_q + 62, 15, 0, -1); + if(UrlRequest.__ey_bx != null) { + UrlRequest.__ey_bx[1].__q_496(Login.__cu_q + 140, 1); + var1.draw("Members only world", Login.__cu_q + 152, 10, 16777215, -1); + UrlRequest.__ey_bx[0].__q_496(Login.__cu_q + 140, 12); + var1.draw("Free world", Login.__cu_q + 152, 21, 16777215, -1); + } + + if(AttackOption.__cj_bo != null) { + var48 = Login.__cu_q + 280; + if(World.__bt_e[0] == 0 && World.__bt_l[0] == 0) { + AttackOption.__cj_bo[2].__q_496(var48, 4); + } else { + AttackOption.__cj_bo[0].__q_496(var48, 4); + } + + if(World.__bt_e[0] == 0 && World.__bt_l[0] == 1) { + AttackOption.__cj_bo[3].__q_496(var48 + 15, 4); + } else { + AttackOption.__cj_bo[1].__q_496(var48 + 15, 4); + } + + var0.draw("World", var48 + 32, 17, 16777215, -1); + var24 = Login.__cu_q + 390; + if(World.__bt_e[0] == 1 && World.__bt_l[0] == 0) { + AttackOption.__cj_bo[2].__q_496(var24, 4); + } else { + AttackOption.__cj_bo[0].__q_496(var24, 4); + } + + if(World.__bt_e[0] == 1 && World.__bt_l[0] == 1) { + AttackOption.__cj_bo[3].__q_496(var24 + 15, 4); + } else { + AttackOption.__cj_bo[1].__q_496(var24 + 15, 4); + } + + var0.draw("Players", var24 + 32, 17, 16777215, -1); + var39 = Login.__cu_q + 500; + if(World.__bt_e[0] == 2 && World.__bt_l[0] == 0) { + AttackOption.__cj_bo[2].__q_496(var39, 4); + } else { + AttackOption.__cj_bo[0].__q_496(var39, 4); + } + + if(World.__bt_e[0] == 2 && World.__bt_l[0] == 1) { + AttackOption.__cj_bo[3].__q_496(var39 + 15, 4); + } else { + AttackOption.__cj_bo[1].__q_496(var39 + 15, 4); + } + + var0.draw("Location", var39 + 32, 17, 16777215, -1); + var37 = Login.__cu_q + 610; + if(World.__bt_e[0] == 3 && World.__bt_l[0] == 0) { + AttackOption.__cj_bo[2].__q_496(var37, 4); + } else { + AttackOption.__cj_bo[0].__q_496(var37, 4); + } + + if(World.__bt_e[0] == 3 && World.__bt_l[0] == 1) { + AttackOption.__cj_bo[3].__q_496(var37 + 15, 4); + } else { + AttackOption.__cj_bo[1].__q_496(var37 + 15, 4); + } + + var0.draw("Type", var37 + 32, 17, 16777215, -1); + } + + Rasterizer2D.Rasterizer2D_fillRectangle(Login.__cu_q + 708, 4, 50, 16, 0); + var1.drawCentered("Cancel", Login.__cu_q + 708 + 25, 16, 16777215, -1); + Login.__cu_bl = -1; + if(class30.__ar_bd != null) { + var23 = 88; + byte var51 = 19; + var39 = 765 / (var23 + 1) - 1; + var37 = 480 / (var51 + 1); + + do { + var27 = var37; + var28 = var39; + if(var37 * (var39 - 1) >= World.worldsCount) { + --var39; + } + + if(var39 * (var37 - 1) >= World.worldsCount) { + --var37; + } + + if(var39 * (var37 - 1) >= World.worldsCount) { + --var37; + } + } while(var37 != var27 || var39 != var28); + + var27 = (765 - var23 * var39) / (var39 + 1); + if(var27 > 5) { + var27 = 5; + } + + var28 = (480 - var51 * var37) / (var37 + 1); + if(var28 > 5) { + var28 = 5; + } + + var9 = (765 - var39 * var23 - var27 * (var39 - 1)) / 2; + int var10 = (480 - var37 * var51 - var28 * (var37 - 1)) / 2; + var11 = (var37 + World.worldsCount - 1) / var37; + Login.__cu_bj = var11 - var39; + if(SecureRandomFuture.__cn_bu != null && Login.__cu_br > 0) { + SecureRandomFuture.__cn_bu.__q_496(8, Huffman.canvasHeight / 2 - SecureRandomFuture.__cn_bu.subHeight / 2); + } + + if(NetSocket.__fb_bm != null && Login.__cu_br < Login.__cu_bj) { + NetSocket.__fb_bm.__q_496(SoundCache.canvasWidth - NetSocket.__fb_bm.subWidth - 8, Huffman.canvasHeight / 2 - NetSocket.__fb_bm.subHeight / 2); + } + + int var41 = var10 + 23; + int var42 = var9 + Login.__cu_q; + int var43 = 0; + boolean var15 = false; + int var16 = Login.__cu_br; + + int var44; + for(var44 = var37 * var16; var44 < World.worldsCount && var16 - Login.__cu_br < var39; ++var44) { + World var29 = ItemContainer.worlds[var44]; + boolean var46 = true; + String var20 = Integer.toString(var29.population); + if(var29.population == -1) { + var20 = "OFF"; + var46 = false; + } else if(var29.population > 1980) { + var20 = "FULL"; + var46 = false; + } + + int var22 = 0; + byte var21; + if(var29.__j_149()) { + if(var29.__e_144()) { + var21 = 7; + } else { + var21 = 6; + } + } else if(var29.__z_148()) { + var22 = 16711680; + if(var29.__e_144()) { + var21 = 5; + } else { + var21 = 4; + } + } else if(var29.__d_146()) { + if(var29.__e_144()) { + var21 = 3; + } else { + var21 = 2; + } + } else if(var29.__e_144()) { + var21 = 1; + } else { + var21 = 0; + } + + if(MouseHandler.MouseHandler_x >= var42 && MouseHandler.MouseHandler_y >= var41 && MouseHandler.MouseHandler_x < var42 + var23 && MouseHandler.MouseHandler_y < var51 + var41 && var46) { + Login.__cu_bl = var44; + class30.__ar_bd[var21].__t_507(var42, var41, 128, 16777215); + var15 = true; + } else { + class30.__ar_bd[var21].drawAt(var42, var41); + } + + if(Frames.__en_bc != null) { + Frames.__en_bc[(var29.__e_144()?8:0) + var29.location].__q_496(var42 + 29, var41); + } + + var0.drawCentered(Integer.toString(var29.id), var42 + 15, var51 / 2 + var41 + 5, var22, -1); + var1.drawCentered(var20, var42 + 60, var51 / 2 + var41 + 5, 268435455, -1); + var41 = var41 + var28 + var51; + ++var43; + if(var43 >= var37) { + var41 = var10 + 23; + var42 = var42 + var23 + var27; + var43 = 0; + ++var16; + } + } + + if(var15) { + var44 = var1.stringWidth(ItemContainer.worlds[Login.__cu_bl].activity) + 6; + int var45 = var1.ascent + 8; + var19 = MouseHandler.MouseHandler_y + 25; + if(var45 + var19 > 480) { + var19 = MouseHandler.MouseHandler_y - 25 - var45; + } + + Rasterizer2D.Rasterizer2D_fillRectangle(MouseHandler.MouseHandler_x - var44 / 2, var19, var44, var45, 16777120); + Rasterizer2D.Rasterizer2D_drawRectangle(MouseHandler.MouseHandler_x - var44 / 2, var19, var44, var45, 0); + var1.drawCentered(ItemContainer.worlds[Login.__cu_bl].activity, MouseHandler.MouseHandler_x, var19 + var1.ascent + 4, 0, -1); + } + } + + class197.rasterProvider.drawFull(0, 0); + } else { + Login.__cu_g.drawAt(Login.__cu_q, 0); + Fonts.__kz_l.drawAt(Login.__cu_q + 382, 0); + WorldMapSectionType.__h_e.__q_496(Login.__cu_q + 382 - WorldMapSectionType.__h_e.subWidth / 2, 18); + if(Client.gameState == 0 || Client.gameState == 5) { + var23 = 20; + var0.drawCentered("RuneScape is loading - please wait...", Login.__cu_y + 180, 245 - var23, 16777215, -1); + var24 = 253 - var23; + Rasterizer2D.Rasterizer2D_drawRectangle(Login.__cu_y + 180 - 152, var24, 304, 34, 9179409); + Rasterizer2D.Rasterizer2D_drawRectangle(Login.__cu_y + 180 - 151, var24 + 1, 302, 32, 0); + Rasterizer2D.Rasterizer2D_fillRectangle(Login.__cu_y + 180 - 150, var24 + 2, Login.Login_loadingPercent * 3, 30, 9179409); + Rasterizer2D.Rasterizer2D_fillRectangle(Login.__cu_y + 180 - 150 + Login.Login_loadingPercent * 3, var24 + 2, 300 - Login.Login_loadingPercent * 3, 30, 0); + var0.drawCentered(Login.Login_loadingText, Login.__cu_y + 180, 276 - var23, 16777215, -1); + } + + String var7; + String var8; + String var25; + String var30; + String var31; + short var47; + short var49; + if(Client.gameState == 20) { + Login.__cu_o.__q_496(Login.__cu_y + 180 - Login.__cu_o.subWidth / 2, 271 - Login.__cu_o.subHeight / 2); + var47 = 201; + var0.drawCentered(Login.Login_response1, Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 15; + var0.drawCentered(Login.Login_response2, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var0.drawCentered(Login.Login_response3, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var48 += 7; + if(Login.__cu_aw != 4) { + var0.draw("Login: ", Login.__cu_y + 180 - 110, var48, 16777215, 0); + var49 = 200; + if(ReflectionCheck.clientPreferences.hideUsername) { + var8 = Login.Login_username; + var7 = class168.method3450('*', var8.length()); + var25 = var7; + } else { + var25 = Login.Login_username; + } + + for(var25 = var25; var0.stringWidth(var25) > var49; var25 = var25.substring(0, var25.length() - 1)) { + ; + } + + var0.draw(AbstractFont.escapeBrackets(var25), Login.__cu_y + 180 - 70, var48, 16777215, 0); + var48 += 15; + var8 = "Password: "; + var30 = Login.Login_password; + var31 = class168.method3450('*', var30.length()); + var0.draw(var8 + var31, Login.__cu_y + 180 - 108, var48, 16777215, 0); + var48 += 15; + } + } + + if(Client.gameState == 10 || Client.gameState == 11) { + Login.__cu_o.__q_496(Login.__cu_y, 171); + short var5; + if(Login.__cu_aw == 0) { + var47 = 251; + var0.drawCentered("Welcome to RuneScape", Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 30; + var24 = Login.__cu_y + 180 - 80; + var5 = 291; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawLines("New User", var24 - 73, var5 - 20, 144, 40, 16777215, 0, 1, 1, 0); + var24 = Login.__cu_y + 180 + 80; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawLines("Existing User", var24 - 73, var5 - 20, 144, 40, 16777215, 0, 1, 1, 0); + } else if(Login.__cu_aw == 1) { + var0.drawCentered(Login.Login_response0, Login.__cu_y + 180, 201, 16776960, 0); + var47 = 236; + var0.drawCentered(Login.Login_response1, Login.__cu_y + 180, var47, 16777215, 0); + var48 = var47 + 15; + var0.drawCentered(Login.Login_response2, Login.__cu_y + 180, var48, 16777215, 0); + var48 += 15; + var0.drawCentered(Login.Login_response3, Login.__cu_y + 180, var48, 16777215, 0); + var48 += 15; + var24 = Login.__cu_y + 180 - 80; + var5 = 321; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Continue", var24, var5 + 5, 16777215, 0); + var24 = Login.__cu_y + 180 + 80; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Cancel", var24, var5 + 5, 16777215, 0); + } else if(Login.__cu_aw == 2) { + var47 = 201; + var0.drawCentered(Login.Login_response1, Varps.__hv_h, var47, 16776960, 0); + var48 = var47 + 15; + var0.drawCentered(Login.Login_response2, Varps.__hv_h, var48, 16776960, 0); + var48 += 15; + var0.drawCentered(Login.Login_response3, Varps.__hv_h, var48, 16776960, 0); + var48 += 15; + var48 += 7; + var0.draw("Login: ", Varps.__hv_h - 110, var48, 16777215, 0); + var49 = 200; + if(ReflectionCheck.clientPreferences.hideUsername) { + var8 = Login.Login_username; + var7 = class168.method3450('*', var8.length()); + var25 = var7; + } else { + var25 = Login.Login_username; + } + + for(var25 = var25; var0.stringWidth(var25) > var49; var25 = var25.substring(1)) { + ; + } + + var0.draw(AbstractFont.escapeBrackets(var25) + (Login.currentLoginField == 0 & Client.cycle % 40 < 20?BufferedFile.colorStartTag(16776960) + "|":""), Varps.__hv_h - 70, var48, 16777215, 0); + var48 += 15; + var8 = "Password: "; + var30 = Login.Login_password; + var31 = class168.method3450('*', var30.length()); + var0.draw(var8 + var31 + (Login.currentLoginField == 1 & Client.cycle % 40 < 20?BufferedFile.colorStartTag(16776960) + "|":""), Varps.__hv_h - 108, var48, 16777215, 0); + var48 += 15; + var47 = 277; + var11 = Varps.__hv_h + -117; + boolean var13 = Client.Login_isUsernameRemembered; + boolean var14 = Login.__cu_aa; + IndexedSprite var32 = var13?(var14?KeyHandler.__an_i:class308.__kw_n):(var14?GraphicsObject.__bw_k:Login.__cu_d); + var32.__q_496(var11, var47); + var11 = var11 + var32.subWidth + 5; + var1.draw("Remember username", var11, var47 + 13, 16776960, 0); + var11 = Varps.__hv_h + 24; + boolean var17 = ReflectionCheck.clientPreferences.hideUsername; + boolean var18 = Login.__cu_ax; + IndexedSprite var34 = var17?(var18?KeyHandler.__an_i:class308.__kw_n):(var18?GraphicsObject.__bw_k:Login.__cu_d); + var34.__q_496(var11, var47); + var11 = var11 + var34.subWidth + 5; + var1.draw("Hide username", var11, var47 + 13, 16776960, 0); + var48 = var47 + 15; + var19 = Varps.__hv_h - 80; + short var35 = 321; + __bd_u.__q_496(var19 - 73, var35 - 20); + var0.drawCentered("Login", var19, var35 + 5, 16777215, 0); + var19 = Varps.__hv_h + 80; + __bd_u.__q_496(var19 - 73, var35 - 20); + var0.drawCentered("Cancel", var19, var35 + 5, 16777215, 0); + var47 = 357; + switch(Login.__cu_ac) { + case 2: + AttackOption.__cj_ay = "Having trouble logging in?"; + break; + default: + AttackOption.__cj_ay = "Can\'t login? Click here."; + } + + TilePaint.__eb_ah = new Bounds(Varps.__hv_h, var47, var1.stringWidth(AttackOption.__cj_ay), 11); + UrlRequester.__eo_ak = new Bounds(Varps.__hv_h, var47, var1.stringWidth("Still having trouble logging in?"), 11); + var1.drawCentered(AttackOption.__cj_ay, Varps.__hv_h, var47, 16777215, 0); + } else if(Login.__cu_aw == 3) { + var47 = 201; + var0.drawCentered("Invalid credentials.", Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 20; + var1.drawCentered("For accounts created after 24th November 2010, please use your", Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var1.drawCentered("email address to login. Otherwise please login with your username.", Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var24 = Login.__cu_y + 180; + var5 = 276; + __bd_u.__q_496(var24 - 73, var5 - 20); + var2.drawCentered("Try again", var24, var5 + 5, 16777215, 0); + var24 = Login.__cu_y + 180; + var5 = 326; + __bd_u.__q_496(var24 - 73, var5 - 20); + var2.drawCentered("Forgotten password?", var24, var5 + 5, 16777215, 0); + } else { + String var26; + if(Login.__cu_aw == 4) { + var0.drawCentered("Authenticator", Login.__cu_y + 180, 201, 16776960, 0); + var47 = 236; + var0.drawCentered(Login.Login_response1, Login.__cu_y + 180, var47, 16777215, 0); + var48 = var47 + 15; + var0.drawCentered(Login.Login_response2, Login.__cu_y + 180, var48, 16777215, 0); + var48 += 15; + var0.drawCentered(Login.Login_response3, Login.__cu_y + 180, var48, 16777215, 0); + var48 += 15; + var26 = "PIN: "; + var7 = Login.__cu_ai; + var25 = class168.method3450('*', var7.length()); + var0.draw(var26 + var25 + (Client.cycle % 40 < 20?BufferedFile.colorStartTag(16776960) + "|":""), Login.__cu_y + 180 - 108, var48, 16777215, 0); + var48 -= 8; + var0.draw("Trust this computer", Login.__cu_y + 180 - 9, var48, 16776960, 0); + var48 += 15; + var0.draw("for 30 days: ", Login.__cu_y + 180 - 9, var48, 16776960, 0); + var28 = Login.__cu_y + 180 - 9 + var0.stringWidth("for 30 days: ") + 15; + var9 = var48 - var0.ascent; + IndexedSprite var52; + if(Login.__cu_ba) { + var52 = class308.__kw_n; + } else { + var52 = Login.__cu_d; + } + + var52.__q_496(var28, var9); + var48 += 15; + var11 = Login.__cu_y + 180 - 80; + short var12 = 321; + __bd_u.__q_496(var11 - 73, var12 - 20); + var0.drawCentered("Continue", var11, var12 + 5, 16777215, 0); + var11 = Login.__cu_y + 180 + 80; + __bd_u.__q_496(var11 - 73, var12 - 20); + var0.drawCentered("Cancel", var11, var12 + 5, 16777215, 0); + var1.drawCentered("Can\'t Log In?", Login.__cu_y + 180, var12 + 36, 255, 0); + } else { + short var50; + if(Login.__cu_aw == 5) { + var0.drawCentered("Forgotten your password?", Login.__cu_y + 180, 201, 16776960, 0); + var47 = 221; + var2.drawCentered(Login.Login_response1, Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 15; + var2.drawCentered(Login.Login_response2, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var2.drawCentered(Login.Login_response3, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var48 += 14; + var0.draw("Username/email: ", Login.__cu_y + 180 - 145, var48, 16777215, 0); + var49 = 174; + if(ReflectionCheck.clientPreferences.hideUsername) { + var8 = Login.Login_username; + var7 = class168.method3450('*', var8.length()); + var25 = var7; + } else { + var25 = Login.Login_username; + } + + for(var25 = var25; var0.stringWidth(var25) > var49; var25 = var25.substring(1)) { + ; + } + + var0.draw(AbstractFont.escapeBrackets(var25) + (Client.cycle % 40 < 20?BufferedFile.colorStartTag(16776960) + "|":""), Login.__cu_y + 180 - 34, var48, 16777215, 0); + var48 += 15; + var27 = Login.__cu_y + 180 - 80; + var50 = 321; + __bd_u.__q_496(var27 - 73, var50 - 20); + var0.drawCentered("Recover", var27, var50 + 5, 16777215, 0); + var27 = Login.__cu_y + 180 + 80; + __bd_u.__q_496(var27 - 73, var50 - 20); + var0.drawCentered("Back", var27, var50 + 5, 16777215, 0); + var50 = 356; + var1.drawCentered("Still having trouble logging in?", Varps.__hv_h, var50, 268435455, 0); + } else if(Login.__cu_aw == 6) { + var47 = 201; + var0.drawCentered(Login.Login_response1, Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 15; + var0.drawCentered(Login.Login_response2, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var0.drawCentered(Login.Login_response3, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var24 = Login.__cu_y + 180; + var5 = 321; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Back", var24, var5 + 5, 16777215, 0); + } else if(Login.__cu_aw == 7) { + var47 = 216; + var0.drawCentered("Your date of birth isn\'t set.", Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 15; + var2.drawCentered("Please verify your account status by", Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var2.drawCentered("setting your date of birth.", Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var24 = Login.__cu_y + 180 - 80; + var5 = 321; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Set Date of Birth", var24, var5 + 5, 16777215, 0); + var24 = Login.__cu_y + 180 + 80; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Back", var24, var5 + 5, 16777215, 0); + } else if(Login.__cu_aw == 8) { + var47 = 216; + var0.drawCentered("Sorry, but your account is not eligible to play.", Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 15; + var2.drawCentered("For more information, please take a look at", Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var2.drawCentered("our privacy policy.", Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var24 = Login.__cu_y + 180 - 80; + var5 = 321; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Privacy Policy", var24, var5 + 5, 16777215, 0); + var24 = Login.__cu_y + 180 + 80; + __bd_u.__q_496(var24 - 73, var5 - 20); + var0.drawCentered("Back", var24, var5 + 5, 16777215, 0); + } else if(Login.__cu_aw == 12) { + var47 = 201; + String var4 = ""; + var26 = ""; + var25 = ""; + switch(Login.__cu_aj) { + case 0: + var4 = "Your account has been disabled."; + var26 = Strings.__id_bq; + var25 = ""; + break; + case 1: + var4 = "Account locked as we suspect it has been stolen."; + var26 = Strings.__id_cp; + var25 = ""; + break; + default: + MouseHandler.method1084(false); + } + + var0.drawCentered(var4, Login.__cu_y + 180, var47, 16776960, 0); + var48 = var47 + 15; + var2.drawCentered(var26, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var2.drawCentered(var25, Login.__cu_y + 180, var48, 16776960, 0); + var48 += 15; + var27 = Login.__cu_y + 180; + var50 = 276; + __bd_u.__q_496(var27 - 73, var50 - 20); + var0.drawCentered("Support Page", var27, var50 + 5, 16777215, 0); + var27 = Login.__cu_y + 180; + var50 = 326; + __bd_u.__q_496(var27 - 73, var50 - 20); + var0.drawCentered("Back", var27, var50 + 5, 16777215, 0); + } + } + } + } + + if(Client.gameState >= 10) { + int[] var3 = new int[4]; + Rasterizer2D.Rasterizer2D_getClipArray(var3); + Rasterizer2D.Rasterizer2D_setClip(Login.__cu_q, 0, Login.__cu_q + 765, Huffman.canvasHeight); + class16.field85.method1782(Login.__cu_q - 22, Client.cycle); + class16.field85.method1782(Login.__cu_q + 22 + 765 - 128, Client.cycle); + Rasterizer2D.Rasterizer2D_setClipArray(var3); + } + + KeyHandler.__an_x[ReflectionCheck.clientPreferences.titleMusicDisabled?1:0].__q_496(Login.__cu_q + 765 - 40, 463); + if(Client.gameState > 5 && Client.language == 0) { + if(class277.__jn_by != null) { + var48 = Login.__cu_q + 5; + var49 = 463; + byte var38 = 100; + byte var6 = 35; + class277.__jn_by.__q_496(var48, var49); + var0.drawCentered("World" + " " + Client.worldId, var38 / 2 + var48, var6 / 2 + var49 - 2, 16777215, 0); + if(FriendLoginUpdate.__kn_x != null) { + var1.drawCentered("Loading...", var38 / 2 + var48, var6 / 2 + var49 + 12, 16777215, 0); + } else { + var1.drawCentered("Click to switch", var38 / 2 + var48, var6 / 2 + var49 + 12, 16777215, 0); + } + } else { + class277.__jn_by = MenuAction.method2025(WorldMapSection3.indexCache8, "sl_button", ""); + } + } + + } + } +} diff --git a/rs-client/src/main/java/IndexStore.java b/rs-client/src/main/java/IndexStore.java new file mode 100644 index 0000000000..ab9552b2f2 --- /dev/null +++ b/rs-client/src/main/java/IndexStore.java @@ -0,0 +1,488 @@ +import java.io.EOFException; +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ff") +@Implements("IndexStore") +public final class IndexStore { + @ObfuscatedName("m") + @Export("IndexStore_buffer") + static byte[] IndexStore_buffer; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ldy;" + ) + @Export("dataFile") + BufferedFile dataFile; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ldy;" + ) + @Export("indexFile") + BufferedFile indexFile; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1982523283 + ) + @Export("index") + int index; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -748616567 + ) + @Export("maxEntrySize") + int maxEntrySize; + + static { + IndexStore_buffer = new byte[520]; + } + + @ObfuscatedSignature( + signature = "(ILdy;Ldy;I)V" + ) + public IndexStore(int var1, BufferedFile var2, BufferedFile var3, int var4) { + this.dataFile = null; + this.indexFile = null; + this.maxEntrySize = 65000; + this.index = var1; + this.dataFile = var2; + this.indexFile = var3; + this.maxEntrySize = var4; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)[B", + garbageValue = "-294587791" + ) + @Export("read") + public byte[] read(int var1) { + BufferedFile var2 = this.dataFile; + synchronized(this.dataFile) { + try { + Object var10000; + if(this.indexFile.length() < (long)(var1 * 6 + 6)) { + var10000 = null; + return (byte[])var10000; + } else { + this.indexFile.seek((long)(var1 * 6)); + this.indexFile.read(IndexStore_buffer, 0, 6); + int var3 = ((IndexStore_buffer[0] & 255) << 16) + (IndexStore_buffer[2] & 255) + ((IndexStore_buffer[1] & 255) << 8); + int var4 = (IndexStore_buffer[5] & 255) + ((IndexStore_buffer[3] & 255) << 16) + ((IndexStore_buffer[4] & 255) << 8); + if(var3 < 0 || var3 > this.maxEntrySize) { + var10000 = null; + return (byte[])var10000; + } else if(var4 <= 0 || (long)var4 > this.dataFile.length() / 520L) { + var10000 = null; + return (byte[])var10000; + } else { + byte[] var5 = new byte[var3]; + int var6 = 0; + int var7 = 0; + + while(var6 < var3) { + if(var4 == 0) { + var10000 = null; + return (byte[])var10000; + } + + this.dataFile.seek((long)(var4 * 520)); + int var8 = var3 - var6; + if(var8 > 512) { + var8 = 512; + } + + this.dataFile.read(IndexStore_buffer, 0, var8 + 8); + int var9 = (IndexStore_buffer[1] & 255) + ((IndexStore_buffer[0] & 255) << 8); + int var10 = (IndexStore_buffer[3] & 255) + ((IndexStore_buffer[2] & 255) << 8); + int var11 = ((IndexStore_buffer[5] & 255) << 8) + ((IndexStore_buffer[4] & 255) << 16) + (IndexStore_buffer[6] & 255); + int var12 = IndexStore_buffer[7] & 255; + if(var9 == var1 && var7 == var10 && var12 == this.index) { + if(var11 >= 0 && (long)var11 <= this.dataFile.length() / 520L) { + for(int var13 = 0; var13 < var8; ++var13) { + var5[var6++] = IndexStore_buffer[var13 + 8]; + } + + var4 = var11; + ++var7; + continue; + } + + var10000 = null; + return (byte[])var10000; + } + + var10000 = null; + return (byte[])var10000; + } + + byte[] var18 = var5; + return var18; + } + } + } catch (IOException var16) { + return null; + } + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I[BII)Z", + garbageValue = "-1750864122" + ) + @Export("write") + public boolean write(int var1, byte[] var2, int var3) { + BufferedFile var4 = this.dataFile; + synchronized(this.dataFile) { + if(var3 >= 0 && var3 <= this.maxEntrySize) { + boolean var5 = this.write0(var1, var2, var3, true); + if(!var5) { + var5 = this.write0(var1, var2, var3, false); + } + + return var5; + } else { + throw new IllegalArgumentException(); + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I[BIZI)Z", + garbageValue = "-944588642" + ) + @Export("write0") + boolean write0(int var1, byte[] var2, int var3, boolean var4) { + BufferedFile var5 = this.dataFile; + synchronized(this.dataFile) { + try { + int var6; + boolean var10000; + if(var4) { + if(this.indexFile.length() < (long)(var1 * 6 + 6)) { + var10000 = false; + return var10000; + } + + this.indexFile.seek((long)(var1 * 6)); + this.indexFile.read(IndexStore_buffer, 0, 6); + var6 = (IndexStore_buffer[5] & 255) + ((IndexStore_buffer[3] & 255) << 16) + ((IndexStore_buffer[4] & 255) << 8); + if(var6 <= 0 || (long)var6 > this.dataFile.length() / 520L) { + var10000 = false; + return var10000; + } + } else { + var6 = (int)((this.dataFile.length() + 519L) / 520L); + if(var6 == 0) { + var6 = 1; + } + } + + IndexStore_buffer[0] = (byte)(var3 >> 16); + IndexStore_buffer[1] = (byte)(var3 >> 8); + IndexStore_buffer[2] = (byte)var3; + IndexStore_buffer[3] = (byte)(var6 >> 16); + IndexStore_buffer[4] = (byte)(var6 >> 8); + IndexStore_buffer[5] = (byte)var6; + this.indexFile.seek((long)(var1 * 6)); + this.indexFile.write(IndexStore_buffer, 0, 6); + int var7 = 0; + int var8 = 0; + + while(true) { + if(var7 < var3) { + label142: { + int var9 = 0; + int var14; + if(var4) { + this.dataFile.seek((long)(var6 * 520)); + + try { + this.dataFile.read(IndexStore_buffer, 0, 8); + } catch (EOFException var16) { + break label142; + } + + var14 = (IndexStore_buffer[1] & 255) + ((IndexStore_buffer[0] & 255) << 8); + int var11 = (IndexStore_buffer[3] & 255) + ((IndexStore_buffer[2] & 255) << 8); + var9 = ((IndexStore_buffer[5] & 255) << 8) + ((IndexStore_buffer[4] & 255) << 16) + (IndexStore_buffer[6] & 255); + int var12 = IndexStore_buffer[7] & 255; + if(var14 != var1 || var11 != var8 || var12 != this.index) { + var10000 = false; + return var10000; + } + + if(var9 < 0 || (long)var9 > this.dataFile.length() / 520L) { + var10000 = false; + return var10000; + } + } + + if(var9 == 0) { + var4 = false; + var9 = (int)((this.dataFile.length() + 519L) / 520L); + if(var9 == 0) { + ++var9; + } + + if(var6 == var9) { + ++var9; + } + } + + if(var3 - var7 <= 512) { + var9 = 0; + } + + IndexStore_buffer[0] = (byte)(var1 >> 8); + IndexStore_buffer[1] = (byte)var1; + IndexStore_buffer[2] = (byte)(var8 >> 8); + IndexStore_buffer[3] = (byte)var8; + IndexStore_buffer[4] = (byte)(var9 >> 16); + IndexStore_buffer[5] = (byte)(var9 >> 8); + IndexStore_buffer[6] = (byte)var9; + IndexStore_buffer[7] = (byte)this.index; + this.dataFile.seek((long)(var6 * 520)); + this.dataFile.write(IndexStore_buffer, 0, 8); + var14 = var3 - var7; + if(var14 > 512) { + var14 = 512; + } + + this.dataFile.write(var2, var7, var14); + var7 += var14; + var6 = var9; + ++var8; + continue; + } + } + + var10000 = true; + return var10000; + } + } catch (IOException var17) { + return false; + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIILfe;Lfy;B)Z", + garbageValue = "1" + ) + static final boolean method3585(int var0, int var1, int var2, class179 var3, CollisionMap var4) { + int var5 = var0; + int var6 = var1; + byte var7 = 64; + byte var8 = 64; + int var9 = var0 - var7; + int var10 = var1 - var8; + class178.__fi_q[var7][var8] = 99; + class178.__fi_w[var7][var8] = 0; + byte var11 = 0; + int var12 = 0; + class178.__fi_l[var11] = var0; + int var20 = var11 + 1; + class178.__fi_e[var11] = var1; + int[][] var13 = var4.flags; + + while(true) { + label300: + while(true) { + int var14; + int var15; + int var16; + int var17; + int var18; + int var19; + do { + do { + do { + label277: + do { + if(var20 == var12) { + WidgetGroupParent.__bx_o = var5; + UrlRequester.__eo_u = var6; + return false; + } + + var5 = class178.__fi_l[var12]; + var6 = class178.__fi_e[var12]; + var12 = var12 + 1 & 4095; + var18 = var5 - var9; + var19 = var6 - var10; + var14 = var5 - var4.xInset; + var15 = var6 - var4.yInset; + if(var3.vmethod3644(var2, var5, var6, var4)) { + WidgetGroupParent.__bx_o = var5; + UrlRequester.__eo_u = var6; + return true; + } + + var16 = class178.__fi_w[var18][var19] + 1; + if(var18 > 0 && class178.__fi_q[var18 - 1][var19] == 0 && (var13[var14 - 1][var15] & 19136782) == 0 && (var13[var14 - 1][var15 + var2 - 1] & 19136824) == 0) { + var17 = 1; + + while(true) { + if(var17 >= var2 - 1) { + class178.__fi_l[var20] = var5 - 1; + class178.__fi_e[var20] = var6; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18 - 1][var19] = 2; + class178.__fi_w[var18 - 1][var19] = var16; + break; + } + + if((var13[var14 - 1][var17 + var15] & 19136830) != 0) { + break; + } + + ++var17; + } + } + + if(var18 < 128 - var2 && class178.__fi_q[var18 + 1][var19] == 0 && (var13[var14 + var2][var15] & 19136899) == 0 && (var13[var14 + var2][var15 + var2 - 1] & 19136992) == 0) { + var17 = 1; + + while(true) { + if(var17 >= var2 - 1) { + class178.__fi_l[var20] = var5 + 1; + class178.__fi_e[var20] = var6; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18 + 1][var19] = 8; + class178.__fi_w[var18 + 1][var19] = var16; + break; + } + + if((var13[var14 + var2][var15 + var17] & 19136995) != 0) { + break; + } + + ++var17; + } + } + + if(var19 > 0 && class178.__fi_q[var18][var19 - 1] == 0 && (var13[var14][var15 - 1] & 19136782) == 0 && (var13[var14 + var2 - 1][var15 - 1] & 19136899) == 0) { + var17 = 1; + + while(true) { + if(var17 >= var2 - 1) { + class178.__fi_l[var20] = var5; + class178.__fi_e[var20] = var6 - 1; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18][var19 - 1] = 1; + class178.__fi_w[var18][var19 - 1] = var16; + break; + } + + if((var13[var17 + var14][var15 - 1] & 19136911) != 0) { + break; + } + + ++var17; + } + } + + if(var19 < 128 - var2 && class178.__fi_q[var18][var19 + 1] == 0 && (var13[var14][var15 + var2] & 19136824) == 0 && (var13[var14 + var2 - 1][var15 + var2] & 19136992) == 0) { + var17 = 1; + + while(true) { + if(var17 >= var2 - 1) { + class178.__fi_l[var20] = var5; + class178.__fi_e[var20] = var6 + 1; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18][var19 + 1] = 4; + class178.__fi_w[var18][var19 + 1] = var16; + break; + } + + if((var13[var17 + var14][var15 + var2] & 19137016) != 0) { + break; + } + + ++var17; + } + } + + if(var18 > 0 && var19 > 0 && class178.__fi_q[var18 - 1][var19 - 1] == 0 && (var13[var14 - 1][var15 - 1] & 19136782) == 0) { + var17 = 1; + + while(true) { + if(var17 >= var2) { + class178.__fi_l[var20] = var5 - 1; + class178.__fi_e[var20] = var6 - 1; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18 - 1][var19 - 1] = 3; + class178.__fi_w[var18 - 1][var19 - 1] = var16; + break; + } + + if((var13[var14 - 1][var17 + (var15 - 1)] & 19136830) != 0 || (var13[var17 + (var14 - 1)][var15 - 1] & 19136911) != 0) { + break; + } + + ++var17; + } + } + + if(var18 < 128 - var2 && var19 > 0 && class178.__fi_q[var18 + 1][var19 - 1] == 0 && (var13[var14 + var2][var15 - 1] & 19136899) == 0) { + var17 = 1; + + while(true) { + if(var17 >= var2) { + class178.__fi_l[var20] = var5 + 1; + class178.__fi_e[var20] = var6 - 1; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18 + 1][var19 - 1] = 9; + class178.__fi_w[var18 + 1][var19 - 1] = var16; + break; + } + + if((var13[var14 + var2][var17 + (var15 - 1)] & 19136995) != 0 || (var13[var17 + var14][var15 - 1] & 19136911) != 0) { + break; + } + + ++var17; + } + } + + if(var18 > 0 && var19 < 128 - var2 && class178.__fi_q[var18 - 1][var19 + 1] == 0 && (var13[var14 - 1][var15 + var2] & 19136824) == 0) { + for(var17 = 1; var17 < var2; ++var17) { + if((var13[var14 - 1][var15 + var17] & 19136830) != 0 || (var13[var17 + (var14 - 1)][var15 + var2] & 19137016) != 0) { + continue label277; + } + } + + class178.__fi_l[var20] = var5 - 1; + class178.__fi_e[var20] = var6 + 1; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18 - 1][var19 + 1] = 6; + class178.__fi_w[var18 - 1][var19 + 1] = var16; + } + } while(var18 >= 128 - var2); + } while(var19 >= 128 - var2); + } while(class178.__fi_q[var18 + 1][var19 + 1] != 0); + } while((var13[var14 + var2][var15 + var2] & 19136992) != 0); + + for(var17 = 1; var17 < var2; ++var17) { + if((var13[var14 + var17][var15 + var2] & 19137016) != 0 || (var13[var14 + var2][var17 + var15] & 19136995) != 0) { + continue label300; + } + } + + class178.__fi_l[var20] = var5 + 1; + class178.__fi_e[var20] = var6 + 1; + var20 = var20 + 1 & 4095; + class178.__fi_q[var18 + 1][var19 + 1] = 12; + class178.__fi_w[var18 + 1][var19 + 1] = var16; + } + } + } +} diff --git a/rs-client/src/main/java/IndexStoreAction.java b/rs-client/src/main/java/IndexStoreAction.java new file mode 100644 index 0000000000..db7bb30f1e --- /dev/null +++ b/rs-client/src/main/java/IndexStoreAction.java @@ -0,0 +1,130 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ik") +@Implements("IndexStoreAction") +public class IndexStoreAction extends Node { + @ObfuscatedName("rt") + @ObfuscatedGetter( + intValue = -1086790653 + ) + @Export("__ik_rt") + static int __ik_rt; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "[Ldy;" + ) + @Export("idxFiles") + public static BufferedFile[] idxFiles; + @ObfuscatedName("cn") + @ObfuscatedGetter( + intValue = -1753937079 + ) + @Export("__ik_cn") + public static int __ik_cn; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -1942326733 + ) + @Export("type") + int type; + @ObfuscatedName("f") + @Export("data") + byte[] data; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lff;" + ) + @Export("indexStore") + IndexStore indexStore; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache") + IndexCache indexCache; + + @ObfuscatedName("fn") + @ObfuscatedSignature( + signature = "(Lbz;I)V", + garbageValue = "483387730" + ) + static final void method4553(Actor var0) { + if(var0.__cj != 0) { + if(var0.targetIndex != -1) { + Object var1 = null; + if(var0.targetIndex < 32768) { + var1 = Client.npcs[var0.targetIndex]; + } else if(var0.targetIndex >= 32768) { + var1 = Client.players[var0.targetIndex - 32768]; + } + + if(var1 != null) { + int var2 = var0.x - ((Actor)var1).x; + int var3 = var0.y - ((Actor)var1).y; + if(var2 != 0 || var3 != 0) { + var0.orientation = (int)(Math.atan2((double)var2, (double)var3) * 325.949D) & 2047; + } + } else if(var0.false0) { + var0.targetIndex = -1; + var0.false0 = false; + } + } + + if(var0.__bc != -1 && (var0.pathLength == 0 || var0.__cq > 0)) { + var0.orientation = var0.__bc; + var0.__bc = -1; + } + + int var4 = var0.orientation - var0.__ac & 2047; + if(var4 == 0 && var0.false0) { + var0.targetIndex = -1; + var0.false0 = false; + } + + if(var4 != 0) { + ++var0.__cm; + boolean var6; + if(var4 > 1024) { + var0.__ac -= var0.__cj; + var6 = true; + if(var4 < var0.__cj || var4 > 2048 - var0.__cj) { + var0.__ac = var0.orientation; + var6 = false; + } + + if(var0.movementSequence == var0.idleSequence && (var0.__cm > 25 || var6)) { + if(var0.turnLeftSequence != -1) { + var0.movementSequence = var0.turnLeftSequence; + } else { + var0.movementSequence = var0.walkSequence; + } + } + } else { + var0.__ac += var0.__cj; + var6 = true; + if(var4 < var0.__cj || var4 > 2048 - var0.__cj) { + var0.__ac = var0.orientation; + var6 = false; + } + + if(var0.movementSequence == var0.idleSequence && (var0.__cm > 25 || var6)) { + if(var0.turnRightSequence != -1) { + var0.movementSequence = var0.turnRightSequence; + } else { + var0.movementSequence = var0.walkSequence; + } + } + } + + var0.__ac &= 2047; + } else { + var0.__cm = 0; + } + + } + } +} diff --git a/rs-client/src/main/java/IndexStoreActionHandler.java b/rs-client/src/main/java/IndexStoreActionHandler.java new file mode 100644 index 0000000000..3df9d6688d --- /dev/null +++ b/rs-client/src/main/java/IndexStoreActionHandler.java @@ -0,0 +1,108 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("iv") +@Implements("IndexStoreActionHandler") +public class IndexStoreActionHandler implements Runnable { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("IndexStoreActionHandler_requestQueue") + static NodeDeque IndexStoreActionHandler_requestQueue; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("IndexStoreActionHandler_responseQueue") + static NodeDeque IndexStoreActionHandler_responseQueue; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1282224505 + ) + @Export("__iv_q") + static int __iv_q; + @ObfuscatedName("w") + @Export("IndexStoreActionHandler_lock") + static Object IndexStoreActionHandler_lock; + + static { + IndexStoreActionHandler_requestQueue = new NodeDeque(); + IndexStoreActionHandler_responseQueue = new NodeDeque(); + __iv_q = 0; + IndexStoreActionHandler_lock = new Object(); + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + try { + while(true) { + NodeDeque var2 = IndexStoreActionHandler_requestQueue; + IndexStoreAction var1; + synchronized(IndexStoreActionHandler_requestQueue) { + var1 = (IndexStoreAction)IndexStoreActionHandler_requestQueue.last(); + } + + Object var14; + if(var1 != null) { + if(var1.type == 0) { + var1.indexStore.write((int)var1.key, var1.data, var1.data.length); + var2 = IndexStoreActionHandler_requestQueue; + synchronized(IndexStoreActionHandler_requestQueue) { + var1.remove(); + } + } else if(var1.type == 1) { + var1.data = var1.indexStore.read((int)var1.key); + var2 = IndexStoreActionHandler_requestQueue; + synchronized(IndexStoreActionHandler_requestQueue) { + IndexStoreActionHandler_responseQueue.addFirst(var1); + } + } + + var14 = IndexStoreActionHandler_lock; + synchronized(IndexStoreActionHandler_lock) { + if(__iv_q <= 1) { + __iv_q = 0; + IndexStoreActionHandler_lock.notifyAll(); + return; + } + + __iv_q = 600; + } + } else { + class203.method4010(100L); + var14 = IndexStoreActionHandler_lock; + synchronized(IndexStoreActionHandler_lock) { + if(__iv_q <= 1) { + __iv_q = 0; + IndexStoreActionHandler_lock.notifyAll(); + return; + } + + --__iv_q; + } + } + } + } catch (Exception var13) { + NpcDefinition.sendStackTrace((String)null, var13); + } + } + + @ObfuscatedName("ky") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "67" + ) + static final void method4655(String var0) { + if(PacketWriter.clanChat != null) { + PacketBufferNode var1 = Interpreter.method1915(ClientPacket.__gs_i, Client.packetWriter.isaacCipher); + var1.packetBuffer.writeByte(WorldMapRegion.method550(var0)); + var1.packetBuffer.writeStringCp1252NullTerminated(var0); + Client.packetWriter.__q_167(var1); + } + } +} diff --git a/rs-client/src/main/java/IndexedSprite.java b/rs-client/src/main/java/IndexedSprite.java new file mode 100644 index 0000000000..e85171962f --- /dev/null +++ b/rs-client/src/main/java/IndexedSprite.java @@ -0,0 +1,275 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("lq") +@Implements("IndexedSprite") +public final class IndexedSprite extends Rasterizer2D { + @ObfuscatedName("m") + @Export("pixels") + public byte[] pixels; + @ObfuscatedName("f") + @Export("palette") + public int[] palette; + @ObfuscatedName("q") + @Export("subWidth") + public int subWidth; + @ObfuscatedName("w") + @Export("subHeight") + public int subHeight; + @ObfuscatedName("o") + @Export("xOffset") + public int xOffset; + @ObfuscatedName("u") + @Export("yOffset") + public int yOffset; + @ObfuscatedName("g") + @Export("width") + public int width; + @ObfuscatedName("l") + @Export("height") + public int height; + + @ObfuscatedName("m") + @Export("normalize") + public void normalize() { + if(this.subWidth != this.width || this.subHeight != this.height) { + byte[] var1 = new byte[this.width * this.height]; + int var2 = 0; + + for(int var3 = 0; var3 < this.subHeight; ++var3) { + for(int var4 = 0; var4 < this.subWidth; ++var4) { + var1[var4 + (var3 + this.yOffset) * this.width + this.xOffset] = this.pixels[var2++]; + } + } + + this.pixels = var1; + this.subWidth = this.width; + this.subHeight = this.height; + this.xOffset = 0; + this.yOffset = 0; + } + } + + @ObfuscatedName("f") + @Export("shiftColors") + public void shiftColors(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.palette.length; ++var4) { + int var5 = this.palette[var4] >> 16 & 255; + var5 += var1; + if(var5 < 0) { + var5 = 0; + } else if(var5 > 255) { + var5 = 255; + } + + int var6 = this.palette[var4] >> 8 & 255; + var6 += var2; + if(var6 < 0) { + var6 = 0; + } else if(var6 > 255) { + var6 = 255; + } + + int var7 = this.palette[var4] & 255; + var7 += var3; + if(var7 < 0) { + var7 = 0; + } else if(var7 > 255) { + var7 = 255; + } + + this.palette[var4] = var7 + (var6 << 8) + (var5 << 16); + } + + } + + @ObfuscatedName("q") + @Export("__q_496") + public void __q_496(int var1, int var2) { + var1 += this.xOffset; + var2 += this.yOffset; + int var3 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var4 = 0; + int var5 = this.subHeight; + int var6 = this.subWidth; + int var7 = Rasterizer2D.Rasterizer2D_width - var6; + int var8 = 0; + int var9; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var9 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var5 -= var9; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var4 += var9 * var6; + var3 += var9 * Rasterizer2D.Rasterizer2D_width; + } + + if(var5 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var5 -= var5 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var9 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var6 -= var9; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var6 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var9 = var6 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + IndexedSprite_two(Rasterizer2D.Rasterizer2D_pixels, this.pixels, this.palette, var4, var3, var6, var5, var7, var8); + } + } + + @ObfuscatedName("o") + @Export("__o_497") + public void __o_497(int var1, int var2, int var3, int var4) { + int var5 = this.subWidth; + int var6 = this.subHeight; + int var7 = 0; + int var8 = 0; + int var9 = this.width; + int var10 = this.height; + int var11 = (var9 << 16) / var3; + int var12 = (var10 << 16) / var4; + int var13; + if(this.xOffset > 0) { + var13 = (var11 + (this.xOffset << 16) - 1) / var11; + var1 += var13; + var7 += var13 * var11 - (this.xOffset << 16); + } + + if(this.yOffset > 0) { + var13 = (var12 + (this.yOffset << 16) - 1) / var12; + var2 += var13; + var8 += var13 * var12 - (this.yOffset << 16); + } + + if(var5 < var9) { + var3 = (var11 + ((var5 << 16) - var7) - 1) / var11; + } + + if(var6 < var10) { + var4 = (var12 + ((var6 << 16) - var8) - 1) / var12; + } + + var13 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var14 = Rasterizer2D.Rasterizer2D_width - var3; + if(var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + int var15; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var15 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var4 -= var15; + var13 += var15 * Rasterizer2D.Rasterizer2D_width; + var8 += var12 * var15; + } + + if(var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var15 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var3 -= var15; + var14 += var15; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var15 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var3 -= var15; + var13 += var15; + var7 += var11 * var15; + var14 += var15; + } + + IndexedSprite_something(Rasterizer2D.Rasterizer2D_pixels, this.pixels, this.palette, var7, var8, var13, var14, var3, var4, var11, var12, var5); + } + + @ObfuscatedName("w") + @Export("IndexedSprite_two") + static void IndexedSprite_two(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -(var5 >> 2); + var5 = -(var5 & 3); + + for(int var10 = -var6; var10 < 0; ++var10) { + int var11; + byte var12; + for(var11 = var9; var11 < 0; ++var11) { + var12 = var1[var3++]; + if(var12 != 0) { + var0[var4++] = var2[var12 & 255]; + } else { + ++var4; + } + + var12 = var1[var3++]; + if(var12 != 0) { + var0[var4++] = var2[var12 & 255]; + } else { + ++var4; + } + + var12 = var1[var3++]; + if(var12 != 0) { + var0[var4++] = var2[var12 & 255]; + } else { + ++var4; + } + + var12 = var1[var3++]; + if(var12 != 0) { + var0[var4++] = var2[var12 & 255]; + } else { + ++var4; + } + } + + for(var11 = var5; var11 < 0; ++var11) { + var12 = var1[var3++]; + if(var12 != 0) { + var0[var4++] = var2[var12 & 255]; + } else { + ++var4; + } + } + + var4 += var7; + var3 += var8; + } + + } + + @ObfuscatedName("u") + @Export("IndexedSprite_something") + static void IndexedSprite_something(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + int var12 = var3; + + for(int var13 = -var8; var13 < 0; ++var13) { + int var14 = var11 * (var4 >> 16); + + for(int var15 = -var7; var15 < 0; ++var15) { + byte var16 = var1[(var3 >> 16) + var14]; + if(var16 != 0) { + var0[var5++] = var2[var16 & 255]; + } else { + ++var5; + } + + var3 += var9; + } + + var4 += var10; + var3 = var12; + var5 += var6; + } + + } +} diff --git a/rs-client/src/main/java/Instrument.java b/rs-client/src/main/java/Instrument.java new file mode 100644 index 0000000000..f12708ef4a --- /dev/null +++ b/rs-client/src/main/java/Instrument.java @@ -0,0 +1,414 @@ +import java.util.Random; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("db") +@Implements("Instrument") +public class Instrument { + @ObfuscatedName("s") + @Export("Instrument_samples") + static int[] Instrument_samples; + @ObfuscatedName("t") + @Export("Instrument_noise") + static int[] Instrument_noise; + @ObfuscatedName("y") + @Export("Instrument_sine") + static int[] Instrument_sine; + @ObfuscatedName("b") + @Export("Instrument_phases") + static int[] Instrument_phases; + @ObfuscatedName("c") + @Export("Instrument_delays") + static int[] Instrument_delays; + @ObfuscatedName("r") + @Export("Instrument_volumeSteps") + static int[] Instrument_volumeSteps; + @ObfuscatedName("p") + @Export("Instrument_pitchSteps") + static int[] Instrument_pitchSteps; + @ObfuscatedName("v") + @Export("Instrument_pitchBaseSteps") + static int[] Instrument_pitchBaseSteps; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__m") + SoundEnvelope __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__f") + SoundEnvelope __f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__q") + SoundEnvelope __q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__w") + SoundEnvelope __w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__o") + SoundEnvelope __o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__u") + SoundEnvelope __u; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__g") + SoundEnvelope __g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__l") + SoundEnvelope __l; + @ObfuscatedName("e") + @Export("oscillatorVolume") + int[] oscillatorVolume; + @ObfuscatedName("x") + @Export("oscillatorPitch") + int[] oscillatorPitch; + @ObfuscatedName("d") + @Export("oscillatorDelays") + int[] oscillatorDelays; + @ObfuscatedName("k") + @Export("delayTime") + int delayTime; + @ObfuscatedName("n") + @Export("delayDecay") + int delayDecay; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Ldi;" + ) + @Export("filter") + AudioFilter filter; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lde;" + ) + @Export("__a") + SoundEnvelope __a; + @ObfuscatedName("z") + @Export("duration") + int duration; + @ObfuscatedName("j") + @Export("offset") + int offset; + + static { + Instrument_noise = new int['耀']; + Random var0 = new Random(0L); + + int var1; + for(var1 = 0; var1 < 32768; ++var1) { + Instrument_noise[var1] = (var0.nextInt() & 2) - 1; + } + + Instrument_sine = new int['耀']; + + for(var1 = 0; var1 < 32768; ++var1) { + Instrument_sine[var1] = (int)(Math.sin((double)var1 / 5215.1903D) * 16384.0D); + } + + Instrument_samples = new int[220500]; + Instrument_phases = new int[5]; + Instrument_delays = new int[5]; + Instrument_volumeSteps = new int[5]; + Instrument_pitchSteps = new int[5]; + Instrument_pitchBaseSteps = new int[5]; + } + + Instrument() { + this.oscillatorVolume = new int[]{0, 0, 0, 0, 0}; + this.oscillatorPitch = new int[]{0, 0, 0, 0, 0}; + this.oscillatorDelays = new int[]{0, 0, 0, 0, 0}; + this.delayTime = 0; + this.delayDecay = 100; + this.duration = 500; + this.offset = 0; + } + + @ObfuscatedName("m") + @Export("synthesize") + final int[] synthesize(int var1, int var2) { + class212.clearIntArray(Instrument_samples, 0, var1); + if(var2 < 10) { + return Instrument_samples; + } else { + double var3 = (double)var1 / ((double)var2 + 0.0D); + this.__m.reset(); + this.__f.reset(); + int var5 = 0; + int var6 = 0; + int var7 = 0; + if(this.__q != null) { + this.__q.reset(); + this.__w.reset(); + var5 = (int)((double)(this.__q.end - this.__q.start) * 32.768D / var3); + var6 = (int)((double)this.__q.start * 32.768D / var3); + } + + int var8 = 0; + int var9 = 0; + int var10 = 0; + if(this.__o != null) { + this.__o.reset(); + this.__u.reset(); + var8 = (int)((double)(this.__o.end - this.__o.start) * 32.768D / var3); + var9 = (int)((double)this.__o.start * 32.768D / var3); + } + + int var11; + for(var11 = 0; var11 < 5; ++var11) { + if(this.oscillatorVolume[var11] != 0) { + Instrument_phases[var11] = 0; + Instrument_delays[var11] = (int)((double)this.oscillatorDelays[var11] * var3); + Instrument_volumeSteps[var11] = (this.oscillatorVolume[var11] << 14) / 100; + Instrument_pitchSteps[var11] = (int)((double)(this.__m.end - this.__m.start) * 32.768D * Math.pow(1.0057929410678534D, (double)this.oscillatorPitch[var11]) / var3); + Instrument_pitchBaseSteps[var11] = (int)((double)this.__m.start * 32.768D / var3); + } + } + + int var12; + int var13; + int var14; + int var15; + for(var11 = 0; var11 < var1; ++var11) { + var12 = this.__m.doStep(var1); + var13 = this.__f.doStep(var1); + if(this.__q != null) { + var14 = this.__q.doStep(var1); + var15 = this.__w.doStep(var1); + var12 += this.evaluateWave(var7, var15, this.__q.form) >> 1; + var7 = var7 + var6 + (var14 * var5 >> 16); + } + + if(this.__o != null) { + var14 = this.__o.doStep(var1); + var15 = this.__u.doStep(var1); + var13 = var13 * ((this.evaluateWave(var10, var15, this.__o.form) >> 1) + 32768) >> 15; + var10 = var10 + var9 + (var14 * var8 >> 16); + } + + for(var14 = 0; var14 < 5; ++var14) { + if(this.oscillatorVolume[var14] != 0) { + var15 = Instrument_delays[var14] + var11; + if(var15 < var1) { + Instrument_samples[var15] += this.evaluateWave(Instrument_phases[var14], var13 * Instrument_volumeSteps[var14] >> 15, this.__m.form); + Instrument_phases[var14] += (var12 * Instrument_pitchSteps[var14] >> 16) + Instrument_pitchBaseSteps[var14]; + } + } + } + } + + int var16; + if(this.__g != null) { + this.__g.reset(); + this.__l.reset(); + var11 = 0; + boolean var19 = false; + boolean var20 = true; + + for(var14 = 0; var14 < var1; ++var14) { + var15 = this.__g.doStep(var1); + var16 = this.__l.doStep(var1); + if(var20) { + var12 = (var15 * (this.__g.end - this.__g.start) >> 8) + this.__g.start; + } else { + var12 = (var16 * (this.__g.end - this.__g.start) >> 8) + this.__g.start; + } + + var11 += 256; + if(var11 >= var12) { + var11 = 0; + var20 = !var20; + } + + if(var20) { + Instrument_samples[var14] = 0; + } + } + } + + if(this.delayTime > 0 && this.delayDecay > 0) { + var11 = (int)((double)this.delayTime * var3); + + for(var12 = var11; var12 < var1; ++var12) { + Instrument_samples[var12] += Instrument_samples[var12 - var11] * this.delayDecay / 100; + } + } + + if(this.filter.__m[0] > 0 || this.filter.__m[1] > 0) { + this.__a.reset(); + var11 = this.__a.doStep(var1 + 1); + var12 = this.filter.__w_207(0, (float)var11 / 65536.0F); + var13 = this.filter.__w_207(1, (float)var11 / 65536.0F); + if(var1 >= var12 + var13) { + var14 = 0; + var15 = var13; + if(var13 > var1 - var12) { + var15 = var1 - var12; + } + + int var17; + while(var14 < var15) { + var16 = (int)((long)Instrument_samples[var14 + var12] * (long)AudioFilter.__di_e >> 16); + + for(var17 = 0; var17 < var12; ++var17) { + var16 += (int)((long)Instrument_samples[var14 + var12 - 1 - var17] * (long)AudioFilter.__di_g[0][var17] >> 16); + } + + for(var17 = 0; var17 < var14; ++var17) { + var16 -= (int)((long)Instrument_samples[var14 - 1 - var17] * (long)AudioFilter.__di_g[1][var17] >> 16); + } + + Instrument_samples[var14] = var16; + var11 = this.__a.doStep(var1 + 1); + ++var14; + } + + var15 = 128; + + while(true) { + if(var15 > var1 - var12) { + var15 = var1 - var12; + } + + int var18; + while(var14 < var15) { + var17 = (int)((long)Instrument_samples[var14 + var12] * (long)AudioFilter.__di_e >> 16); + + for(var18 = 0; var18 < var12; ++var18) { + var17 += (int)((long)Instrument_samples[var14 + var12 - 1 - var18] * (long)AudioFilter.__di_g[0][var18] >> 16); + } + + for(var18 = 0; var18 < var13; ++var18) { + var17 -= (int)((long)Instrument_samples[var14 - 1 - var18] * (long)AudioFilter.__di_g[1][var18] >> 16); + } + + Instrument_samples[var14] = var17; + var11 = this.__a.doStep(var1 + 1); + ++var14; + } + + if(var14 >= var1 - var12) { + while(var14 < var1) { + var17 = 0; + + for(var18 = var14 + var12 - var1; var18 < var12; ++var18) { + var17 += (int)((long)Instrument_samples[var14 + var12 - 1 - var18] * (long)AudioFilter.__di_g[0][var18] >> 16); + } + + for(var18 = 0; var18 < var13; ++var18) { + var17 -= (int)((long)Instrument_samples[var14 - 1 - var18] * (long)AudioFilter.__di_g[1][var18] >> 16); + } + + Instrument_samples[var14] = var17; + this.__a.doStep(var1 + 1); + ++var14; + } + break; + } + + var12 = this.filter.__w_207(0, (float)var11 / 65536.0F); + var13 = this.filter.__w_207(1, (float)var11 / 65536.0F); + var15 += 128; + } + } + } + + for(var11 = 0; var11 < var1; ++var11) { + if(Instrument_samples[var11] < -32768) { + Instrument_samples[var11] = -32768; + } + + if(Instrument_samples[var11] > 32767) { + Instrument_samples[var11] = 32767; + } + } + + return Instrument_samples; + } + } + + @ObfuscatedName("f") + @Export("evaluateWave") + final int evaluateWave(int var1, int var2, int var3) { + return var3 == 1?((var1 & 32767) < 16384?var2:-var2):(var3 == 2?Instrument_sine[var1 & 32767] * var2 >> 14:(var3 == 3?(var2 * (var1 & 32767) >> 14) - var2:(var3 == 4?var2 * Instrument_noise[var1 / 2607 & 32767]:0))); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + @Export("decode") + final void decode(Buffer var1) { + this.__m = new SoundEnvelope(); + this.__m.decode(var1); + this.__f = new SoundEnvelope(); + this.__f.decode(var1); + int var2 = var1.readUnsignedByte(); + if(var2 != 0) { + --var1.index; + this.__q = new SoundEnvelope(); + this.__q.decode(var1); + this.__w = new SoundEnvelope(); + this.__w.decode(var1); + } + + var2 = var1.readUnsignedByte(); + if(var2 != 0) { + --var1.index; + this.__o = new SoundEnvelope(); + this.__o.decode(var1); + this.__u = new SoundEnvelope(); + this.__u.decode(var1); + } + + var2 = var1.readUnsignedByte(); + if(var2 != 0) { + --var1.index; + this.__g = new SoundEnvelope(); + this.__g.decode(var1); + this.__l = new SoundEnvelope(); + this.__l.decode(var1); + } + + for(int var3 = 0; var3 < 10; ++var3) { + int var4 = var1.__ae_307(); + if(var4 == 0) { + break; + } + + this.oscillatorVolume[var3] = var4; + this.oscillatorPitch[var3] = var1.__ab_306(); + this.oscillatorDelays[var3] = var1.__ae_307(); + } + + this.delayTime = var1.__ae_307(); + this.delayDecay = var1.__ae_307(); + this.duration = var1.__ag_302(); + this.offset = var1.__ag_302(); + this.filter = new AudioFilter(); + this.__a = new SoundEnvelope(); + this.filter.__o_208(var1, this.__a); + } +} diff --git a/rs-client/src/main/java/IntHashTable.java b/rs-client/src/main/java/IntHashTable.java new file mode 100644 index 0000000000..8e94ce9a5f --- /dev/null +++ b/rs-client/src/main/java/IntHashTable.java @@ -0,0 +1,60 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lv") +@Implements("IntHashTable") +public class IntHashTable { + @ObfuscatedName("m") + @Export("array") + int[] array; + + public IntHashTable(int[] var1) { + int var2; + for(var2 = 1; var2 <= (var1.length >> 1) + var1.length; var2 <<= 1) { + ; + } + + this.array = new int[var2 + var2]; + + int var3; + for(var3 = 0; var3 < var2 + var2; ++var3) { + this.array[var3] = -1; + } + + int var4; + for(var3 = 0; var3 < var1.length; this.array[var4 + var4 + 1] = var3++) { + for(var4 = var1[var3] & var2 - 1; this.array[var4 + var4 + 1] != -1; var4 = var4 + 1 & var2 - 1) { + ; + } + + this.array[var4 + var4] = var1[var3]; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "1815939047" + ) + @Export("get") + public int get(int var1) { + int var2 = (this.array.length >> 1) - 1; + int var3 = var1 & var2; + + while(true) { + int var4 = this.array[var3 + var3 + 1]; + if(var4 == -1) { + return -1; + } + + if(this.array[var3 + var3] == var1) { + return var4; + } + + var3 = var3 + 1 & var2; + } + } +} diff --git a/rs-client/src/main/java/IntegerNode.java b/rs-client/src/main/java/IntegerNode.java new file mode 100644 index 0000000000..d67d38b2a9 --- /dev/null +++ b/rs-client/src/main/java/IntegerNode.java @@ -0,0 +1,15 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("gn") +@Implements("IntegerNode") +public class IntegerNode extends Node { + @ObfuscatedName("m") + @Export("integer") + public int integer; + + public IntegerNode(int var1) { + this.integer = var1; + } +} diff --git a/rs-client/src/main/java/Interpreter.java b/rs-client/src/main/java/Interpreter.java new file mode 100644 index 0000000000..126aba22f8 --- /dev/null +++ b/rs-client/src/main/java/Interpreter.java @@ -0,0 +1,229 @@ +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.util.Calendar; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bv") +@Implements("Interpreter") +public class Interpreter { + @ObfuscatedName("w") + @Export("Interpreter_stringLocals") + static String[] Interpreter_stringLocals; + @ObfuscatedName("o") + @Export("Interpreter_arrayLengths") + static int[] Interpreter_arrayLengths; + @ObfuscatedName("u") + @Export("Interpreter_arrays") + static int[][] Interpreter_arrays; + @ObfuscatedName("g") + @Export("Interpreter_intStack") + static int[] Interpreter_intStack; + @ObfuscatedName("e") + @Export("Interpreter_stringStack") + static String[] Interpreter_stringStack; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -114766123 + ) + @Export("Interpreter_stringStackSize") + static int Interpreter_stringStackSize; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 545127349 + ) + @Export("Interpreter_frameDepth") + static int Interpreter_frameDepth; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "[Lbn;" + ) + @Export("Interpreter_frames") + static ScriptFrame[] Interpreter_frames; + @ObfuscatedName("a") + @Export("Interpreter_calendar") + static Calendar Interpreter_calendar; + @ObfuscatedName("z") + @Export("__bv_z") + static final String[] __bv_z; + @ObfuscatedName("s") + @Export("__bv_s") + static boolean __bv_s; + @ObfuscatedName("t") + @Export("__bv_t") + static boolean __bv_t; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = -1019558835 + ) + @Export("__bv_y") + static int __bv_y; + @ObfuscatedName("r") + @Export("__bv_r") + static final double __bv_r; + + static { + Interpreter_arrayLengths = new int[5]; + Interpreter_arrays = new int[5][5000]; + Interpreter_intStack = new int[1000]; + Interpreter_stringStack = new String[1000]; + Interpreter_frameDepth = 0; + Interpreter_frames = new ScriptFrame[50]; + Interpreter_calendar = Calendar.getInstance(); + __bv_z = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; + __bv_s = false; + __bv_t = false; + __bv_y = 0; + __bv_r = Math.log(2.0D); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgs;Lhn;I)Lgg;", + garbageValue = "-370104720" + ) + public static PacketBufferNode method1915(ClientPacket var0, IsaacCipher var1) { + PacketBufferNode var2; + if(PacketBufferNode.__gg_u == 0) { + var2 = new PacketBufferNode(); + } else { + var2 = PacketBufferNode.packetBufferNodes[--PacketBufferNode.__gg_u]; + } + + var2.__m = var0; + var2.__f = var0.length; + if(var2.__f == -1) { + var2.packetBuffer = new PacketBuffer(260); + } else if(var2.__f == -2) { + var2.packetBuffer = new PacketBuffer(10000); + } else if(var2.__f <= 18) { + var2.packetBuffer = new PacketBuffer(20); + } else if(var2.__f <= 98) { + var2.packetBuffer = new PacketBuffer(100); + } else { + var2.packetBuffer = new PacketBuffer(260); + } + + var2.packetBuffer.setIsaacCipher(var1); + var2.packetBuffer.writeByteIsaac(var2.__m.id); + var2.__w = 0; + return var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Ljw;", + garbageValue = "-1888252818" + ) + @Export("getEnum") + public static EnumDefinition getEnum(int var0) { + EnumDefinition var1 = (EnumDefinition)EnumDefinition.EnumDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = EnumDefinition.EnumDefinition_indexCache.takeRecord(8, var0); + var1 = new EnumDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + EnumDefinition.EnumDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "76" + ) + static void method1975(int var0, int var1) { + int[] var2 = new int[4]; + int[] var3 = new int[4]; + var2[0] = var0; + var3[0] = var1; + int var4 = 1; + + for(int var5 = 0; var5 < 4; ++var5) { + if(World.__bt_e[var5] != var0) { + var2[var4] = World.__bt_e[var5]; + var3[var4] = World.__bt_l[var5]; + ++var4; + } + } + + World.__bt_e = var2; + World.__bt_l = var3; + MilliClock.method3400(ItemContainer.worlds, 0, ItemContainer.worlds.length - 1, World.__bt_e, World.__bt_l); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "80" + ) + public static void method1976() { + try { + File var0 = new File(WorldMapSection1.userHomeDirectory, "random.dat"); + int var2; + if(var0.exists()) { + class168.randomDat = new BufferedFile(new AccessFile(var0, "rw", 25L), 24, 0); + } else { + label38: + for(int var1 = 0; var1 < Canvas.__ao_s.length; ++var1) { + for(var2 = 0; var2 < WorldMapSection2.cacheDirectoryLocations.length; ++var2) { + File var3 = new File(WorldMapSection2.cacheDirectoryLocations[var2] + Canvas.__ao_s[var1] + File.separatorChar + "random.dat"); + if(var3.exists()) { + class168.randomDat = new BufferedFile(new AccessFile(var3, "rw", 25L), 24, 0); + break label38; + } + } + } + } + + if(class168.randomDat == null) { + RandomAccessFile var4 = new RandomAccessFile(var0, "rw"); + var2 = var4.read(); + var4.seek(0L); + var4.write(var2); + var4.seek(0L); + var4.close(); + class168.randomDat = new BufferedFile(new AccessFile(var0, "rw", 25L), 24, 0); + } + } catch (IOException var5) { + ; + } + + } + + @ObfuscatedName("iz") + @ObfuscatedSignature( + signature = "(IIIIIIIIB)V", + garbageValue = "-10" + ) + @Export("drawWidgets") + static final void drawWidgets(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(GroundItemPile.loadWidgetGroup(var0)) { + class279.__jx_ne = null; + DevicePcmPlayerProvider.drawWidgetGroup(Widget.widgets[var0], -1, var1, var2, var3, var4, var5, var6, var7); + if(class279.__jx_ne != null) { + DevicePcmPlayerProvider.drawWidgetGroup(class279.__jx_ne, -1412584499, var1, var2, var3, var4, class54.__bs_nb, class157.__fw_nm, var7); + class279.__jx_ne = null; + } + + } else { + if(var7 != -1) { + Client.__client_od[var7] = true; + } else { + for(int var8 = 0; var8 < 100; ++var8) { + Client.__client_od[var8] = true; + } + } + + } + } +} diff --git a/rs-client/src/main/java/InvDefinition.java b/rs-client/src/main/java/InvDefinition.java new file mode 100644 index 0000000000..241df58b96 --- /dev/null +++ b/rs-client/src/main/java/InvDefinition.java @@ -0,0 +1,69 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ib") +@Implements("InvDefinition") +public class InvDefinition extends DualNode { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__ib_f") + static EvictingDualNodeHashTable __ib_f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1358868971 + ) + @Export("size") + public int size; + + static { + __ib_f = new EvictingDualNodeHashTable(64); + } + + InvDefinition() { + this.size = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "628080573" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "1763455566" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 2) { + this.size = var1.__ag_302(); + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-121177696" + ) + public static void method4754() { + ParamKeyDefinition.ParamKeyDefinition_cached.clear(); + } +} diff --git a/rs-client/src/main/java/IsaacCipher.java b/rs-client/src/main/java/IsaacCipher.java new file mode 100644 index 0000000000..e10d46a0f7 --- /dev/null +++ b/rs-client/src/main/java/IsaacCipher.java @@ -0,0 +1,351 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hn") +@Implements("IsaacCipher") +public final class IsaacCipher { + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1514845493 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @Export("__o") + int[] __o; + @ObfuscatedName("u") + @Export("__u") + int[] __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1670027699 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -325762649 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1951204929 + ) + @Export("__e") + int __e; + + public IsaacCipher(int[] var1) { + this.__u = new int[256]; + this.__o = new int[256]; + + for(int var2 = 0; var2 < var1.length; ++var2) { + this.__o[var2] = var1[var2]; + } + + this.__w_339(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-7509790" + ) + @Export("__m_336") + final int __m_336() { + if(0 == --this.__w + 1) { + this.__q_338(); + this.__w = 255; + } + + return this.__o[this.__w]; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-506873526" + ) + @Export("__f_337") + final int __f_337() { + if(this.__w == 0) { + this.__q_338(); + this.__w = 256; + } + + return this.__o[this.__w - 1]; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "124" + ) + @Export("__q_338") + final void __q_338() { + this.__l += ++this.__e; + + for(int var1 = 0; var1 < 256; ++var1) { + int var2 = this.__u[var1]; + if((var1 & 2) == 0) { + if((var1 & 1) == 0) { + this.__g ^= this.__g << 13; + } else { + this.__g ^= this.__g >>> 6; + } + } else if((var1 & 1) == 0) { + this.__g ^= this.__g << 2; + } else { + this.__g ^= this.__g >>> 16; + } + + this.__g += this.__u[128 + var1 & 255]; + int var3; + this.__u[var1] = var3 = this.__u[(var2 & 1020) >> 2] + this.__l + this.__g; + this.__o[var1] = this.__l = this.__u[(var3 >> 8 & 1020) >> 2] + var2; + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "579890110" + ) + @Export("__w_339") + final void __w_339() { + int var9 = -1640531527; + int var8 = -1640531527; + int var7 = -1640531527; + int var6 = -1640531527; + int var5 = -1640531527; + int var4 = -1640531527; + int var3 = -1640531527; + int var2 = -1640531527; + + int var1; + for(var1 = 0; var1 < 4; ++var1) { + var2 ^= var3 << 11; + var5 += var2; + var3 += var4; + var3 ^= var4 >>> 2; + var6 += var3; + var4 += var5; + var4 ^= var5 << 8; + var7 += var4; + var5 += var6; + var5 ^= var6 >>> 16; + var8 += var5; + var6 += var7; + var6 ^= var7 << 10; + var9 += var6; + var7 += var8; + var7 ^= var8 >>> 4; + var2 += var7; + var8 += var9; + var8 ^= var9 << 8; + var3 += var8; + var9 += var2; + var9 ^= var2 >>> 9; + var4 += var9; + var2 += var3; + } + + for(var1 = 0; var1 < 256; var1 += 8) { + var2 += this.__o[var1]; + var3 += this.__o[var1 + 1]; + var4 += this.__o[var1 + 2]; + var5 += this.__o[var1 + 3]; + var6 += this.__o[var1 + 4]; + var7 += this.__o[var1 + 5]; + var8 += this.__o[var1 + 6]; + var9 += this.__o[var1 + 7]; + var2 ^= var3 << 11; + var5 += var2; + var3 += var4; + var3 ^= var4 >>> 2; + var6 += var3; + var4 += var5; + var4 ^= var5 << 8; + var7 += var4; + var5 += var6; + var5 ^= var6 >>> 16; + var8 += var5; + var6 += var7; + var6 ^= var7 << 10; + var9 += var6; + var7 += var8; + var7 ^= var8 >>> 4; + var2 += var7; + var8 += var9; + var8 ^= var9 << 8; + var3 += var8; + var9 += var2; + var9 ^= var2 >>> 9; + var4 += var9; + var2 += var3; + this.__u[var1] = var2; + this.__u[var1 + 1] = var3; + this.__u[var1 + 2] = var4; + this.__u[var1 + 3] = var5; + this.__u[var1 + 4] = var6; + this.__u[var1 + 5] = var7; + this.__u[var1 + 6] = var8; + this.__u[var1 + 7] = var9; + } + + for(var1 = 0; var1 < 256; var1 += 8) { + var2 += this.__u[var1]; + var3 += this.__u[var1 + 1]; + var4 += this.__u[var1 + 2]; + var5 += this.__u[var1 + 3]; + var6 += this.__u[var1 + 4]; + var7 += this.__u[var1 + 5]; + var8 += this.__u[var1 + 6]; + var9 += this.__u[var1 + 7]; + var2 ^= var3 << 11; + var5 += var2; + var3 += var4; + var3 ^= var4 >>> 2; + var6 += var3; + var4 += var5; + var4 ^= var5 << 8; + var7 += var4; + var5 += var6; + var5 ^= var6 >>> 16; + var8 += var5; + var6 += var7; + var6 ^= var7 << 10; + var9 += var6; + var7 += var8; + var7 ^= var8 >>> 4; + var2 += var7; + var8 += var9; + var8 ^= var9 << 8; + var3 += var8; + var9 += var2; + var9 ^= var2 >>> 9; + var4 += var9; + var2 += var3; + this.__u[var1] = var2; + this.__u[var1 + 1] = var3; + this.__u[var1 + 2] = var4; + this.__u[var1 + 3] = var5; + this.__u[var1 + 4] = var6; + this.__u[var1 + 5] = var7; + this.__u[var1 + 6] = var8; + this.__u[var1 + 7] = var9; + } + + this.__q_338(); + this.__w = 256; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Lir;I)V", + garbageValue = "75867683" + ) + public static void method4082(AbstractIndexCache var0, AbstractIndexCache var1) { + NpcDefinition.NpcDefinition_indexCache = var0; + NpcDefinition.NpcDefinition_modelIndexCache = var1; + } + + @ObfuscatedName("fl") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1676957578" + ) + static void method4093(int var0) { + if(var0 == -3) { + class54.method1089("Connection timed out.", "Please try using a different world.", ""); + } else if(var0 == -2) { + class54.method1089("", "Error connecting to server.", ""); + } else if(var0 == -1) { + class54.method1089("No response from server.", "Please try using a different world.", ""); + } else if(var0 == 3) { + Login.__cu_aw = 3; + Login.__cu_ac = 1; + } else if(var0 == 4) { + class32.method578(0); + } else if(var0 == 5) { + Login.__cu_ac = 2; + class54.method1089("Your account has not logged out from its last", "session or the server is too busy right now.", "Please try again in a few minutes."); + } else if(var0 != 68 && (Client.__client_bl || var0 != 6)) { + if(var0 == 7) { + class54.method1089("This world is full.", "Please use a different world.", ""); + } else if(var0 == 8) { + class54.method1089("Unable to connect.", "Login server offline.", ""); + } else if(var0 == 9) { + class54.method1089("Login limit exceeded.", "Too many connections from your address.", ""); + } else if(var0 == 10) { + class54.method1089("Unable to connect.", "Bad session id.", ""); + } else if(var0 == 11) { + class54.method1089("We suspect someone knows your password.", "Press \'change your password\' on front page.", ""); + } else if(var0 == 12) { + class54.method1089("You need a members account to login to this world.", "Please subscribe, or use a different world.", ""); + } else if(var0 == 13) { + class54.method1089("Could not complete login.", "Please try using a different world.", ""); + } else if(var0 == 14) { + class54.method1089("The server is being updated.", "Please wait 1 minute and try again.", ""); + } else if(var0 == 16) { + class54.method1089("Too many login attempts.", "Please wait a few minutes before trying again.", ""); + } else if(var0 == 17) { + class54.method1089("You are standing in a members-only area.", "To play on this world move to a free area first", ""); + } else if(var0 == 18) { + class32.method578(1); + } else if(var0 == 19) { + class54.method1089("This world is running a closed Beta.", "Sorry invited players only.", "Please use a different world."); + } else if(var0 == 20) { + class54.method1089("Invalid loginserver requested.", "Please try using a different world.", ""); + } else if(var0 == 22) { + class54.method1089("Malformed login packet.", "Please try again.", ""); + } else if(var0 == 23) { + class54.method1089("No reply from loginserver.", "Please wait 1 minute and try again.", ""); + } else if(var0 == 24) { + class54.method1089("Error loading your profile.", "Please contact customer support.", ""); + } else if(var0 == 25) { + class54.method1089("Unexpected loginserver response.", "Please try using a different world.", ""); + } else if(var0 == 26) { + class54.method1089("This computers address has been blocked", "as it was used to break our rules.", ""); + } else if(var0 == 27) { + class54.method1089("", "Service unavailable.", ""); + } else if(var0 == 31) { + class54.method1089("Your account must have a displayname set", "in order to play the game. Please set it", "via the website, or the main game."); + } else if(var0 == 32) { + class54.method1089("Your attempt to log into your account was", "unsuccessful. Don\'t worry, you can sort", "this out by visiting the billing system."); + } else if(var0 == 37) { + class54.method1089("Your account is currently inaccessible.", "Please try again in a few minutes.", ""); + } else if(var0 == 38) { + class54.method1089("You need to vote to play!", "Visit runescape.com and vote,", "and then come back here!"); + } else if(var0 == 55) { + Login.__cu_aw = 8; + } else { + if(var0 == 56) { + class54.method1089("Enter the 6-digit code generated by your", "authenticator app.", ""); + GameShell.updateGameState(11); + return; + } + + if(var0 == 57) { + class54.method1089("The code you entered was incorrect.", "Please try again.", ""); + GameShell.updateGameState(11); + return; + } + + if(var0 == 61) { + Login.__cu_aw = 7; + } else { + class54.method1089("Unexpected server response", "Please try using a different world.", ""); + } + } + } else { + class54.method1089("RuneScape has been updated!", "Please reload this page.", ""); + } + + GameShell.updateGameState(10); + } +} diff --git a/rs-client/src/main/java/ItemContainer.java b/rs-client/src/main/java/ItemContainer.java new file mode 100644 index 0000000000..577023f80e --- /dev/null +++ b/rs-client/src/main/java/ItemContainer.java @@ -0,0 +1,99 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bc") +@Implements("ItemContainer") +public class ItemContainer extends Node { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("itemContainers") + static NodeHashTable itemContainers; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "[Lbt;" + ) + @Export("worlds") + static World[] worlds; + @ObfuscatedName("dm") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("__bc_dm") + static IndexCache __bc_dm; + @ObfuscatedName("f") + @Export("ids") + int[] ids; + @ObfuscatedName("q") + @Export("quantities") + int[] quantities; + + static { + itemContainers = new NodeHashTable(32); + } + + ItemContainer() { + this.ids = new int[]{-1}; + this.quantities = new int[]{0}; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Ljava/lang/String;", + garbageValue = "-1265322360" + ) + static String method1170(int var0) { + return ""; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(II)Len;", + garbageValue = "-227230552" + ) + @Export("getFrames") + static Frames getFrames(int var0) { + Frames var1 = (Frames)SequenceDefinition.__jh_o.get((long)var0); + if(var1 != null) { + return var1; + } else { + AbstractIndexCache var3 = SequenceDefinition.__jh_f; + AbstractIndexCache var4 = SequenceDefinition.__jh_q; + boolean var5 = true; + int[] var6 = var3.__j_395(var0); + + for(int var7 = 0; var7 < var6.length; ++var7) { + byte[] var8 = var3.getRecord(var0, var6[var7]); + if(var8 == null) { + var5 = false; + } else { + int var9 = (var8[0] & 255) << 8 | var8[1] & 255; + byte[] var10 = var4.getRecord(var9, 0); + if(var10 == null) { + var5 = false; + } + } + } + + Frames var2; + if(!var5) { + var2 = null; + } else { + try { + var2 = new Frames(var3, var4, var0, false); + } catch (Exception var12) { + var2 = null; + } + } + + if(var2 != null) { + SequenceDefinition.__jh_o.put(var2, (long)var0); + } + + return var2; + } + } +} diff --git a/rs-client/src/main/java/ItemDefinition.java b/rs-client/src/main/java/ItemDefinition.java new file mode 100644 index 0000000000..14304761f6 --- /dev/null +++ b/rs-client/src/main/java/ItemDefinition.java @@ -0,0 +1,914 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jv") +@Implements("ItemDefinition") +public class ItemDefinition extends DualNode { + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("ItemDefinition_indexCache") + public static AbstractIndexCache ItemDefinition_indexCache; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("ItemDefinition_modelIndexCache") + public static AbstractIndexCache ItemDefinition_modelIndexCache; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("ItemDefinition_cached") + static EvictingDualNodeHashTable ItemDefinition_cached; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("ItemDefinition_cachedModels") + static EvictingDualNodeHashTable ItemDefinition_cachedModels; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("Sprite_cached") + static EvictingDualNodeHashTable Sprite_cached; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -590103687 + ) + @Export("id") + public int id; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = 1070080857 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @Export("name") + public String name; + @ObfuscatedName("j") + @Export("recolorFrom") + short[] recolorFrom; + @ObfuscatedName("s") + @Export("recolorTo") + short[] recolorTo; + @ObfuscatedName("t") + @Export("retextureFrom") + short[] retextureFrom; + @ObfuscatedName("y") + @Export("retextureTo") + short[] retextureTo; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 278037959 + ) + @Export("zoom2d") + public int zoom2d; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 880150839 + ) + @Export("xan2d") + public int xan2d; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 507808107 + ) + @Export("yan2d") + public int yan2d; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = 551313257 + ) + @Export("zan2d") + public int zan2d; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -533708435 + ) + @Export("offsetX2d") + public int offsetX2d; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = -2130350563 + ) + @Export("offsetY2d") + public int offsetY2d; + @ObfuscatedName("ag") + @ObfuscatedGetter( + intValue = -237597001 + ) + @Export("isStackable") + public int isStackable; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = -343501105 + ) + @Export("price") + public int price; + @ObfuscatedName("aj") + @Export("isMembersOnly") + public boolean isMembersOnly; + @ObfuscatedName("av") + @Export("groundActions") + public String[] groundActions; + @ObfuscatedName("ar") + @Export("inventoryActions") + public String[] inventoryActions; + @ObfuscatedName("ay") + @ObfuscatedGetter( + intValue = 881309855 + ) + @Export("shiftClickIndex0") + int shiftClickIndex0; + @ObfuscatedName("ah") + @ObfuscatedGetter( + intValue = 939367983 + ) + @Export("maleModel") + int maleModel; + @ObfuscatedName("ak") + @ObfuscatedGetter( + intValue = 140643039 + ) + @Export("maleModel1") + int maleModel1; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = -1378899027 + ) + @Export("maleOffset") + int maleOffset; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = 886682223 + ) + @Export("femaleModel") + int femaleModel; + @ObfuscatedName("ab") + @ObfuscatedGetter( + intValue = 154223105 + ) + @Export("femaleModel1") + int femaleModel1; + @ObfuscatedName("ae") + @ObfuscatedGetter( + intValue = -1619361485 + ) + @Export("femaleOffset") + int femaleOffset; + @ObfuscatedName("at") + @ObfuscatedGetter( + intValue = -691559863 + ) + @Export("maleModel2") + int maleModel2; + @ObfuscatedName("ad") + @ObfuscatedGetter( + intValue = -771136925 + ) + @Export("femaleModel2") + int femaleModel2; + @ObfuscatedName("ap") + @ObfuscatedGetter( + intValue = -650184697 + ) + @Export("maleHeadModel") + int maleHeadModel; + @ObfuscatedName("as") + @ObfuscatedGetter( + intValue = 548044049 + ) + @Export("maleHeadModel2") + int maleHeadModel2; + @ObfuscatedName("am") + @ObfuscatedGetter( + intValue = 1709659237 + ) + @Export("femaleHeadModel") + int femaleHeadModel; + @ObfuscatedName("an") + @ObfuscatedGetter( + intValue = 106668727 + ) + @Export("femaleHeadModel2") + int femaleHeadModel2; + @ObfuscatedName("az") + @Export("__az") + int[] __az; + @ObfuscatedName("au") + @Export("__au") + int[] __au; + @ObfuscatedName("ao") + @ObfuscatedGetter( + intValue = 619422509 + ) + @Export("note") + public int note; + @ObfuscatedName("aa") + @ObfuscatedGetter( + intValue = -2121346423 + ) + @Export("noteTemplate") + public int noteTemplate; + @ObfuscatedName("ax") + @ObfuscatedGetter( + intValue = 69034859 + ) + @Export("resizeX") + int resizeX; + @ObfuscatedName("af") + @ObfuscatedGetter( + intValue = -17174497 + ) + @Export("resizeY") + int resizeY; + @ObfuscatedName("ai") + @ObfuscatedGetter( + intValue = 1395132907 + ) + @Export("resizeZ") + int resizeZ; + @ObfuscatedName("ba") + @ObfuscatedGetter( + intValue = 738319589 + ) + @Export("ambient") + public int ambient; + @ObfuscatedName("bb") + @ObfuscatedGetter( + intValue = -396977461 + ) + @Export("contrast") + public int contrast; + @ObfuscatedName("bs") + @ObfuscatedGetter( + intValue = -1057008657 + ) + @Export("int1") + public int int1; + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("params") + IterableNodeHashTable params; + @ObfuscatedName("bn") + @Export("isTradable") + public boolean isTradable; + @ObfuscatedName("bk") + @ObfuscatedGetter( + intValue = 700576005 + ) + @Export("unnotedId") + int unnotedId; + @ObfuscatedName("bd") + @ObfuscatedGetter( + intValue = -1969719185 + ) + @Export("notedId") + int notedId; + @ObfuscatedName("bc") + @ObfuscatedGetter( + intValue = 807815565 + ) + @Export("placeholder") + public int placeholder; + @ObfuscatedName("bo") + @ObfuscatedGetter( + intValue = -1854342455 + ) + @Export("placeholderTemplate") + public int placeholderTemplate; + + static { + ItemDefinition_cached = new EvictingDualNodeHashTable(64); + ItemDefinition_cachedModels = new EvictingDualNodeHashTable(50); + Sprite_cached = new EvictingDualNodeHashTable(200); + } + + ItemDefinition() { + this.name = "null"; + this.zoom2d = 2000; + this.xan2d = 0; + this.yan2d = 0; + this.zan2d = 0; + this.offsetX2d = 0; + this.offsetY2d = 0; + this.isStackable = 0; + this.price = 1; + this.isMembersOnly = false; + this.groundActions = new String[]{null, null, "Take", null, null}; + this.inventoryActions = new String[]{null, null, null, null, "Drop"}; + this.shiftClickIndex0 = -2; + this.maleModel = -1; + this.maleModel1 = -1; + this.maleOffset = 0; + this.femaleModel = -1; + this.femaleModel1 = -1; + this.femaleOffset = 0; + this.maleModel2 = -1; + this.femaleModel2 = -1; + this.maleHeadModel = -1; + this.maleHeadModel2 = -1; + this.femaleHeadModel = -1; + this.femaleHeadModel2 = -1; + this.note = -1; + this.noteTemplate = -1; + this.resizeX = 128; + this.resizeY = 128; + this.resizeZ = 128; + this.ambient = 0; + this.contrast = 0; + this.int1 = 0; + this.isTradable = false; + this.unnotedId = -1; + this.notedId = -1; + this.placeholder = -1; + this.placeholderTemplate = -1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1659281458" + ) + @Export("post") + void post() { + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-781492560" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-1975780739" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.__a = var1.__ag_302(); + } else if(var2 == 2) { + this.name = var1.readStringCp1252NullTerminated(); + } else if(var2 == 4) { + this.zoom2d = var1.__ag_302(); + } else if(var2 == 5) { + this.xan2d = var1.__ag_302(); + } else if(var2 == 6) { + this.yan2d = var1.__ag_302(); + } else if(var2 == 7) { + this.offsetX2d = var1.__ag_302(); + if(this.offsetX2d > 32767) { + this.offsetX2d -= 65536; + } + } else if(var2 == 8) { + this.offsetY2d = var1.__ag_302(); + if(this.offsetY2d > 32767) { + this.offsetY2d -= 65536; + } + } else if(var2 == 11) { + this.isStackable = 1; + } else if(var2 == 12) { + this.price = var1.readInt(); + } else if(var2 == 16) { + this.isMembersOnly = true; + } else if(var2 == 23) { + this.maleModel = var1.__ag_302(); + this.maleOffset = var1.readUnsignedByte(); + } else if(var2 == 24) { + this.maleModel1 = var1.__ag_302(); + } else if(var2 == 25) { + this.femaleModel = var1.__ag_302(); + this.femaleOffset = var1.readUnsignedByte(); + } else if(var2 == 26) { + this.femaleModel1 = var1.__ag_302(); + } else if(var2 >= 30 && var2 < 35) { + this.groundActions[var2 - 30] = var1.readStringCp1252NullTerminated(); + if(this.groundActions[var2 - 30].equalsIgnoreCase("Hidden")) { + this.groundActions[var2 - 30] = null; + } + } else if(var2 >= 35 && var2 < 40) { + this.inventoryActions[var2 - 35] = var1.readStringCp1252NullTerminated(); + } else { + int var3; + int var4; + if(var2 == 40) { + var3 = var1.readUnsignedByte(); + this.recolorFrom = new short[var3]; + this.recolorTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.recolorFrom[var4] = (short)var1.__ag_302(); + this.recolorTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 41) { + var3 = var1.readUnsignedByte(); + this.retextureFrom = new short[var3]; + this.retextureTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.retextureFrom[var4] = (short)var1.__ag_302(); + this.retextureTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 42) { + this.shiftClickIndex0 = var1.readByte(); + } else if(var2 == 65) { + this.isTradable = true; + } else if(var2 == 78) { + this.maleModel2 = var1.__ag_302(); + } else if(var2 == 79) { + this.femaleModel2 = var1.__ag_302(); + } else if(var2 == 90) { + this.maleHeadModel = var1.__ag_302(); + } else if(var2 == 91) { + this.femaleHeadModel = var1.__ag_302(); + } else if(var2 == 92) { + this.maleHeadModel2 = var1.__ag_302(); + } else if(var2 == 93) { + this.femaleHeadModel2 = var1.__ag_302(); + } else if(var2 == 95) { + this.zan2d = var1.__ag_302(); + } else if(var2 == 97) { + this.note = var1.__ag_302(); + } else if(var2 == 98) { + this.noteTemplate = var1.__ag_302(); + } else if(var2 >= 100 && var2 < 110) { + if(this.__az == null) { + this.__az = new int[10]; + this.__au = new int[10]; + } + + this.__az[var2 - 100] = var1.__ag_302(); + this.__au[var2 - 100] = var1.__ag_302(); + } else if(var2 == 110) { + this.resizeX = var1.__ag_302(); + } else if(var2 == 111) { + this.resizeY = var1.__ag_302(); + } else if(var2 == 112) { + this.resizeZ = var1.__ag_302(); + } else if(var2 == 113) { + this.ambient = var1.readByte(); + } else if(var2 == 114) { + this.contrast = var1.readByte(); + } else if(var2 == 115) { + this.int1 = var1.readUnsignedByte(); + } else if(var2 == 139) { + this.unnotedId = var1.__ag_302(); + } else if(var2 == 140) { + this.notedId = var1.__ag_302(); + } else if(var2 == 148) { + this.placeholder = var1.__ag_302(); + } else if(var2 == 149) { + this.placeholderTemplate = var1.__ag_302(); + } else if(var2 == 249) { + this.params = AbstractIndexCache.readStringIntParameters(var1, this.params); + } + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Ljv;Ljv;I)V", + garbageValue = "2051877377" + ) + @Export("__o_426") + void __o_426(ItemDefinition var1, ItemDefinition var2) { + this.__a = var1.__a; + this.zoom2d = var1.zoom2d; + this.xan2d = var1.xan2d; + this.yan2d = var1.yan2d; + this.zan2d = var1.zan2d; + this.offsetX2d = var1.offsetX2d; + this.offsetY2d = var1.offsetY2d; + this.recolorFrom = var1.recolorFrom; + this.recolorTo = var1.recolorTo; + this.retextureFrom = var1.retextureFrom; + this.retextureTo = var1.retextureTo; + this.name = var2.name; + this.isMembersOnly = var2.isMembersOnly; + this.price = var2.price; + this.isStackable = 1; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Ljv;Ljv;I)V", + garbageValue = "227754762" + ) + @Export("__u_427") + void __u_427(ItemDefinition var1, ItemDefinition var2) { + this.__a = var1.__a; + this.zoom2d = var1.zoom2d; + this.xan2d = var1.xan2d; + this.yan2d = var1.yan2d; + this.zan2d = var1.zan2d; + this.offsetX2d = var1.offsetX2d; + this.offsetY2d = var1.offsetY2d; + this.recolorFrom = var2.recolorFrom; + this.recolorTo = var2.recolorTo; + this.retextureFrom = var2.retextureFrom; + this.retextureTo = var2.retextureTo; + this.name = var2.name; + this.isMembersOnly = var2.isMembersOnly; + this.isStackable = var2.isStackable; + this.maleModel = var2.maleModel; + this.maleModel1 = var2.maleModel1; + this.maleModel2 = var2.maleModel2; + this.femaleModel = var2.femaleModel; + this.femaleModel1 = var2.femaleModel1; + this.femaleModel2 = var2.femaleModel2; + this.maleHeadModel = var2.maleHeadModel; + this.maleHeadModel2 = var2.maleHeadModel2; + this.femaleHeadModel = var2.femaleHeadModel; + this.femaleHeadModel2 = var2.femaleHeadModel2; + this.int1 = var2.int1; + this.groundActions = var2.groundActions; + this.inventoryActions = new String[5]; + if(var2.inventoryActions != null) { + for(int var3 = 0; var3 < 4; ++var3) { + this.inventoryActions[var3] = var2.inventoryActions[var3]; + } + } + + this.inventoryActions[4] = "Discard"; + this.price = 0; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ljv;Ljv;I)V", + garbageValue = "2084647027" + ) + @Export("__g_428") + void __g_428(ItemDefinition var1, ItemDefinition var2) { + this.__a = var1.__a; + this.zoom2d = var1.zoom2d; + this.xan2d = var1.xan2d; + this.yan2d = var1.yan2d; + this.zan2d = var1.zan2d; + this.offsetX2d = var1.offsetX2d; + this.offsetY2d = var1.offsetY2d; + this.recolorFrom = var1.recolorFrom; + this.recolorTo = var1.recolorTo; + this.retextureFrom = var1.retextureFrom; + this.retextureTo = var1.retextureTo; + this.isStackable = var1.isStackable; + this.name = var2.name; + this.price = 0; + this.isMembersOnly = false; + this.isTradable = false; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(II)Ldw;", + garbageValue = "-223149161" + ) + @Export("__l_429") + public final ModelData __l_429(int var1) { + int var3; + if(this.__az != null && var1 > 1) { + int var2 = -1; + + for(var3 = 0; var3 < 10; ++var3) { + if(var1 >= this.__au[var3] && this.__au[var3] != 0) { + var2 = this.__az[var3]; + } + } + + if(var2 != -1) { + return Skills.getItemDefinition(var2).__l_429(1); + } + } + + ModelData var4 = ModelData.method2788(ItemDefinition_modelIndexCache, this.__a, 0); + if(var4 == null) { + return null; + } else { + if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) { + var4.__y_227(this.resizeX, this.resizeY, this.resizeZ); + } + + if(this.recolorFrom != null) { + for(var3 = 0; var3 < this.recolorFrom.length; ++var3) { + var4.recolor(this.recolorFrom[var3], this.recolorTo[var3]); + } + } + + if(this.retextureFrom != null) { + for(var3 = 0; var3 < this.retextureFrom.length; ++var3) { + var4.retexture(this.retextureFrom[var3], this.retextureTo[var3]); + } + } + + return var4; + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(II)Ldu;", + garbageValue = "1152916563" + ) + @Export("getModel") + public final Model getModel(int var1) { + if(this.__az != null && var1 > 1) { + int var2 = -1; + + for(int var3 = 0; var3 < 10; ++var3) { + if(var1 >= this.__au[var3] && this.__au[var3] != 0) { + var2 = this.__az[var3]; + } + } + + if(var2 != -1) { + return Skills.getItemDefinition(var2).getModel(1); + } + } + + Model var5 = (Model)ItemDefinition_cachedModels.get((long)this.id); + if(var5 != null) { + return var5; + } else { + ModelData var6 = ModelData.method2788(ItemDefinition_modelIndexCache, this.__a, 0); + if(var6 == null) { + return null; + } else { + if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) { + var6.__y_227(this.resizeX, this.resizeY, this.resizeZ); + } + + int var4; + if(this.recolorFrom != null) { + for(var4 = 0; var4 < this.recolorFrom.length; ++var4) { + var6.recolor(this.recolorFrom[var4], this.recolorTo[var4]); + } + } + + if(this.retextureFrom != null) { + for(var4 = 0; var4 < this.retextureFrom.length; ++var4) { + var6.retexture(this.retextureFrom[var4], this.retextureTo[var4]); + } + } + + var5 = var6.toModel(this.ambient + 64, this.contrast * 5 + 768, -50, -10, -50); + var5.isSingleTile = true; + ItemDefinition_cachedModels.put(var5, (long)this.id); + return var5; + } + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(IB)Ljv;", + garbageValue = "0" + ) + @Export("__x_430") + public ItemDefinition __x_430(int var1) { + if(this.__az != null && var1 > 1) { + int var2 = -1; + + for(int var3 = 0; var3 < 10; ++var3) { + if(var1 >= this.__au[var3] && this.__au[var3] != 0) { + var2 = this.__az[var3]; + } + } + + if(var2 != -1) { + return Skills.getItemDefinition(var2); + } + } + + return this; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(ZI)Z", + garbageValue = "-918880706" + ) + @Export("__z_431") + public final boolean __z_431(boolean var1) { + int var2 = this.maleModel; + int var3 = this.maleModel1; + int var4 = this.maleModel2; + if(var1) { + var2 = this.femaleModel; + var3 = this.femaleModel1; + var4 = this.femaleModel2; + } + + if(var2 == -1) { + return true; + } else { + boolean var5 = true; + if(!ItemDefinition_modelIndexCache.tryLoadRecord(var2, 0)) { + var5 = false; + } + + if(var3 != -1 && !ItemDefinition_modelIndexCache.tryLoadRecord(var3, 0)) { + var5 = false; + } + + if(var4 != -1 && !ItemDefinition_modelIndexCache.tryLoadRecord(var4, 0)) { + var5 = false; + } + + return var5; + } + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(ZB)Ldw;", + garbageValue = "-123" + ) + @Export("__j_432") + public final ModelData __j_432(boolean var1) { + int var2 = this.maleModel; + int var3 = this.maleModel1; + int var4 = this.maleModel2; + if(var1) { + var2 = this.femaleModel; + var3 = this.femaleModel1; + var4 = this.femaleModel2; + } + + if(var2 == -1) { + return null; + } else { + ModelData var5 = ModelData.method2788(ItemDefinition_modelIndexCache, var2, 0); + if(var3 != -1) { + ModelData var6 = ModelData.method2788(ItemDefinition_modelIndexCache, var3, 0); + if(var4 != -1) { + ModelData var7 = ModelData.method2788(ItemDefinition_modelIndexCache, var4, 0); + ModelData[] var8 = new ModelData[]{var5, var6, var7}; + var5 = new ModelData(var8, 3); + } else { + ModelData[] var10 = new ModelData[]{var5, var6}; + var5 = new ModelData(var10, 2); + } + } + + if(!var1 && this.maleOffset != 0) { + var5.__z_225(0, this.maleOffset, 0); + } + + if(var1 && this.femaleOffset != 0) { + var5.__z_225(0, this.femaleOffset, 0); + } + + int var9; + if(this.recolorFrom != null) { + for(var9 = 0; var9 < this.recolorFrom.length; ++var9) { + var5.recolor(this.recolorFrom[var9], this.recolorTo[var9]); + } + } + + if(this.retextureFrom != null) { + for(var9 = 0; var9 < this.retextureFrom.length; ++var9) { + var5.retexture(this.retextureFrom[var9], this.retextureTo[var9]); + } + } + + return var5; + } + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(ZI)Z", + garbageValue = "-998582497" + ) + @Export("__s_433") + public final boolean __s_433(boolean var1) { + int var2 = this.maleHeadModel; + int var3 = this.maleHeadModel2; + if(var1) { + var2 = this.femaleHeadModel; + var3 = this.femaleHeadModel2; + } + + if(var2 == -1) { + return true; + } else { + boolean var4 = true; + if(!ItemDefinition_modelIndexCache.tryLoadRecord(var2, 0)) { + var4 = false; + } + + if(var3 != -1 && !ItemDefinition_modelIndexCache.tryLoadRecord(var3, 0)) { + var4 = false; + } + + return var4; + } + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(ZI)Ldw;", + garbageValue = "-1820885439" + ) + @Export("__t_434") + public final ModelData __t_434(boolean var1) { + int var2 = this.maleHeadModel; + int var3 = this.maleHeadModel2; + if(var1) { + var2 = this.femaleHeadModel; + var3 = this.femaleHeadModel2; + } + + if(var2 == -1) { + return null; + } else { + ModelData var4 = ModelData.method2788(ItemDefinition_modelIndexCache, var2, 0); + if(var3 != -1) { + ModelData var5 = ModelData.method2788(ItemDefinition_modelIndexCache, var3, 0); + ModelData[] var6 = new ModelData[]{var4, var5}; + var4 = new ModelData(var6, 2); + } + + int var7; + if(this.recolorFrom != null) { + for(var7 = 0; var7 < this.recolorFrom.length; ++var7) { + var4.recolor(this.recolorFrom[var7], this.recolorTo[var7]); + } + } + + if(this.retextureFrom != null) { + for(var7 = 0; var7 < this.retextureFrom.length; ++var7) { + var4.retexture(this.retextureFrom[var7], this.retextureTo[var7]); + } + } + + return var4; + } + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(IIS)I", + garbageValue = "8781" + ) + @Export("getIntParam") + public int getIntParam(int var1, int var2) { + IterableNodeHashTable var4 = this.params; + int var3; + if(var4 == null) { + var3 = var2; + } else { + IntegerNode var5 = (IntegerNode)var4.get((long)var1); + if(var5 == null) { + var3 = var2; + } else { + var3 = var5.integer; + } + } + + return var3; + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)Ljava/lang/String;", + garbageValue = "471693065" + ) + @Export("getStringParam") + public String getStringParam(int var1, String var2) { + return Frames.method3238(this.params, var1, var2); + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1665022672" + ) + @Export("getShiftClickIndex") + public int getShiftClickIndex() { + return this.shiftClickIndex0 != -1 && this.inventoryActions != null?(this.shiftClickIndex0 >= 0?(this.inventoryActions[this.shiftClickIndex0] != null?this.shiftClickIndex0:-1):("Drop".equalsIgnoreCase(this.inventoryActions[4])?4:-1)):-1; + } +} diff --git a/rs-client/src/main/java/IterableDualNodeQueue.java b/rs-client/src/main/java/IterableDualNodeQueue.java new file mode 100644 index 0000000000..f08c441a67 --- /dev/null +++ b/rs-client/src/main/java/IterableDualNodeQueue.java @@ -0,0 +1,121 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jc") +@Implements("IterableDualNodeQueue") +public class IterableDualNodeQueue implements Iterable { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("sentinel") + public DualNode sentinel; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("head") + DualNode head; + + public IterableDualNodeQueue() { + this.sentinel = new DualNode(); + this.sentinel.previousDual = this.sentinel; + this.sentinel.nextDual = this.sentinel; + } + + @ObfuscatedName("m") + @Export("clear") + public void clear() { + while(this.sentinel.previousDual != this.sentinel) { + this.sentinel.previousDual.removeDual(); + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lfn;)V" + ) + @Export("add") + public void add(DualNode var1) { + if(var1.nextDual != null) { + var1.removeDual(); + } + + var1.nextDual = this.sentinel.nextDual; + var1.previousDual = this.sentinel; + var1.nextDual.previousDual = var1; + var1.previousDual.nextDual = var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "()Lfn;" + ) + @Export("__q_448") + public DualNode __q_448() { + DualNode var1 = this.sentinel.previousDual; + if(var1 == this.sentinel) { + return null; + } else { + var1.removeDual(); + return var1; + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "()Lfn;" + ) + @Export("__w_449") + public DualNode __w_449() { + return this.__o_450((DualNode)null); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lfn;)Lfn;" + ) + @Export("__o_450") + DualNode __o_450(DualNode var1) { + DualNode var2; + if(var1 == null) { + var2 = this.sentinel.previousDual; + } else { + var2 = var1; + } + + if(var2 == this.sentinel) { + this.head = null; + return null; + } else { + this.head = var2.previousDual; + return var2; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Lfn;" + ) + @Export("__u_451") + public DualNode __u_451() { + DualNode var1 = this.head; + if(var1 == this.sentinel) { + this.head = null; + return null; + } else { + this.head = var1.previousDual; + return var1; + } + } + + @Export("iterator") + @ObfuscatedName("iterator") + public Iterator iterator() { + return new IterableDualNodeQueueIterator(this); + } +} diff --git a/rs-client/src/main/java/IterableDualNodeQueueIterator.java b/rs-client/src/main/java/IterableDualNodeQueueIterator.java new file mode 100644 index 0000000000..72fd6289c4 --- /dev/null +++ b/rs-client/src/main/java/IterableDualNodeQueueIterator.java @@ -0,0 +1,70 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jl") +@Implements("IterableDualNodeQueueIterator") +public class IterableDualNodeQueueIterator implements Iterator { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Ljc;" + ) + @Export("queue") + IterableDualNodeQueue queue; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("__f") + DualNode __f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lfn;" + ) + @Export("__q") + DualNode __q; + + @ObfuscatedSignature( + signature = "(Ljc;)V" + ) + IterableDualNodeQueueIterator(IterableDualNodeQueue var1) { + this.__q = null; + this.queue = var1; + this.__f = this.queue.sentinel.previousDual; + this.__q = null; + } + + @Export("next") + @ObfuscatedName("next") + public Object next() { + DualNode var1 = this.__f; + if(var1 == this.queue.sentinel) { + var1 = null; + this.__f = null; + } else { + this.__f = var1.previousDual; + } + + this.__q = var1; + return var1; + } + + @Export("hasNext") + @ObfuscatedName("hasNext") + public boolean hasNext() { + return this.queue.sentinel != this.__f; + } + + @Export("__remove_442") + @ObfuscatedName("remove") + public void __remove_442() { + if(this.__q == null) { + throw new IllegalStateException(); + } else { + this.__q.removeDual(); + this.__q = null; + } + } +} diff --git a/rs-client/src/main/java/IterableNodeDeque.java b/rs-client/src/main/java/IterableNodeDeque.java new file mode 100644 index 0000000000..6a09c766a7 --- /dev/null +++ b/rs-client/src/main/java/IterableNodeDeque.java @@ -0,0 +1,144 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ja") +@Implements("IterableNodeDeque") +public class IterableNodeDeque implements Iterable { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("sentinel") + Node sentinel; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("current") + Node current; + + public IterableNodeDeque() { + this.sentinel = new Node(); + this.sentinel.previous = this.sentinel; + this.sentinel.next = this.sentinel; + } + + @ObfuscatedName("m") + @Export("clear") + public void clear() { + while(this.sentinel.previous != this.sentinel) { + this.sentinel.previous.remove(); + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgw;)V" + ) + @Export("addFirst") + public void addFirst(Node var1) { + if(var1.next != null) { + var1.remove(); + } + + var1.next = this.sentinel.next; + var1.previous = this.sentinel; + var1.next.previous = var1; + var1.previous.next = var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgw;)V" + ) + @Export("addLast") + public void addLast(Node var1) { + if(var1.next != null) { + var1.remove(); + } + + var1.next = this.sentinel; + var1.previous = this.sentinel.previous; + var1.next.previous = var1; + var1.previous.next = var1; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("last") + public Node last() { + return this.previousOrLast((Node)null); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgw;)Lgw;" + ) + @Export("previousOrLast") + Node previousOrLast(Node var1) { + Node var2; + if(var1 == null) { + var2 = this.sentinel.previous; + } else { + var2 = var1; + } + + if(var2 == this.sentinel) { + this.current = null; + return null; + } else { + this.current = var2.previous; + return var2; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("previous") + public Node previous() { + Node var1 = this.current; + if(var1 == this.sentinel) { + this.current = null; + return null; + } else { + this.current = var1.previous; + return var1; + } + } + + @ObfuscatedName("l") + @Export("isEmpty") + public boolean isEmpty() { + return this.sentinel.previous == this.sentinel; + } + + @Export("iterator") + @ObfuscatedName("iterator") + public Iterator iterator() { + return new IterableNodeDequeDescendingIterator(this); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgw;Lgw;)V" + ) + @Export("IterableNodeDeque_addBefore") + public static void IterableNodeDeque_addBefore(Node var0, Node var1) { + if(var0.next != null) { + var0.remove(); + } + + var0.next = var1; + var0.previous = var1.previous; + var0.next.previous = var0; + var0.previous.next = var0; + } +} diff --git a/rs-client/src/main/java/IterableNodeDequeDescendingIterator.java b/rs-client/src/main/java/IterableNodeDequeDescendingIterator.java new file mode 100644 index 0000000000..3b1a863597 --- /dev/null +++ b/rs-client/src/main/java/IterableNodeDequeDescendingIterator.java @@ -0,0 +1,85 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jt") +@Implements("IterableNodeDequeDescendingIterator") +public class IterableNodeDequeDescendingIterator implements Iterator { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lja;" + ) + @Export("deque") + IterableNodeDeque deque; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("__f") + Node __f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("__q") + Node __q; + + @ObfuscatedSignature( + signature = "(Lja;)V" + ) + IterableNodeDequeDescendingIterator(IterableNodeDeque var1) { + this.__q = null; + this.__u_443(var1); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lja;)V" + ) + @Export("__u_443") + void __u_443(IterableNodeDeque var1) { + this.deque = var1; + this.__g_444(); + } + + @ObfuscatedName("g") + @Export("__g_444") + void __g_444() { + this.__f = this.deque != null?this.deque.sentinel.previous:null; + this.__q = null; + } + + @Export("hasNext") + @ObfuscatedName("hasNext") + public boolean hasNext() { + return this.deque.sentinel != this.__f; + } + + @Export("next") + @ObfuscatedName("next") + public Object next() { + Node var1 = this.__f; + if(var1 == this.deque.sentinel) { + var1 = null; + this.__f = null; + } else { + this.__f = var1.previous; + } + + this.__q = var1; + return var1; + } + + @Export("__remove_447") + @ObfuscatedName("remove") + public void __remove_447() { + if(this.__q == null) { + throw new IllegalStateException(); + } else { + this.__q.remove(); + this.__q = null; + } + } +} diff --git a/rs-client/src/main/java/IterableNodeHashTable.java b/rs-client/src/main/java/IterableNodeHashTable.java new file mode 100644 index 0000000000..a3404858e8 --- /dev/null +++ b/rs-client/src/main/java/IterableNodeHashTable.java @@ -0,0 +1,146 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lh") +@Implements("IterableNodeHashTable") +public final class IterableNodeHashTable implements Iterable { + @ObfuscatedName("m") + @Export("size") + int size; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "[Lgw;" + ) + @Export("buckets") + Node[] buckets; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("currentGet") + Node currentGet; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("current") + Node current; + @ObfuscatedName("o") + @Export("index") + int index; + + public IterableNodeHashTable(int var1) { + this.index = 0; + this.size = var1; + this.buckets = new Node[var1]; + + for(int var2 = 0; var2 < var1; ++var2) { + Node var3 = this.buckets[var2] = new Node(); + var3.previous = var3; + var3.next = var3; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(J)Lgw;" + ) + @Export("get") + public Node get(long var1) { + Node var3 = this.buckets[(int)(var1 & (long)(this.size - 1))]; + + for(this.currentGet = var3.previous; var3 != this.currentGet; this.currentGet = this.currentGet.previous) { + if(this.currentGet.key == var1) { + Node var4 = this.currentGet; + this.currentGet = this.currentGet.previous; + return var4; + } + } + + this.currentGet = null; + return null; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgw;J)V" + ) + @Export("put") + public void put(Node var1, long var2) { + if(var1.next != null) { + var1.remove(); + } + + Node var4 = this.buckets[(int)(var2 & (long)(this.size - 1))]; + var1.next = var4.next; + var1.previous = var4; + var1.next.previous = var1; + var1.previous.next = var1; + var1.key = var2; + } + + @ObfuscatedName("q") + @Export("clear") + public void clear() { + for(int var1 = 0; var1 < this.size; ++var1) { + Node var2 = this.buckets[var1]; + + while(true) { + Node var3 = var2.previous; + if(var3 == var2) { + break; + } + + var3.remove(); + } + } + + this.currentGet = null; + this.current = null; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("first") + public Node first() { + this.index = 0; + return this.next(); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("next") + public Node next() { + Node var1; + if(this.index > 0 && this.buckets[this.index - 1] != this.current) { + var1 = this.current; + this.current = var1.previous; + return var1; + } else { + do { + if(this.index >= this.size) { + return null; + } + + var1 = this.buckets[this.index++].previous; + } while(var1 == this.buckets[this.index - 1]); + + this.current = var1.previous; + return var1; + } + } + + @Export("iterator") + @ObfuscatedName("iterator") + public Iterator iterator() { + return new IterableNodeHashTableIterator(this); + } +} diff --git a/rs-client/src/main/java/IterableNodeHashTableIterator.java b/rs-client/src/main/java/IterableNodeHashTableIterator.java new file mode 100644 index 0000000000..f6ac847231 --- /dev/null +++ b/rs-client/src/main/java/IterableNodeHashTableIterator.java @@ -0,0 +1,102 @@ +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lk") +@Implements("IterableNodeHashTableIterator") +public class IterableNodeHashTableIterator implements Iterator { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("hashTable") + IterableNodeHashTable hashTable; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("__f") + Node __f; + @ObfuscatedName("q") + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("__w") + Node __w; + + @ObfuscatedSignature( + signature = "(Llh;)V" + ) + IterableNodeHashTableIterator(IterableNodeHashTable var1) { + this.__w = null; + this.hashTable = var1; + this.__u_483(); + } + + @ObfuscatedName("u") + @Export("__u_483") + void __u_483() { + this.__f = this.hashTable.buckets[0].previous; + this.__q = 1; + this.__w = null; + } + + @Export("next") + @ObfuscatedName("next") + public Object next() { + Node var1; + if(this.hashTable.buckets[this.__q - 1] != this.__f) { + var1 = this.__f; + this.__f = var1.previous; + this.__w = var1; + return var1; + } else { + do { + if(this.__q >= this.hashTable.size) { + return null; + } + + var1 = this.hashTable.buckets[this.__q++].previous; + } while(var1 == this.hashTable.buckets[this.__q - 1]); + + this.__f = var1.previous; + this.__w = var1; + return var1; + } + } + + @Export("hasNext") + @ObfuscatedName("hasNext") + public boolean hasNext() { + if(this.hashTable.buckets[this.__q - 1] != this.__f) { + return true; + } else { + while(this.__q < this.hashTable.size) { + if(this.hashTable.buckets[this.__q++].previous != this.hashTable.buckets[this.__q - 1]) { + this.__f = this.hashTable.buckets[this.__q - 1].previous; + return true; + } + + this.__f = this.hashTable.buckets[this.__q - 1]; + } + + return false; + } + } + + @Export("__remove_486") + @ObfuscatedName("remove") + public void __remove_486() { + if(this.__w == null) { + throw new IllegalStateException(); + } else { + this.__w.remove(); + this.__w = null; + } + } +} diff --git a/rs-client/src/main/java/KeyHandler.java b/rs-client/src/main/java/KeyHandler.java new file mode 100644 index 0000000000..e7322e5206 --- /dev/null +++ b/rs-client/src/main/java/KeyHandler.java @@ -0,0 +1,262 @@ +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.util.Iterator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("an") +@Implements("KeyHandler") +public final class KeyHandler implements KeyListener, FocusListener { + @ObfuscatedName("ra") + @ObfuscatedGetter( + intValue = -817957995 + ) + @Export("__an_ra") + static int __an_ra; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lan;" + ) + @Export("KeyHandler_instance") + public static KeyHandler KeyHandler_instance; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("__an_x") + static IndexedSprite[] __an_x; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__an_i") + static IndexedSprite __an_i; + @ObfuscatedName("bk") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("loginType") + static LoginType loginType; + @ObfuscatedName("cb") + @Export("KeyHandler_pressedKeys") + public static boolean[] KeyHandler_pressedKeys; + @ObfuscatedName("cq") + @Export("__an_cq") + static int[] __an_cq; + @ObfuscatedName("ch") + @ObfuscatedGetter( + intValue = 1112094745 + ) + @Export("__an_ch") + static int __an_ch; + @ObfuscatedName("cw") + @ObfuscatedGetter( + intValue = -1208053825 + ) + @Export("__an_cw") + static int __an_cw; + @ObfuscatedName("cg") + @Export("__an_cg") + static char[] __an_cg; + @ObfuscatedName("cf") + @Export("__an_cf") + static int[] __an_cf; + @ObfuscatedName("cp") + @Export("__an_cp") + public static int[] __an_cp; + @ObfuscatedName("cl") + @ObfuscatedGetter( + intValue = -674534717 + ) + @Export("__an_cl") + public static int __an_cl; + @ObfuscatedName("ct") + @ObfuscatedGetter( + intValue = -93280591 + ) + @Export("__an_ct") + static int __an_ct; + @ObfuscatedName("cz") + @ObfuscatedGetter( + intValue = 2066759739 + ) + @Export("__an_cz") + static int __an_cz; + @ObfuscatedName("cc") + @ObfuscatedGetter( + intValue = -1942898885 + ) + @Export("__an_cc") + static int __an_cc; + @ObfuscatedName("ci") + @ObfuscatedGetter( + intValue = -474146073 + ) + @Export("KeyHandler_idleCycles") + public static volatile int KeyHandler_idleCycles; + @ObfuscatedName("cd") + @Export("KeyHandler_keyCodes") + static int[] KeyHandler_keyCodes; + @ObfuscatedName("gx") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("crossSprites") + static Sprite[] crossSprites; + + static { + KeyHandler_instance = new KeyHandler(); + KeyHandler_pressedKeys = new boolean[112]; + __an_cq = new int[128]; + __an_ch = 0; + __an_cw = 0; + __an_cg = new char[128]; + __an_cf = new int[128]; + __an_cp = new int[128]; + __an_cl = 0; + __an_ct = 0; + __an_cz = 0; + __an_cc = 0; + KeyHandler_idleCycles = 0; + KeyHandler_keyCodes = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, 85, 80, 84, -1, 91, -1, -1, -1, 81, 82, 86, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, 83, 104, 105, 103, 102, 96, 98, 97, 99, -1, -1, -1, -1, -1, -1, -1, 25, 16, 17, 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, 48, 68, 66, 50, 34, 51, 52, 53, 39, 54, 55, 56, 70, 69, 40, 41, 32, 35, 49, 36, 38, 67, 33, 65, 37, 64, -1, -1, -1, -1, -1, 228, 231, 227, 233, 224, 219, 225, 230, 226, 232, 89, 87, -1, 88, 229, 90, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; + } + + @Export("keyPressed") + @ObfuscatedName("keyPressed") + public final synchronized void keyPressed(KeyEvent var1) { + if(KeyHandler_instance != null) { + int var2 = var1.getKeyCode(); + if(var2 >= 0 && var2 < KeyHandler_keyCodes.length) { + var2 = KeyHandler_keyCodes[var2]; + if((var2 & 128) != 0) { + var2 = -1; + } + } else { + var2 = -1; + } + + if(__an_cw >= 0 && var2 >= 0) { + __an_cq[__an_cw] = var2; + __an_cw = __an_cw + 1 & 127; + if(__an_ch == __an_cw) { + __an_cw = -1; + } + } + + int var3; + if(var2 >= 0) { + var3 = __an_cz + 1 & 127; + if(var3 != __an_ct) { + __an_cf[__an_cz] = var2; + __an_cg[__an_cz] = 0; + __an_cz = var3; + } + } + + var3 = var1.getModifiers(); + if((var3 & 10) != 0 || var2 == 85 || var2 == 10) { + var1.consume(); + } + } + + } + + @Export("focusGained") + @ObfuscatedName("focusGained") + public final void focusGained(FocusEvent var1) { + } + + @Export("focusLost") + @ObfuscatedName("focusLost") + public final synchronized void focusLost(FocusEvent var1) { + if(KeyHandler_instance != null) { + __an_cw = -1; + } + + } + + @Export("keyReleased") + @ObfuscatedName("keyReleased") + public final synchronized void keyReleased(KeyEvent var1) { + if(KeyHandler_instance != null) { + int var2 = var1.getKeyCode(); + if(var2 >= 0 && var2 < KeyHandler_keyCodes.length) { + var2 = KeyHandler_keyCodes[var2] & -129; + } else { + var2 = -1; + } + + if(__an_cw >= 0 && var2 >= 0) { + __an_cq[__an_cw] = ~var2; + __an_cw = __an_cw + 1 & 127; + if(__an_ch == __an_cw) { + __an_cw = -1; + } + } + } + + var1.consume(); + } + + @Export("keyTyped") + @ObfuscatedName("keyTyped") + public final void keyTyped(KeyEvent var1) { + if(KeyHandler_instance != null) { + char var2 = var1.getKeyChar(); + if(var2 != 0 && var2 != '\uffff') { + boolean var3; + if(var2 > 0 && var2 < 128 || var2 >= 160 && var2 <= 255) { + var3 = true; + } else { + label63: { + if(var2 != 0) { + char[] var7 = class304.cp1252AsciiExtension; + + for(int var5 = 0; var5 < var7.length; ++var5) { + char var6 = var7[var5]; + if(var2 == var6) { + var3 = true; + break label63; + } + } + } + + var3 = false; + } + } + + if(var3) { + int var4 = __an_cz + 1 & 127; + if(var4 != __an_ct) { + __an_cf[__an_cz] = -1; + __an_cg[__an_cz] = var2; + __an_cz = var4; + } + } + } + } + + var1.consume(); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "-345222494" + ) + static String method839() { + String var0 = ""; + + Message var2; + for(Iterator var1 = Messages.Messages_hashTable.iterator(); var1.hasNext(); var0 = var0 + var2.sender + ':' + var2.text + '\n') { + var2 = (Message)var1.next(); + } + + return var0; + } +} diff --git a/rs-client/src/main/java/KitDefinition.java b/rs-client/src/main/java/KitDefinition.java new file mode 100644 index 0000000000..b6311ca8de --- /dev/null +++ b/rs-client/src/main/java/KitDefinition.java @@ -0,0 +1,271 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("im") +@Implements("KitDefinition") +public class KitDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("KitDefinition_indexCache") + public static AbstractIndexCache KitDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__im_f") + public static AbstractIndexCache __im_f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 235389995 + ) + @Export("__im_q") + public static int __im_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("KitDefinition_cached") + static EvictingDualNodeHashTable KitDefinition_cached; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1619779051 + ) + @Export("__o") + public int __o; + @ObfuscatedName("u") + @Export("__u") + int[] __u; + @ObfuscatedName("g") + @Export("recolorFrom") + short[] recolorFrom; + @ObfuscatedName("l") + @Export("recolorTo") + short[] recolorTo; + @ObfuscatedName("e") + @Export("retextureFrom") + short[] retextureFrom; + @ObfuscatedName("x") + @Export("retextureTo") + short[] retextureTo; + @ObfuscatedName("d") + @Export("archives") + int[] archives; + @ObfuscatedName("k") + @Export("__k") + public boolean __k; + + static { + KitDefinition_cached = new EvictingDualNodeHashTable(64); + } + + KitDefinition() { + this.__o = -1; + this.archives = new int[]{-1, -1, -1, -1, -1}; + this.__k = false; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;S)V", + garbageValue = "22753" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-1828581673" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.__o = var1.readUnsignedByte(); + } else { + int var3; + int var4; + if(var2 == 2) { + var3 = var1.readUnsignedByte(); + this.__u = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__u[var4] = var1.__ag_302(); + } + } else if(var2 == 3) { + this.__k = true; + } else if(var2 == 40) { + var3 = var1.readUnsignedByte(); + this.recolorFrom = new short[var3]; + this.recolorTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.recolorFrom[var4] = (short)var1.__ag_302(); + this.recolorTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 41) { + var3 = var1.readUnsignedByte(); + this.retextureFrom = new short[var3]; + this.retextureTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.retextureFrom[var4] = (short)var1.__ag_302(); + this.retextureTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 >= 60 && var2 < 70) { + this.archives[var2 - 60] = var1.__ag_302(); + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1250940659" + ) + @Export("__w_413") + public boolean __w_413() { + if(this.__u == null) { + return true; + } else { + boolean var1 = true; + + for(int var2 = 0; var2 < this.__u.length; ++var2) { + if(!__im_f.tryLoadRecord(this.__u[var2], 0)) { + var1 = false; + } + } + + return var1; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(B)Ldw;", + garbageValue = "0" + ) + @Export("__o_414") + public ModelData __o_414() { + if(this.__u == null) { + return null; + } else { + ModelData[] var1 = new ModelData[this.__u.length]; + + for(int var2 = 0; var2 < this.__u.length; ++var2) { + var1[var2] = ModelData.method2788(__im_f, this.__u[var2], 0); + } + + ModelData var4; + if(var1.length == 1) { + var4 = var1[0]; + } else { + var4 = new ModelData(var1, var1.length); + } + + int var3; + if(this.recolorFrom != null) { + for(var3 = 0; var3 < this.recolorFrom.length; ++var3) { + var4.recolor(this.recolorFrom[var3], this.recolorTo[var3]); + } + } + + if(this.retextureFrom != null) { + for(var3 = 0; var3 < this.retextureFrom.length; ++var3) { + var4.retexture(this.retextureFrom[var3], this.retextureTo[var3]); + } + } + + return var4; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "742548471" + ) + @Export("__u_415") + public boolean __u_415() { + boolean var1 = true; + + for(int var2 = 0; var2 < 5; ++var2) { + if(this.archives[var2] != -1 && !__im_f.tryLoadRecord(this.archives[var2], 0)) { + var1 = false; + } + } + + return var1; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(B)Ldw;", + garbageValue = "-56" + ) + @Export("__g_416") + public ModelData __g_416() { + ModelData[] var1 = new ModelData[5]; + int var2 = 0; + + for(int var3 = 0; var3 < 5; ++var3) { + if(this.archives[var3] != -1) { + var1[var2++] = ModelData.method2788(__im_f, this.archives[var3], 0); + } + } + + ModelData var5 = new ModelData(var1, var2); + int var4; + if(this.recolorFrom != null) { + for(var4 = 0; var4 < this.recolorFrom.length; ++var4) { + var5.recolor(this.recolorFrom[var4], this.recolorTo[var4]); + } + } + + if(this.retextureFrom != null) { + for(var4 = 0; var4 < this.retextureFrom.length; ++var4) { + var5.retexture(this.retextureFrom[var4], this.retextureTo[var4]); + } + } + + return var5; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)Ljava/lang/String;", + garbageValue = "-1225602201" + ) + public static String method4866(Buffer var0) { + String var1; + try { + int var2 = var0.__ae_307(); + if(var2 > 32767) { + var2 = 32767; + } + + byte[] var3 = new byte[var2]; + var0.index += class303.huffman.__f_294(var0.array, var0.index, var3, 0, var2); + String var4 = WidgetGroupParent.decodeStringCp1252(var3, 0, var2); + var1 = var4; + } catch (Exception var6) { + var1 = "Cabbage"; + } + + return var1; + } +} diff --git a/rs-client/src/main/java/Link.java b/rs-client/src/main/java/Link.java new file mode 100644 index 0000000000..45229494f1 --- /dev/null +++ b/rs-client/src/main/java/Link.java @@ -0,0 +1,32 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gh") +@Implements("Link") +public class Link { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgh;" + ) + @Export("__m") + public Link __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgh;" + ) + @Export("__f") + public Link __f; + + @ObfuscatedName("m") + @Export("remove") + public void remove() { + if(this.__f != null) { + this.__f.__m = this.__m; + this.__m.__f = this.__f; + this.__m = null; + this.__f = null; + } + } +} diff --git a/rs-client/src/main/java/LinkDeque.java b/rs-client/src/main/java/LinkDeque.java new file mode 100644 index 0000000000..844a1ba5cb --- /dev/null +++ b/rs-client/src/main/java/LinkDeque.java @@ -0,0 +1,75 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jy") +@Implements("LinkDeque") +public class LinkDeque { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgh;" + ) + @Export("__m") + Link __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgh;" + ) + @Export("__f") + Link __f; + + public LinkDeque() { + this.__m = new Link(); + this.__m.__m = this.__m; + this.__m.__f = this.__m; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgh;)V" + ) + @Export("__m_437") + public void __m_437(Link var1) { + if(var1.__f != null) { + var1.remove(); + } + + var1.__f = this.__m.__f; + var1.__m = this.__m; + var1.__f.__m = var1; + var1.__m.__f = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "()Lgh;" + ) + @Export("__f_438") + public Link __f_438() { + Link var1 = this.__m.__m; + if(var1 == this.__m) { + this.__f = null; + return null; + } else { + this.__f = var1.__m; + return var1; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "()Lgh;" + ) + @Export("__q_439") + public Link __q_439() { + Link var1 = this.__f; + if(var1 == this.__m) { + this.__f = null; + return null; + } else { + this.__f = var1.__m; + return var1; + } + } +} diff --git a/rs-client/src/main/java/Login.java b/rs-client/src/main/java/Login.java new file mode 100644 index 0000000000..0a0af83959 --- /dev/null +++ b/rs-client/src/main/java/Login.java @@ -0,0 +1,248 @@ +import java.text.DecimalFormat; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cu") +@Implements("Login") +public class Login { + @ObfuscatedName("f") + @Export("__cu_f") + static boolean __cu_f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1606541885 + ) + @Export("__cu_q") + static int __cu_q; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__cu_o") + static IndexedSprite __cu_o; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("__cu_g") + static Sprite __cu_g; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -184301597 + ) + @Export("pcmPlayerCount") + static int pcmPlayerCount; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__cu_d") + static IndexedSprite __cu_d; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = 932541923 + ) + @Export("__cu_y") + static int __cu_y; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = -504870061 + ) + @Export("Login_loadingPercent") + static int Login_loadingPercent; + @ObfuscatedName("c") + @Export("Login_loadingText") + static String Login_loadingText; + @ObfuscatedName("aj") + @ObfuscatedGetter( + intValue = 1077910071 + ) + @Export("__cu_aj") + static int __cu_aj; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = 1677133239 + ) + @Export("__cu_ac") + static int __cu_ac; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = 1861681835 + ) + @Export("__cu_aw") + static int __cu_aw; + @ObfuscatedName("al") + @Export("Login_response0") + static String Login_response0; + @ObfuscatedName("ab") + @Export("Login_response1") + static String Login_response1; + @ObfuscatedName("ae") + @Export("Login_response2") + static String Login_response2; + @ObfuscatedName("at") + @Export("Login_response3") + static String Login_response3; + @ObfuscatedName("ad") + @Export("Login_username") + static String Login_username; + @ObfuscatedName("ap") + @Export("Login_password") + static String Login_password; + @ObfuscatedName("aa") + @Export("__cu_aa") + static boolean __cu_aa; + @ObfuscatedName("ax") + @Export("__cu_ax") + static boolean __cu_ax; + @ObfuscatedName("ai") + @Export("__cu_ai") + static String __cu_ai; + @ObfuscatedName("ba") + @Export("__cu_ba") + static boolean __cu_ba; + @ObfuscatedName("bb") + @ObfuscatedGetter( + intValue = 1769484271 + ) + @Export("currentLoginField") + static int currentLoginField; + @ObfuscatedName("bk") + @Export("__cu_bk") + static boolean __cu_bk; + @ObfuscatedName("bl") + @ObfuscatedGetter( + intValue = 1431381579 + ) + @Export("__cu_bl") + static int __cu_bl; + @ObfuscatedName("br") + @ObfuscatedGetter( + intValue = -376233039 + ) + @Export("__cu_br") + static int __cu_br; + @ObfuscatedName("bj") + @ObfuscatedGetter( + intValue = 1548722671 + ) + @Export("__cu_bj") + static int __cu_bj; + @ObfuscatedName("bi") + @ObfuscatedGetter( + longValue = 803647694904294325L + ) + @Export("__cu_bi") + static long __cu_bi; + @ObfuscatedName("bz") + @ObfuscatedGetter( + longValue = -3234258972092460093L + ) + @Export("__cu_bz") + static long __cu_bz; + @ObfuscatedName("do") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache11") + static IndexCache indexCache11; + + static { + __cu_q = 0; + __cu_y = __cu_q + 202; + Login_loadingPercent = 10; + Login_loadingText = ""; + __cu_aj = -1; + __cu_ac = 1; + __cu_aw = 0; + Login_response0 = ""; + Login_response1 = ""; + Login_response2 = ""; + Login_response3 = ""; + Login_username = ""; + Login_password = ""; + __cu_aa = false; + __cu_ax = false; + __cu_ba = true; + currentLoginField = 0; + __cu_bk = false; + __cu_bl = -1; + __cu_br = 0; + __cu_bj = 0; + new DecimalFormat("##0.00"); + new class161(); + __cu_bi = -1L; + __cu_bz = -1L; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;II)Lhl;", + garbageValue = "-1625685874" + ) + static MusicPatch method2045(AbstractIndexCache var0, int var1) { + byte[] var2 = var0.takeRecordFlat(var1); + return var2 == null?null:new MusicPatch(var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-246495141" + ) + static void method2056() { + class248.__iu_e = new int[2000]; + int var0 = 0; + int var1 = 240; + + int var3; + for(byte var2 = 12; var0 < 16; var1 -= var2) { + var3 = class277.method5355((double)((float)var1 / 360.0F), 0.9998999834060669D, (double)((float)var0 * 0.425F / 16.0F + 0.075F)); + class248.__iu_e[var0] = var3; + ++var0; + } + + var1 = 48; + + for(int var5 = var1 / 6; var0 < class248.__iu_e.length; var1 -= var5) { + var3 = var0 * 2; + + for(int var4 = class277.method5355((double)((float)var1 / 360.0F), 0.9998999834060669D, 0.5D); var0 < var3 && var0 < class248.__iu_e.length; ++var0) { + class248.__iu_e[var0] = var4; + } + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lir;IIIZB)V", + garbageValue = "45" + ) + public static void method2076(AbstractIndexCache var0, int var1, int var2, int var3, boolean var4) { + class214.__hf_o = 1; + class214.__hf_u = var0; + class30.musicTrackArchiveId = var1; + GrandExchangeOffer.musicTrackFileId = var2; + WorldMapLabel.__aj_e = var3; + RectangleMode.musicTrackBoolean = var4; + FaceNormal.__el_x = 10000; + } + + @ObfuscatedName("gm") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-1" + ) + static final int method2061() { + if(ReflectionCheck.clientPreferences.roofsHidden) { + return SoundSystem.plane; + } else { + int var0 = class32.getTileHeight(WorldMapSection1.cameraX, class11.cameraZ, SoundSystem.plane); + return var0 - GrandExchangeEvents.cameraY < 800 && (Tiles.Tiles_renderFlags[SoundSystem.plane][WorldMapSection1.cameraX >> 7][class11.cameraZ >> 7] & 4) != 0?SoundSystem.plane:3; + } + } +} diff --git a/rs-client/src/main/java/LoginPacket.java b/rs-client/src/main/java/LoginPacket.java new file mode 100644 index 0000000000..3239d905c3 --- /dev/null +++ b/rs-client/src/main/java/LoginPacket.java @@ -0,0 +1,120 @@ +import java.io.File; +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gl") +@Implements("LoginPacket") +public class LoginPacket implements ClientPacketMarker { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgl;" + ) + @Export("__gl_m") + public static final LoginPacket __gl_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgl;" + ) + @Export("__gl_f") + static final LoginPacket __gl_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lgl;" + ) + @Export("__gl_q") + public static final LoginPacket __gl_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgl;" + ) + @Export("__gl_w") + public static final LoginPacket __gl_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lgl;" + ) + @Export("__gl_o") + static final LoginPacket __gl_o; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "[Lgl;" + ) + @Export("__gl_g") + static final LoginPacket[] __gl_g; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1743806243 + ) + @Export("id") + public final int id; + + static { + __gl_m = new LoginPacket(14, 0); + __gl_f = new LoginPacket(15, 4); + __gl_q = new LoginPacket(16, -2); + __gl_w = new LoginPacket(18, -2); + __gl_o = new LoginPacket(27, 0); + __gl_g = new LoginPacket[32]; + LoginPacket[] var0 = WorldMapIcon2.method300(); + + for(int var1 = 0; var1 < var0.length; ++var1) { + __gl_g[var0[var1].id] = var0[var1]; + } + + } + + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "0" + ) + LoginPacket(int var1, int var2) { + this.id = var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;ZS)Ldk;", + garbageValue = "15345" + ) + @Export("getPreferencesFile") + public static AccessFile getPreferencesFile(String var0, String var1, boolean var2) { + File var3 = new File(class168.__fs_o, "preferences" + var0 + ".dat"); + if(var3.exists()) { + try { + AccessFile var10 = new AccessFile(var3, "rw", 10000L); + return var10; + } catch (IOException var9) { + ; + } + } + + String var4 = ""; + if(PacketBuffer.__hx_z == 33) { + var4 = "_rc"; + } else if(PacketBuffer.__hx_z == 34) { + var4 = "_wip"; + } + + File var5 = new File(WorldMapSection1.userHomeDirectory, "jagex_" + var1 + "_preferences" + var0 + var4 + ".dat"); + AccessFile var6; + if(!var2 && var5.exists()) { + try { + var6 = new AccessFile(var5, "rw", 10000L); + return var6; + } catch (IOException var8) { + ; + } + } + + try { + var6 = new AccessFile(var3, "rw", 10000L); + return var6; + } catch (IOException var7) { + throw new RuntimeException(); + } + } +} diff --git a/rs-client/src/main/java/LoginType.java b/rs-client/src/main/java/LoginType.java new file mode 100644 index 0000000000..3f3dc2163a --- /dev/null +++ b/rs-client/src/main/java/LoginType.java @@ -0,0 +1,104 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lx") +@Implements("LoginType") +public class LoginType { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_m") + public static final LoginType __lx_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_f") + static final LoginType __lx_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_q") + static final LoginType __lx_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_w") + static final LoginType __lx_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_o") + static final LoginType __lx_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_u") + static final LoginType __lx_u; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_g") + static final LoginType __lx_g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_l") + static final LoginType __lx_l; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Llx;" + ) + @Export("__lx_e") + public static final LoginType __lx_e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1916729379 + ) + @Export("__x") + public final int __x; + @ObfuscatedName("d") + @Export("__d") + final String __d; + + static { + __lx_m = new LoginType(8, 0, "", ""); + __lx_f = new LoginType(3, 1, "", ""); + __lx_q = new LoginType(2, 2, "", ""); + __lx_w = new LoginType(6, 3, "", ""); + __lx_o = new LoginType(4, 4, "", ""); + __lx_u = new LoginType(7, 5, "", ""); + __lx_g = new LoginType(1, 6, "", ""); + __lx_l = new LoginType(5, 7, "", ""); + __lx_e = new LoginType(0, -1, "", "", true, new LoginType[]{__lx_m, __lx_f, __lx_q, __lx_o, __lx_w}); + } + + LoginType(int var1, int var2, String var3, String var4) { + this.__x = var1; + this.__d = var4; + } + + @ObfuscatedSignature( + signature = "(IILjava/lang/String;Ljava/lang/String;Z[Llx;)V" + ) + LoginType(int var1, int var2, String var3, String var4, boolean var5, LoginType[] var6) { + this.__x = var1; + this.__d = var4; + } + + @Export("__toString_546") + @ObfuscatedName("toString") + public String __toString_546() { + return this.__d; + } +} diff --git a/rs-client/src/main/java/MenuAction.java b/rs-client/src/main/java/MenuAction.java new file mode 100644 index 0000000000..8ac8a24a9d --- /dev/null +++ b/rs-client/src/main/java/MenuAction.java @@ -0,0 +1,159 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cs") +@Implements("MenuAction") +public class MenuAction { + @ObfuscatedName("iz") + @ObfuscatedGetter( + intValue = -2062450631 + ) + @Export("selectedItemId") + static int selectedItemId; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 305977315 + ) + @Export("argument1") + int argument1; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1764645917 + ) + @Export("argument2") + int argument2; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1483856253 + ) + @Export("opcode") + int opcode; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -2057883817 + ) + @Export("argument0") + int argument0; + @ObfuscatedName("o") + @Export("action") + String action; + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lir;Ljava/lang/String;Ljava/lang/String;B)Llq;", + garbageValue = "0" + ) + public static IndexedSprite method2025(AbstractIndexCache var0, String var1, String var2) { + int var3 = var0.getArchiveId(var1); + int var4 = var0.getRecordId(var3, var2); + IndexedSprite var5; + if(!SpriteMask.method4392(var0, var3, var4)) { + var5 = null; + } else { + var5 = ServerPacket.method3663(); + } + + return var5; + } + + @ObfuscatedName("jd") + @ObfuscatedSignature( + signature = "(Lbx;ZI)V", + garbageValue = "1537219807" + ) + @Export("closeWidgetGroup") + static final void closeWidgetGroup(WidgetGroupParent var0, boolean var1) { + int var2 = var0.group; + int var3 = (int)var0.key; + var0.remove(); + if(var1) { + AbstractByteArrayCopier.method4023(var2); + } + + for(IntegerNode var4 = (IntegerNode)Client.widgetClickMasks.first(); var4 != null; var4 = (IntegerNode)Client.widgetClickMasks.next()) { + if((long)var2 == (var4.key >> 48 & 65535L)) { + var4.remove(); + } + } + + Widget var14 = Huffman.getWidget(var3); + if(var14 != null) { + class22.method295(var14); + } + + int var5; + int var6; + for(var5 = 0; var5 < Client.menuOptionsCount; ++var5) { + if(WorldMapManager.method672(Client.menuOpcodes[var5])) { + if(var5 < Client.menuOptionsCount - 1) { + for(var6 = var5; var6 < Client.menuOptionsCount - 1; ++var6) { + Client.menuActions[var6] = Client.menuActions[var6 + 1]; + Client.menuTargetNames[var6] = Client.menuTargetNames[var6 + 1]; + Client.menuOpcodes[var6] = Client.menuOpcodes[var6 + 1]; + Client.menuArguments0[var6] = Client.menuArguments0[var6 + 1]; + Client.menuArguments1[var6] = Client.menuArguments1[var6 + 1]; + Client.menuArguments2[var6] = Client.menuArguments2[var6 + 1]; + Client.menuShiftClick[var6] = Client.menuShiftClick[var6 + 1]; + } + } + + --var5; + --Client.menuOptionsCount; + } + } + + var5 = class214.menuWidth / 2 + class25.menuX; + var6 = GameShell.menuY; + int var7 = class2.fontBold12.stringWidth("Choose Option"); + + int var8; + for(var8 = 0; var8 < Client.menuOptionsCount; ++var8) { + Font var9 = class2.fontBold12; + String var10; + if(var8 < 0) { + var10 = ""; + } else if(Client.menuTargetNames[var8].length() > 0) { + var10 = Client.menuActions[var8] + " " + Client.menuTargetNames[var8]; + } else { + var10 = Client.menuActions[var8]; + } + + int var11 = var9.stringWidth(var10); + if(var11 > var7) { + var7 = var11; + } + } + + var7 += 8; + var8 = Client.menuOptionsCount * 15 + 22; + int var12 = var5 - var7 / 2; + if(var7 + var12 > SoundCache.canvasWidth) { + var12 = SoundCache.canvasWidth - var7; + } + + if(var12 < 0) { + var12 = 0; + } + + int var13 = var6; + if(var6 + var8 > Huffman.canvasHeight) { + var13 = Huffman.canvasHeight - var8; + } + + if(var13 < 0) { + var13 = 0; + } + + class25.menuX = var12; + GameShell.menuY = var13; + class214.menuWidth = var7; + AbstractWorldMapIcon.menuHeight = Client.menuOptionsCount * 15 + 22; + if(Client.rootWidgetGroup != -1) { + GrandExchangeEvents.method74(Client.rootWidgetGroup, 1); + } + + } +} diff --git a/rs-client/src/main/java/Message.java b/rs-client/src/main/java/Message.java new file mode 100644 index 0000000000..5b875921da --- /dev/null +++ b/rs-client/src/main/java/Message.java @@ -0,0 +1,471 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bm") +@Implements("Message") +public class Message extends DualNode { + @ObfuscatedName("i") + @Export("__bm_i") + static int[] __bm_i; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1597147817 + ) + @Export("count") + int count; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1164592791 + ) + @Export("cycle") + int cycle; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1223792995 + ) + @Export("type") + int type; + @ObfuscatedName("w") + @Export("sender") + String sender; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lkp;" + ) + @Export("senderUsername") + Username senderUsername; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("isFromFriend0") + TriBool isFromFriend0; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("isFromIgnored0") + TriBool isFromIgnored0; + @ObfuscatedName("l") + @Export("prefix") + String prefix; + @ObfuscatedName("e") + @Export("text") + String text; + + Message(int var1, String var2, String var3, String var4) { + this.isFromFriend0 = TriBool.TriBool_unknown; + this.isFromIgnored0 = TriBool.TriBool_unknown; + this.set(var1, var2, var3, var4); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;B)V", + garbageValue = "0" + ) + @Export("set") + void set(int var1, String var2, String var3, String var4) { + int var5 = ++Messages.Messages_count - 1; + this.count = var5; + this.cycle = Client.cycle; + this.type = var1; + this.sender = var2; + this.fillSenderUsername(); + this.prefix = var3; + this.text = var4; + this.clearIsFromFriend(); + this.clearIsFromIgnored(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1329978160" + ) + @Export("clearIsFromFriend") + void clearIsFromFriend() { + this.isFromFriend0 = TriBool.TriBool_unknown; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1101818251" + ) + @Export("isFromFriend") + final boolean isFromFriend() { + if(this.isFromFriend0 == TriBool.TriBool_unknown) { + this.fillIsFromFriend(); + } + + return this.isFromFriend0 == TriBool.TriBool_true; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "633960833" + ) + @Export("fillIsFromFriend") + void fillIsFromFriend() { + this.isFromFriend0 = WorldMapArea.friendSystem.friendsList.contains(this.senderUsername)?TriBool.TriBool_true:TriBool.TriBool_false; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1102127876" + ) + @Export("clearIsFromIgnored") + void clearIsFromIgnored() { + this.isFromIgnored0 = TriBool.TriBool_unknown; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "21" + ) + @Export("isFromIgnored") + final boolean isFromIgnored() { + if(this.isFromIgnored0 == TriBool.TriBool_unknown) { + this.fillIsFromIgnored(); + } + + return this.isFromIgnored0 == TriBool.TriBool_true; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(S)V", + garbageValue = "-3962" + ) + @Export("fillIsFromIgnored") + void fillIsFromIgnored() { + this.isFromIgnored0 = WorldMapArea.friendSystem.ignoreList.contains(this.senderUsername)?TriBool.TriBool_true:TriBool.TriBool_false; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "89" + ) + @Export("fillSenderUsername") + final void fillSenderUsername() { + if(this.sender != null) { + this.senderUsername = new Username(NpcDefinition.method5161(this.sender), KeyHandler.loginType); + } else { + this.senderUsername = null; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;Llx;I)Ljava/lang/String;", + garbageValue = "-1905151806" + ) + public static String method1229(CharSequence var0, LoginType var1) { + if(var0 == null) { + return null; + } else { + int var2 = 0; + + int var3; + boolean var4; + char var5; + for(var3 = var0.length(); var2 < var3; ++var2) { + var5 = var0.charAt(var2); + var4 = var5 == 160 || var5 == ' ' || var5 == '_' || var5 == '-'; + if(!var4) { + break; + } + } + + while(var3 > var2) { + var5 = var0.charAt(var3 - 1); + var4 = var5 == 160 || var5 == ' ' || var5 == '_' || var5 == '-'; + if(!var4) { + break; + } + + --var3; + } + + int var14 = var3 - var2; + if(var14 >= 1) { + byte var6; + if(var1 == null) { + var6 = 12; + } else { + switch(var1.__x) { + case 7: + var6 = 20; + break; + default: + var6 = 12; + } + } + + if(var14 <= var6) { + StringBuilder var12 = new StringBuilder(var14); + + for(int var15 = var2; var15 < var3; ++var15) { + char var7 = var0.charAt(var15); + boolean var8; + if(Character.isISOControl(var7)) { + var8 = false; + } else if(VarcInt.method4807(var7)) { + var8 = true; + } else { + char[] var13 = class305.__kb_q; + int var10 = 0; + + label118: + while(true) { + char var11; + if(var10 >= var13.length) { + var13 = class305.__kb_w; + + for(var10 = 0; var10 < var13.length; ++var10) { + var11 = var13[var10]; + if(var7 == var11) { + var8 = true; + break label118; + } + } + + var8 = false; + break; + } + + var11 = var13[var10]; + if(var7 == var11) { + var8 = true; + break; + } + + ++var10; + } + } + + if(var8) { + char var9; + switch(var7) { + case ' ': + case '-': + case '_': + case ' ': + var9 = '_'; + break; + case '#': + case '[': + case ']': + var9 = var7; + break; + case 'À': + case 'Á': + case 'Â': + case 'Ã': + case 'Ä': + case 'à': + case 'á': + case 'â': + case 'ã': + case 'ä': + var9 = 'a'; + break; + case 'Ç': + case 'ç': + var9 = 'c'; + break; + case 'È': + case 'É': + case 'Ê': + case 'Ë': + case 'è': + case 'é': + case 'ê': + case 'ë': + var9 = 'e'; + break; + case 'Í': + case 'Î': + case 'Ï': + case 'í': + case 'î': + case 'ï': + var9 = 'i'; + break; + case 'Ñ': + case 'ñ': + var9 = 'n'; + break; + case 'Ò': + case 'Ó': + case 'Ô': + case 'Õ': + case 'Ö': + case 'ò': + case 'ó': + case 'ô': + case 'õ': + case 'ö': + var9 = 'o'; + break; + case 'Ù': + case 'Ú': + case 'Û': + case 'Ü': + case 'ù': + case 'ú': + case 'û': + case 'ü': + var9 = 'u'; + break; + case 'ß': + var9 = 'b'; + break; + case 'ÿ': + case 'Ÿ': + var9 = 'y'; + break; + default: + var9 = Character.toLowerCase(var7); + } + + if(var9 != 0) { + var12.append(var9); + } + } + } + + if(var12.length() == 0) { + return null; + } + + return var12.toString(); + } + } + + return null; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(III)Lbm;", + garbageValue = "-1262174034" + ) + static Message method1226(int var0, int var1) { + ChatChannel var2 = (ChatChannel)Messages.Messages_channels.get(Integer.valueOf(var0)); + return var2.getMessage(var1); + } + + @ObfuscatedName("fa") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2007966264" + ) + static final void method1228() { + if(SoundSystem.plane != Client.__client_ph) { + Client.__client_ph = SoundSystem.plane; + int var0 = SoundSystem.plane; + int[] var1 = WidgetGroupParent.sceneMinimapSprite.pixels; + int var2 = var1.length; + + int var3; + for(var3 = 0; var3 < var2; ++var3) { + var1[var3] = 0; + } + + int var4; + int var5; + for(var3 = 1; var3 < 103; ++var3) { + var4 = (103 - var3) * 2048 + 24628; + + for(var5 = 1; var5 < 103; ++var5) { + if((Tiles.Tiles_renderFlags[var0][var5][var3] & 24) == 0) { + class65.scene.drawTileMinimap(var1, var4, 512, var0, var5, var3); + } + + if(var0 < 3 && (Tiles.Tiles_renderFlags[var0 + 1][var5][var3] & 8) != 0) { + class65.scene.drawTileMinimap(var1, var4, 512, var0 + 1, var5, var3); + } + + var4 += 4; + } + } + + var3 = (238 + (int)(Math.random() * 20.0D) - 10 << 16) + (238 + (int)(Math.random() * 20.0D) - 10 << 8) + (238 + (int)(Math.random() * 20.0D) - 10); + var4 = 238 + (int)(Math.random() * 20.0D) - 10 << 16; + WidgetGroupParent.sceneMinimapSprite.setRaster(); + + int var6; + for(var5 = 1; var5 < 103; ++var5) { + for(var6 = 1; var6 < 103; ++var6) { + if((Tiles.Tiles_renderFlags[var0][var6][var5] & 24) == 0) { + MouseRecorder.drawObject(var0, var6, var5, var3, var4); + } + + if(var0 < 3 && (Tiles.Tiles_renderFlags[var0 + 1][var6][var5] & 8) != 0) { + MouseRecorder.drawObject(var0 + 1, var6, var5, var3, var4); + } + } + } + + Client.mapIconCount = 0; + + for(var5 = 0; var5 < 104; ++var5) { + for(var6 = 0; var6 < 104; ++var6) { + long var7 = class65.scene.getFloorDecorationTag(SoundSystem.plane, var5, var6); + if(var7 != 0L) { + int var9 = HitSplatDefinition.method4972(var7); + int var10 = class50.getObjectDefinition(var9).mapIconId; + if(var10 >= 0) { + Client.mapIcons[Client.mapIconCount] = ViewportMouse.getWorldMapElement(var10).getSprite(false); + Client.mapIconXs[Client.mapIconCount] = var5; + Client.mapIconYs[Client.mapIconCount] = var6; + ++Client.mapIconCount; + } + } + } + } + + class197.rasterProvider.apply(); + } + + } + + @ObfuscatedName("kx") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;ZI)Ljava/lang/String;", + garbageValue = "1047910257" + ) + static String method1227(String var0, boolean var1) { + String var2 = var1?"https://":"http://"; + if(Client.gameBuild == 1) { + var0 = var0 + "-wtrc"; + } else if(Client.gameBuild == 2) { + var0 = var0 + "-wtqa"; + } else if(Client.gameBuild == 3) { + var0 = var0 + "-wtwip"; + } else if(Client.gameBuild == 5) { + var0 = var0 + "-wti"; + } else if(Client.gameBuild == 4) { + var0 = "local"; + } + + String var3 = ""; + if(class21.__b_by != null) { + var3 = "/p=" + class21.__b_by; + } + + String var4 = "runescape.com"; + return var2 + var0 + "." + var4 + "/l=" + Client.language + "/a=" + AbstractIndexCache.__ir_bu + var3 + "/"; + } +} diff --git a/rs-client/src/main/java/Messages.java b/rs-client/src/main/java/Messages.java new file mode 100644 index 0000000000..4c06de37c8 --- /dev/null +++ b/rs-client/src/main/java/Messages.java @@ -0,0 +1,63 @@ +import java.util.HashMap; +import java.util.Map; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cw") +@Implements("Messages") +public class Messages { + @ObfuscatedName("m") + @Export("Messages_channels") + static final Map Messages_channels; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("Messages_hashTable") + static final IterableNodeHashTable Messages_hashTable; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ljc;" + ) + @Export("Messages_queue") + static final IterableDualNodeQueue Messages_queue; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1168497831 + ) + @Export("Messages_count") + static int Messages_count; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Ldx;" + ) + @Export("soundSystem") + static SoundSystem soundSystem; + + static { + Messages_channels = new HashMap(); + Messages_hashTable = new IterableNodeHashTable(1024); + Messages_queue = new IterableDualNodeQueue(); + Messages_count = 0; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "103402661" + ) + static void method2200() { + if(Login.Login_username == null || Login.Login_username.length() <= 0) { + if(ReflectionCheck.clientPreferences.rememberedUsername != null) { + Login.Login_username = ReflectionCheck.clientPreferences.rememberedUsername; + Client.Login_isUsernameRemembered = true; + } else { + Client.Login_isUsernameRemembered = false; + } + + } + } +} diff --git a/rs-client/src/main/java/MidiFileReader.java b/rs-client/src/main/java/MidiFileReader.java new file mode 100644 index 0000000000..d48f4363d2 --- /dev/null +++ b/rs-client/src/main/java/MidiFileReader.java @@ -0,0 +1,259 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hs") +@Implements("MidiFileReader") +public class MidiFileReader { + @ObfuscatedName("x") + @Export("__hs_x") + static final byte[] __hs_x; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgr;" + ) + @Export("buffer") + Buffer buffer; + @ObfuscatedName("f") + @Export("division") + int division; + @ObfuscatedName("q") + @Export("trackStarts") + int[] trackStarts; + @ObfuscatedName("w") + @Export("trackPositions") + int[] trackPositions; + @ObfuscatedName("o") + @Export("trackLengths") + int[] trackLengths; + @ObfuscatedName("u") + @Export("__u") + int[] __u; + @ObfuscatedName("g") + @Export("__g") + int __g; + @ObfuscatedName("e") + @Export("__e") + long __e; + + static { + __hs_x = new byte[]{(byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)1, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)2, (byte)0, (byte)1, (byte)2, (byte)1, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0, (byte)0}; + } + + MidiFileReader(byte[] var1) { + this.buffer = new Buffer((byte[])null); + this.parse(var1); + } + + MidiFileReader() { + this.buffer = new Buffer((byte[])null); + } + + @ObfuscatedName("m") + @Export("parse") + void parse(byte[] var1) { + this.buffer.array = var1; + this.buffer.index = 10; + int var2 = this.buffer.__ag_302(); + this.division = this.buffer.__ag_302(); + this.__g = 500000; + this.trackStarts = new int[var2]; + + int var3; + int var5; + for(var3 = 0; var3 < var2; this.buffer.index += var5) { + int var4 = this.buffer.readInt(); + var5 = this.buffer.readInt(); + if(var4 == 1297379947) { + this.trackStarts[var3] = this.buffer.index; + ++var3; + } + } + + this.__e = 0L; + this.trackPositions = new int[var2]; + + for(var3 = 0; var3 < var2; ++var3) { + this.trackPositions[var3] = this.trackStarts[var3]; + } + + this.trackLengths = new int[var2]; + this.__u = new int[var2]; + } + + @ObfuscatedName("f") + @Export("clear") + void clear() { + this.buffer.array = null; + this.trackStarts = null; + this.trackPositions = null; + this.trackLengths = null; + this.__u = null; + } + + @ObfuscatedName("q") + @Export("isReady") + boolean isReady() { + return this.buffer.array != null; + } + + @ObfuscatedName("w") + @Export("trackCount") + int trackCount() { + return this.trackPositions.length; + } + + @ObfuscatedName("o") + @Export("gotoTrack") + void gotoTrack(int var1) { + this.buffer.index = this.trackPositions[var1]; + } + + @ObfuscatedName("u") + @Export("markTrackPosition") + void markTrackPosition(int var1) { + this.trackPositions[var1] = this.buffer.index; + } + + @ObfuscatedName("g") + @Export("setTrackDone") + void setTrackDone() { + this.buffer.index = -1; + } + + @ObfuscatedName("l") + @Export("readTrackLength") + void readTrackLength(int var1) { + int var2 = this.buffer.__as_311(); + this.trackLengths[var1] += var2; + } + + @ObfuscatedName("e") + @Export("readMessage") + int readMessage(int var1) { + int var2 = this.readMessage0(var1); + return var2; + } + + @ObfuscatedName("x") + @Export("readMessage0") + int readMessage0(int var1) { + byte var2 = this.buffer.array[this.buffer.index]; + int var5; + if(var2 < 0) { + var5 = var2 & 255; + this.__u[var1] = var5; + ++this.buffer.index; + } else { + var5 = this.__u[var1]; + } + + if(var5 != 240 && var5 != 247) { + return this.__d_371(var1, var5); + } else { + int var3 = this.buffer.__as_311(); + if(var5 == 247 && var3 > 0) { + int var4 = this.buffer.array[this.buffer.index] & 255; + if(var4 >= 241 && var4 <= 243 || var4 == 246 || var4 == 248 || var4 >= 250 && var4 <= 252 || var4 == 254) { + ++this.buffer.index; + this.__u[var1] = var4; + return this.__d_371(var1, var4); + } + } + + this.buffer.index += var3; + return 0; + } + } + + @ObfuscatedName("d") + @Export("__d_371") + int __d_371(int var1, int var2) { + int var4; + if(var2 == 255) { + int var7 = this.buffer.readUnsignedByte(); + var4 = this.buffer.__as_311(); + if(var7 == 47) { + this.buffer.index += var4; + return 1; + } else if(var7 == 81) { + int var5 = this.buffer.readMedium(); + var4 -= 3; + int var6 = this.trackLengths[var1]; + this.__e += (long)var6 * (long)(this.__g - var5); + this.__g = var5; + this.buffer.index += var4; + return 2; + } else { + this.buffer.index += var4; + return 3; + } + } else { + byte var3 = __hs_x[var2 - 128]; + var4 = var2; + if(var3 >= 1) { + var4 = var2 | this.buffer.readUnsignedByte() << 8; + } + + if(var3 >= 2) { + var4 |= this.buffer.readUnsignedByte() << 16; + } + + return var4; + } + } + + @ObfuscatedName("a") + @Export("__a_372") + long __a_372(int var1) { + return this.__e + (long)var1 * (long)this.__g; + } + + @ObfuscatedName("z") + @Export("getPrioritizedTrack") + int getPrioritizedTrack() { + int var1 = this.trackPositions.length; + int var2 = -1; + int var3 = Integer.MAX_VALUE; + + for(int var4 = 0; var4 < var1; ++var4) { + if(this.trackPositions[var4] >= 0 && this.trackLengths[var4] < var3) { + var2 = var4; + var3 = this.trackLengths[var4]; + } + } + + return var2; + } + + @ObfuscatedName("j") + @Export("isDone") + boolean isDone() { + int var1 = this.trackPositions.length; + + for(int var2 = 0; var2 < var1; ++var2) { + if(this.trackPositions[var2] >= 0) { + return false; + } + } + + return true; + } + + @ObfuscatedName("s") + @Export("reset") + void reset(long var1) { + this.__e = var1; + int var3 = this.trackPositions.length; + + for(int var4 = 0; var4 < var3; ++var4) { + this.trackLengths[var4] = 0; + this.__u[var4] = 0; + this.buffer.index = this.trackStarts[var4]; + this.readTrackLength(var4); + this.trackPositions[var4] = this.buffer.index; + } + + } +} diff --git a/rs-client/src/main/java/MidiPcmStream.java b/rs-client/src/main/java/MidiPcmStream.java new file mode 100644 index 0000000000..bdee97d7e1 --- /dev/null +++ b/rs-client/src/main/java/MidiPcmStream.java @@ -0,0 +1,1131 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hm") +@Implements("MidiPcmStream") +public class MidiPcmStream extends PcmStream { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("musicPatches") + NodeHashTable musicPatches; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 335918727 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 2095480747 + ) + @Export("__q") + int __q; + @ObfuscatedName("o") + @Export("__o") + int[] __o; + @ObfuscatedName("u") + @Export("__u") + int[] __u; + @ObfuscatedName("g") + @Export("__g") + int[] __g; + @ObfuscatedName("l") + @Export("__l") + int[] __l; + @ObfuscatedName("e") + @Export("__e") + int[] __e; + @ObfuscatedName("x") + @Export("__x") + int[] __x; + @ObfuscatedName("d") + @Export("__d") + int[] __d; + @ObfuscatedName("k") + @Export("__k") + int[] __k; + @ObfuscatedName("n") + @Export("surfaceOffsetY") + int[] __n; + @ObfuscatedName("y") + @Export("__y") + int[] __y; + @ObfuscatedName("h") + @Export("__h") + int[] __h; + @ObfuscatedName("b") + @Export("__b") + int[] __b; + @ObfuscatedName("c") + @Export("__c") + int[] __c; + @ObfuscatedName("r") + @Export("__r") + int[] __r; + @ObfuscatedName("p") + @Export("__p") + int[] __p; + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "[[Lha;" + ) + @Export("__v") + MusicPatchNode[][] __v; + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "[[Lha;" + ) + @Export("__ag") + MusicPatchNode[][] __ag; + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "Lhs;" + ) + @Export("midiFile") + MidiFileReader midiFile; + @ObfuscatedName("aj") + @Export("__aj") + boolean __aj; + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = 1450922835 + ) + @Export("track") + int track; + @ObfuscatedName("ar") + @ObfuscatedGetter( + intValue = 713752539 + ) + @Export("trackLength") + int trackLength; + @ObfuscatedName("ac") + @ObfuscatedGetter( + longValue = -7547625335559871937L + ) + @Export("__ac") + long __ac; + @ObfuscatedName("ay") + @ObfuscatedGetter( + longValue = 3736036110499628937L + ) + @Export("__ay") + long __ay; + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "Lhq;" + ) + @Export("patchStream") + MusicPatchPcmStream patchStream; + + public MidiPcmStream() { + this.__f = 256; + this.__q = 1000000; + this.__o = new int[16]; + this.__u = new int[16]; + this.__g = new int[16]; + this.__l = new int[16]; + this.__e = new int[16]; + this.__x = new int[16]; + this.__d = new int[16]; + this.__k = new int[16]; + this.__n = new int[16]; + this.__y = new int[16]; + this.__h = new int[16]; + this.__b = new int[16]; + this.__c = new int[16]; + this.__r = new int[16]; + this.__p = new int[16]; + this.__v = new MusicPatchNode[16][128]; + this.__ag = new MusicPatchNode[16][128]; + this.midiFile = new MidiFileReader(); + this.patchStream = new MusicPatchPcmStream(this); + this.musicPatches = new NodeHashTable(128); + this.__at_354(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "92" + ) + @Export("__m_340") + public synchronized void __m_340(int var1) { + this.__f = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "2067929289" + ) + @Export("__f_341") + public int __f_341() { + return this.__f; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lhe;Lir;Ldt;II)Z", + garbageValue = "-324121369" + ) + @Export("loadMusicTrack") + public synchronized boolean loadMusicTrack(MusicTrack var1, AbstractIndexCache var2, SoundCache var3, int var4) { + var1.__f_381(); + boolean var5 = true; + int[] var6 = null; + if(var4 > 0) { + var6 = new int[]{var4}; + } + + for(ByteArrayNode var7 = (ByteArrayNode)var1.table.first(); var7 != null; var7 = (ByteArrayNode)var1.table.next()) { + int var8 = (int)var7.key; + MusicPatch var9 = (MusicPatch)this.musicPatches.get((long)var8); + if(var9 == null) { + var9 = Login.method2045(var2, var8); + if(var9 == null) { + var5 = false; + continue; + } + + this.musicPatches.put(var9, (long)var8); + } + + if(!var9.__f_373(var3, var7.byteArray, var6)) { + var5 = false; + } + } + + if(var5) { + var1.clear(); + } + + return var5; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-34" + ) + @Export("clearAll") + public synchronized void clearAll() { + for(MusicPatch var1 = (MusicPatch)this.musicPatches.first(); var1 != null; var1 = (MusicPatch)this.musicPatches.next()) { + var1.clear(); + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "42" + ) + @Export("removeAll") + public synchronized void removeAll() { + for(MusicPatch var1 = (MusicPatch)this.musicPatches.first(); var1 != null; var1 = (MusicPatch)this.musicPatches.next()) { + var1.remove(); + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected synchronized PcmStream firstSubStream() { + return this.patchStream; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected synchronized PcmStream nextSubStream() { + return null; + } + + @ObfuscatedName("l") + protected synchronized int __l_171() { + return 0; + } + + @ObfuscatedName("e") + protected synchronized void __e_172(int[] var1, int var2, int var3) { + if(this.midiFile.isReady()) { + int var4 = this.midiFile.division * this.__q / class309.PcmPlayer_sampleRate; + + do { + long var5 = (long)var4 * (long)var3 + this.__ac; + if(this.__ay - var5 >= 0L) { + this.__ac = var5; + break; + } + + int var7 = (int)(((long)var4 + (this.__ay - this.__ac) - 1L) / (long)var4); + this.__ac += (long)var4 * (long)var7; + this.patchStream.__e_172(var1, var2, var7); + var2 += var7; + var3 -= var7; + this.__ai_367(); + } while(this.midiFile.isReady()); + } + + this.patchStream.__e_172(var1, var2, var3); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Lhe;ZI)V", + garbageValue = "-1859383102" + ) + @Export("setMusicTrack") + public synchronized void setMusicTrack(MusicTrack var1, boolean var2) { + this.clear(); + this.midiFile.parse(var1.midi); + this.__aj = var2; + this.__ac = 0L; + int var3 = this.midiFile.trackCount(); + + for(int var4 = 0; var4 < var3; ++var4) { + this.midiFile.gotoTrack(var4); + this.midiFile.readTrackLength(var4); + this.midiFile.markTrackPosition(var4); + } + + this.track = this.midiFile.getPrioritizedTrack(); + this.trackLength = this.midiFile.trackLengths[this.track]; + this.__ay = this.midiFile.__a_372(this.trackLength); + } + + @ObfuscatedName("d") + protected synchronized void __d_173(int var1) { + if(this.midiFile.isReady()) { + int var2 = this.midiFile.division * this.__q / class309.PcmPlayer_sampleRate; + + do { + long var3 = this.__ac + (long)var2 * (long)var1; + if(this.__ay - var3 >= 0L) { + this.__ac = var3; + break; + } + + int var5 = (int)(((long)var2 + (this.__ay - this.__ac) - 1L) / (long)var2); + this.__ac += (long)var5 * (long)var2; + this.patchStream.__d_173(var5); + var1 -= var5; + this.__ai_367(); + } while(this.midiFile.isReady()); + } + + this.patchStream.__d_173(var1); + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1847546868" + ) + @Export("clear") + public synchronized void clear() { + this.midiFile.clear(); + this.__at_354(); + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-852762450" + ) + @Export("isReady") + public synchronized boolean isReady() { + return this.midiFile.isReady(); + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "789206119" + ) + @Export("__j_342") + public synchronized void __j_342(int var1, int var2) { + this.__s_343(var1, var2); + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-1475022240" + ) + @Export("__s_343") + void __s_343(int var1, int var2) { + this.__l[var1] = var2; + this.__x[var1] = var2 & -128; + this.__t_344(var1, var2); + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-213159072" + ) + @Export("__t_344") + void __t_344(int var1, int var2) { + if(var2 != this.__e[var1]) { + this.__e[var1] = var2; + + for(int var3 = 0; var3 < 128; ++var3) { + this.__ag[var1][var3] = null; + } + } + + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(IIIB)V", + garbageValue = "15" + ) + @Export("__y_345") + void __y_345(int var1, int var2, int var3) { + this.__b_347(var1, var2, 64); + if((this.__y[var1] & 2) != 0) { + for(MusicPatchNode var4 = (MusicPatchNode)this.patchStream.queue.first(); var4 != null; var4 = (MusicPatchNode)this.patchStream.queue.next()) { + if(var4.__m == var1 && var4.__a < 0) { + this.__v[var1][var4.__u] = null; + this.__v[var1][var2] = var4; + int var5 = (var4.__d * var4.__x >> 12) + var4.__e; + var4.__e += var2 - var4.__u << 8; + var4.__x = var5 - var4.__e; + var4.__d = 4096; + var4.__u = var2; + return; + } + } + } + + MusicPatch var9 = (MusicPatch)this.musicPatches.get((long)this.__e[var1]); + if(var9 != null) { + RawSound var8 = var9.rawSounds[var2]; + if(var8 != null) { + MusicPatchNode var6 = new MusicPatchNode(); + var6.__m = var1; + var6.patch = var9; + var6.rawSound = var8; + var6.__w = var9.__u[var2]; + var6.__o = var9.__g[var2]; + var6.__u = var2; + var6.__g = var3 * var3 * var9.__w[var2] * var9.__m + 1024 >> 11; + var6.__l = var9.__o[var2] & 255; + var6.__e = (var2 << 8) - (var9.__q[var2] & 32767); + var6.__k = 0; + var6.__n = 0; + var6.__i = 0; + var6.__a = -1; + var6.__z = 0; + if(this.__c[var1] == 0) { + var6.stream = RawPcmStream.method2524(var8, this.__aa_359(var6), this.__ax_360(var6), this.__af_361(var6)); + } else { + var6.stream = RawPcmStream.method2524(var8, this.__aa_359(var6), 0, this.__af_361(var6)); + this.__h_346(var6, var9.__q[var2] < 0); + } + + if(var9.__q[var2] < 0) { + var6.stream.__x_181(-1); + } + + if(var6.__o >= 0) { + MusicPatchNode var7 = this.__ag[var1][var6.__o]; + if(var7 != null && var7.__a < 0) { + this.__v[var1][var7.__u] = null; + var7.__a = 0; + } + + this.__ag[var1][var6.__o] = var6; + } + + this.patchStream.queue.addFirst(var6); + this.__v[var1][var2] = var6; + } + } + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(Lha;ZI)V", + garbageValue = "-1455849160" + ) + @Export("__h_346") + void __h_346(MusicPatchNode var1, boolean var2) { + int var3 = var1.rawSound.samples.length; + int var4; + if(var2 && var1.rawSound.__o) { + int var5 = var3 + var3 - var1.rawSound.start; + var4 = (int)((long)var5 * (long)this.__c[var1.__m] >> 6); + var3 <<= 8; + if(var4 >= var3) { + var4 = var3 + var3 - 1 - var4; + var1.stream.__h_188(); + } + } else { + var4 = (int)((long)this.__c[var1.__m] * (long)var3 >> 6); + } + + var1.stream.__y_187(var4); + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "-1244653525" + ) + @Export("__b_347") + void __b_347(int var1, int var2, int var3) { + MusicPatchNode var4 = this.__v[var1][var2]; + if(var4 != null) { + this.__v[var1][var2] = null; + if((this.__y[var1] & 2) != 0) { + for(MusicPatchNode var5 = (MusicPatchNode)this.patchStream.queue.last(); var5 != null; var5 = (MusicPatchNode)this.patchStream.queue.previous()) { + if(var5.__m == var4.__m && var5.__a < 0 && var5 != var4) { + var4.__a = 0; + break; + } + } + } else { + var4.__a = 0; + } + + } + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "1055105177" + ) + @Export("__c_348") + void __c_348(int var1, int var2, int var3) { + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "-43" + ) + @Export("__p_349") + void __p_349(int var1, int var2) { + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "-1" + ) + @Export("__v_350") + void __v_350(int var1, int var2) { + this.__d[var1] = var2; + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "137929054" + ) + @Export("__ah_351") + void __ah_351(int var1) { + for(MusicPatchNode var2 = (MusicPatchNode)this.patchStream.queue.last(); var2 != null; var2 = (MusicPatchNode)this.patchStream.queue.previous()) { + if(var1 < 0 || var2.__m == var1) { + if(var2.stream != null) { + var2.stream.__v_192(class309.PcmPlayer_sampleRate / 100); + if(var2.stream.__at_196()) { + this.patchStream.mixer.addSubStream(var2.stream); + } + + var2.__m_370(); + } + + if(var2.__a < 0) { + this.__v[var2.__m][var2.__u] = null; + } + + var2.remove(); + } + } + + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-59494316" + ) + @Export("__ab_352") + void __ab_352(int var1) { + if(var1 >= 0) { + this.__o[var1] = 12800; + this.__u[var1] = 8192; + this.__g[var1] = 16383; + this.__d[var1] = 8192; + this.__k[var1] = 0; + this.__n[var1] = 8192; + this.__ad_355(var1); + this.__ap_356(var1); + this.__y[var1] = 0; + this.__h[var1] = 32767; + this.__b[var1] = 256; + this.__c[var1] = 0; + this.__ao_358(var1, 8192); + } else { + for(var1 = 0; var1 < 16; ++var1) { + this.__ab_352(var1); + } + + } + } + + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1458917637" + ) + @Export("__ae_353") + void __ae_353(int var1) { + for(MusicPatchNode var2 = (MusicPatchNode)this.patchStream.queue.last(); var2 != null; var2 = (MusicPatchNode)this.patchStream.queue.previous()) { + if((var1 < 0 || var2.__m == var1) && var2.__a < 0) { + this.__v[var2.__m][var2.__u] = null; + var2.__a = 0; + } + } + + } + + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "808372536" + ) + @Export("__at_354") + void __at_354() { + this.__ah_351(-1); + this.__ab_352(-1); + + int var1; + for(var1 = 0; var1 < 16; ++var1) { + this.__e[var1] = this.__l[var1]; + } + + for(var1 = 0; var1 < 16; ++var1) { + this.__x[var1] = this.__l[var1] & -128; + } + + } + + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1934460661" + ) + @Export("__ad_355") + void __ad_355(int var1) { + if((this.__y[var1] & 2) != 0) { + for(MusicPatchNode var2 = (MusicPatchNode)this.patchStream.queue.last(); var2 != null; var2 = (MusicPatchNode)this.patchStream.queue.previous()) { + if(var2.__m == var1 && this.__v[var1][var2.__u] == null && var2.__a < 0) { + var2.__a = 0; + } + } + } + + } + + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1305073262" + ) + @Export("__ap_356") + void __ap_356(int var1) { + if((this.__y[var1] & 4) != 0) { + for(MusicPatchNode var2 = (MusicPatchNode)this.patchStream.queue.last(); var2 != null; var2 = (MusicPatchNode)this.patchStream.queue.previous()) { + if(var2.__m == var1) { + var2.__b = 0; + } + } + } + + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1168111396" + ) + @Export("__au_357") + void __au_357(int var1) { + int var2 = var1 & 240; + int var3; + int var4; + int var5; + if(var2 == 128) { + var3 = var1 & 15; + var4 = var1 >> 8 & 127; + var5 = var1 >> 16 & 127; + this.__b_347(var3, var4, var5); + } else if(var2 == 144) { + var3 = var1 & 15; + var4 = var1 >> 8 & 127; + var5 = var1 >> 16 & 127; + if(var5 > 0) { + this.__y_345(var3, var4, var5); + } else { + this.__b_347(var3, var4, 64); + } + + } else if(var2 == 160) { + var3 = var1 & 15; + var4 = var1 >> 8 & 127; + var5 = var1 >> 16 & 127; + this.__c_348(var3, var4, var5); + } else if(var2 == 176) { + var3 = var1 & 15; + var4 = var1 >> 8 & 127; + var5 = var1 >> 16 & 127; + if(var4 == 0) { + this.__x[var3] = (var5 << 14) + (this.__x[var3] & -2080769); + } + + if(var4 == 32) { + this.__x[var3] = (var5 << 7) + (this.__x[var3] & -16257); + } + + if(var4 == 1) { + this.__k[var3] = (var5 << 7) + (this.__k[var3] & -16257); + } + + if(var4 == 33) { + this.__k[var3] = var5 + (this.__k[var3] & -128); + } + + if(var4 == 5) { + this.__n[var3] = (var5 << 7) + (this.__n[var3] & -16257); + } + + if(var4 == 37) { + this.__n[var3] = var5 + (this.__n[var3] & -128); + } + + if(var4 == 7) { + this.__o[var3] = (var5 << 7) + (this.__o[var3] & -16257); + } + + if(var4 == 39) { + this.__o[var3] = var5 + (this.__o[var3] & -128); + } + + if(var4 == 10) { + this.__u[var3] = (var5 << 7) + (this.__u[var3] & -16257); + } + + if(var4 == 42) { + this.__u[var3] = var5 + (this.__u[var3] & -128); + } + + if(var4 == 11) { + this.__g[var3] = (var5 << 7) + (this.__g[var3] & -16257); + } + + if(var4 == 43) { + this.__g[var3] = var5 + (this.__g[var3] & -128); + } + + if(var4 == 64) { + if(var5 >= 64) { + this.__y[var3] |= 1; + } else { + this.__y[var3] &= -2; + } + } + + if(var4 == 65) { + if(var5 >= 64) { + this.__y[var3] |= 2; + } else { + this.__ad_355(var3); + this.__y[var3] &= -3; + } + } + + if(var4 == 99) { + this.__h[var3] = (var5 << 7) + (this.__h[var3] & 127); + } + + if(var4 == 98) { + this.__h[var3] = (this.__h[var3] & 16256) + var5; + } + + if(var4 == 101) { + this.__h[var3] = (var5 << 7) + (this.__h[var3] & 127) + 16384; + } + + if(var4 == 100) { + this.__h[var3] = (this.__h[var3] & 16256) + var5 + 16384; + } + + if(var4 == 120) { + this.__ah_351(var3); + } + + if(var4 == 121) { + this.__ab_352(var3); + } + + if(var4 == 123) { + this.__ae_353(var3); + } + + int var6; + if(var4 == 6) { + var6 = this.__h[var3]; + if(var6 == 16384) { + this.__b[var3] = (var5 << 7) + (this.__b[var3] & -16257); + } + } + + if(var4 == 38) { + var6 = this.__h[var3]; + if(var6 == 16384) { + this.__b[var3] = var5 + (this.__b[var3] & -128); + } + } + + if(var4 == 16) { + this.__c[var3] = (var5 << 7) + (this.__c[var3] & -16257); + } + + if(var4 == 48) { + this.__c[var3] = var5 + (this.__c[var3] & -128); + } + + if(var4 == 81) { + if(var5 >= 64) { + this.__y[var3] |= 4; + } else { + this.__ap_356(var3); + this.__y[var3] &= -5; + } + } + + if(var4 == 17) { + this.__ao_358(var3, (var5 << 7) + (this.__r[var3] & -16257)); + } + + if(var4 == 49) { + this.__ao_358(var3, var5 + (this.__r[var3] & -128)); + } + + } else if(var2 == 192) { + var3 = var1 & 15; + var4 = var1 >> 8 & 127; + this.__t_344(var3, var4 + this.__x[var3]); + } else if(var2 == 208) { + var3 = var1 & 15; + var4 = var1 >> 8 & 127; + this.__p_349(var3, var4); + } else if(var2 == 224) { + var3 = var1 & 15; + var4 = (var1 >> 8 & 127) + (var1 >> 9 & 16256); + this.__v_350(var3, var4); + } else { + var2 = var1 & 255; + if(var2 == 255) { + this.__at_354(); + } + } + } + + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1380282032" + ) + @Export("__ao_358") + void __ao_358(int var1, int var2) { + this.__r[var1] = var2; + this.__p[var1] = (int)(2097152.0D * Math.pow(2.0D, 5.4931640625E-4D * (double)var2) + 0.5D); + } + + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "(Lha;I)I", + garbageValue = "-1821299983" + ) + @Export("__aa_359") + int __aa_359(MusicPatchNode var1) { + int var2 = (var1.__d * var1.__x >> 12) + var1.__e; + var2 += (this.__d[var1.__m] - 8192) * this.__b[var1.__m] >> 12; + MusicPatchNode2 var3 = var1.__w; + int var4; + if(var3.__l > 0 && (var3.__g > 0 || this.__k[var1.__m] > 0)) { + var4 = var3.__g << 2; + int var5 = var3.__e << 1; + if(var1.__j < var5) { + var4 = var4 * var1.__j / var5; + } + + var4 += this.__k[var1.__m] >> 7; + double var6 = Math.sin((double)(var1.__s & 511) * 0.01227184630308513D); + var2 += (int)(var6 * (double)var4); + } + + var4 = (int)((double)(var1.rawSound.sampleRate * 256) * Math.pow(2.0D, (double)var2 * 3.255208333333333E-4D) / (double)class309.PcmPlayer_sampleRate + 0.5D); + return var4 < 1?1:var4; + } + + @ObfuscatedName("ax") + @ObfuscatedSignature( + signature = "(Lha;I)I", + garbageValue = "24812899" + ) + @Export("__ax_360") + int __ax_360(MusicPatchNode var1) { + MusicPatchNode2 var2 = var1.__w; + int var3 = this.__o[var1.__m] * this.__g[var1.__m] + 4096 >> 13; + var3 = var3 * var3 + 16384 >> 15; + var3 = var3 * var1.__g + 16384 >> 15; + var3 = var3 * this.__f + 128 >> 8; + if(var2.__q > 0) { + var3 = (int)((double)var3 * Math.pow(0.5D, (double)var2.__q * (double)var1.__k * 1.953125E-5D) + 0.5D); + } + + int var4; + int var5; + int var6; + int var7; + if(var2.__m != null) { + var4 = var1.__n; + var5 = var2.__m[var1.__i + 1]; + if(var1.__i < var2.__m.length - 2) { + var6 = (var2.__m[var1.__i] & 255) << 8; + var7 = (var2.__m[var1.__i + 2] & 255) << 8; + var5 += (var2.__m[var1.__i + 3] - var5) * (var4 - var6) / (var7 - var6); + } + + var3 = var5 * var3 + 32 >> 6; + } + + if(var1.__a > 0 && var2.__f != null) { + var4 = var1.__a; + var5 = var2.__f[var1.__z + 1]; + if(var1.__z < var2.__f.length - 2) { + var6 = (var2.__f[var1.__z] & 255) << 8; + var7 = (var2.__f[var1.__z + 2] & 255) << 8; + var5 += (var4 - var6) * (var2.__f[var1.__z + 3] - var5) / (var7 - var6); + } + + var3 = var3 * var5 + 32 >> 6; + } + + return var3; + } + + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "(Lha;I)I", + garbageValue = "360643400" + ) + @Export("__af_361") + int __af_361(MusicPatchNode var1) { + int var2 = this.__u[var1.__m]; + return var2 < 8192?var2 * var1.__l + 32 >> 6:16384 - ((128 - var1.__l) * (16384 - var2) + 32 >> 6); + } + + @ObfuscatedName("ai") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "30" + ) + @Export("__ai_367") + void __ai_367() { + int var1 = this.track; + int var2 = this.trackLength; + + long var3; + for(var3 = this.__ay; var2 == this.trackLength; var3 = this.midiFile.__a_372(var2)) { + while(var2 == this.midiFile.trackLengths[var1]) { + this.midiFile.gotoTrack(var1); + int var5 = this.midiFile.readMessage(var1); + if(var5 == 1) { + this.midiFile.setTrackDone(); + this.midiFile.markTrackPosition(var1); + if(this.midiFile.isDone()) { + if(!this.__aj || var2 == 0) { + this.__at_354(); + this.midiFile.clear(); + return; + } + + this.midiFile.reset(var3); + } + break; + } + + if((var5 & 128) != 0) { + this.__au_357(var5); + } + + this.midiFile.readTrackLength(var1); + this.midiFile.markTrackPosition(var1); + } + + var1 = this.midiFile.getPrioritizedTrack(); + var2 = this.midiFile.trackLengths[var1]; + } + + this.track = var1; + this.trackLength = var2; + this.__ay = var3; + } + + @ObfuscatedName("ba") + @ObfuscatedSignature( + signature = "(Lha;I)Z", + garbageValue = "1820762013" + ) + @Export("__ba_368") + boolean __ba_368(MusicPatchNode var1) { + if(var1.stream == null) { + if(var1.__a >= 0) { + var1.remove(); + if(var1.__o > 0 && var1 == this.__ag[var1.__m][var1.__o]) { + this.__ag[var1.__m][var1.__o] = null; + } + } + + return true; + } else { + return false; + } + } + + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "(Lha;[IIII)Z", + garbageValue = "-1605961549" + ) + @Export("__bb_369") + boolean __bb_369(MusicPatchNode var1, int[] var2, int var3, int var4) { + var1.__y = class309.PcmPlayer_sampleRate / 100; + if(var1.__a < 0 || var1.stream != null && !var1.stream.__ae_195()) { + int var5 = var1.__d; + if(var5 > 0) { + var5 -= (int)(16.0D * Math.pow(2.0D, (double)this.__n[var1.__m] * 4.921259842519685E-4D) + 0.5D); + if(var5 < 0) { + var5 = 0; + } + + var1.__d = var5; + } + + var1.stream.__ah_193(this.__aa_359(var1)); + MusicPatchNode2 var6 = var1.__w; + boolean var7 = false; + ++var1.__j; + var1.__s += var6.__l; + double var8 = 5.086263020833333E-6D * (double)((var1.__u - 60 << 8) + (var1.__x * var1.__d >> 12)); + if(var6.__q > 0) { + if(var6.__u > 0) { + var1.__k += (int)(128.0D * Math.pow(2.0D, var8 * (double)var6.__u) + 0.5D); + } else { + var1.__k += 128; + } + } + + if(var6.__m != null) { + if(var6.__w > 0) { + var1.__n += (int)(128.0D * Math.pow(2.0D, var8 * (double)var6.__w) + 0.5D); + } else { + var1.__n += 128; + } + + while(var1.__i < var6.__m.length - 2 && var1.__n > (var6.__m[var1.__i + 2] & 255) << 8) { + var1.__i += 2; + } + + if(var6.__m.length - 2 == var1.__i && var6.__m[var1.__i + 1] == 0) { + var7 = true; + } + } + + if(var1.__a >= 0 && var6.__f != null && (this.__y[var1.__m] & 1) == 0 && (var1.__o < 0 || var1 != this.__ag[var1.__m][var1.__o])) { + if(var6.__o > 0) { + var1.__a += (int)(128.0D * Math.pow(2.0D, var8 * (double)var6.__o) + 0.5D); + } else { + var1.__a += 128; + } + + while(var1.__z < var6.__f.length - 2 && var1.__a > (var6.__f[var1.__z + 2] & 255) << 8) { + var1.__z += 2; + } + + if(var6.__f.length - 2 == var1.__z) { + var7 = true; + } + } + + if(var7) { + var1.stream.__v_192(var1.__y); + if(var2 != null) { + var1.stream.__e_172(var2, var3, var4); + } else { + var1.stream.__d_173(var4); + } + + if(var1.stream.__at_196()) { + this.patchStream.mixer.addSubStream(var1.stream); + } + + var1.__m_370(); + if(var1.__a >= 0) { + var1.remove(); + if(var1.__o > 0 && var1 == this.__ag[var1.__m][var1.__o]) { + this.__ag[var1.__m][var1.__o] = null; + } + } + + return true; + } else { + var1.stream.__p_191(var1.__y, this.__ax_360(var1), this.__af_361(var1)); + return false; + } + } else { + var1.__m_370(); + var1.remove(); + if(var1.__o > 0 && var1 == this.__ag[var1.__m][var1.__o]) { + this.__ag[var1.__m][var1.__o] = null; + } + + return true; + } + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(Ldc;B)V", + garbageValue = "30" + ) + @Export("PcmStream_disable") + static final void PcmStream_disable(PcmStream var0) { + var0.active = false; + if(var0.sound != null) { + var0.sound.position = 0; + } + + for(PcmStream var1 = var0.firstSubStream(); var1 != null; var1 = var0.nextSubStream()) { + PcmStream_disable(var1); + } + + } +} diff --git a/rs-client/src/main/java/MilliClock.java b/rs-client/src/main/java/MilliClock.java new file mode 100644 index 0000000000..146e626362 --- /dev/null +++ b/rs-client/src/main/java/MilliClock.java @@ -0,0 +1,241 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fd") +@Implements("MilliClock") +public class MilliClock extends Clock { + @ObfuscatedName("qi") + @ObfuscatedSignature( + signature = "Ldp;" + ) + @Export("decimator") + static Decimator decimator; + @ObfuscatedName("m") + @Export("__m") + long[] __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1940981129 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1217137493 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + longValue = -8372744267470318611L + ) + @Export("__w") + long __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 250272357 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 576555527 + ) + @Export("__u") + int __u; + + public MilliClock() { + this.__m = new long[10]; + this.__f = 256; + this.__q = 1; + this.__o = 0; + this.__w = class203.currentTimeMs(); + + for(int var1 = 0; var1 < 10; ++var1) { + this.__m[var1] = this.__w; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "61" + ) + public void mark() { + for(int var1 = 0; var1 < 10; ++var1) { + this.__m[var1] = 0L; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-126803683" + ) + public int wait(int var1, int var2) { + int var3 = this.__f; + int var4 = this.__q; + this.__f = 300; + this.__q = 1; + this.__w = class203.currentTimeMs(); + if(0L == this.__m[this.__u]) { + this.__f = var3; + this.__q = var4; + } else if(this.__w > this.__m[this.__u]) { + this.__f = (int)((long)(var1 * 2560) / (this.__w - this.__m[this.__u])); + } + + if(this.__f < 25) { + this.__f = 25; + } + + if(this.__f > 256) { + this.__f = 256; + this.__q = (int)((long)var1 - (this.__w - this.__m[this.__u]) / 10L); + } + + if(this.__q > var1) { + this.__q = var1; + } + + this.__m[this.__u] = this.__w; + this.__u = (this.__u + 1) % 10; + int var5; + if(this.__q > 1) { + for(var5 = 0; var5 < 10; ++var5) { + if(this.__m[var5] != 0L) { + this.__m[var5] += (long)this.__q; + } + } + } + + if(this.__q < var2) { + this.__q = var2; + } + + class203.method4010((long)this.__q); + + for(var5 = 0; this.__o < 256; this.__o += this.__f) { + ++var5; + } + + this.__o &= 255; + return var5; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "([Lbt;II[I[II)V", + garbageValue = "-1374398116" + ) + static void method3400(World[] var0, int var1, int var2, int[] var3, int[] var4) { + if(var1 < var2) { + int var5 = var1 - 1; + int var6 = var2 + 1; + int var7 = (var2 + var1) / 2; + World var8 = var0[var7]; + var0[var7] = var0[var1]; + var0[var1] = var8; + + while(var5 < var6) { + boolean var9 = true; + + int var10; + int var11; + int var12; + do { + --var6; + + for(var10 = 0; var10 < 4; ++var10) { + if(var3[var10] == 2) { + var11 = var0[var6].index; + var12 = var8.index; + } else if(var3[var10] == 1) { + var11 = var0[var6].population; + var12 = var8.population; + if(var11 == -1 && var4[var10] == 1) { + var11 = 2001; + } + + if(var12 == -1 && var4[var10] == 1) { + var12 = 2001; + } + } else if(var3[var10] == 3) { + var11 = var0[var6].__e_144()?1:0; + var12 = var8.__e_144()?1:0; + } else { + var11 = var0[var6].id; + var12 = var8.id; + } + + if(var12 != var11) { + if((var4[var10] != 1 || var11 <= var12) && (var4[var10] != 0 || var11 >= var12)) { + var9 = false; + } + break; + } + + if(var10 == 3) { + var9 = false; + } + } + } while(var9); + + var9 = true; + + do { + ++var5; + + for(var10 = 0; var10 < 4; ++var10) { + if(var3[var10] == 2) { + var11 = var0[var5].index; + var12 = var8.index; + } else if(var3[var10] == 1) { + var11 = var0[var5].population; + var12 = var8.population; + if(var11 == -1 && var4[var10] == 1) { + var11 = 2001; + } + + if(var12 == -1 && var4[var10] == 1) { + var12 = 2001; + } + } else if(var3[var10] == 3) { + var11 = var0[var5].__e_144()?1:0; + var12 = var8.__e_144()?1:0; + } else { + var11 = var0[var5].id; + var12 = var8.id; + } + + if(var11 != var12) { + if((var4[var10] != 1 || var11 >= var12) && (var4[var10] != 0 || var11 <= var12)) { + var9 = false; + } + break; + } + + if(var10 == 3) { + var9 = false; + } + } + } while(var9); + + if(var5 < var6) { + World var13 = var0[var5]; + var0[var5] = var0[var6]; + var0[var6] = var13; + } + } + + method3400(var0, var1, var6, var3, var4); + method3400(var0, var6 + 1, var2, var3, var4); + } + + } +} diff --git a/rs-client/src/main/java/Model.java b/rs-client/src/main/java/Model.java new file mode 100644 index 0000000000..8ed74b9e96 --- /dev/null +++ b/rs-client/src/main/java/Model.java @@ -0,0 +1,1724 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("du") +@Implements("Model") +public class Model extends Entity { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Ldu;" + ) + @Export("Model_sharedSequenceModel") + static Model Model_sharedSequenceModel; + @ObfuscatedName("f") + @Export("Model_sharedSequenceModelFaceAlphas") + static byte[] Model_sharedSequenceModelFaceAlphas; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ldu;" + ) + @Export("Model_sharedSpotAnimationModel") + static Model Model_sharedSpotAnimationModel; + @ObfuscatedName("w") + @Export("Model_sharedSpotAnimationModelFaceAlphas") + static byte[] Model_sharedSpotAnimationModelFaceAlphas; + @ObfuscatedName("at") + @Export("__du_at") + static boolean[] __du_at; + @ObfuscatedName("ad") + @Export("__du_ad") + static boolean[] __du_ad; + @ObfuscatedName("ap") + @Export("modelViewportXs") + static int[] modelViewportXs; + @ObfuscatedName("as") + @Export("modelViewportYs") + static int[] modelViewportYs; + @ObfuscatedName("am") + @Export("__du_am") + static int[] __du_am; + @ObfuscatedName("an") + @Export("__du_an") + static int[] __du_an; + @ObfuscatedName("az") + @Export("__du_az") + static int[] __du_az; + @ObfuscatedName("au") + @Export("__du_au") + static int[] __du_au; + @ObfuscatedName("aa") + @Export("__du_aa") + static int[] __du_aa; + @ObfuscatedName("ax") + @Export("__du_ax") + static int[][] __du_ax; + @ObfuscatedName("af") + @Export("__du_af") + static int[] __du_af; + @ObfuscatedName("ai") + @Export("__du_ai") + static int[][] __du_ai; + @ObfuscatedName("ba") + @Export("__du_ba") + static int[] __du_ba; + @ObfuscatedName("bb") + @Export("__du_bb") + static int[] __du_bb; + @ObfuscatedName("bs") + @Export("__du_bs") + static int[] __du_bs; + @ObfuscatedName("bq") + @Export("__du_bq") + static int[] __du_bq; + @ObfuscatedName("bn") + @Export("__du_bn") + static int[] __du_bn; + @ObfuscatedName("bk") + @Export("__du_bk") + static int[] __du_bk; + @ObfuscatedName("bd") + @Export("Model_transformTempX") + static int Model_transformTempX; + @ObfuscatedName("bc") + @Export("Model_transformTempY") + static int Model_transformTempY; + @ObfuscatedName("bo") + @Export("Model_transformTempZ") + static int Model_transformTempZ; + @ObfuscatedName("bx") + @Export("__du_bx") + static boolean __du_bx; + @ObfuscatedName("bm") + @Export("Model_sine") + static int[] Model_sine; + @ObfuscatedName("bl") + @Export("Model_cosine") + static int[] Model_cosine; + @ObfuscatedName("br") + @Export("__du_br") + static int[] __du_br; + @ObfuscatedName("bj") + @Export("__du_bj") + static int[] __du_bj; + @ObfuscatedName("o") + @Export("verticesCount") + int verticesCount; + @ObfuscatedName("u") + @Export("verticesX") + int[] verticesX; + @ObfuscatedName("g") + @Export("verticesY") + int[] verticesY; + @ObfuscatedName("l") + @Export("verticesZ") + int[] verticesZ; + @ObfuscatedName("e") + @Export("indicesCount") + int indicesCount; + @ObfuscatedName("x") + @Export("indices1") + int[] indices1; + @ObfuscatedName("d") + @Export("indices2") + int[] indices2; + @ObfuscatedName("k") + @Export("indices3") + int[] indices3; + @ObfuscatedName("n") + @Export("faceColors1") + int[] faceColors1; + @ObfuscatedName("i") + @Export("faceColors2") + int[] faceColors2; + @ObfuscatedName("a") + @Export("faceColors3") + int[] faceColors3; + @ObfuscatedName("z") + @Export("faceRenderPriorities") + byte[] faceRenderPriorities; + @ObfuscatedName("j") + @Export("faceAlphas") + byte[] faceAlphas; + @ObfuscatedName("s") + @Export("__s") + byte[] __s; + @ObfuscatedName("t") + @Export("faceTextures") + short[] faceTextures; + @ObfuscatedName("y") + @Export("__y") + byte __y; + @ObfuscatedName("h") + @Export("__h") + int __h; + @ObfuscatedName("b") + @Export("__b") + int[] __b; + @ObfuscatedName("c") + @Export("__c") + int[] __c; + @ObfuscatedName("r") + @Export("__r") + int[] __r; + @ObfuscatedName("p") + @Export("vertexLabels") + int[][] vertexLabels; + @ObfuscatedName("v") + @Export("faceLabelsAlpha") + int[][] faceLabelsAlpha; + @ObfuscatedName("ag") + @Export("isSingleTile") + public boolean isSingleTile; + @ObfuscatedName("aq") + @Export("boundsType") + int boundsType; + @ObfuscatedName("aj") + @Export("bottomY") + int bottomY; + @ObfuscatedName("av") + @Export("xzRadius") + int xzRadius; + @ObfuscatedName("ar") + @Export("diameter") + int diameter; + @ObfuscatedName("ac") + @Export("radius") + int radius; + @ObfuscatedName("ay") + @Export("xMid") + int xMid; + @ObfuscatedName("ah") + @Export("yMid") + int yMid; + @ObfuscatedName("ak") + @Export("zMid") + int zMid; + @ObfuscatedName("aw") + @Export("xMidOffset") + int xMidOffset; + @ObfuscatedName("al") + @Export("yMidOffset") + int yMidOffset; + @ObfuscatedName("ab") + @Export("zMidOffset") + int zMidOffset; + + static { + Model_sharedSequenceModel = new Model(); + Model_sharedSequenceModelFaceAlphas = new byte[1]; + Model_sharedSpotAnimationModel = new Model(); + Model_sharedSpotAnimationModelFaceAlphas = new byte[1]; + __du_at = new boolean[4700]; + __du_ad = new boolean[4700]; + modelViewportXs = new int[4700]; + modelViewportYs = new int[4700]; + __du_am = new int[4700]; + __du_an = new int[4700]; + __du_az = new int[4700]; + __du_au = new int[4700]; + __du_aa = new int[1600]; + __du_ax = new int[1600][512]; + __du_af = new int[12]; + __du_ai = new int[12][2000]; + __du_ba = new int[2000]; + __du_bb = new int[2000]; + __du_bs = new int[12]; + __du_bq = new int[10]; + __du_bn = new int[10]; + __du_bk = new int[10]; + __du_bx = true; + Model_sine = Rasterizer3D.Rasterizer3D_sine; + Model_cosine = Rasterizer3D.Rasterizer3D_cosine; + __du_br = Rasterizer3D.Rasterizer3D_colorPalette; + __du_bj = Rasterizer3D.__et_p; + } + + Model() { + this.verticesCount = 0; + this.indicesCount = 0; + this.__y = 0; + this.__h = 0; + this.isSingleTile = false; + this.xMidOffset = -1; + this.yMidOffset = -1; + this.zMidOffset = -1; + } + + @ObfuscatedSignature( + signature = "([Ldu;I)V" + ) + public Model(Model[] var1, int var2) { + this.verticesCount = 0; + this.indicesCount = 0; + this.__y = 0; + this.__h = 0; + this.isSingleTile = false; + this.xMidOffset = -1; + this.yMidOffset = -1; + this.zMidOffset = -1; + boolean var3 = false; + boolean var4 = false; + boolean var5 = false; + boolean var6 = false; + this.verticesCount = 0; + this.indicesCount = 0; + this.__h = 0; + this.__y = -1; + + int var7; + Model var8; + for(var7 = 0; var7 < var2; ++var7) { + var8 = var1[var7]; + if(var8 != null) { + this.verticesCount += var8.verticesCount; + this.indicesCount += var8.indicesCount; + this.__h += var8.__h; + if(var8.faceRenderPriorities != null) { + var3 = true; + } else { + if(this.__y == -1) { + this.__y = var8.__y; + } + + if(this.__y != var8.__y) { + var3 = true; + } + } + + var4 |= var8.faceAlphas != null; + var5 |= var8.faceTextures != null; + var6 |= var8.__s != null; + } + } + + this.verticesX = new int[this.verticesCount]; + this.verticesY = new int[this.verticesCount]; + this.verticesZ = new int[this.verticesCount]; + this.indices1 = new int[this.indicesCount]; + this.indices2 = new int[this.indicesCount]; + this.indices3 = new int[this.indicesCount]; + this.faceColors1 = new int[this.indicesCount]; + this.faceColors2 = new int[this.indicesCount]; + this.faceColors3 = new int[this.indicesCount]; + if(var3) { + this.faceRenderPriorities = new byte[this.indicesCount]; + } + + if(var4) { + this.faceAlphas = new byte[this.indicesCount]; + } + + if(var5) { + this.faceTextures = new short[this.indicesCount]; + } + + if(var6) { + this.__s = new byte[this.indicesCount]; + } + + if(this.__h > 0) { + this.__b = new int[this.__h]; + this.__c = new int[this.__h]; + this.__r = new int[this.__h]; + } + + this.verticesCount = 0; + this.indicesCount = 0; + this.__h = 0; + + for(var7 = 0; var7 < var2; ++var7) { + var8 = var1[var7]; + if(var8 != null) { + int var9; + for(var9 = 0; var9 < var8.indicesCount; ++var9) { + this.indices1[this.indicesCount] = this.verticesCount + var8.indices1[var9]; + this.indices2[this.indicesCount] = this.verticesCount + var8.indices2[var9]; + this.indices3[this.indicesCount] = this.verticesCount + var8.indices3[var9]; + this.faceColors1[this.indicesCount] = var8.faceColors1[var9]; + this.faceColors2[this.indicesCount] = var8.faceColors2[var9]; + this.faceColors3[this.indicesCount] = var8.faceColors3[var9]; + if(var3) { + if(var8.faceRenderPriorities != null) { + this.faceRenderPriorities[this.indicesCount] = var8.faceRenderPriorities[var9]; + } else { + this.faceRenderPriorities[this.indicesCount] = var8.__y; + } + } + + if(var4 && var8.faceAlphas != null) { + this.faceAlphas[this.indicesCount] = var8.faceAlphas[var9]; + } + + if(var5) { + if(var8.faceTextures != null) { + this.faceTextures[this.indicesCount] = var8.faceTextures[var9]; + } else { + this.faceTextures[this.indicesCount] = -1; + } + } + + if(var6) { + if(var8.__s != null && var8.__s[var9] != -1) { + this.__s[this.indicesCount] = (byte)(this.__h + var8.__s[var9]); + } else { + this.__s[this.indicesCount] = -1; + } + } + + ++this.indicesCount; + } + + for(var9 = 0; var9 < var8.__h; ++var9) { + this.__b[this.__h] = this.verticesCount + var8.__b[var9]; + this.__c[this.__h] = this.verticesCount + var8.__c[var9]; + this.__r[this.__h] = this.verticesCount + var8.__r[var9]; + ++this.__h; + } + + for(var9 = 0; var9 < var8.verticesCount; ++var9) { + this.verticesX[this.verticesCount] = var8.verticesX[var9]; + this.verticesY[this.verticesCount] = var8.verticesY[var9]; + this.verticesZ[this.verticesCount] = var8.verticesZ[var9]; + ++this.verticesCount; + } + } + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([[IIIIZI)Ldu;" + ) + @Export("contourGround") + public Model contourGround(int[][] var1, int var2, int var3, int var4, boolean var5, int var6) { + this.calculateBoundsCylinder(); + int var7 = var2 - this.xzRadius; + int var8 = var2 + this.xzRadius; + int var9 = var4 - this.xzRadius; + int var10 = var4 + this.xzRadius; + if(var7 >= 0 && var8 + 128 >> 7 < var1.length && var9 >= 0 && var10 + 128 >> 7 < var1[0].length) { + var7 >>= 7; + var8 = var8 + 127 >> 7; + var9 >>= 7; + var10 = var10 + 127 >> 7; + if(var3 == var1[var7][var9] && var3 == var1[var8][var9] && var3 == var1[var7][var10] && var3 == var1[var8][var10]) { + return this; + } else { + Model var11; + if(var5) { + var11 = new Model(); + var11.verticesCount = this.verticesCount; + var11.indicesCount = this.indicesCount; + var11.__h = this.__h; + var11.verticesX = this.verticesX; + var11.verticesZ = this.verticesZ; + var11.indices1 = this.indices1; + var11.indices2 = this.indices2; + var11.indices3 = this.indices3; + var11.faceColors1 = this.faceColors1; + var11.faceColors2 = this.faceColors2; + var11.faceColors3 = this.faceColors3; + var11.faceRenderPriorities = this.faceRenderPriorities; + var11.faceAlphas = this.faceAlphas; + var11.__s = this.__s; + var11.faceTextures = this.faceTextures; + var11.__y = this.__y; + var11.__b = this.__b; + var11.__c = this.__c; + var11.__r = this.__r; + var11.vertexLabels = this.vertexLabels; + var11.faceLabelsAlpha = this.faceLabelsAlpha; + var11.isSingleTile = this.isSingleTile; + var11.verticesY = new int[var11.verticesCount]; + } else { + var11 = this; + } + + int var12; + int var13; + int var14; + int var15; + int var16; + int var17; + int var18; + int var19; + int var20; + int var21; + if(var6 == 0) { + for(var12 = 0; var12 < var11.verticesCount; ++var12) { + var13 = var2 + this.verticesX[var12]; + var14 = var4 + this.verticesZ[var12]; + var15 = var13 & 127; + var16 = var14 & 127; + var17 = var13 >> 7; + var18 = var14 >> 7; + var19 = var1[var17][var18] * (128 - var15) + var1[var17 + 1][var18] * var15 >> 7; + var20 = var1[var17][var18 + 1] * (128 - var15) + var15 * var1[var17 + 1][var18 + 1] >> 7; + var21 = var19 * (128 - var16) + var20 * var16 >> 7; + var11.verticesY[var12] = var21 + this.verticesY[var12] - var3; + } + } else { + for(var12 = 0; var12 < var11.verticesCount; ++var12) { + var13 = (-this.verticesY[var12] << 16) / super.height; + if(var13 < var6) { + var14 = var2 + this.verticesX[var12]; + var15 = var4 + this.verticesZ[var12]; + var16 = var14 & 127; + var17 = var15 & 127; + var18 = var14 >> 7; + var19 = var15 >> 7; + var20 = var1[var18][var19] * (128 - var16) + var1[var18 + 1][var19] * var16 >> 7; + var21 = var1[var18][var19 + 1] * (128 - var16) + var16 * var1[var18 + 1][var19 + 1] >> 7; + int var22 = var20 * (128 - var17) + var21 * var17 >> 7; + var11.verticesY[var12] = (var6 - var13) * (var22 - var3) / var6 + this.verticesY[var12]; + } + } + } + + var11.resetBounds(); + return var11; + } + } else { + return this; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Z)Ldu;" + ) + @Export("toSharedSequenceModel") + public Model toSharedSequenceModel(boolean var1) { + if(!var1 && Model_sharedSequenceModelFaceAlphas.length < this.indicesCount) { + Model_sharedSequenceModelFaceAlphas = new byte[this.indicesCount + 100]; + } + + return this.buildSharedModel(var1, Model_sharedSequenceModel, Model_sharedSequenceModelFaceAlphas); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Z)Ldu;" + ) + @Export("toSharedSpotAnimationModel") + public Model toSharedSpotAnimationModel(boolean var1) { + if(!var1 && Model_sharedSpotAnimationModelFaceAlphas.length < this.indicesCount) { + Model_sharedSpotAnimationModelFaceAlphas = new byte[this.indicesCount + 100]; + } + + return this.buildSharedModel(var1, Model_sharedSpotAnimationModel, Model_sharedSpotAnimationModelFaceAlphas); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(ZLdu;[B)Ldu;" + ) + @Export("buildSharedModel") + Model buildSharedModel(boolean var1, Model var2, byte[] var3) { + var2.verticesCount = this.verticesCount; + var2.indicesCount = this.indicesCount; + var2.__h = this.__h; + if(var2.verticesX == null || var2.verticesX.length < this.verticesCount) { + var2.verticesX = new int[this.verticesCount + 100]; + var2.verticesY = new int[this.verticesCount + 100]; + var2.verticesZ = new int[this.verticesCount + 100]; + } + + int var4; + for(var4 = 0; var4 < this.verticesCount; ++var4) { + var2.verticesX[var4] = this.verticesX[var4]; + var2.verticesY[var4] = this.verticesY[var4]; + var2.verticesZ[var4] = this.verticesZ[var4]; + } + + if(var1) { + var2.faceAlphas = this.faceAlphas; + } else { + var2.faceAlphas = var3; + if(this.faceAlphas == null) { + for(var4 = 0; var4 < this.indicesCount; ++var4) { + var2.faceAlphas[var4] = 0; + } + } else { + for(var4 = 0; var4 < this.indicesCount; ++var4) { + var2.faceAlphas[var4] = this.faceAlphas[var4]; + } + } + } + + var2.indices1 = this.indices1; + var2.indices2 = this.indices2; + var2.indices3 = this.indices3; + var2.faceColors1 = this.faceColors1; + var2.faceColors2 = this.faceColors2; + var2.faceColors3 = this.faceColors3; + var2.faceRenderPriorities = this.faceRenderPriorities; + var2.__s = this.__s; + var2.faceTextures = this.faceTextures; + var2.__y = this.__y; + var2.__b = this.__b; + var2.__c = this.__c; + var2.__r = this.__r; + var2.vertexLabels = this.vertexLabels; + var2.faceLabelsAlpha = this.faceLabelsAlpha; + var2.isSingleTile = this.isSingleTile; + var2.resetBounds(); + return var2; + } + + @ObfuscatedName("o") + @Export("calculateBoundingBox") + void calculateBoundingBox(int var1) { + if(this.xMidOffset == -1) { + int var2 = 0; + int var3 = 0; + int var4 = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = Model_cosine[var1]; + int var9 = Model_sine[var1]; + + for(int var10 = 0; var10 < this.verticesCount; ++var10) { + int var11 = Rasterizer3D.method3039(this.verticesX[var10], this.verticesZ[var10], var8, var9); + int var12 = this.verticesY[var10]; + int var13 = Rasterizer3D.method3004(this.verticesX[var10], this.verticesZ[var10], var8, var9); + if(var11 < var2) { + var2 = var11; + } + + if(var11 > var5) { + var5 = var11; + } + + if(var12 < var3) { + var3 = var12; + } + + if(var12 > var6) { + var6 = var12; + } + + if(var13 < var4) { + var4 = var13; + } + + if(var13 > var7) { + var7 = var13; + } + } + + this.xMid = (var5 + var2) / 2; + this.yMid = (var6 + var3) / 2; + this.zMid = (var7 + var4) / 2; + this.xMidOffset = (var5 - var2 + 1) / 2; + this.yMidOffset = (var6 - var3 + 1) / 2; + this.zMidOffset = (var7 - var4 + 1) / 2; + if(this.xMidOffset < 32) { + this.xMidOffset = 32; + } + + if(this.zMidOffset < 32) { + this.zMidOffset = 32; + } + + if(this.isSingleTile) { + this.xMidOffset += 8; + this.zMidOffset += 8; + } + + } + } + + @ObfuscatedName("u") + @Export("calculateBoundsCylinder") + public void calculateBoundsCylinder() { + if(this.boundsType != 1) { + this.boundsType = 1; + super.height = 0; + this.bottomY = 0; + this.xzRadius = 0; + + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesX[var1]; + int var3 = this.verticesY[var1]; + int var4 = this.verticesZ[var1]; + if(-var3 > super.height) { + super.height = -var3; + } + + if(var3 > this.bottomY) { + this.bottomY = var3; + } + + int var5 = var2 * var2 + var4 * var4; + if(var5 > this.xzRadius) { + this.xzRadius = var5; + } + } + + this.xzRadius = (int)(Math.sqrt((double)this.xzRadius) + 0.99D); + this.radius = (int)(Math.sqrt((double)(this.xzRadius * this.xzRadius + super.height * super.height)) + 0.99D); + this.diameter = this.radius + (int)(Math.sqrt((double)(this.xzRadius * this.xzRadius + this.bottomY * this.bottomY)) + 0.99D); + } + } + + @ObfuscatedName("g") + @Export("__g_232") + void __g_232() { + if(this.boundsType != 2) { + this.boundsType = 2; + this.xzRadius = 0; + + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesX[var1]; + int var3 = this.verticesY[var1]; + int var4 = this.verticesZ[var1]; + int var5 = var2 * var2 + var4 * var4 + var3 * var3; + if(var5 > this.xzRadius) { + this.xzRadius = var5; + } + } + + this.xzRadius = (int)(Math.sqrt((double)this.xzRadius) + 0.99D); + this.radius = this.xzRadius; + this.diameter = this.xzRadius + this.xzRadius; + } + } + + @ObfuscatedName("l") + @Export("__l_233") + public int __l_233() { + this.calculateBoundsCylinder(); + return this.xzRadius; + } + + @ObfuscatedName("x") + @Export("resetBounds") + void resetBounds() { + this.boundsType = 0; + this.xMidOffset = -1; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Len;I)V" + ) + @Export("animate") + public void animate(Frames var1, int var2) { + if(this.vertexLabels != null) { + if(var2 != -1) { + Animation var3 = var1.frames[var2]; + Skeleton var4 = var3.skeleton; + Model_transformTempX = 0; + Model_transformTempY = 0; + Model_transformTempZ = 0; + + for(int var5 = 0; var5 < var3.transformCount; ++var5) { + int var6 = var3.transformSkeletonLabels[var5]; + this.transform(var4.transformTypes[var6], var4.labels[var6], var3.transformXs[var5], var3.transformYs[var5], var3.transformZs[var5]); + } + + this.resetBounds(); + } + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(Len;ILen;I[I)V" + ) + @Export("animate2") + public void animate2(Frames var1, int var2, Frames var3, int var4, int[] var5) { + if(var2 != -1) { + if(var5 != null && var4 != -1) { + Animation var6 = var1.frames[var2]; + Animation var7 = var3.frames[var4]; + Skeleton var8 = var6.skeleton; + Model_transformTempX = 0; + Model_transformTempY = 0; + Model_transformTempZ = 0; + byte var9 = 0; + int var13 = var9 + 1; + int var10 = var5[var9]; + + int var11; + int var12; + for(var11 = 0; var11 < var6.transformCount; ++var11) { + for(var12 = var6.transformSkeletonLabels[var11]; var12 > var10; var10 = var5[var13++]) { + ; + } + + if(var12 != var10 || var8.transformTypes[var12] == 0) { + this.transform(var8.transformTypes[var12], var8.labels[var12], var6.transformXs[var11], var6.transformYs[var11], var6.transformZs[var11]); + } + } + + Model_transformTempX = 0; + Model_transformTempY = 0; + Model_transformTempZ = 0; + var9 = 0; + var13 = var9 + 1; + var10 = var5[var9]; + + for(var11 = 0; var11 < var7.transformCount; ++var11) { + for(var12 = var7.transformSkeletonLabels[var11]; var12 > var10; var10 = var5[var13++]) { + ; + } + + if(var12 == var10 || var8.transformTypes[var12] == 0) { + this.transform(var8.transformTypes[var12], var8.labels[var12], var7.transformXs[var11], var7.transformYs[var11], var7.transformZs[var11]); + } + } + + this.resetBounds(); + } else { + this.animate(var1, var2); + } + } + } + + @ObfuscatedName("z") + @Export("transform") + void transform(int var1, int[] var2, int var3, int var4, int var5) { + int var6 = var2.length; + int var7; + int var8; + int var11; + int var12; + if(var1 == 0) { + var7 = 0; + Model_transformTempX = 0; + Model_transformTempY = 0; + Model_transformTempZ = 0; + + for(var8 = 0; var8 < var6; ++var8) { + int var9 = var2[var8]; + if(var9 < this.vertexLabels.length) { + int[] var10 = this.vertexLabels[var9]; + + for(var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + Model_transformTempX += this.verticesX[var12]; + Model_transformTempY += this.verticesY[var12]; + Model_transformTempZ += this.verticesZ[var12]; + ++var7; + } + } + } + + if(var7 > 0) { + Model_transformTempX = var3 + Model_transformTempX / var7; + Model_transformTempY = var4 + Model_transformTempY / var7; + Model_transformTempZ = var5 + Model_transformTempZ / var7; + } else { + Model_transformTempX = var3; + Model_transformTempY = var4; + Model_transformTempZ = var5; + } + + } else { + int[] var18; + int var19; + if(var1 == 1) { + for(var7 = 0; var7 < var6; ++var7) { + var8 = var2[var7]; + if(var8 < this.vertexLabels.length) { + var18 = this.vertexLabels[var8]; + + for(var19 = 0; var19 < var18.length; ++var19) { + var11 = var18[var19]; + this.verticesX[var11] += var3; + this.verticesY[var11] += var4; + this.verticesZ[var11] += var5; + } + } + } + + } else if(var1 == 2) { + for(var7 = 0; var7 < var6; ++var7) { + var8 = var2[var7]; + if(var8 < this.vertexLabels.length) { + var18 = this.vertexLabels[var8]; + + for(var19 = 0; var19 < var18.length; ++var19) { + var11 = var18[var19]; + this.verticesX[var11] -= Model_transformTempX; + this.verticesY[var11] -= Model_transformTempY; + this.verticesZ[var11] -= Model_transformTempZ; + var12 = (var3 & 255) * 8; + int var13 = (var4 & 255) * 8; + int var14 = (var5 & 255) * 8; + int var15; + int var16; + int var17; + if(var14 != 0) { + var15 = Model_sine[var14]; + var16 = Model_cosine[var14]; + var17 = var15 * this.verticesY[var11] + var16 * this.verticesX[var11] >> 16; + this.verticesY[var11] = var16 * this.verticesY[var11] - var15 * this.verticesX[var11] >> 16; + this.verticesX[var11] = var17; + } + + if(var12 != 0) { + var15 = Model_sine[var12]; + var16 = Model_cosine[var12]; + var17 = var16 * this.verticesY[var11] - var15 * this.verticesZ[var11] >> 16; + this.verticesZ[var11] = var15 * this.verticesY[var11] + var16 * this.verticesZ[var11] >> 16; + this.verticesY[var11] = var17; + } + + if(var13 != 0) { + var15 = Model_sine[var13]; + var16 = Model_cosine[var13]; + var17 = var15 * this.verticesZ[var11] + var16 * this.verticesX[var11] >> 16; + this.verticesZ[var11] = var16 * this.verticesZ[var11] - var15 * this.verticesX[var11] >> 16; + this.verticesX[var11] = var17; + } + + this.verticesX[var11] += Model_transformTempX; + this.verticesY[var11] += Model_transformTempY; + this.verticesZ[var11] += Model_transformTempZ; + } + } + } + + } else if(var1 == 3) { + for(var7 = 0; var7 < var6; ++var7) { + var8 = var2[var7]; + if(var8 < this.vertexLabels.length) { + var18 = this.vertexLabels[var8]; + + for(var19 = 0; var19 < var18.length; ++var19) { + var11 = var18[var19]; + this.verticesX[var11] -= Model_transformTempX; + this.verticesY[var11] -= Model_transformTempY; + this.verticesZ[var11] -= Model_transformTempZ; + this.verticesX[var11] = var3 * this.verticesX[var11] / 128; + this.verticesY[var11] = var4 * this.verticesY[var11] / 128; + this.verticesZ[var11] = var5 * this.verticesZ[var11] / 128; + this.verticesX[var11] += Model_transformTempX; + this.verticesY[var11] += Model_transformTempY; + this.verticesZ[var11] += Model_transformTempZ; + } + } + } + + } else if(var1 == 5) { + if(this.faceLabelsAlpha != null && this.faceAlphas != null) { + for(var7 = 0; var7 < var6; ++var7) { + var8 = var2[var7]; + if(var8 < this.faceLabelsAlpha.length) { + var18 = this.faceLabelsAlpha[var8]; + + for(var19 = 0; var19 < var18.length; ++var19) { + var11 = var18[var19]; + var12 = (this.faceAlphas[var11] & 255) + var3 * 8; + if(var12 < 0) { + var12 = 0; + } else if(var12 > 255) { + var12 = 255; + } + + this.faceAlphas[var11] = (byte)var12; + } + } + } + } + + } + } + } + + @ObfuscatedName("j") + @Export("rotateY90Ccw") + public void rotateY90Ccw() { + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesX[var1]; + this.verticesX[var1] = this.verticesZ[var1]; + this.verticesZ[var1] = -var2; + } + + this.resetBounds(); + } + + @ObfuscatedName("s") + @Export("rotateY180") + public void rotateY180() { + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + this.verticesX[var1] = -this.verticesX[var1]; + this.verticesZ[var1] = -this.verticesZ[var1]; + } + + this.resetBounds(); + } + + @ObfuscatedName("t") + @Export("rotateY270Ccw") + public void rotateY270Ccw() { + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesZ[var1]; + this.verticesZ[var1] = this.verticesX[var1]; + this.verticesX[var1] = -var2; + } + + this.resetBounds(); + } + + @ObfuscatedName("y") + @Export("rotateZ") + public void rotateZ(int var1) { + int var2 = Model_sine[var1]; + int var3 = Model_cosine[var1]; + + for(int var4 = 0; var4 < this.verticesCount; ++var4) { + int var5 = var3 * this.verticesY[var4] - var2 * this.verticesZ[var4] >> 16; + this.verticesZ[var4] = var2 * this.verticesY[var4] + var3 * this.verticesZ[var4] >> 16; + this.verticesY[var4] = var5; + } + + this.resetBounds(); + } + + @ObfuscatedName("h") + @Export("offsetBy") + public void offsetBy(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.verticesCount; ++var4) { + this.verticesX[var4] += var1; + this.verticesY[var4] += var2; + this.verticesZ[var4] += var3; + } + + this.resetBounds(); + } + + @ObfuscatedName("b") + @Export("scale") + public void scale(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.verticesCount; ++var4) { + this.verticesX[var4] = this.verticesX[var4] * var1 / 128; + this.verticesY[var4] = var2 * this.verticesY[var4] / 128; + this.verticesZ[var4] = var3 * this.verticesZ[var4] / 128; + } + + this.resetBounds(); + } + + @ObfuscatedName("c") + @Export("__c_234") + public final void __c_234(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + __du_aa[0] = -1; + if(this.boundsType != 2 && this.boundsType != 1) { + this.__g_232(); + } + + int var8 = Rasterizer3D.Rasterizer3D_clipMidX; + int var9 = Rasterizer3D.Rasterizer3D_clipMidY; + int var10 = Model_sine[var1]; + int var11 = Model_cosine[var1]; + int var12 = Model_sine[var2]; + int var13 = Model_cosine[var2]; + int var14 = Model_sine[var3]; + int var15 = Model_cosine[var3]; + int var16 = Model_sine[var4]; + int var17 = Model_cosine[var4]; + int var18 = var16 * var6 + var17 * var7 >> 16; + + for(int var19 = 0; var19 < this.verticesCount; ++var19) { + int var20 = this.verticesX[var19]; + int var21 = this.verticesY[var19]; + int var22 = this.verticesZ[var19]; + int var23; + if(var3 != 0) { + var23 = var21 * var14 + var20 * var15 >> 16; + var21 = var21 * var15 - var20 * var14 >> 16; + var20 = var23; + } + + if(var1 != 0) { + var23 = var21 * var11 - var22 * var10 >> 16; + var22 = var21 * var10 + var22 * var11 >> 16; + var21 = var23; + } + + if(var2 != 0) { + var23 = var22 * var12 + var20 * var13 >> 16; + var22 = var22 * var13 - var20 * var12 >> 16; + var20 = var23; + } + + var20 += var5; + var21 += var6; + var22 += var7; + var23 = var21 * var17 - var22 * var16 >> 16; + var22 = var21 * var16 + var22 * var17 >> 16; + __du_am[var19] = var22 - var18; + modelViewportXs[var19] = var20 * Rasterizer3D.Rasterizer3D_zoom / var22 + var8; + modelViewportYs[var19] = var23 * Rasterizer3D.Rasterizer3D_zoom / var22 + var9; + if(this.__h > 0) { + __du_an[var19] = var20; + __du_az[var19] = var23; + __du_au[var19] = var22; + } + } + + try { + this.draw0(false, false, false, 0L); + } catch (Exception var25) { + ; + } + + } + + @ObfuscatedName("p") + @Export("__p_235") + public final void __p_235(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + __du_aa[0] = -1; + if(this.boundsType != 2 && this.boundsType != 1) { + this.__g_232(); + } + + int var9 = Rasterizer3D.Rasterizer3D_clipMidX; + int var10 = Rasterizer3D.Rasterizer3D_clipMidY; + int var11 = Model_sine[var1]; + int var12 = Model_cosine[var1]; + int var13 = Model_sine[var2]; + int var14 = Model_cosine[var2]; + int var15 = Model_sine[var3]; + int var16 = Model_cosine[var3]; + int var17 = Model_sine[var4]; + int var18 = Model_cosine[var4]; + int var19 = var17 * var6 + var18 * var7 >> 16; + + for(int var20 = 0; var20 < this.verticesCount; ++var20) { + int var21 = this.verticesX[var20]; + int var22 = this.verticesY[var20]; + int var23 = this.verticesZ[var20]; + int var24; + if(var3 != 0) { + var24 = var22 * var15 + var21 * var16 >> 16; + var22 = var22 * var16 - var21 * var15 >> 16; + var21 = var24; + } + + if(var1 != 0) { + var24 = var22 * var12 - var23 * var11 >> 16; + var23 = var22 * var11 + var23 * var12 >> 16; + var22 = var24; + } + + if(var2 != 0) { + var24 = var23 * var13 + var21 * var14 >> 16; + var23 = var23 * var14 - var21 * var13 >> 16; + var21 = var24; + } + + var21 += var5; + var22 += var6; + var23 += var7; + var24 = var22 * var18 - var23 * var17 >> 16; + var23 = var22 * var17 + var23 * var18 >> 16; + __du_am[var20] = var23 - var19; + modelViewportXs[var20] = var9 + var21 * Rasterizer3D.Rasterizer3D_zoom / var8; + modelViewportYs[var20] = var10 + var24 * Rasterizer3D.Rasterizer3D_zoom / var8; + if(this.__h > 0) { + __du_an[var20] = var21; + __du_az[var20] = var24; + __du_au[var20] = var23; + } + } + + try { + this.draw0(false, false, false, 0L); + } catch (Exception var26) { + ; + } + + } + + @ObfuscatedName("v") + @Export("draw0") + final void draw0(boolean var1, boolean var2, boolean var3, long var4) { + if(this.diameter < 1600) { + int var6; + for(var6 = 0; var6 < this.diameter; ++var6) { + __du_aa[var6] = 0; + } + + var6 = var3?20:5; + + int var7; + int var8; + int var10; + int var11; + int var12; + int var13; + int var15; + int var16; + int var18; + int var27; + for(var7 = 0; var7 < this.indicesCount; ++var7) { + if(this.faceColors3[var7] != -2) { + var8 = this.indices1[var7]; + var27 = this.indices2[var7]; + var10 = this.indices3[var7]; + var11 = modelViewportXs[var8]; + var12 = modelViewportXs[var27]; + var13 = modelViewportXs[var10]; + int var14; + if(!var1 || var11 != -5000 && var12 != -5000 && var13 != -5000) { + if(var2 && NpcDefinition.method5164(modelViewportYs[var8], modelViewportYs[var27], modelViewportYs[var10], var11, var12, var13, var6)) { + Projectile.method2081(var4); + var2 = false; + } + + if((var11 - var12) * (modelViewportYs[var10] - modelViewportYs[var27]) - (var13 - var12) * (modelViewportYs[var8] - modelViewportYs[var27]) > 0) { + __du_ad[var7] = false; + if(var11 >= 0 && var12 >= 0 && var13 >= 0 && var11 <= Rasterizer3D.Rasterizer3D_clipWidth && var12 <= Rasterizer3D.Rasterizer3D_clipWidth && var13 <= Rasterizer3D.Rasterizer3D_clipWidth) { + __du_at[var7] = false; + } else { + __du_at[var7] = true; + } + + var14 = (__du_am[var8] + __du_am[var27] + __du_am[var10]) / 3 + this.radius; + __du_ax[var14][__du_aa[var14]++] = var7; + } + } else { + var14 = __du_an[var8]; + var15 = __du_an[var27]; + var16 = __du_an[var10]; + int var17 = __du_az[var8]; + var18 = __du_az[var27]; + int var19 = __du_az[var10]; + int var20 = __du_au[var8]; + int var21 = __du_au[var27]; + int var22 = __du_au[var10]; + var14 -= var15; + var16 -= var15; + var17 -= var18; + var19 -= var18; + var20 -= var21; + var22 -= var21; + int var23 = var17 * var22 - var20 * var19; + int var24 = var20 * var16 - var14 * var22; + int var25 = var14 * var19 - var17 * var16; + if(var15 * var23 + var18 * var24 + var21 * var25 > 0) { + __du_ad[var7] = true; + int var26 = (__du_am[var8] + __du_am[var27] + __du_am[var10]) / 3 + this.radius; + __du_ax[var26][__du_aa[var26]++] = var7; + } + } + } + } + + int[] var9; + if(this.faceRenderPriorities == null) { + for(var7 = this.diameter - 1; var7 >= 0; --var7) { + var8 = __du_aa[var7]; + if(var8 > 0) { + var9 = __du_ax[var7]; + + for(var10 = 0; var10 < var8; ++var10) { + this.__ag_236(var9[var10]); + } + } + } + + } else { + for(var7 = 0; var7 < 12; ++var7) { + __du_af[var7] = 0; + __du_bs[var7] = 0; + } + + for(var7 = this.diameter - 1; var7 >= 0; --var7) { + var8 = __du_aa[var7]; + if(var8 > 0) { + var9 = __du_ax[var7]; + + for(var10 = 0; var10 < var8; ++var10) { + var11 = var9[var10]; + byte var31 = this.faceRenderPriorities[var11]; + var13 = __du_af[var31]++; + __du_ai[var31][var13] = var11; + if(var31 < 10) { + __du_bs[var31] += var7; + } else if(var31 == 10) { + __du_ba[var13] = var7; + } else { + __du_bb[var13] = var7; + } + } + } + } + + var7 = 0; + if(__du_af[1] > 0 || __du_af[2] > 0) { + var7 = (__du_bs[1] + __du_bs[2]) / (__du_af[1] + __du_af[2]); + } + + var8 = 0; + if(__du_af[3] > 0 || __du_af[4] > 0) { + var8 = (__du_bs[3] + __du_bs[4]) / (__du_af[3] + __du_af[4]); + } + + var27 = 0; + if(__du_af[6] > 0 || __du_af[8] > 0) { + var27 = (__du_bs[8] + __du_bs[6]) / (__du_af[8] + __du_af[6]); + } + + var11 = 0; + var12 = __du_af[10]; + int[] var28 = __du_ai[10]; + int[] var29 = __du_ba; + if(var11 == var12) { + var11 = 0; + var12 = __du_af[11]; + var28 = __du_ai[11]; + var29 = __du_bb; + } + + if(var11 < var12) { + var10 = var29[var11]; + } else { + var10 = -1000; + } + + for(var15 = 0; var15 < 10; ++var15) { + while(var15 == 0 && var10 > var7) { + this.__ag_236(var28[var11++]); + if(var11 == var12 && var28 != __du_ai[11]) { + var11 = 0; + var12 = __du_af[11]; + var28 = __du_ai[11]; + var29 = __du_bb; + } + + if(var11 < var12) { + var10 = var29[var11]; + } else { + var10 = -1000; + } + } + + while(var15 == 3 && var10 > var8) { + this.__ag_236(var28[var11++]); + if(var11 == var12 && var28 != __du_ai[11]) { + var11 = 0; + var12 = __du_af[11]; + var28 = __du_ai[11]; + var29 = __du_bb; + } + + if(var11 < var12) { + var10 = var29[var11]; + } else { + var10 = -1000; + } + } + + while(var15 == 5 && var10 > var27) { + this.__ag_236(var28[var11++]); + if(var11 == var12 && var28 != __du_ai[11]) { + var11 = 0; + var12 = __du_af[11]; + var28 = __du_ai[11]; + var29 = __du_bb; + } + + if(var11 < var12) { + var10 = var29[var11]; + } else { + var10 = -1000; + } + } + + var16 = __du_af[var15]; + int[] var30 = __du_ai[var15]; + + for(var18 = 0; var18 < var16; ++var18) { + this.__ag_236(var30[var18]); + } + } + + while(var10 != -1000) { + this.__ag_236(var28[var11++]); + if(var11 == var12 && var28 != __du_ai[11]) { + var11 = 0; + var28 = __du_ai[11]; + var12 = __du_af[11]; + var29 = __du_bb; + } + + if(var11 < var12) { + var10 = var29[var11]; + } else { + var10 = -1000; + } + } + + } + } + } + + @ObfuscatedName("ag") + @Export("__ag_236") + final void __ag_236(int var1) { + if(__du_ad[var1]) { + this.__aq_237(var1); + } else { + int var2 = this.indices1[var1]; + int var3 = this.indices2[var1]; + int var4 = this.indices3[var1]; + Rasterizer3D.__et_m = __du_at[var1]; + if(this.faceAlphas == null) { + Rasterizer3D.Rasterizer3D_alpha = 0; + } else { + Rasterizer3D.Rasterizer3D_alpha = this.faceAlphas[var1] & 255; + } + + if(this.faceTextures != null && this.faceTextures[var1] != -1) { + int var5; + int var6; + int var7; + if(this.__s != null && this.__s[var1] != -1) { + int var8 = this.__s[var1] & 255; + var5 = this.__b[var8]; + var6 = this.__c[var8]; + var7 = this.__r[var8]; + } else { + var5 = var2; + var6 = var3; + var7 = var4; + } + + if(this.faceColors3[var1] == -1) { + Rasterizer3D.method2986(modelViewportYs[var2], modelViewportYs[var3], modelViewportYs[var4], modelViewportXs[var2], modelViewportXs[var3], modelViewportXs[var4], this.faceColors1[var1], this.faceColors1[var1], this.faceColors1[var1], __du_an[var5], __du_an[var6], __du_an[var7], __du_az[var5], __du_az[var6], __du_az[var7], __du_au[var5], __du_au[var6], __du_au[var7], this.faceTextures[var1]); + } else { + Rasterizer3D.method2986(modelViewportYs[var2], modelViewportYs[var3], modelViewportYs[var4], modelViewportXs[var2], modelViewportXs[var3], modelViewportXs[var4], this.faceColors1[var1], this.faceColors2[var1], this.faceColors3[var1], __du_an[var5], __du_an[var6], __du_an[var7], __du_az[var5], __du_az[var6], __du_az[var7], __du_au[var5], __du_au[var6], __du_au[var7], this.faceTextures[var1]); + } + } else if(this.faceColors3[var1] == -1) { + Rasterizer3D.method3020(modelViewportYs[var2], modelViewportYs[var3], modelViewportYs[var4], modelViewportXs[var2], modelViewportXs[var3], modelViewportXs[var4], __du_br[this.faceColors1[var1]]); + } else { + Rasterizer3D.method3037(modelViewportYs[var2], modelViewportYs[var3], modelViewportYs[var4], modelViewportXs[var2], modelViewportXs[var3], modelViewportXs[var4], this.faceColors1[var1], this.faceColors2[var1], this.faceColors3[var1]); + } + + } + } + + @ObfuscatedName("aq") + @Export("__aq_237") + final void __aq_237(int var1) { + int var2 = Rasterizer3D.Rasterizer3D_clipMidX; + int var3 = Rasterizer3D.Rasterizer3D_clipMidY; + int var4 = 0; + int var5 = this.indices1[var1]; + int var6 = this.indices2[var1]; + int var7 = this.indices3[var1]; + int var8 = __du_au[var5]; + int var9 = __du_au[var6]; + int var10 = __du_au[var7]; + if(this.faceAlphas == null) { + Rasterizer3D.Rasterizer3D_alpha = 0; + } else { + Rasterizer3D.Rasterizer3D_alpha = this.faceAlphas[var1] & 255; + } + + int var11; + int var12; + int var13; + int var14; + if(var8 >= 50) { + __du_bq[var4] = modelViewportXs[var5]; + __du_bn[var4] = modelViewportYs[var5]; + __du_bk[var4++] = this.faceColors1[var1]; + } else { + var11 = __du_an[var5]; + var12 = __du_az[var5]; + var13 = this.faceColors1[var1]; + if(var10 >= 50) { + var14 = __du_bj[var10 - var8] * (50 - var8); + __du_bq[var4] = var2 + Rasterizer3D.Rasterizer3D_zoom * (var11 + ((__du_an[var7] - var11) * var14 >> 16)) / 50; + __du_bn[var4] = var3 + Rasterizer3D.Rasterizer3D_zoom * (var12 + ((__du_az[var7] - var12) * var14 >> 16)) / 50; + __du_bk[var4++] = var13 + ((this.faceColors3[var1] - var13) * var14 >> 16); + } + + if(var9 >= 50) { + var14 = __du_bj[var9 - var8] * (50 - var8); + __du_bq[var4] = var2 + Rasterizer3D.Rasterizer3D_zoom * (var11 + ((__du_an[var6] - var11) * var14 >> 16)) / 50; + __du_bn[var4] = var3 + Rasterizer3D.Rasterizer3D_zoom * (var12 + ((__du_az[var6] - var12) * var14 >> 16)) / 50; + __du_bk[var4++] = var13 + ((this.faceColors2[var1] - var13) * var14 >> 16); + } + } + + if(var9 >= 50) { + __du_bq[var4] = modelViewportXs[var6]; + __du_bn[var4] = modelViewportYs[var6]; + __du_bk[var4++] = this.faceColors2[var1]; + } else { + var11 = __du_an[var6]; + var12 = __du_az[var6]; + var13 = this.faceColors2[var1]; + if(var8 >= 50) { + var14 = __du_bj[var8 - var9] * (50 - var9); + __du_bq[var4] = var2 + Rasterizer3D.Rasterizer3D_zoom * (var11 + ((__du_an[var5] - var11) * var14 >> 16)) / 50; + __du_bn[var4] = var3 + Rasterizer3D.Rasterizer3D_zoom * (var12 + ((__du_az[var5] - var12) * var14 >> 16)) / 50; + __du_bk[var4++] = var13 + ((this.faceColors1[var1] - var13) * var14 >> 16); + } + + if(var10 >= 50) { + var14 = __du_bj[var10 - var9] * (50 - var9); + __du_bq[var4] = var2 + Rasterizer3D.Rasterizer3D_zoom * (var11 + ((__du_an[var7] - var11) * var14 >> 16)) / 50; + __du_bn[var4] = var3 + Rasterizer3D.Rasterizer3D_zoom * (var12 + ((__du_az[var7] - var12) * var14 >> 16)) / 50; + __du_bk[var4++] = var13 + ((this.faceColors3[var1] - var13) * var14 >> 16); + } + } + + if(var10 >= 50) { + __du_bq[var4] = modelViewportXs[var7]; + __du_bn[var4] = modelViewportYs[var7]; + __du_bk[var4++] = this.faceColors3[var1]; + } else { + var11 = __du_an[var7]; + var12 = __du_az[var7]; + var13 = this.faceColors3[var1]; + if(var9 >= 50) { + var14 = __du_bj[var9 - var10] * (50 - var10); + __du_bq[var4] = var2 + Rasterizer3D.Rasterizer3D_zoom * (var11 + ((__du_an[var6] - var11) * var14 >> 16)) / 50; + __du_bn[var4] = var3 + Rasterizer3D.Rasterizer3D_zoom * (var12 + ((__du_az[var6] - var12) * var14 >> 16)) / 50; + __du_bk[var4++] = var13 + ((this.faceColors2[var1] - var13) * var14 >> 16); + } + + if(var8 >= 50) { + var14 = __du_bj[var8 - var10] * (50 - var10); + __du_bq[var4] = var2 + Rasterizer3D.Rasterizer3D_zoom * (var11 + ((__du_an[var5] - var11) * var14 >> 16)) / 50; + __du_bn[var4] = var3 + Rasterizer3D.Rasterizer3D_zoom * (var12 + ((__du_az[var5] - var12) * var14 >> 16)) / 50; + __du_bk[var4++] = var13 + ((this.faceColors1[var1] - var13) * var14 >> 16); + } + } + + var11 = __du_bq[0]; + var12 = __du_bq[1]; + var13 = __du_bq[2]; + var14 = __du_bn[0]; + int var15 = __du_bn[1]; + int var16 = __du_bn[2]; + Rasterizer3D.__et_m = false; + int var17; + int var18; + int var19; + int var20; + if(var4 == 3) { + if(var11 < 0 || var12 < 0 || var13 < 0 || var11 > Rasterizer3D.Rasterizer3D_clipWidth || var12 > Rasterizer3D.Rasterizer3D_clipWidth || var13 > Rasterizer3D.Rasterizer3D_clipWidth) { + Rasterizer3D.__et_m = true; + } + + if(this.faceTextures != null && this.faceTextures[var1] != -1) { + if(this.__s != null && this.__s[var1] != -1) { + var20 = this.__s[var1] & 255; + var17 = this.__b[var20]; + var18 = this.__c[var20]; + var19 = this.__r[var20]; + } else { + var17 = var5; + var18 = var6; + var19 = var7; + } + + if(this.faceColors3[var1] == -1) { + Rasterizer3D.method2986(var14, var15, var16, var11, var12, var13, this.faceColors1[var1], this.faceColors1[var1], this.faceColors1[var1], __du_an[var17], __du_an[var18], __du_an[var19], __du_az[var17], __du_az[var18], __du_az[var19], __du_au[var17], __du_au[var18], __du_au[var19], this.faceTextures[var1]); + } else { + Rasterizer3D.method2986(var14, var15, var16, var11, var12, var13, __du_bk[0], __du_bk[1], __du_bk[2], __du_an[var17], __du_an[var18], __du_an[var19], __du_az[var17], __du_az[var18], __du_az[var19], __du_au[var17], __du_au[var18], __du_au[var19], this.faceTextures[var1]); + } + } else if(this.faceColors3[var1] == -1) { + Rasterizer3D.method3020(var14, var15, var16, var11, var12, var13, __du_br[this.faceColors1[var1]]); + } else { + Rasterizer3D.method3037(var14, var15, var16, var11, var12, var13, __du_bk[0], __du_bk[1], __du_bk[2]); + } + } + + if(var4 == 4) { + if(var11 < 0 || var12 < 0 || var13 < 0 || var11 > Rasterizer3D.Rasterizer3D_clipWidth || var12 > Rasterizer3D.Rasterizer3D_clipWidth || var13 > Rasterizer3D.Rasterizer3D_clipWidth || __du_bq[3] < 0 || __du_bq[3] > Rasterizer3D.Rasterizer3D_clipWidth) { + Rasterizer3D.__et_m = true; + } + + if(this.faceTextures != null && this.faceTextures[var1] != -1) { + if(this.__s != null && this.__s[var1] != -1) { + var20 = this.__s[var1] & 255; + var17 = this.__b[var20]; + var18 = this.__c[var20]; + var19 = this.__r[var20]; + } else { + var17 = var5; + var18 = var6; + var19 = var7; + } + + short var21 = this.faceTextures[var1]; + if(this.faceColors3[var1] == -1) { + Rasterizer3D.method2986(var14, var15, var16, var11, var12, var13, this.faceColors1[var1], this.faceColors1[var1], this.faceColors1[var1], __du_an[var17], __du_an[var18], __du_an[var19], __du_az[var17], __du_az[var18], __du_az[var19], __du_au[var17], __du_au[var18], __du_au[var19], var21); + Rasterizer3D.method2986(var14, var16, __du_bn[3], var11, var13, __du_bq[3], this.faceColors1[var1], this.faceColors1[var1], this.faceColors1[var1], __du_an[var17], __du_an[var18], __du_an[var19], __du_az[var17], __du_az[var18], __du_az[var19], __du_au[var17], __du_au[var18], __du_au[var19], var21); + } else { + Rasterizer3D.method2986(var14, var15, var16, var11, var12, var13, __du_bk[0], __du_bk[1], __du_bk[2], __du_an[var17], __du_an[var18], __du_an[var19], __du_az[var17], __du_az[var18], __du_az[var19], __du_au[var17], __du_au[var18], __du_au[var19], var21); + Rasterizer3D.method2986(var14, var16, __du_bn[3], var11, var13, __du_bq[3], __du_bk[0], __du_bk[2], __du_bk[3], __du_an[var17], __du_an[var18], __du_an[var19], __du_az[var17], __du_az[var18], __du_az[var19], __du_au[var17], __du_au[var18], __du_au[var19], var21); + } + } else if(this.faceColors3[var1] == -1) { + var17 = __du_br[this.faceColors1[var1]]; + Rasterizer3D.method3020(var14, var15, var16, var11, var12, var13, var17); + Rasterizer3D.method3020(var14, var16, __du_bn[3], var11, var13, __du_bq[3], var17); + } else { + Rasterizer3D.method3037(var14, var15, var16, var11, var12, var13, __du_bk[0], __du_bk[1], __du_bk[2]); + Rasterizer3D.method3037(var14, var16, __du_bn[3], var11, var13, __du_bq[3], __du_bk[0], __du_bk[2], __du_bk[3]); + } + } + + } + + @ObfuscatedName("cy") + void renderDraw(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9) { + __du_aa[0] = -1; + if(this.boundsType != 1) { + this.calculateBoundsCylinder(); + } + + this.calculateBoundingBox(var1); + int var11 = var5 * var8 - var4 * var6 >> 16; + int var12 = var2 * var7 + var3 * var11 >> 16; + int var13 = var3 * this.xzRadius >> 16; + int var14 = var12 + var13; + if(var14 > 50 && var12 < 3500) { + int var15 = var8 * var4 + var5 * var6 >> 16; + int var16 = (var15 - this.xzRadius) * Rasterizer3D.Rasterizer3D_zoom; + if(var16 / var14 < Rasterizer3D.Rasterizer3D_clipMidX2) { + int var17 = (var15 + this.xzRadius) * Rasterizer3D.Rasterizer3D_zoom; + if(var17 / var14 > Rasterizer3D.Rasterizer3D_clipNegativeMidX) { + int var18 = var3 * var7 - var11 * var2 >> 16; + int var19 = var2 * this.xzRadius >> 16; + int var20 = (var18 + var19) * Rasterizer3D.Rasterizer3D_zoom; + if(var20 / var14 > Rasterizer3D.Rasterizer3D_clipNegativeMidY) { + int var21 = (var3 * super.height >> 16) + var19; + int var22 = (var18 - var21) * Rasterizer3D.Rasterizer3D_zoom; + if(var22 / var14 < Rasterizer3D.Rasterizer3D_clipMidY2) { + int var23 = var13 + (var2 * super.height >> 16); + boolean var24 = false; + boolean var25 = false; + if(var12 - var23 <= 50) { + var25 = true; + } + + boolean var26 = var25 || this.__h > 0; + int var27 = ViewportMouse.ViewportMouse_x; + int var29 = ViewportMouse.ViewportMouse_y; + boolean var31 = ViewportMouse.ViewportMouse_isInViewport; + boolean var34 = 0L != var9; + boolean var35; + if(var34) { + var35 = (int)(var9 >>> 16 & 1L) == 1; + var34 = !var35; + } + + var35 = false; + int var37; + int var38; + int var39; + if(var34 && var31) { + boolean var36 = false; + if(__du_bx) { + var36 = Decimator.method2491(this, var6, var7, var8); + } else { + var37 = var12 - var13; + if(var37 <= 50) { + var37 = 50; + } + + if(var15 > 0) { + var16 /= var14; + var17 /= var37; + } else { + var17 /= var14; + var16 /= var37; + } + + if(var18 > 0) { + var22 /= var14; + var20 /= var37; + } else { + var20 /= var14; + var22 /= var37; + } + + var38 = var27 - Rasterizer3D.Rasterizer3D_clipMidX; + var39 = var29 - Rasterizer3D.Rasterizer3D_clipMidY; + if(var38 > var16 && var38 < var17 && var39 > var22 && var39 < var20) { + var36 = true; + } + } + + if(var36) { + if(this.isSingleTile) { + Projectile.method2081(var9); + } else { + var35 = true; + } + } + } + + int var47 = Rasterizer3D.Rasterizer3D_clipMidX; + var37 = Rasterizer3D.Rasterizer3D_clipMidY; + var38 = 0; + var39 = 0; + if(var1 != 0) { + var38 = Model_sine[var1]; + var39 = Model_cosine[var1]; + } + + for(int var40 = 0; var40 < this.verticesCount; ++var40) { + int var41 = this.verticesX[var40]; + int var42 = this.verticesY[var40]; + int var43 = this.verticesZ[var40]; + int var44; + if(var1 != 0) { + var44 = var43 * var38 + var41 * var39 >> 16; + var43 = var43 * var39 - var41 * var38 >> 16; + var41 = var44; + } + + var41 += var6; + var42 += var7; + var43 += var8; + var44 = var43 * var4 + var5 * var41 >> 16; + var43 = var5 * var43 - var41 * var4 >> 16; + var41 = var44; + var44 = var3 * var42 - var43 * var2 >> 16; + var43 = var42 * var2 + var3 * var43 >> 16; + __du_am[var40] = var43 - var12; + if(var43 >= 50) { + modelViewportXs[var40] = var41 * Rasterizer3D.Rasterizer3D_zoom / var43 + var47; + modelViewportYs[var40] = var44 * Rasterizer3D.Rasterizer3D_zoom / var43 + var37; + } else { + modelViewportXs[var40] = -5000; + var24 = true; + } + + if(var26) { + __du_an[var40] = var41; + __du_az[var40] = var44; + __du_au[var40] = var43; + } + } + + try { + this.draw0(var24, var35, this.isSingleTile, var9); + } catch (Exception var46) { + ; + } + + } + } + } + } + } + } +} diff --git a/rs-client/src/main/java/ModelData.java b/rs-client/src/main/java/ModelData.java new file mode 100644 index 0000000000..22bf1387c8 --- /dev/null +++ b/rs-client/src/main/java/ModelData.java @@ -0,0 +1,1760 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dw") +@Implements("ModelData") +public class ModelData extends Entity { + @ObfuscatedName("aw") + @Export("__dw_aw") + static int[] __dw_aw; + @ObfuscatedName("al") + @Export("__dw_al") + static int[] __dw_al; + @ObfuscatedName("ab") + @Export("__dw_ab") + static int __dw_ab; + @ObfuscatedName("ae") + @Export("ModelData_sine") + static int[] ModelData_sine; + @ObfuscatedName("at") + @Export("ModelData_cosine") + static int[] ModelData_cosine; + @ObfuscatedName("m") + @Export("verticesCount") + int verticesCount; + @ObfuscatedName("f") + @Export("verticesX") + int[] verticesX; + @ObfuscatedName("q") + @Export("verticesY") + int[] verticesY; + @ObfuscatedName("w") + @Export("verticesZ") + int[] verticesZ; + @ObfuscatedName("o") + @Export("faceCount") + int faceCount; + @ObfuscatedName("u") + @Export("indices1") + int[] indices1; + @ObfuscatedName("g") + @Export("indices2") + int[] indices2; + @ObfuscatedName("l") + @Export("indices3") + int[] indices3; + @ObfuscatedName("e") + @Export("__e") + byte[] __e; + @ObfuscatedName("x") + @Export("__x") + byte[] __x; + @ObfuscatedName("d") + @Export("faceAlphas") + byte[] faceAlphas; + @ObfuscatedName("k") + @Export("textureCoords") + byte[] textureCoords; + @ObfuscatedName("n") + @Export("faceColors") + short[] faceColors; + @ObfuscatedName("i") + @Export("faceTextures") + short[] faceTextures; + @ObfuscatedName("a") + @Export("__a") + byte __a; + @ObfuscatedName("z") + @Export("__z") + int __z; + @ObfuscatedName("j") + @Export("textureRenderTypes") + byte[] textureRenderTypes; + @ObfuscatedName("s") + @Export("texTriangleX") + short[] texTriangleX; + @ObfuscatedName("t") + @Export("texTriangleY") + short[] texTriangleY; + @ObfuscatedName("y") + @Export("texTriangleZ") + short[] texTriangleZ; + @ObfuscatedName("h") + @Export("__h") + int[] __h; + @ObfuscatedName("b") + @Export("__b") + int[] __b; + @ObfuscatedName("c") + @Export("vertexLabels") + int[][] vertexLabels; + @ObfuscatedName("r") + @Export("faceLabelsAlpha") + int[][] faceLabelsAlpha; + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "[Lel;" + ) + @Export("faceNormals") + FaceNormal[] faceNormals; + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "[Ldq;" + ) + @Export("__v") + VertexNormal[] __v; + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "[Ldq;" + ) + @Export("__ag") + VertexNormal[] __ag; + @ObfuscatedName("aq") + @Export("__aq") + public short __aq; + @ObfuscatedName("aj") + @Export("__aj") + public short __aj; + @ObfuscatedName("av") + @Export("isBoundsCalculated") + boolean isBoundsCalculated; + @ObfuscatedName("ar") + @Export("__ar") + int __ar; + @ObfuscatedName("ac") + @Export("__ac") + int __ac; + @ObfuscatedName("ay") + @Export("__ay") + int __ay; + @ObfuscatedName("ah") + @Export("__ah") + int __ah; + @ObfuscatedName("ak") + @Export("__ak") + int __ak; + + static { + __dw_aw = new int[10000]; + __dw_al = new int[10000]; + __dw_ab = 0; + ModelData_sine = Rasterizer3D.Rasterizer3D_sine; + ModelData_cosine = Rasterizer3D.Rasterizer3D_cosine; + } + + ModelData() { + this.verticesCount = 0; + this.faceCount = 0; + this.__a = 0; + this.isBoundsCalculated = false; + } + + @ObfuscatedSignature( + signature = "([Ldw;I)V" + ) + public ModelData(ModelData[] var1, int var2) { + this.verticesCount = 0; + this.faceCount = 0; + this.__a = 0; + this.isBoundsCalculated = false; + boolean var3 = false; + boolean var4 = false; + boolean var5 = false; + boolean var6 = false; + boolean var7 = false; + boolean var8 = false; + this.verticesCount = 0; + this.faceCount = 0; + this.__z = 0; + this.__a = -1; + + int var9; + ModelData var10; + for(var9 = 0; var9 < var2; ++var9) { + var10 = var1[var9]; + if(var10 != null) { + this.verticesCount += var10.verticesCount; + this.faceCount += var10.faceCount; + this.__z += var10.__z; + if(var10.__x != null) { + var4 = true; + } else { + if(this.__a == -1) { + this.__a = var10.__a; + } + + if(this.__a != var10.__a) { + var4 = true; + } + } + + var3 |= var10.__e != null; + var5 |= var10.faceAlphas != null; + var6 |= var10.__b != null; + var7 |= var10.faceTextures != null; + var8 |= var10.textureCoords != null; + } + } + + this.verticesX = new int[this.verticesCount]; + this.verticesY = new int[this.verticesCount]; + this.verticesZ = new int[this.verticesCount]; + this.__h = new int[this.verticesCount]; + this.indices1 = new int[this.faceCount]; + this.indices2 = new int[this.faceCount]; + this.indices3 = new int[this.faceCount]; + if(var3) { + this.__e = new byte[this.faceCount]; + } + + if(var4) { + this.__x = new byte[this.faceCount]; + } + + if(var5) { + this.faceAlphas = new byte[this.faceCount]; + } + + if(var6) { + this.__b = new int[this.faceCount]; + } + + if(var7) { + this.faceTextures = new short[this.faceCount]; + } + + if(var8) { + this.textureCoords = new byte[this.faceCount]; + } + + this.faceColors = new short[this.faceCount]; + if(this.__z > 0) { + this.textureRenderTypes = new byte[this.__z]; + this.texTriangleX = new short[this.__z]; + this.texTriangleY = new short[this.__z]; + this.texTriangleZ = new short[this.__z]; + } + + this.verticesCount = 0; + this.faceCount = 0; + this.__z = 0; + + for(var9 = 0; var9 < var2; ++var9) { + var10 = var1[var9]; + if(var10 != null) { + int var11; + for(var11 = 0; var11 < var10.faceCount; ++var11) { + if(var3 && var10.__e != null) { + this.__e[this.faceCount] = var10.__e[var11]; + } + + if(var4) { + if(var10.__x != null) { + this.__x[this.faceCount] = var10.__x[var11]; + } else { + this.__x[this.faceCount] = var10.__a; + } + } + + if(var5 && var10.faceAlphas != null) { + this.faceAlphas[this.faceCount] = var10.faceAlphas[var11]; + } + + if(var6 && var10.__b != null) { + this.__b[this.faceCount] = var10.__b[var11]; + } + + if(var7) { + if(var10.faceTextures != null) { + this.faceTextures[this.faceCount] = var10.faceTextures[var11]; + } else { + this.faceTextures[this.faceCount] = -1; + } + } + + if(var8) { + if(var10.textureCoords != null && var10.textureCoords[var11] != -1) { + this.textureCoords[this.faceCount] = (byte)(this.__z + var10.textureCoords[var11]); + } else { + this.textureCoords[this.faceCount] = -1; + } + } + + this.faceColors[this.faceCount] = var10.faceColors[var11]; + this.indices1[this.faceCount] = this.__w_217(var10, var10.indices1[var11]); + this.indices2[this.faceCount] = this.__w_217(var10, var10.indices2[var11]); + this.indices3[this.faceCount] = this.__w_217(var10, var10.indices3[var11]); + ++this.faceCount; + } + + for(var11 = 0; var11 < var10.__z; ++var11) { + byte var12 = this.textureRenderTypes[this.__z] = var10.textureRenderTypes[var11]; + if(var12 == 0) { + this.texTriangleX[this.__z] = (short)this.__w_217(var10, var10.texTriangleX[var11]); + this.texTriangleY[this.__z] = (short)this.__w_217(var10, var10.texTriangleY[var11]); + this.texTriangleZ[this.__z] = (short)this.__w_217(var10, var10.texTriangleZ[var11]); + } + + ++this.__z; + } + } + } + + } + + ModelData(byte[] var1) { + this.verticesCount = 0; + this.faceCount = 0; + this.__a = 0; + this.isBoundsCalculated = false; + if(var1[var1.length - 1] == -1 && var1[var1.length - 2] == -1) { + this.__f_215(var1); + } else { + this.__q_216(var1); + } + + } + + @ObfuscatedSignature( + signature = "(Ldw;ZZZZ)V", + garbageValue = "1" + ) + public ModelData(ModelData var1, boolean var2, boolean var3, boolean var4, boolean var5) { + this.verticesCount = 0; + this.faceCount = 0; + this.__a = 0; + this.isBoundsCalculated = false; + this.verticesCount = var1.verticesCount; + this.faceCount = var1.faceCount; + this.__z = var1.__z; + int var6; + if(var2) { + this.verticesX = var1.verticesX; + this.verticesY = var1.verticesY; + this.verticesZ = var1.verticesZ; + } else { + this.verticesX = new int[this.verticesCount]; + this.verticesY = new int[this.verticesCount]; + this.verticesZ = new int[this.verticesCount]; + + for(var6 = 0; var6 < this.verticesCount; ++var6) { + this.verticesX[var6] = var1.verticesX[var6]; + this.verticesY[var6] = var1.verticesY[var6]; + this.verticesZ[var6] = var1.verticesZ[var6]; + } + } + + if(var3) { + this.faceColors = var1.faceColors; + } else { + this.faceColors = new short[this.faceCount]; + + for(var6 = 0; var6 < this.faceCount; ++var6) { + this.faceColors[var6] = var1.faceColors[var6]; + } + } + + if(!var4 && var1.faceTextures != null) { + this.faceTextures = new short[this.faceCount]; + + for(var6 = 0; var6 < this.faceCount; ++var6) { + this.faceTextures[var6] = var1.faceTextures[var6]; + } + } else { + this.faceTextures = var1.faceTextures; + } + + this.faceAlphas = var1.faceAlphas; + this.indices1 = var1.indices1; + this.indices2 = var1.indices2; + this.indices3 = var1.indices3; + this.__e = var1.__e; + this.__x = var1.__x; + this.textureCoords = var1.textureCoords; + this.__a = var1.__a; + this.textureRenderTypes = var1.textureRenderTypes; + this.texTriangleX = var1.texTriangleX; + this.texTriangleY = var1.texTriangleY; + this.texTriangleZ = var1.texTriangleZ; + this.__h = var1.__h; + this.__b = var1.__b; + this.vertexLabels = var1.vertexLabels; + this.faceLabelsAlpha = var1.faceLabelsAlpha; + this.__v = var1.__v; + this.faceNormals = var1.faceNormals; + this.__ag = var1.__ag; + this.__aq = var1.__aq; + this.__aj = var1.__aj; + } + + @ObfuscatedName("f") + @Export("__f_215") + void __f_215(byte[] var1) { + Buffer var2 = new Buffer(var1); + Buffer var3 = new Buffer(var1); + Buffer var4 = new Buffer(var1); + Buffer var5 = new Buffer(var1); + Buffer var6 = new Buffer(var1); + Buffer var7 = new Buffer(var1); + Buffer var8 = new Buffer(var1); + var2.index = var1.length - 23; + int var9 = var2.__ag_302(); + int var10 = var2.__ag_302(); + int var11 = var2.readUnsignedByte(); + int var12 = var2.readUnsignedByte(); + int var13 = var2.readUnsignedByte(); + int var14 = var2.readUnsignedByte(); + int var15 = var2.readUnsignedByte(); + int var16 = var2.readUnsignedByte(); + int var17 = var2.readUnsignedByte(); + int var18 = var2.__ag_302(); + int var19 = var2.__ag_302(); + int var20 = var2.__ag_302(); + int var21 = var2.__ag_302(); + int var22 = var2.__ag_302(); + int var23 = 0; + int var24 = 0; + int var25 = 0; + int var26; + if(var11 > 0) { + this.textureRenderTypes = new byte[var11]; + var2.index = 0; + + for(var26 = 0; var26 < var11; ++var26) { + byte var27 = this.textureRenderTypes[var26] = var2.readByte(); + if(var27 == 0) { + ++var23; + } + + if(var27 >= 1 && var27 <= 3) { + ++var24; + } + + if(var27 == 2) { + ++var25; + } + } + } + + var26 = var11 + var9; + int var28 = var26; + if(var12 == 1) { + var26 += var10; + } + + int var29 = var26; + var26 += var10; + int var30 = var26; + if(var13 == 255) { + var26 += var10; + } + + int var31 = var26; + if(var15 == 1) { + var26 += var10; + } + + int var32 = var26; + if(var17 == 1) { + var26 += var9; + } + + int var33 = var26; + if(var14 == 1) { + var26 += var10; + } + + int var34 = var26; + var26 += var21; + int var35 = var26; + if(var16 == 1) { + var26 += var10 * 2; + } + + int var36 = var26; + var26 += var22; + int var37 = var26; + var26 += var10 * 2; + int var38 = var26; + var26 += var18; + int var39 = var26; + var26 += var19; + int var40 = var26; + var26 += var20; + int var41 = var26; + var26 += var23 * 6; + int var42 = var26; + var26 += var24 * 6; + int var43 = var26; + var26 += var24 * 6; + int var44 = var26; + var26 += var24 * 2; + int var45 = var26; + var26 += var24; + int var46 = var26; + var26 += var24 * 2 + var25 * 2; + this.verticesCount = var9; + this.faceCount = var10; + this.__z = var11; + this.verticesX = new int[var9]; + this.verticesY = new int[var9]; + this.verticesZ = new int[var9]; + this.indices1 = new int[var10]; + this.indices2 = new int[var10]; + this.indices3 = new int[var10]; + if(var17 == 1) { + this.__h = new int[var9]; + } + + if(var12 == 1) { + this.__e = new byte[var10]; + } + + if(var13 == 255) { + this.__x = new byte[var10]; + } else { + this.__a = (byte)var13; + } + + if(var14 == 1) { + this.faceAlphas = new byte[var10]; + } + + if(var15 == 1) { + this.__b = new int[var10]; + } + + if(var16 == 1) { + this.faceTextures = new short[var10]; + } + + if(var16 == 1 && var11 > 0) { + this.textureCoords = new byte[var10]; + } + + this.faceColors = new short[var10]; + if(var11 > 0) { + this.texTriangleX = new short[var11]; + this.texTriangleY = new short[var11]; + this.texTriangleZ = new short[var11]; + } + + var2.index = var11; + var3.index = var38; + var4.index = var39; + var5.index = var40; + var6.index = var32; + int var48 = 0; + int var49 = 0; + int var50 = 0; + + int var51; + int var52; + int var53; + int var54; + int var55; + for(var51 = 0; var51 < var9; ++var51) { + var52 = var2.readUnsignedByte(); + var53 = 0; + if((var52 & 1) != 0) { + var53 = var3.__ab_306(); + } + + var54 = 0; + if((var52 & 2) != 0) { + var54 = var4.__ab_306(); + } + + var55 = 0; + if((var52 & 4) != 0) { + var55 = var5.__ab_306(); + } + + this.verticesX[var51] = var48 + var53; + this.verticesY[var51] = var49 + var54; + this.verticesZ[var51] = var50 + var55; + var48 = this.verticesX[var51]; + var49 = this.verticesY[var51]; + var50 = this.verticesZ[var51]; + if(var17 == 1) { + this.__h[var51] = var6.readUnsignedByte(); + } + } + + var2.index = var37; + var3.index = var28; + var4.index = var30; + var5.index = var33; + var6.index = var31; + var7.index = var35; + var8.index = var36; + + for(var51 = 0; var51 < var10; ++var51) { + this.faceColors[var51] = (short)var2.__ag_302(); + if(var12 == 1) { + this.__e[var51] = var3.readByte(); + } + + if(var13 == 255) { + this.__x[var51] = var4.readByte(); + } + + if(var14 == 1) { + this.faceAlphas[var51] = var5.readByte(); + } + + if(var15 == 1) { + this.__b[var51] = var6.readUnsignedByte(); + } + + if(var16 == 1) { + this.faceTextures[var51] = (short)(var7.__ag_302() - 1); + } + + if(this.textureCoords != null && this.faceTextures[var51] != -1) { + this.textureCoords[var51] = (byte)(var8.readUnsignedByte() - 1); + } + } + + var2.index = var34; + var3.index = var29; + var51 = 0; + var52 = 0; + var53 = 0; + var54 = 0; + + int var56; + for(var55 = 0; var55 < var10; ++var55) { + var56 = var3.readUnsignedByte(); + if(var56 == 1) { + var51 = var2.__ab_306() + var54; + var52 = var2.__ab_306() + var51; + var53 = var2.__ab_306() + var52; + var54 = var53; + this.indices1[var55] = var51; + this.indices2[var55] = var52; + this.indices3[var55] = var53; + } + + if(var56 == 2) { + var52 = var53; + var53 = var2.__ab_306() + var54; + var54 = var53; + this.indices1[var55] = var51; + this.indices2[var55] = var52; + this.indices3[var55] = var53; + } + + if(var56 == 3) { + var51 = var53; + var53 = var2.__ab_306() + var54; + var54 = var53; + this.indices1[var55] = var51; + this.indices2[var55] = var52; + this.indices3[var55] = var53; + } + + if(var56 == 4) { + int var57 = var51; + var51 = var52; + var52 = var57; + var53 = var2.__ab_306() + var54; + var54 = var53; + this.indices1[var55] = var51; + this.indices2[var55] = var57; + this.indices3[var55] = var53; + } + } + + var2.index = var41; + var3.index = var42; + var4.index = var43; + var5.index = var44; + var6.index = var45; + var7.index = var46; + + for(var55 = 0; var55 < var11; ++var55) { + var56 = this.textureRenderTypes[var55] & 255; + if(var56 == 0) { + this.texTriangleX[var55] = (short)var2.__ag_302(); + this.texTriangleY[var55] = (short)var2.__ag_302(); + this.texTriangleZ[var55] = (short)var2.__ag_302(); + } + } + + var2.index = var26; + var55 = var2.readUnsignedByte(); + if(var55 != 0) { + new ModelData0(); + var2.__ag_302(); + var2.__ag_302(); + var2.__ag_302(); + var2.readInt(); + } + + } + + @ObfuscatedName("q") + @Export("__q_216") + void __q_216(byte[] var1) { + boolean var2 = false; + boolean var3 = false; + Buffer var4 = new Buffer(var1); + Buffer var5 = new Buffer(var1); + Buffer var6 = new Buffer(var1); + Buffer var7 = new Buffer(var1); + Buffer var8 = new Buffer(var1); + var4.index = var1.length - 18; + int var9 = var4.__ag_302(); + int var10 = var4.__ag_302(); + int var11 = var4.readUnsignedByte(); + int var12 = var4.readUnsignedByte(); + int var13 = var4.readUnsignedByte(); + int var14 = var4.readUnsignedByte(); + int var15 = var4.readUnsignedByte(); + int var16 = var4.readUnsignedByte(); + int var17 = var4.__ag_302(); + int var18 = var4.__ag_302(); + int var19 = var4.__ag_302(); + int var20 = var4.__ag_302(); + byte var21 = 0; + int var45 = var21 + var9; + int var23 = var45; + var45 += var10; + int var24 = var45; + if(var13 == 255) { + var45 += var10; + } + + int var25 = var45; + if(var15 == 1) { + var45 += var10; + } + + int var26 = var45; + if(var12 == 1) { + var45 += var10; + } + + int var27 = var45; + if(var16 == 1) { + var45 += var9; + } + + int var28 = var45; + if(var14 == 1) { + var45 += var10; + } + + int var29 = var45; + var45 += var20; + int var30 = var45; + var45 += var10 * 2; + int var31 = var45; + var45 += var11 * 6; + int var32 = var45; + var45 += var17; + int var33 = var45; + var45 += var18; + int var10000 = var45 + var19; + this.verticesCount = var9; + this.faceCount = var10; + this.__z = var11; + this.verticesX = new int[var9]; + this.verticesY = new int[var9]; + this.verticesZ = new int[var9]; + this.indices1 = new int[var10]; + this.indices2 = new int[var10]; + this.indices3 = new int[var10]; + if(var11 > 0) { + this.textureRenderTypes = new byte[var11]; + this.texTriangleX = new short[var11]; + this.texTriangleY = new short[var11]; + this.texTriangleZ = new short[var11]; + } + + if(var16 == 1) { + this.__h = new int[var9]; + } + + if(var12 == 1) { + this.__e = new byte[var10]; + this.textureCoords = new byte[var10]; + this.faceTextures = new short[var10]; + } + + if(var13 == 255) { + this.__x = new byte[var10]; + } else { + this.__a = (byte)var13; + } + + if(var14 == 1) { + this.faceAlphas = new byte[var10]; + } + + if(var15 == 1) { + this.__b = new int[var10]; + } + + this.faceColors = new short[var10]; + var4.index = var21; + var5.index = var32; + var6.index = var33; + var7.index = var45; + var8.index = var27; + int var35 = 0; + int var36 = 0; + int var37 = 0; + + int var38; + int var39; + int var40; + int var41; + int var42; + for(var38 = 0; var38 < var9; ++var38) { + var39 = var4.readUnsignedByte(); + var40 = 0; + if((var39 & 1) != 0) { + var40 = var5.__ab_306(); + } + + var41 = 0; + if((var39 & 2) != 0) { + var41 = var6.__ab_306(); + } + + var42 = 0; + if((var39 & 4) != 0) { + var42 = var7.__ab_306(); + } + + this.verticesX[var38] = var35 + var40; + this.verticesY[var38] = var36 + var41; + this.verticesZ[var38] = var37 + var42; + var35 = this.verticesX[var38]; + var36 = this.verticesY[var38]; + var37 = this.verticesZ[var38]; + if(var16 == 1) { + this.__h[var38] = var8.readUnsignedByte(); + } + } + + var4.index = var30; + var5.index = var26; + var6.index = var24; + var7.index = var28; + var8.index = var25; + + for(var38 = 0; var38 < var10; ++var38) { + this.faceColors[var38] = (short)var4.__ag_302(); + if(var12 == 1) { + var39 = var5.readUnsignedByte(); + if((var39 & 1) == 1) { + this.__e[var38] = 1; + var2 = true; + } else { + this.__e[var38] = 0; + } + + if((var39 & 2) == 2) { + this.textureCoords[var38] = (byte)(var39 >> 2); + this.faceTextures[var38] = this.faceColors[var38]; + this.faceColors[var38] = 127; + if(this.faceTextures[var38] != -1) { + var3 = true; + } + } else { + this.textureCoords[var38] = -1; + this.faceTextures[var38] = -1; + } + } + + if(var13 == 255) { + this.__x[var38] = var6.readByte(); + } + + if(var14 == 1) { + this.faceAlphas[var38] = var7.readByte(); + } + + if(var15 == 1) { + this.__b[var38] = var8.readUnsignedByte(); + } + } + + var4.index = var29; + var5.index = var23; + var38 = 0; + var39 = 0; + var40 = 0; + var41 = 0; + + int var43; + int var44; + for(var42 = 0; var42 < var10; ++var42) { + var43 = var5.readUnsignedByte(); + if(var43 == 1) { + var38 = var4.__ab_306() + var41; + var39 = var4.__ab_306() + var38; + var40 = var4.__ab_306() + var39; + var41 = var40; + this.indices1[var42] = var38; + this.indices2[var42] = var39; + this.indices3[var42] = var40; + } + + if(var43 == 2) { + var39 = var40; + var40 = var4.__ab_306() + var41; + var41 = var40; + this.indices1[var42] = var38; + this.indices2[var42] = var39; + this.indices3[var42] = var40; + } + + if(var43 == 3) { + var38 = var40; + var40 = var4.__ab_306() + var41; + var41 = var40; + this.indices1[var42] = var38; + this.indices2[var42] = var39; + this.indices3[var42] = var40; + } + + if(var43 == 4) { + var44 = var38; + var38 = var39; + var39 = var44; + var40 = var4.__ab_306() + var41; + var41 = var40; + this.indices1[var42] = var38; + this.indices2[var42] = var44; + this.indices3[var42] = var40; + } + } + + var4.index = var31; + + for(var42 = 0; var42 < var11; ++var42) { + this.textureRenderTypes[var42] = 0; + this.texTriangleX[var42] = (short)var4.__ag_302(); + this.texTriangleY[var42] = (short)var4.__ag_302(); + this.texTriangleZ[var42] = (short)var4.__ag_302(); + } + + if(this.textureCoords != null) { + boolean var46 = false; + + for(var43 = 0; var43 < var10; ++var43) { + var44 = this.textureCoords[var43] & 255; + if(var44 != 255) { + if(this.indices1[var43] == (this.texTriangleX[var44] & '\uffff') && this.indices2[var43] == (this.texTriangleY[var44] & '\uffff') && this.indices3[var43] == (this.texTriangleZ[var44] & '\uffff')) { + this.textureCoords[var43] = -1; + } else { + var46 = true; + } + } + } + + if(!var46) { + this.textureCoords = null; + } + } + + if(!var3) { + this.faceTextures = null; + } + + if(!var2) { + this.__e = null; + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Ldw;I)I" + ) + @Export("__w_217") + final int __w_217(ModelData var1, int var2) { + int var3 = -1; + int var4 = var1.verticesX[var2]; + int var5 = var1.verticesY[var2]; + int var6 = var1.verticesZ[var2]; + + for(int var7 = 0; var7 < this.verticesCount; ++var7) { + if(var4 == this.verticesX[var7] && var5 == this.verticesY[var7] && var6 == this.verticesZ[var7]) { + var3 = var7; + break; + } + } + + if(var3 == -1) { + this.verticesX[this.verticesCount] = var4; + this.verticesY[this.verticesCount] = var5; + this.verticesZ[this.verticesCount] = var6; + if(var1.__h != null) { + this.__h[this.verticesCount] = var1.__h[var2]; + } + + var3 = this.verticesCount++; + } + + return var3; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "()Ldw;" + ) + @Export("__o_218") + public ModelData __o_218() { + ModelData var1 = new ModelData(); + if(this.__e != null) { + var1.__e = new byte[this.faceCount]; + + for(int var2 = 0; var2 < this.faceCount; ++var2) { + var1.__e[var2] = this.__e[var2]; + } + } + + var1.verticesCount = this.verticesCount; + var1.faceCount = this.faceCount; + var1.__z = this.__z; + var1.verticesX = this.verticesX; + var1.verticesY = this.verticesY; + var1.verticesZ = this.verticesZ; + var1.indices1 = this.indices1; + var1.indices2 = this.indices2; + var1.indices3 = this.indices3; + var1.__x = this.__x; + var1.faceAlphas = this.faceAlphas; + var1.textureCoords = this.textureCoords; + var1.faceColors = this.faceColors; + var1.faceTextures = this.faceTextures; + var1.__a = this.__a; + var1.textureRenderTypes = this.textureRenderTypes; + var1.texTriangleX = this.texTriangleX; + var1.texTriangleY = this.texTriangleY; + var1.texTriangleZ = this.texTriangleZ; + var1.__h = this.__h; + var1.__b = this.__b; + var1.vertexLabels = this.vertexLabels; + var1.faceLabelsAlpha = this.faceLabelsAlpha; + var1.__v = this.__v; + var1.faceNormals = this.faceNormals; + var1.__aq = this.__aq; + var1.__aj = this.__aj; + return var1; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "([[IIIIZI)Ldw;" + ) + @Export("__u_219") + public ModelData __u_219(int[][] var1, int var2, int var3, int var4, boolean var5, int var6) { + this.__c_229(); + int var7 = var2 + this.__ac; + int var8 = var2 + this.__ay; + int var9 = var4 + this.__ak; + int var10 = var4 + this.__ah; + if(var7 >= 0 && var8 + 128 >> 7 < var1.length && var9 >= 0 && var10 + 128 >> 7 < var1[0].length) { + var7 >>= 7; + var8 = var8 + 127 >> 7; + var9 >>= 7; + var10 = var10 + 127 >> 7; + if(var3 == var1[var7][var9] && var3 == var1[var8][var9] && var3 == var1[var7][var10] && var3 == var1[var8][var10]) { + return this; + } else { + ModelData var11 = new ModelData(); + var11.verticesCount = this.verticesCount; + var11.faceCount = this.faceCount; + var11.__z = this.__z; + var11.verticesX = this.verticesX; + var11.verticesZ = this.verticesZ; + var11.indices1 = this.indices1; + var11.indices2 = this.indices2; + var11.indices3 = this.indices3; + var11.__e = this.__e; + var11.__x = this.__x; + var11.faceAlphas = this.faceAlphas; + var11.textureCoords = this.textureCoords; + var11.faceColors = this.faceColors; + var11.faceTextures = this.faceTextures; + var11.__a = this.__a; + var11.textureRenderTypes = this.textureRenderTypes; + var11.texTriangleX = this.texTriangleX; + var11.texTriangleY = this.texTriangleY; + var11.texTriangleZ = this.texTriangleZ; + var11.__h = this.__h; + var11.__b = this.__b; + var11.vertexLabels = this.vertexLabels; + var11.faceLabelsAlpha = this.faceLabelsAlpha; + var11.__aq = this.__aq; + var11.__aj = this.__aj; + var11.verticesY = new int[var11.verticesCount]; + int var12; + int var13; + int var14; + int var15; + int var16; + int var17; + int var18; + int var19; + int var20; + int var21; + if(var6 == 0) { + for(var12 = 0; var12 < var11.verticesCount; ++var12) { + var13 = var2 + this.verticesX[var12]; + var14 = var4 + this.verticesZ[var12]; + var15 = var13 & 127; + var16 = var14 & 127; + var17 = var13 >> 7; + var18 = var14 >> 7; + var19 = var1[var17][var18] * (128 - var15) + var1[var17 + 1][var18] * var15 >> 7; + var20 = var1[var17][var18 + 1] * (128 - var15) + var15 * var1[var17 + 1][var18 + 1] >> 7; + var21 = var19 * (128 - var16) + var20 * var16 >> 7; + var11.verticesY[var12] = var21 + this.verticesY[var12] - var3; + } + } else { + for(var12 = 0; var12 < var11.verticesCount; ++var12) { + var13 = (-this.verticesY[var12] << 16) / super.height; + if(var13 < var6) { + var14 = var2 + this.verticesX[var12]; + var15 = var4 + this.verticesZ[var12]; + var16 = var14 & 127; + var17 = var15 & 127; + var18 = var14 >> 7; + var19 = var15 >> 7; + var20 = var1[var18][var19] * (128 - var16) + var1[var18 + 1][var19] * var16 >> 7; + var21 = var1[var18][var19 + 1] * (128 - var16) + var16 * var1[var18 + 1][var19 + 1] >> 7; + int var22 = var20 * (128 - var17) + var21 * var17 >> 7; + var11.verticesY[var12] = (var6 - var13) * (var22 - var3) / var6 + this.verticesY[var12]; + } + } + } + + var11.invalidate(); + return var11; + } + } else { + return this; + } + } + + @ObfuscatedName("g") + @Export("__g_220") + void __g_220() { + int[] var1; + int var2; + int var3; + int var4; + if(this.__h != null) { + var1 = new int[256]; + var2 = 0; + + for(var3 = 0; var3 < this.verticesCount; ++var3) { + var4 = this.__h[var3]; + ++var1[var4]; + if(var4 > var2) { + var2 = var4; + } + } + + this.vertexLabels = new int[var2 + 1][]; + + for(var3 = 0; var3 <= var2; ++var3) { + this.vertexLabels[var3] = new int[var1[var3]]; + var1[var3] = 0; + } + + for(var3 = 0; var3 < this.verticesCount; this.vertexLabels[var4][var1[var4]++] = var3++) { + var4 = this.__h[var3]; + } + + this.__h = null; + } + + if(this.__b != null) { + var1 = new int[256]; + var2 = 0; + + for(var3 = 0; var3 < this.faceCount; ++var3) { + var4 = this.__b[var3]; + ++var1[var4]; + if(var4 > var2) { + var2 = var4; + } + } + + this.faceLabelsAlpha = new int[var2 + 1][]; + + for(var3 = 0; var3 <= var2; ++var3) { + this.faceLabelsAlpha[var3] = new int[var1[var3]]; + var1[var3] = 0; + } + + for(var3 = 0; var3 < this.faceCount; this.faceLabelsAlpha[var4][var1[var4]++] = var3++) { + var4 = this.__b[var3]; + } + + this.__b = null; + } + + } + + @ObfuscatedName("l") + @Export("__l_221") + public void __l_221() { + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesX[var1]; + this.verticesX[var1] = this.verticesZ[var1]; + this.verticesZ[var1] = -var2; + } + + this.invalidate(); + } + + @ObfuscatedName("x") + @Export("__x_222") + public void __x_222() { + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + this.verticesX[var1] = -this.verticesX[var1]; + this.verticesZ[var1] = -this.verticesZ[var1]; + } + + this.invalidate(); + } + + @ObfuscatedName("d") + @Export("__d_223") + public void __d_223() { + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesZ[var1]; + this.verticesZ[var1] = this.verticesX[var1]; + this.verticesX[var1] = -var2; + } + + this.invalidate(); + } + + @ObfuscatedName("a") + @Export("__a_224") + public void __a_224(int var1) { + int var2 = ModelData_sine[var1]; + int var3 = ModelData_cosine[var1]; + + for(int var4 = 0; var4 < this.verticesCount; ++var4) { + int var5 = var2 * this.verticesZ[var4] + var3 * this.verticesX[var4] >> 16; + this.verticesZ[var4] = var3 * this.verticesZ[var4] - var2 * this.verticesX[var4] >> 16; + this.verticesX[var4] = var5; + } + + this.invalidate(); + } + + @ObfuscatedName("z") + @Export("__z_225") + public void __z_225(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.verticesCount; ++var4) { + this.verticesX[var4] += var1; + this.verticesY[var4] += var2; + this.verticesZ[var4] += var3; + } + + this.invalidate(); + } + + @ObfuscatedName("j") + @Export("recolor") + public void recolor(short var1, short var2) { + for(int var3 = 0; var3 < this.faceCount; ++var3) { + if(this.faceColors[var3] == var1) { + this.faceColors[var3] = var2; + } + } + + } + + @ObfuscatedName("s") + @Export("retexture") + public void retexture(short var1, short var2) { + if(this.faceTextures != null) { + for(int var3 = 0; var3 < this.faceCount; ++var3) { + if(this.faceTextures[var3] == var1) { + this.faceTextures[var3] = var2; + } + } + + } + } + + @ObfuscatedName("t") + @Export("__t_226") + public void __t_226() { + int var1; + for(var1 = 0; var1 < this.verticesCount; ++var1) { + this.verticesZ[var1] = -this.verticesZ[var1]; + } + + for(var1 = 0; var1 < this.faceCount; ++var1) { + int var2 = this.indices1[var1]; + this.indices1[var1] = this.indices3[var1]; + this.indices3[var1] = var2; + } + + this.invalidate(); + } + + @ObfuscatedName("y") + @Export("__y_227") + public void __y_227(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.verticesCount; ++var4) { + this.verticesX[var4] = this.verticesX[var4] * var1 / 128; + this.verticesY[var4] = var2 * this.verticesY[var4] / 128; + this.verticesZ[var4] = var3 * this.verticesZ[var4] / 128; + } + + this.invalidate(); + } + + @ObfuscatedName("h") + @Export("__h_228") + public void __h_228() { + if(this.__v == null) { + this.__v = new VertexNormal[this.verticesCount]; + + int var1; + for(var1 = 0; var1 < this.verticesCount; ++var1) { + this.__v[var1] = new VertexNormal(); + } + + for(var1 = 0; var1 < this.faceCount; ++var1) { + int var2 = this.indices1[var1]; + int var3 = this.indices2[var1]; + int var4 = this.indices3[var1]; + int var5 = this.verticesX[var3] - this.verticesX[var2]; + int var6 = this.verticesY[var3] - this.verticesY[var2]; + int var7 = this.verticesZ[var3] - this.verticesZ[var2]; + int var8 = this.verticesX[var4] - this.verticesX[var2]; + int var9 = this.verticesY[var4] - this.verticesY[var2]; + int var10 = this.verticesZ[var4] - this.verticesZ[var2]; + int var11 = var6 * var10 - var9 * var7; + int var12 = var7 * var8 - var10 * var5; + + int var13; + for(var13 = var5 * var9 - var8 * var6; var11 > 8192 || var12 > 8192 || var13 > 8192 || var11 < -8192 || var12 < -8192 || var13 < -8192; var13 >>= 1) { + var11 >>= 1; + var12 >>= 1; + } + + int var14 = (int)Math.sqrt((double)(var11 * var11 + var12 * var12 + var13 * var13)); + if(var14 <= 0) { + var14 = 1; + } + + var11 = var11 * 256 / var14; + var12 = var12 * 256 / var14; + var13 = var13 * 256 / var14; + byte var15; + if(this.__e == null) { + var15 = 0; + } else { + var15 = this.__e[var1]; + } + + if(var15 == 0) { + VertexNormal var16 = this.__v[var2]; + var16.__m += var11; + var16.__f += var12; + var16.__q += var13; + ++var16.__w; + var16 = this.__v[var3]; + var16.__m += var11; + var16.__f += var12; + var16.__q += var13; + ++var16.__w; + var16 = this.__v[var4]; + var16.__m += var11; + var16.__f += var12; + var16.__q += var13; + ++var16.__w; + } else if(var15 == 1) { + if(this.faceNormals == null) { + this.faceNormals = new FaceNormal[this.faceCount]; + } + + FaceNormal var17 = this.faceNormals[var1] = new FaceNormal(); + var17.__m = var11; + var17.__f = var12; + var17.__q = var13; + } + } + + } + } + + @ObfuscatedName("b") + @Export("invalidate") + void invalidate() { + this.__v = null; + this.__ag = null; + this.faceNormals = null; + this.isBoundsCalculated = false; + } + + @ObfuscatedName("c") + @Export("__c_229") + void __c_229() { + if(!this.isBoundsCalculated) { + super.height = 0; + this.__ar = 0; + this.__ac = 999999; + this.__ay = -999999; + this.__ah = -99999; + this.__ak = 99999; + + for(int var1 = 0; var1 < this.verticesCount; ++var1) { + int var2 = this.verticesX[var1]; + int var3 = this.verticesY[var1]; + int var4 = this.verticesZ[var1]; + if(var2 < this.__ac) { + this.__ac = var2; + } + + if(var2 > this.__ay) { + this.__ay = var2; + } + + if(var4 < this.__ak) { + this.__ak = var4; + } + + if(var4 > this.__ah) { + this.__ah = var4; + } + + if(-var3 > super.height) { + super.height = -var3; + } + + if(var3 > this.__ar) { + this.__ar = var3; + } + } + + this.isBoundsCalculated = true; + } + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(IIIII)Ldu;" + ) + @Export("toModel") + public final Model toModel(int var1, int var2, int var3, int var4, int var5) { + this.__h_228(); + int var6 = (int)Math.sqrt((double)(var5 * var5 + var3 * var3 + var4 * var4)); + int var7 = var6 * var2 >> 8; + Model var8 = new Model(); + var8.faceColors1 = new int[this.faceCount]; + var8.faceColors2 = new int[this.faceCount]; + var8.faceColors3 = new int[this.faceCount]; + if(this.__z > 0 && this.textureCoords != null) { + int[] var9 = new int[this.__z]; + + int var10; + for(var10 = 0; var10 < this.faceCount; ++var10) { + if(this.textureCoords[var10] != -1) { + ++var9[this.textureCoords[var10] & 255]; + } + } + + var8.__h = 0; + + for(var10 = 0; var10 < this.__z; ++var10) { + if(var9[var10] > 0 && this.textureRenderTypes[var10] == 0) { + ++var8.__h; + } + } + + var8.__b = new int[var8.__h]; + var8.__c = new int[var8.__h]; + var8.__r = new int[var8.__h]; + var10 = 0; + + int var11; + for(var11 = 0; var11 < this.__z; ++var11) { + if(var9[var11] > 0 && this.textureRenderTypes[var11] == 0) { + var8.__b[var10] = this.texTriangleX[var11] & '\uffff'; + var8.__c[var10] = this.texTriangleY[var11] & '\uffff'; + var8.__r[var10] = this.texTriangleZ[var11] & '\uffff'; + var9[var11] = var10++; + } else { + var9[var11] = -1; + } + } + + var8.__s = new byte[this.faceCount]; + + for(var11 = 0; var11 < this.faceCount; ++var11) { + if(this.textureCoords[var11] != -1) { + var8.__s[var11] = (byte)var9[this.textureCoords[var11] & 255]; + } else { + var8.__s[var11] = -1; + } + } + } + + for(int var16 = 0; var16 < this.faceCount; ++var16) { + byte var17; + if(this.__e == null) { + var17 = 0; + } else { + var17 = this.__e[var16]; + } + + byte var18; + if(this.faceAlphas == null) { + var18 = 0; + } else { + var18 = this.faceAlphas[var16]; + } + + short var12; + if(this.faceTextures == null) { + var12 = -1; + } else { + var12 = this.faceTextures[var16]; + } + + if(var18 == -2) { + var17 = 3; + } + + if(var18 == -1) { + var17 = 2; + } + + VertexNormal var13; + int var14; + FaceNormal var19; + if(var12 == -1) { + if(var17 != 0) { + if(var17 == 1) { + var19 = this.faceNormals[var16]; + var14 = (var4 * var19.__f + var5 * var19.__q + var3 * var19.__m) / (var7 / 2 + var7) + var1; + var8.faceColors1[var16] = method2802(this.faceColors[var16] & '\uffff', var14); + var8.faceColors3[var16] = -1; + } else if(var17 == 3) { + var8.faceColors1[var16] = 128; + var8.faceColors3[var16] = -1; + } else { + var8.faceColors3[var16] = -2; + } + } else { + int var15 = this.faceColors[var16] & '\uffff'; + if(this.__ag != null && this.__ag[this.indices1[var16]] != null) { + var13 = this.__ag[this.indices1[var16]]; + } else { + var13 = this.__v[this.indices1[var16]]; + } + + var14 = (var4 * var13.__f + var5 * var13.__q + var3 * var13.__m) / (var7 * var13.__w) + var1; + var8.faceColors1[var16] = method2802(var15, var14); + if(this.__ag != null && this.__ag[this.indices2[var16]] != null) { + var13 = this.__ag[this.indices2[var16]]; + } else { + var13 = this.__v[this.indices2[var16]]; + } + + var14 = (var4 * var13.__f + var5 * var13.__q + var3 * var13.__m) / (var7 * var13.__w) + var1; + var8.faceColors2[var16] = method2802(var15, var14); + if(this.__ag != null && this.__ag[this.indices3[var16]] != null) { + var13 = this.__ag[this.indices3[var16]]; + } else { + var13 = this.__v[this.indices3[var16]]; + } + + var14 = (var4 * var13.__f + var5 * var13.__q + var3 * var13.__m) / (var7 * var13.__w) + var1; + var8.faceColors3[var16] = method2802(var15, var14); + } + } else if(var17 != 0) { + if(var17 == 1) { + var19 = this.faceNormals[var16]; + var14 = (var4 * var19.__f + var5 * var19.__q + var3 * var19.__m) / (var7 / 2 + var7) + var1; + var8.faceColors1[var16] = method2803(var14); + var8.faceColors3[var16] = -1; + } else { + var8.faceColors3[var16] = -2; + } + } else { + if(this.__ag != null && this.__ag[this.indices1[var16]] != null) { + var13 = this.__ag[this.indices1[var16]]; + } else { + var13 = this.__v[this.indices1[var16]]; + } + + var14 = (var4 * var13.__f + var5 * var13.__q + var3 * var13.__m) / (var7 * var13.__w) + var1; + var8.faceColors1[var16] = method2803(var14); + if(this.__ag != null && this.__ag[this.indices2[var16]] != null) { + var13 = this.__ag[this.indices2[var16]]; + } else { + var13 = this.__v[this.indices2[var16]]; + } + + var14 = (var4 * var13.__f + var5 * var13.__q + var3 * var13.__m) / (var7 * var13.__w) + var1; + var8.faceColors2[var16] = method2803(var14); + if(this.__ag != null && this.__ag[this.indices3[var16]] != null) { + var13 = this.__ag[this.indices3[var16]]; + } else { + var13 = this.__v[this.indices3[var16]]; + } + + var14 = (var4 * var13.__f + var5 * var13.__q + var3 * var13.__m) / (var7 * var13.__w) + var1; + var8.faceColors3[var16] = method2803(var14); + } + } + + this.__g_220(); + var8.verticesCount = this.verticesCount; + var8.verticesX = this.verticesX; + var8.verticesY = this.verticesY; + var8.verticesZ = this.verticesZ; + var8.indicesCount = this.faceCount; + var8.indices1 = this.indices1; + var8.indices2 = this.indices2; + var8.indices3 = this.indices3; + var8.faceRenderPriorities = this.__x; + var8.faceAlphas = this.faceAlphas; + var8.__y = this.__a; + var8.vertexLabels = this.vertexLabels; + var8.faceLabelsAlpha = this.faceLabelsAlpha; + var8.faceTextures = this.faceTextures; + return var8; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;II)Ldw;" + ) + public static ModelData method2788(AbstractIndexCache var0, int var1, int var2) { + byte[] var3 = var0.takeRecord(var1, var2); + return var3 == null?null:new ModelData(var3); + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(Ldw;Ldw;IIIZ)V" + ) + static void method2800(ModelData var0, ModelData var1, int var2, int var3, int var4, boolean var5) { + var0.__c_229(); + var0.__h_228(); + var1.__c_229(); + var1.__h_228(); + ++__dw_ab; + int var6 = 0; + int[] var7 = var1.verticesX; + int var8 = var1.verticesCount; + + int var9; + for(var9 = 0; var9 < var0.verticesCount; ++var9) { + VertexNormal var10 = var0.__v[var9]; + if(var10.__w != 0) { + int var11 = var0.verticesY[var9] - var3; + if(var11 <= var1.__ar) { + int var12 = var0.verticesX[var9] - var2; + if(var12 >= var1.__ac && var12 <= var1.__ay) { + int var13 = var0.verticesZ[var9] - var4; + if(var13 >= var1.__ak && var13 <= var1.__ah) { + for(int var14 = 0; var14 < var8; ++var14) { + VertexNormal var15 = var1.__v[var14]; + if(var12 == var7[var14] && var13 == var1.verticesZ[var14] && var11 == var1.verticesY[var14] && var15.__w != 0) { + if(var0.__ag == null) { + var0.__ag = new VertexNormal[var0.verticesCount]; + } + + if(var1.__ag == null) { + var1.__ag = new VertexNormal[var8]; + } + + VertexNormal var16 = var0.__ag[var9]; + if(var16 == null) { + var16 = var0.__ag[var9] = new VertexNormal(var10); + } + + VertexNormal var17 = var1.__ag[var14]; + if(var17 == null) { + var17 = var1.__ag[var14] = new VertexNormal(var15); + } + + var16.__m += var15.__m; + var16.__f += var15.__f; + var16.__q += var15.__q; + var16.__w += var15.__w; + var17.__m += var10.__m; + var17.__f += var10.__f; + var17.__q += var10.__q; + var17.__w += var10.__w; + ++var6; + __dw_aw[var9] = __dw_ab; + __dw_al[var14] = __dw_ab; + } + } + } + } + } + } + } + + if(var6 >= 3 && var5) { + for(var9 = 0; var9 < var0.faceCount; ++var9) { + if(__dw_aw[var0.indices1[var9]] == __dw_ab && __dw_aw[var0.indices2[var9]] == __dw_ab && __dw_aw[var0.indices3[var9]] == __dw_ab) { + if(var0.__e == null) { + var0.__e = new byte[var0.faceCount]; + } + + var0.__e[var9] = 2; + } + } + + for(var9 = 0; var9 < var1.faceCount; ++var9) { + if(__dw_ab == __dw_al[var1.indices1[var9]] && __dw_ab == __dw_al[var1.indices2[var9]] && __dw_ab == __dw_al[var1.indices3[var9]]) { + if(var1.__e == null) { + var1.__e = new byte[var1.faceCount]; + } + + var1.__e[var9] = 2; + } + } + + } + } + + @ObfuscatedName("ag") + static final int method2802(int var0, int var1) { + var1 = (var0 & 127) * var1 >> 7; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & 65408) + var1; + } + + @ObfuscatedName("aq") + static final int method2803(int var0) { + if(var0 < 2) { + var0 = 2; + } else if(var0 > 126) { + var0 = 126; + } + + return var0; + } +} diff --git a/rs-client/src/main/java/ModelData0.java b/rs-client/src/main/java/ModelData0.java new file mode 100644 index 0000000000..8720409ab8 --- /dev/null +++ b/rs-client/src/main/java/ModelData0.java @@ -0,0 +1,22 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ed") +@Implements("ModelData0") +public class ModelData0 { + @ObfuscatedName("m") + @ObfuscatedGetter( + longValue = 3311945626287518857L + ) + @Export("currentTimeMsLast") + static long currentTimeMsLast; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Liz;" + ) + @Export("NetCache_currentResponse") + public static NetFileRequest NetCache_currentResponse; +} diff --git a/rs-client/src/main/java/MouseHandler.java b/rs-client/src/main/java/MouseHandler.java new file mode 100644 index 0000000000..549ad14fbe --- /dev/null +++ b/rs-client/src/main/java/MouseHandler.java @@ -0,0 +1,293 @@ +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bb") +@Implements("MouseHandler") +public class MouseHandler implements MouseListener, MouseMotionListener, FocusListener { + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lbb;" + ) + @Export("MouseHandler_instance") + public static MouseHandler MouseHandler_instance; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1080652669 + ) + @Export("MouseHandler_idleCycles") + public static volatile int MouseHandler_idleCycles; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 642308075 + ) + @Export("MouseHandler_currentButton0") + public static volatile int MouseHandler_currentButton0; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1048471439 + ) + @Export("MouseHandler_x0") + public static volatile int MouseHandler_x0; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 2000222973 + ) + @Export("MouseHandler_y0") + public static volatile int MouseHandler_y0; + @ObfuscatedName("e") + @ObfuscatedGetter( + longValue = -5429651987476437823L + ) + @Export("MouseHandler_millis0") + public static volatile long MouseHandler_millis0; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 1291011547 + ) + @Export("MouseHandler_y") + public static int MouseHandler_y; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -2044247305 + ) + @Export("MouseHandler_currentButton") + public static int MouseHandler_currentButton; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -649043937 + ) + @Export("MouseHandler_x") + public static int MouseHandler_x; + @ObfuscatedName("n") + @ObfuscatedGetter( + longValue = -7587574528523107151L + ) + @Export("MouseHandler_millis") + public static long MouseHandler_millis; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 590718769 + ) + @Export("MouseHandler_lastButton0") + public static volatile int MouseHandler_lastButton0; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -813801905 + ) + @Export("MouseHandler_lastPressedX0") + public static volatile int MouseHandler_lastPressedX0; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 14138669 + ) + @Export("MouseHandler_lastPressedY0") + public static volatile int MouseHandler_lastPressedY0; + @ObfuscatedName("j") + @ObfuscatedGetter( + longValue = 3555003757894628243L + ) + @Export("MouseHandler_lastPressedTimeMillis0") + public static volatile long MouseHandler_lastPressedTimeMillis0; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 2126310249 + ) + @Export("MouseHandler_lastButton") + public static int MouseHandler_lastButton; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = -1853704165 + ) + @Export("MouseHandler_lastPressedX") + public static int MouseHandler_lastPressedX; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = 1876967757 + ) + @Export("MouseHandler_lastPressedY") + public static int MouseHandler_lastPressedY; + @ObfuscatedName("h") + @ObfuscatedGetter( + longValue = 3806612340723844439L + ) + @Export("MouseHandler_lastPressedTimeMillis") + public static long MouseHandler_lastPressedTimeMillis; + @ObfuscatedName("gb") + @Export("regionLandArchiveIds") + static int[] regionLandArchiveIds; + @ObfuscatedName("hz") + @ObfuscatedGetter( + intValue = -215744973 + ) + @Export("oculusOrbFocalPointX") + static int oculusOrbFocalPointX; + + static { + MouseHandler_instance = new MouseHandler(); + MouseHandler_idleCycles = 0; + MouseHandler_currentButton0 = 0; + MouseHandler_x0 = -1; + MouseHandler_y0 = -1; + MouseHandler_millis0 = -1L; + MouseHandler_currentButton = 0; + MouseHandler_x = 0; + MouseHandler_y = 0; + MouseHandler_millis = 0L; + MouseHandler_lastButton0 = 0; + MouseHandler_lastPressedX0 = 0; + MouseHandler_lastPressedY0 = 0; + MouseHandler_lastPressedTimeMillis0 = 0L; + MouseHandler_lastButton = 0; + MouseHandler_lastPressedX = 0; + MouseHandler_lastPressedY = 0; + MouseHandler_lastPressedTimeMillis = 0L; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/awt/event/MouseEvent;I)I", + garbageValue = "-965288682" + ) + @Export("getButton") + final int getButton(MouseEvent var1) { + int var2 = var1.getButton(); + return !var1.isAltDown() && var2 != 2?(!var1.isMetaDown() && var2 != 3?1:2):4; + } + + @Export("mouseMoved") + @ObfuscatedName("mouseMoved") + public final synchronized void mouseMoved(MouseEvent var1) { + if(MouseHandler_instance != null) { + MouseHandler_idleCycles = 0; + MouseHandler_x0 = var1.getX(); + MouseHandler_y0 = var1.getY(); + MouseHandler_millis0 = var1.getWhen(); + } + + } + + @Export("mousePressed") + @ObfuscatedName("mousePressed") + public final synchronized void mousePressed(MouseEvent var1) { + if(MouseHandler_instance != null) { + MouseHandler_idleCycles = 0; + MouseHandler_lastPressedX0 = var1.getX(); + MouseHandler_lastPressedY0 = var1.getY(); + MouseHandler_lastPressedTimeMillis0 = class203.currentTimeMs(); + MouseHandler_lastButton0 = this.getButton(var1); + if(MouseHandler_lastButton0 != 0) { + MouseHandler_currentButton0 = MouseHandler_lastButton0; + } + } + + if(var1.isPopupTrigger()) { + var1.consume(); + } + + } + + @Export("mouseReleased") + @ObfuscatedName("mouseReleased") + public final synchronized void mouseReleased(MouseEvent var1) { + if(MouseHandler_instance != null) { + MouseHandler_idleCycles = 0; + MouseHandler_currentButton0 = 0; + } + + if(var1.isPopupTrigger()) { + var1.consume(); + } + + } + + @Export("mouseClicked") + @ObfuscatedName("mouseClicked") + public final void mouseClicked(MouseEvent var1) { + if(var1.isPopupTrigger()) { + var1.consume(); + } + + } + + @Export("mouseExited") + @ObfuscatedName("mouseExited") + public final synchronized void mouseExited(MouseEvent var1) { + if(MouseHandler_instance != null) { + MouseHandler_idleCycles = 0; + MouseHandler_x0 = -1; + MouseHandler_y0 = -1; + MouseHandler_millis0 = var1.getWhen(); + } + + } + + @Export("mouseDragged") + @ObfuscatedName("mouseDragged") + public final synchronized void mouseDragged(MouseEvent var1) { + this.mouseMoved(var1); + } + + @Export("focusGained") + @ObfuscatedName("focusGained") + public final void focusGained(FocusEvent var1) { + } + + @Export("focusLost") + @ObfuscatedName("focusLost") + public final synchronized void focusLost(FocusEvent var1) { + if(MouseHandler_instance != null) { + MouseHandler_currentButton0 = 0; + } + + } + + @Export("mouseEntered") + @ObfuscatedName("mouseEntered") + public final synchronized void mouseEntered(MouseEvent var1) { + this.mouseMoved(var1); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIII)J", + garbageValue = "1909006131" + ) + static long method1083(int var0, int var1, int var2) { + return (long)(var2 << 16 | var0 << 8 | var1); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;I)I", + garbageValue = "1860098743" + ) + public static int method1085(CharSequence var0) { + return IgnoreList.method5438(var0, 10, true); + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "876254587" + ) + static void method1084(boolean var0) { + Login.Login_response1 = ""; + Login.Login_response2 = "Enter your username/email & password."; + Login.Login_response3 = ""; + Login.__cu_aw = 2; + if(var0) { + Login.Login_password = ""; + } + + Messages.method2200(); + class196.method3740(); + } +} diff --git a/rs-client/src/main/java/MouseRecorder.java b/rs-client/src/main/java/MouseRecorder.java new file mode 100644 index 0000000000..9833fbf167 --- /dev/null +++ b/rs-client/src/main/java/MouseRecorder.java @@ -0,0 +1,383 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bu") +@Implements("MouseRecorder") +public class MouseRecorder implements Runnable { + @ObfuscatedName("no") + @ObfuscatedGetter( + intValue = 2059180753 + ) + @Export("widgetDragDuration") + static int widgetDragDuration; + @ObfuscatedName("hy") + @ObfuscatedGetter( + intValue = 1075569245 + ) + @Export("__bu_hy") + static int __bu_hy; + @ObfuscatedName("m") + @Export("isRunning") + boolean isRunning; + @ObfuscatedName("f") + @Export("lock") + Object lock; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 973045825 + ) + @Export("index") + int index; + @ObfuscatedName("w") + @Export("xs") + int[] xs; + @ObfuscatedName("o") + @Export("ys") + int[] ys; + @ObfuscatedName("u") + @Export("millis") + long[] millis; + + MouseRecorder() { + this.isRunning = true; + this.lock = new Object(); + this.index = 0; + this.xs = new int[500]; + this.ys = new int[500]; + this.millis = new long[500]; + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + for(; this.isRunning; class203.method4010(50L)) { + Object var1 = this.lock; + synchronized(this.lock) { + if(this.index < 500) { + this.xs[this.index] = MouseHandler.MouseHandler_x; + this.ys[this.index] = MouseHandler.MouseHandler_y; + this.millis[this.index] = MouseHandler.MouseHandler_millis; + ++this.index; + } + } + } + + } + + @ObfuscatedName("hr") + @ObfuscatedSignature( + signature = "(IIIIIB)V", + garbageValue = "-51" + ) + @Export("drawObject") + static final void drawObject(int var0, int var1, int var2, int var3, int var4) { + long var5 = class65.scene.__ar_244(var0, var1, var2); + int var7; + int var8; + int var9; + int var10; + int var14; + int var26; + if(var5 != 0L) { + var7 = class65.scene.getObjectFlags(var0, var1, var2, var5); + var8 = var7 >> 6 & 3; + var9 = var7 & 31; + var10 = var3; + boolean var12 = var5 != 0L; + if(var12) { + boolean var13 = (int)(var5 >>> 16 & 1L) == 1; + var12 = !var13; + } + + if(var12) { + var10 = var4; + } + + int[] var19 = WidgetGroupParent.sceneMinimapSprite.pixels; + var26 = var1 * 4 + (103 - var2) * 2048 + 24624; + var14 = HitSplatDefinition.method4972(var5); + ObjectDefinition var15 = class50.getObjectDefinition(var14); + if(var15.mapSceneId != -1) { + IndexedSprite var16 = class192.mapSceneSprites[var15.mapSceneId]; + if(var16 != null) { + int var17 = (var15.sizeX * 4 - var16.subWidth) / 2; + int var18 = (var15.sizeY * 4 - var16.subHeight) / 2; + var16.__q_496(var1 * 4 + var17 + 48, (104 - var2 - var15.sizeY) * 4 + var18 + 48); + } + } else { + if(var9 == 0 || var9 == 2) { + if(var8 == 0) { + var19[var26] = var10; + var19[var26 + 512] = var10; + var19[var26 + 1024] = var10; + var19[var26 + 1536] = var10; + } else if(var8 == 1) { + var19[var26] = var10; + var19[var26 + 1] = var10; + var19[var26 + 2] = var10; + var19[var26 + 3] = var10; + } else if(var8 == 2) { + var19[var26 + 3] = var10; + var19[var26 + 512 + 3] = var10; + var19[var26 + 1024 + 3] = var10; + var19[var26 + 1536 + 3] = var10; + } else if(var8 == 3) { + var19[var26 + 1536] = var10; + var19[var26 + 1536 + 1] = var10; + var19[var26 + 1536 + 2] = var10; + var19[var26 + 1536 + 3] = var10; + } + } + + if(var9 == 3) { + if(var8 == 0) { + var19[var26] = var10; + } else if(var8 == 1) { + var19[var26 + 3] = var10; + } else if(var8 == 2) { + var19[var26 + 1536 + 3] = var10; + } else if(var8 == 3) { + var19[var26 + 1536] = var10; + } + } + + if(var9 == 2) { + if(var8 == 3) { + var19[var26] = var10; + var19[var26 + 512] = var10; + var19[var26 + 1024] = var10; + var19[var26 + 1536] = var10; + } else if(var8 == 0) { + var19[var26] = var10; + var19[var26 + 1] = var10; + var19[var26 + 2] = var10; + var19[var26 + 3] = var10; + } else if(var8 == 1) { + var19[var26 + 3] = var10; + var19[var26 + 512 + 3] = var10; + var19[var26 + 1024 + 3] = var10; + var19[var26 + 1536 + 3] = var10; + } else if(var8 == 2) { + var19[var26 + 1536] = var10; + var19[var26 + 1536 + 1] = var10; + var19[var26 + 1536 + 2] = var10; + var19[var26 + 1536 + 3] = var10; + } + } + } + } + + var5 = class65.scene.__ay_246(var0, var1, var2); + if(0L != var5) { + var7 = class65.scene.getObjectFlags(var0, var1, var2, var5); + var8 = var7 >> 6 & 3; + var9 = var7 & 31; + var10 = HitSplatDefinition.method4972(var5); + ObjectDefinition var20 = class50.getObjectDefinition(var10); + if(var20.mapSceneId != -1) { + IndexedSprite var28 = class192.mapSceneSprites[var20.mapSceneId]; + if(var28 != null) { + var26 = (var20.sizeX * 4 - var28.subWidth) / 2; + var14 = (var20.sizeY * 4 - var28.subHeight) / 2; + var28.__q_496(var26 + var1 * 4 + 48, (104 - var2 - var20.sizeY) * 4 + var14 + 48); + } + } else if(var9 == 9) { + int var25 = 15658734; + boolean var27 = 0L != var5; + if(var27) { + boolean var23 = (int)(var5 >>> 16 & 1L) == 1; + var27 = !var23; + } + + if(var27) { + var25 = 15597568; + } + + int[] var24 = WidgetGroupParent.sceneMinimapSprite.pixels; + int var29 = var1 * 4 + (103 - var2) * 2048 + 24624; + if(var8 != 0 && var8 != 2) { + var24[var29] = var25; + var24[var29 + 1 + 512] = var25; + var24[var29 + 1024 + 2] = var25; + var24[var29 + 1536 + 3] = var25; + } else { + var24[var29 + 1536] = var25; + var24[var29 + 1 + 1024] = var25; + var24[var29 + 512 + 2] = var25; + var24[var29 + 3] = var25; + } + } + } + + var5 = class65.scene.getFloorDecorationTag(var0, var1, var2); + if(var5 != 0L) { + var7 = HitSplatDefinition.method4972(var5); + ObjectDefinition var21 = class50.getObjectDefinition(var7); + if(var21.mapSceneId != -1) { + IndexedSprite var22 = class192.mapSceneSprites[var21.mapSceneId]; + if(var22 != null) { + var10 = (var21.sizeX * 4 - var22.subWidth) / 2; + int var11 = (var21.sizeY * 4 - var22.subHeight) / 2; + var22.__q_496(var10 + var1 * 4 + 48, var11 + (104 - var2 - var21.sizeY) * 4 + 48); + } + } + } + + } + + @ObfuscatedName("it") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Lho;B)Ljava/lang/String;", + garbageValue = "17" + ) + static String method1194(String var0, Widget var1) { + if(var0.indexOf("%") != -1) { + for(int var2 = 1; var2 <= 5; ++var2) { + while(true) { + int var3 = var0.indexOf("%" + var2); + if(var3 == -1) { + break; + } + + String var4 = var0.substring(0, var3); + int var6 = class16.method187(var1, var2 - 1); + String var5; + if(var6 < 999999999) { + var5 = Integer.toString(var6); + } else { + var5 = "*"; + } + + var0 = var4 + var5 + var0.substring(var3 + 2); + } + } + } + + return var0; + } + + @ObfuscatedName("ji") + @ObfuscatedSignature( + signature = "(Lho;IIII)V", + garbageValue = "-335916694" + ) + static final void method1189(Widget var0, int var1, int var2, int var3) { + class13.method163(); + SpriteMask var4 = var0.getSpriteMask(false); + if(var4 != null) { + Rasterizer2D.Rasterizer2D_setClip(var1, var2, var4.width + var1, var2 + var4.height); + if(Client.minimapState != 2 && Client.minimapState != 5) { + int var5 = Client.minimapOrientation & 2047; + int var6 = Canvas.localPlayer.x / 32 + 48; + int var7 = 464 - Canvas.localPlayer.y / 32; + WidgetGroupParent.sceneMinimapSprite.__ay_513(var1, var2, var4.width, var4.height, var6, var7, var5, 256, var4.xStarts, var4.xWidths); + + int var8; + int var9; + int var10; + for(var8 = 0; var8 < Client.mapIconCount; ++var8) { + var9 = Client.mapIconXs[var8] * 4 + 2 - Canvas.localPlayer.x / 32; + var10 = Client.mapIconYs[var8] * 4 + 2 - Canvas.localPlayer.y / 32; + NetFileRequest.method4554(var1, var2, var9, var10, Client.mapIcons[var8], var4); + } + + int var11; + int var12; + for(var8 = 0; var8 < 104; ++var8) { + for(var9 = 0; var9 < 104; ++var9) { + NodeDeque var15 = Client.groundItems[SoundSystem.plane][var8][var9]; + if(var15 != null) { + var11 = var8 * 4 + 2 - Canvas.localPlayer.x / 32; + var12 = var9 * 4 + 2 - Canvas.localPlayer.y / 32; + NetFileRequest.method4554(var1, var2, var11, var12, class39.mapDotSprites[0], var4); + } + } + } + + for(var8 = 0; var8 < Client.npcCount; ++var8) { + Npc var16 = Client.npcs[Client.npcIndices[var8]]; + if(var16 != null && var16.isVisible()) { + NpcDefinition var18 = var16.definition; + if(var18 != null && var18.transforms != null) { + var18 = var18.transform(); + } + + if(var18 != null && var18.drawMapDot && var18.isInteractable) { + var11 = var16.x / 32 - Canvas.localPlayer.x / 32; + var12 = var16.y / 32 - Canvas.localPlayer.y / 32; + NetFileRequest.method4554(var1, var2, var11, var12, class39.mapDotSprites[1], var4); + } + } + } + + var8 = Players.Players_count; + int[] var19 = Players.Players_indices; + + for(var10 = 0; var10 < var8; ++var10) { + Player var17 = Client.players[var19[var10]]; + if(var17 != null && var17.isVisible() && !var17.isHidden && var17 != Canvas.localPlayer) { + var12 = var17.x / 32 - Canvas.localPlayer.x / 32; + int var13 = var17.y / 32 - Canvas.localPlayer.y / 32; + boolean var14 = false; + if(Canvas.localPlayer.team != 0 && var17.team != 0 && var17.team == Canvas.localPlayer.team) { + var14 = true; + } + + if(var17.isFriend()) { + NetFileRequest.method4554(var1, var2, var12, var13, class39.mapDotSprites[3], var4); + } else if(var14) { + NetFileRequest.method4554(var1, var2, var12, var13, class39.mapDotSprites[4], var4); + } else if(var17.isClanMember()) { + NetFileRequest.method4554(var1, var2, var12, var13, class39.mapDotSprites[5], var4); + } else { + NetFileRequest.method4554(var1, var2, var12, var13, class39.mapDotSprites[2], var4); + } + } + } + + if(Client.hintArrowType != 0 && Client.cycle % 20 < 10) { + if(Client.hintArrowType == 1 && Client.hintArrowNpcIndex >= 0 && Client.hintArrowNpcIndex < Client.npcs.length) { + Npc var20 = Client.npcs[Client.hintArrowNpcIndex]; + if(var20 != null) { + var11 = var20.x / 32 - Canvas.localPlayer.x / 32; + var12 = var20.y / 32 - Canvas.localPlayer.y / 32; + UserComparator5.worldToMinimap(var1, var2, var11, var12, class16.mapMarkerSprites[1], var4); + } + } + + if(Client.hintArrowType == 2) { + var10 = Client.hintArrowX * 4 - class50.baseX * 4 + 2 - Canvas.localPlayer.x / 32; + var11 = Client.hintArrowY * 4 - GraphicsObject.baseY * 4 + 2 - Canvas.localPlayer.y / 32; + UserComparator5.worldToMinimap(var1, var2, var10, var11, class16.mapMarkerSprites[1], var4); + } + + if(Client.hintArrowType == 10 && Client.hintArrowPlayerIndex >= 0 && Client.hintArrowPlayerIndex < Client.players.length) { + Player var21 = Client.players[Client.hintArrowPlayerIndex]; + if(var21 != null) { + var11 = var21.x / 32 - Canvas.localPlayer.x / 32; + var12 = var21.y / 32 - Canvas.localPlayer.y / 32; + UserComparator5.worldToMinimap(var1, var2, var11, var12, class16.mapMarkerSprites[1], var4); + } + } + } + + if(Client.destinationX != 0) { + var10 = Client.destinationX * 4 + 2 - Canvas.localPlayer.x / 32; + var11 = Client.destinationY * 4 + 2 - Canvas.localPlayer.y / 32; + NetFileRequest.method4554(var1, var2, var10, var11, class16.mapMarkerSprites[0], var4); + } + + if(!Canvas.localPlayer.isHidden) { + Rasterizer2D.Rasterizer2D_fillRectangle(var4.width / 2 + var1 - 1, var4.height / 2 + var2 - 1, 3, 3, 16777215); + } + } else { + Rasterizer2D.method5948(var1, var2, 0, var4.xStarts, var4.xWidths); + } + + Client.__client_ot[var3] = true; + } + } +} diff --git a/rs-client/src/main/java/MouseWheel.java b/rs-client/src/main/java/MouseWheel.java new file mode 100644 index 0000000000..bb5ff4d143 --- /dev/null +++ b/rs-client/src/main/java/MouseWheel.java @@ -0,0 +1,16 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fv") +@Implements("MouseWheel") +public interface MouseWheel { + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1293035280" + ) + @Export("useRotation") + int useRotation(); +} diff --git a/rs-client/src/main/java/MouseWheelHandler.java b/rs-client/src/main/java/MouseWheelHandler.java new file mode 100644 index 0000000000..6cca354e21 --- /dev/null +++ b/rs-client/src/main/java/MouseWheelHandler.java @@ -0,0 +1,60 @@ +import java.awt.Component; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("am") +@Implements("MouseWheelHandler") +public final class MouseWheelHandler implements MouseWheel, MouseWheelListener { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -182252389 + ) + @Export("rotation") + int rotation; + + MouseWheelHandler() { + this.rotation = 0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/awt/Component;B)V", + garbageValue = "-28" + ) + @Export("addTo") + void addTo(Component var1) { + var1.addMouseWheelListener(this); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/awt/Component;I)V", + garbageValue = "-544062729" + ) + @Export("removeFrom") + void removeFrom(Component var1) { + var1.removeMouseWheelListener(this); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1293035280" + ) + public synchronized int useRotation() { + int var1 = this.rotation; + this.rotation = 0; + return var1; + } + + @Export("mouseWheelMoved") + @ObfuscatedName("mouseWheelMoved") + public synchronized void mouseWheelMoved(MouseWheelEvent var1) { + this.rotation += var1.getWheelRotation(); + } +} diff --git a/rs-client/src/main/java/MusicPatch.java b/rs-client/src/main/java/MusicPatch.java new file mode 100644 index 0000000000..d91cca4a74 --- /dev/null +++ b/rs-client/src/main/java/MusicPatch.java @@ -0,0 +1,543 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hl") +@Implements("MusicPatch") +public class MusicPatch extends Node { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 574200865 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "[Lcx;" + ) + @Export("rawSounds") + RawSound[] rawSounds; + @ObfuscatedName("q") + @Export("__q") + short[] __q; + @ObfuscatedName("w") + @Export("__w") + byte[] __w; + @ObfuscatedName("o") + @Export("__o") + byte[] __o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "[Lhd;" + ) + @Export("__u") + MusicPatchNode2[] __u; + @ObfuscatedName("g") + @Export("__g") + byte[] __g; + @ObfuscatedName("l") + @Export("__l") + int[] __l; + + MusicPatch(byte[] var1) { + this.rawSounds = new RawSound[128]; + this.__q = new short[128]; + this.__w = new byte[128]; + this.__o = new byte[128]; + this.__u = new MusicPatchNode2[128]; + this.__g = new byte[128]; + this.__l = new int[128]; + Buffer var2 = new Buffer(var1); + + int var3; + for(var3 = 0; var2.array[var3 + var2.index] != 0; ++var3) { + ; + } + + byte[] var4 = new byte[var3]; + + int var5; + for(var5 = 0; var5 < var3; ++var5) { + var4[var5] = var2.readByte(); + } + + ++var2.index; + ++var3; + var5 = var2.index; + var2.index += var3; + + int var6; + for(var6 = 0; var2.array[var6 + var2.index] != 0; ++var6) { + ; + } + + byte[] var7 = new byte[var6]; + + int var8; + for(var8 = 0; var8 < var6; ++var8) { + var7[var8] = var2.readByte(); + } + + ++var2.index; + ++var6; + var8 = var2.index; + var2.index += var6; + + int var9; + for(var9 = 0; var2.array[var9 + var2.index] != 0; ++var9) { + ; + } + + byte[] var10 = new byte[var9]; + + for(int var11 = 0; var11 < var9; ++var11) { + var10[var11] = var2.readByte(); + } + + ++var2.index; + ++var9; + byte[] var38 = new byte[var9]; + int var12; + int var14; + if(var9 > 1) { + var38[1] = 1; + int var13 = 1; + var12 = 2; + + for(var14 = 2; var14 < var9; ++var14) { + int var15 = var2.readUnsignedByte(); + if(var15 == 0) { + var13 = var12++; + } else { + if(var15 <= var13) { + --var15; + } + + var13 = var15; + } + + var38[var14] = (byte)var13; + } + } else { + var12 = var9; + } + + MusicPatchNode2[] var39 = new MusicPatchNode2[var12]; + + MusicPatchNode2 var40; + for(var14 = 0; var14 < var39.length; ++var14) { + var40 = var39[var14] = new MusicPatchNode2(); + int var16 = var2.readUnsignedByte(); + if(var16 > 0) { + var40.__m = new byte[var16 * 2]; + } + + var16 = var2.readUnsignedByte(); + if(var16 > 0) { + var40.__f = new byte[var16 * 2 + 2]; + var40.__f[1] = 64; + } + } + + var14 = var2.readUnsignedByte(); + byte[] var47 = var14 > 0?new byte[var14 * 2]:null; + var14 = var2.readUnsignedByte(); + byte[] var41 = var14 > 0?new byte[var14 * 2]:null; + + int var17; + for(var17 = 0; var2.array[var17 + var2.index] != 0; ++var17) { + ; + } + + byte[] var18 = new byte[var17]; + + int var19; + for(var19 = 0; var19 < var17; ++var19) { + var18[var19] = var2.readByte(); + } + + ++var2.index; + ++var17; + var19 = 0; + + int var20; + for(var20 = 0; var20 < 128; ++var20) { + var19 += var2.readUnsignedByte(); + this.__q[var20] = (short)var19; + } + + var19 = 0; + + for(var20 = 0; var20 < 128; ++var20) { + var19 += var2.readUnsignedByte(); + this.__q[var20] = (short)(this.__q[var20] + (var19 << 8)); + } + + var20 = 0; + int var21 = 0; + int var22 = 0; + + int var23; + for(var23 = 0; var23 < 128; ++var23) { + if(var20 == 0) { + if(var21 < var18.length) { + var20 = var18[var21++]; + } else { + var20 = -1; + } + + var22 = var2.__as_311(); + } + + this.__q[var23] = (short)(this.__q[var23] + ((var22 - 1 & 2) << 14)); + this.__l[var23] = var22; + --var20; + } + + var20 = 0; + var21 = 0; + var23 = 0; + + int var24; + for(var24 = 0; var24 < 128; ++var24) { + if(this.__l[var24] != 0) { + if(var20 == 0) { + if(var21 < var4.length) { + var20 = var4[var21++]; + } else { + var20 = -1; + } + + var23 = var2.array[var5++] - 1; + } + + this.__g[var24] = (byte)var23; + --var20; + } + } + + var20 = 0; + var21 = 0; + var24 = 0; + + for(int var25 = 0; var25 < 128; ++var25) { + if(this.__l[var25] != 0) { + if(var20 == 0) { + if(var21 < var7.length) { + var20 = var7[var21++]; + } else { + var20 = -1; + } + + var24 = var2.array[var8++] + 16 << 2; + } + + this.__o[var25] = (byte)var24; + --var20; + } + } + + var20 = 0; + var21 = 0; + MusicPatchNode2 var42 = null; + + int var26; + for(var26 = 0; var26 < 128; ++var26) { + if(this.__l[var26] != 0) { + if(var20 == 0) { + var42 = var39[var38[var21]]; + if(var21 < var10.length) { + var20 = var10[var21++]; + } else { + var20 = -1; + } + } + + this.__u[var26] = var42; + --var20; + } + } + + var20 = 0; + var21 = 0; + var26 = 0; + + int var27; + for(var27 = 0; var27 < 128; ++var27) { + if(var20 == 0) { + if(var21 < var18.length) { + var20 = var18[var21++]; + } else { + var20 = -1; + } + + if(this.__l[var27] > 0) { + var26 = var2.readUnsignedByte() + 1; + } + } + + this.__w[var27] = (byte)var26; + --var20; + } + + this.__m = var2.readUnsignedByte() + 1; + + MusicPatchNode2 var28; + int var29; + for(var27 = 0; var27 < var12; ++var27) { + var28 = var39[var27]; + if(var28.__m != null) { + for(var29 = 1; var29 < var28.__m.length; var29 += 2) { + var28.__m[var29] = var2.readByte(); + } + } + + if(var28.__f != null) { + for(var29 = 3; var29 < var28.__f.length - 2; var29 += 2) { + var28.__f[var29] = var2.readByte(); + } + } + } + + if(var47 != null) { + for(var27 = 1; var27 < var47.length; var27 += 2) { + var47[var27] = var2.readByte(); + } + } + + if(var41 != null) { + for(var27 = 1; var27 < var41.length; var27 += 2) { + var41[var27] = var2.readByte(); + } + } + + for(var27 = 0; var27 < var12; ++var27) { + var28 = var39[var27]; + if(var28.__f != null) { + var19 = 0; + + for(var29 = 2; var29 < var28.__f.length; var29 += 2) { + var19 = 1 + var19 + var2.readUnsignedByte(); + var28.__f[var29] = (byte)var19; + } + } + } + + for(var27 = 0; var27 < var12; ++var27) { + var28 = var39[var27]; + if(var28.__m != null) { + var19 = 0; + + for(var29 = 2; var29 < var28.__m.length; var29 += 2) { + var19 = 1 + var19 + var2.readUnsignedByte(); + var28.__m[var29] = (byte)var19; + } + } + } + + byte var30; + int var32; + int var33; + int var34; + int var35; + int var36; + int var44; + byte var46; + if(var47 != null) { + var19 = var2.readUnsignedByte(); + var47[0] = (byte)var19; + + for(var27 = 2; var27 < var47.length; var27 += 2) { + var19 = 1 + var19 + var2.readUnsignedByte(); + var47[var27] = (byte)var19; + } + + var46 = var47[0]; + byte var43 = var47[1]; + + for(var29 = 0; var29 < var46; ++var29) { + this.__w[var29] = (byte)(var43 * this.__w[var29] + 32 >> 6); + } + + for(var29 = 2; var29 < var47.length; var29 += 2) { + var30 = var47[var29]; + byte var31 = var47[var29 + 1]; + var32 = var43 * (var30 - var46) + (var30 - var46) / 2; + + for(var33 = var46; var33 < var30; ++var33) { + var35 = var30 - var46; + var36 = var32 >>> 31; + var34 = (var32 + var36) / var35 - var36; + this.__w[var33] = (byte)(var34 * this.__w[var33] + 32 >> 6); + var32 += var31 - var43; + } + + var46 = var30; + var43 = var31; + } + + for(var44 = var46; var44 < 128; ++var44) { + this.__w[var44] = (byte)(var43 * this.__w[var44] + 32 >> 6); + } + + var40 = null; + } + + if(var41 != null) { + var19 = var2.readUnsignedByte(); + var41[0] = (byte)var19; + + for(var27 = 2; var27 < var41.length; var27 += 2) { + var19 = 1 + var19 + var2.readUnsignedByte(); + var41[var27] = (byte)var19; + } + + var46 = var41[0]; + int var49 = var41[1] << 1; + + for(var29 = 0; var29 < var46; ++var29) { + var44 = var49 + (this.__o[var29] & 255); + if(var44 < 0) { + var44 = 0; + } + + if(var44 > 128) { + var44 = 128; + } + + this.__o[var29] = (byte)var44; + } + + int var45; + for(var29 = 2; var29 < var41.length; var29 += 2) { + var30 = var41[var29]; + var45 = var41[var29 + 1] << 1; + var32 = var49 * (var30 - var46) + (var30 - var46) / 2; + + for(var33 = var46; var33 < var30; ++var33) { + var35 = var30 - var46; + var36 = var32 >>> 31; + var34 = (var32 + var36) / var35 - var36; + int var37 = var34 + (this.__o[var33] & 255); + if(var37 < 0) { + var37 = 0; + } + + if(var37 > 128) { + var37 = 128; + } + + this.__o[var33] = (byte)var37; + var32 += var45 - var49; + } + + var46 = var30; + var49 = var45; + } + + for(var44 = var46; var44 < 128; ++var44) { + var45 = var49 + (this.__o[var44] & 255); + if(var45 < 0) { + var45 = 0; + } + + if(var45 > 128) { + var45 = 128; + } + + this.__o[var44] = (byte)var45; + } + + Object var48 = null; + } + + for(var27 = 0; var27 < var12; ++var27) { + var39[var27].__q = var2.readUnsignedByte(); + } + + for(var27 = 0; var27 < var12; ++var27) { + var28 = var39[var27]; + if(var28.__m != null) { + var28.__w = var2.readUnsignedByte(); + } + + if(var28.__f != null) { + var28.__o = var2.readUnsignedByte(); + } + + if(var28.__q > 0) { + var28.__u = var2.readUnsignedByte(); + } + } + + for(var27 = 0; var27 < var12; ++var27) { + var39[var27].__l = var2.readUnsignedByte(); + } + + for(var27 = 0; var27 < var12; ++var27) { + var28 = var39[var27]; + if(var28.__l > 0) { + var28.__g = var2.readUnsignedByte(); + } + } + + for(var27 = 0; var27 < var12; ++var27) { + var28 = var39[var27]; + if(var28.__g > 0) { + var28.__e = var2.readUnsignedByte(); + } + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ldt;[B[II)Z", + garbageValue = "1828768318" + ) + @Export("__f_373") + boolean __f_373(SoundCache var1, byte[] var2, int[] var3) { + boolean var4 = true; + int var5 = 0; + RawSound var6 = null; + + for(int var7 = 0; var7 < 128; ++var7) { + if(var2 == null || var2[var7] != 0) { + int var8 = this.__l[var7]; + if(var8 != 0) { + if(var8 != var5) { + var5 = var8--; + if((var8 & 1) == 0) { + var6 = var1.getSoundEffect(var8 >> 2, var3); + } else { + var6 = var1.getMusicSample(var8 >> 2, var3); + } + + if(var6 == null) { + var4 = false; + } + } + + if(var6 != null) { + this.rawSounds[var7] = var6; + this.__l[var7] = 0; + } + } + } + } + + return var4; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "2" + ) + @Export("clear") + void clear() { + this.__l = null; + } +} diff --git a/rs-client/src/main/java/MusicPatchNode.java b/rs-client/src/main/java/MusicPatchNode.java new file mode 100644 index 0000000000..c03f0a99ed --- /dev/null +++ b/rs-client/src/main/java/MusicPatchNode.java @@ -0,0 +1,155 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ha") +@Implements("MusicPatchNode") +public class MusicPatchNode extends Node { + @ObfuscatedName("he") + @ObfuscatedGetter( + intValue = 2069364655 + ) + @Export("cameraYaw") + static int cameraYaw; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 801157533 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lhl;" + ) + @Export("patch") + MusicPatch patch; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lcx;" + ) + @Export("rawSound") + RawSound rawSound; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lhd;" + ) + @Export("__w") + MusicPatchNode2 __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -2058553171 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 62958303 + ) + @Export("__u") + int __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -836502917 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -308599455 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -471899285 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1520706641 + ) + @Export("__x") + int __x; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -852988281 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -439388365 + ) + @Export("__k") + int __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 476852577 + ) + @Export("surfaceOffsetY") + int __n; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -2136855685 + ) + @Export("__i") + int __i; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -2083252379 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 1605236771 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 173672931 + ) + @Export("__j") + int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 219840779 + ) + @Export("__s") + int __s; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lds;" + ) + @Export("stream") + RawPcmStream stream; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = -666877449 + ) + @Export("__y") + int __y; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 1359854411 + ) + @Export("__b") + int __b; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "39" + ) + @Export("__m_370") + void __m_370() { + this.patch = null; + this.rawSound = null; + this.__w = null; + this.stream = null; + } +} diff --git a/rs-client/src/main/java/MusicPatchNode2.java b/rs-client/src/main/java/MusicPatchNode2.java new file mode 100644 index 0000000000..f98ddc01f9 --- /dev/null +++ b/rs-client/src/main/java/MusicPatchNode2.java @@ -0,0 +1,63 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("hd") +@Implements("MusicPatchNode2") +public class MusicPatchNode2 { + @ObfuscatedName("fc") + @ObfuscatedGetter( + longValue = -6780258776884306463L + ) + @Export("__hd_fc") + static long __hd_fc; + @ObfuscatedName("m") + @Export("__m") + byte[] __m; + @ObfuscatedName("f") + @Export("__f") + byte[] __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 140046797 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -249046051 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1455145595 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1577527995 + ) + @Export("__u") + int __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 391670135 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 320761691 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 1984131473 + ) + @Export("__e") + int __e; +} diff --git a/rs-client/src/main/java/MusicPatchPcmStream.java b/rs-client/src/main/java/MusicPatchPcmStream.java new file mode 100644 index 0000000000..25a7e0c8fa --- /dev/null +++ b/rs-client/src/main/java/MusicPatchPcmStream.java @@ -0,0 +1,202 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hq") +@Implements("MusicPatchPcmStream") +public class MusicPatchPcmStream extends PcmStream { + @ObfuscatedName("qg") + @ObfuscatedGetter( + intValue = -1367955455 + ) + @Export("__hq_qg") + static int __hq_qg; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lhm;" + ) + @Export("superStream") + MidiPcmStream superStream; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("queue") + NodeDeque queue; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lct;" + ) + @Export("mixer") + PcmStreamMixer mixer; + + @ObfuscatedSignature( + signature = "(Lhm;)V" + ) + MusicPatchPcmStream(MidiPcmStream var1) { + this.queue = new NodeDeque(); + this.mixer = new PcmStreamMixer(); + this.superStream = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lha;[IIIII)V", + garbageValue = "1988628167" + ) + @Export("__m_379") + void __m_379(MusicPatchNode var1, int[] var2, int var3, int var4, int var5) { + if((this.superStream.__y[var1.__m] & 4) != 0 && var1.__a < 0) { + int var6 = this.superStream.__p[var1.__m] / class309.PcmPlayer_sampleRate; + + while(true) { + int var7 = (var6 + 1048575 - var1.__b) / var6; + if(var7 > var4) { + var1.__b += var4 * var6; + break; + } + + var1.stream.__e_172(var2, var3, var7); + var3 += var7; + var4 -= var7; + var1.__b += var7 * var6 - 1048576; + int var8 = class309.PcmPlayer_sampleRate / 100; + int var9 = 262144 / var6; + if(var9 < var8) { + var8 = var9; + } + + RawPcmStream var10 = var1.stream; + if(this.superStream.__c[var1.__m] == 0) { + var1.stream = RawPcmStream.method2524(var1.rawSound, var10.__ab_194(), var10.__s_185(), var10.__t_186()); + } else { + var1.stream = RawPcmStream.method2524(var1.rawSound, var10.__ab_194(), 0, var10.__t_186()); + this.superStream.__h_346(var1, var1.patch.__q[var1.__u] < 0); + var1.stream.__c_190(var8, var10.__s_185()); + } + + if(var1.patch.__q[var1.__u] < 0) { + var1.stream.__x_181(-1); + } + + var10.__v_192(var8); + var10.__e_172(var2, var3, var5 - var3); + if(var10.__at_196()) { + this.mixer.addSubStream(var10); + } + } + } + + var1.stream.__e_172(var2, var3, var4); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lha;II)V", + garbageValue = "1882591412" + ) + @Export("__f_380") + void __f_380(MusicPatchNode var1, int var2) { + if((this.superStream.__y[var1.__m] & 4) != 0 && var1.__a < 0) { + int var3 = this.superStream.__p[var1.__m] / class309.PcmPlayer_sampleRate; + int var4 = (var3 + 1048575 - var1.__b) / var3; + var1.__b = var3 * var2 + var1.__b & 1048575; + if(var4 <= var2) { + if(this.superStream.__c[var1.__m] == 0) { + var1.stream = RawPcmStream.method2524(var1.rawSound, var1.stream.__ab_194(), var1.stream.__s_185(), var1.stream.__t_186()); + } else { + var1.stream = RawPcmStream.method2524(var1.rawSound, var1.stream.__ab_194(), 0, var1.stream.__t_186()); + this.superStream.__h_346(var1, var1.patch.__q[var1.__u] < 0); + } + + if(var1.patch.__q[var1.__u] < 0) { + var1.stream.__x_181(-1); + } + + var2 = var1.__b / var3; + } + } + + var1.stream.__d_173(var2); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected PcmStream firstSubStream() { + MusicPatchNode var1 = (MusicPatchNode)this.queue.last(); + return (PcmStream)(var1 == null?null:(var1.stream != null?var1.stream:this.nextSubStream())); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected PcmStream nextSubStream() { + MusicPatchNode var1; + do { + var1 = (MusicPatchNode)this.queue.previous(); + if(var1 == null) { + return null; + } + } while(var1.stream == null); + + return var1.stream; + } + + @ObfuscatedName("l") + protected int __l_171() { + return 0; + } + + @ObfuscatedName("e") + protected void __e_172(int[] var1, int var2, int var3) { + this.mixer.__e_172(var1, var2, var3); + + for(MusicPatchNode var6 = (MusicPatchNode)this.queue.last(); var6 != null; var6 = (MusicPatchNode)this.queue.previous()) { + if(!this.superStream.__ba_368(var6)) { + int var4 = var2; + int var5 = var3; + + do { + if(var5 <= var6.__y) { + this.__m_379(var6, var1, var4, var5, var5 + var4); + var6.__y -= var5; + break; + } + + this.__m_379(var6, var1, var4, var6.__y, var5 + var4); + var4 += var6.__y; + var5 -= var6.__y; + } while(!this.superStream.__bb_369(var6, var1, var4, var5)); + } + } + + } + + @ObfuscatedName("d") + protected void __d_173(int var1) { + this.mixer.__d_173(var1); + + for(MusicPatchNode var3 = (MusicPatchNode)this.queue.last(); var3 != null; var3 = (MusicPatchNode)this.queue.previous()) { + if(!this.superStream.__ba_368(var3)) { + int var2 = var1; + + do { + if(var2 <= var3.__y) { + this.__f_380(var3, var2); + var3.__y -= var2; + break; + } + + this.__f_380(var3, var3.__y); + var2 -= var3.__y; + } while(!this.superStream.__bb_369(var3, (int[])null, 0, var2)); + } + } + + } +} diff --git a/rs-client/src/main/java/MusicSample.java b/rs-client/src/main/java/MusicSample.java new file mode 100644 index 0000000000..d3f9c83d47 --- /dev/null +++ b/rs-client/src/main/java/MusicSample.java @@ -0,0 +1,655 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cd") +@Implements("MusicSample") +public class MusicSample extends Node { + @ObfuscatedName("g") + @Export("__cd_g") + static byte[] __cd_g; + @ObfuscatedName("l") + @Export("__cd_l") + static int __cd_l; + @ObfuscatedName("e") + @Export("__cd_e") + static int __cd_e; + @ObfuscatedName("x") + @Export("__cd_x") + static int __cd_x; + @ObfuscatedName("d") + @Export("__cd_d") + static int __cd_d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "[Lcc;" + ) + static class98[] field1323; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "[Lca;" + ) + static class102[] field1324; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "[Lda;" + ) + static class109[] field1344; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "[Ldg;" + ) + static class114[] field1326; + @ObfuscatedName("z") + @Export("__cd_z") + static boolean[] __cd_z; + @ObfuscatedName("j") + @Export("__cd_j") + static int[] __cd_j; + @ObfuscatedName("s") + @Export("__cd_s") + static boolean __cd_s; + @ObfuscatedName("c") + @Export("__cd_c") + static float[] __cd_c; + @ObfuscatedName("r") + @Export("__cd_r") + static float[] __cd_r; + @ObfuscatedName("p") + @Export("__cd_p") + static float[] __cd_p; + @ObfuscatedName("v") + @Export("__cd_v") + static float[] __cd_v; + @ObfuscatedName("ag") + @Export("__cd_ag") + static float[] __cd_ag; + @ObfuscatedName("aq") + @Export("__cd_aq") + static float[] __cd_aq; + @ObfuscatedName("aj") + @Export("__cd_aj") + static float[] __cd_aj; + @ObfuscatedName("av") + @Export("__cd_av") + static int[] __cd_av; + @ObfuscatedName("ar") + @Export("__cd_ar") + static int[] __cd_ar; + @ObfuscatedName("m") + @Export("__m") + byte[][] __m; + @ObfuscatedName("f") + @Export("sampleRate") + int sampleRate; + @ObfuscatedName("q") + @Export("sampleCount") + int sampleCount; + @ObfuscatedName("w") + @Export("start") + int start; + @ObfuscatedName("o") + @Export("end") + int end; + @ObfuscatedName("u") + @Export("__u") + boolean __u; + @ObfuscatedName("t") + @Export("__t") + float[] __t; + @ObfuscatedName("y") + @Export("__y") + int __y; + @ObfuscatedName("h") + @Export("__h") + int __h; + @ObfuscatedName("b") + @Export("__b") + boolean __b; + @ObfuscatedName("ac") + @Export("samples") + byte[] samples; + @ObfuscatedName("ay") + @Export("__ay") + int __ay; + @ObfuscatedName("ah") + @Export("__ah") + int __ah; + + static { + __cd_s = false; + } + + MusicSample(byte[] var1) { + this.read(var1); + } + + @ObfuscatedName("o") + @Export("read") + void read(byte[] var1) { + Buffer var2 = new Buffer(var1); + this.sampleRate = var2.readInt(); + this.sampleCount = var2.readInt(); + this.start = var2.readInt(); + this.end = var2.readInt(); + if(this.end < 0) { + this.end = ~this.end; + this.__u = true; + } + + int var3 = var2.readInt(); + this.__m = new byte[var3][]; + + for(int var4 = 0; var4 < var3; ++var4) { + int var5 = 0; + + int var6; + do { + var6 = var2.readUnsignedByte(); + var5 += var6; + } while(var6 >= 255); + + byte[] var7 = new byte[var5]; + var2.__al_305(var7, 0, var5); + this.__m[var4] = var7; + } + + } + + @ObfuscatedName("g") + @Export("__g_175") + float[] __g_175(int var1) { + method2337(this.__m[var1], 0); + method2338(); + int var2 = method2352(WorldMapCacheName.method634(__cd_j.length - 1)); + boolean var3 = __cd_z[var2]; + int var4 = var3?__cd_d:__cd_x; + boolean var5 = false; + boolean var6 = false; + if(var3) { + var5 = method2338() != 0; + var6 = method2338() != 0; + } + + int var7 = var4 >> 1; + int var8; + int var9; + int var10; + if(var3 && !var5) { + var8 = (var4 >> 2) - (__cd_x >> 2); + var9 = (__cd_x >> 2) + (var4 >> 2); + var10 = __cd_x >> 1; + } else { + var8 = 0; + var9 = var7; + var10 = var4 >> 1; + } + + int var11; + int var12; + int var13; + if(var3 && !var6) { + var11 = var4 - (var4 >> 2) - (__cd_x >> 2); + var12 = (__cd_x >> 2) + (var4 - (var4 >> 2)); + var13 = __cd_x >> 1; + } else { + var11 = var7; + var12 = var4; + var13 = var4 >> 1; + } + + class114 var14 = field1326[__cd_j[var2]]; + int var16 = var14.field1454; + int var17 = var14.field1452[var16]; + boolean var15 = !field1324[var17].method2367(); + boolean var45 = var15; + + for(var17 = 0; var17 < var14.field1453; ++var17) { + class109 var18 = field1344[var14.field1455[var17]]; + float[] var19 = __cd_c; + var18.method2473(var19, var4 >> 1, var45); + } + + int var40; + if(!var15) { + var17 = var14.field1454; + var40 = var14.field1452[var17]; + field1324[var40].method2375(__cd_c, var4 >> 1); + } + + int var42; + if(var15) { + for(var17 = var4 >> 1; var17 < var4; ++var17) { + __cd_c[var17] = 0.0F; + } + } else { + var17 = var4 >> 1; + var40 = var4 >> 2; + var42 = var4 >> 3; + float[] var43 = __cd_c; + + int var21; + for(var21 = 0; var21 < var17; ++var21) { + var43[var21] *= 0.5F; + } + + for(var21 = var17; var21 < var4; ++var21) { + var43[var21] = -var43[var4 - var21 - 1]; + } + + float[] var44 = var3?__cd_ag:__cd_r; + float[] var22 = var3?__cd_aq:__cd_p; + float[] var23 = var3?__cd_aj:__cd_v; + int[] var24 = var3?__cd_ar:__cd_av; + + int var25; + float var26; + float var27; + float var28; + float var29; + for(var25 = 0; var25 < var40; ++var25) { + var26 = var43[var25 * 4] - var43[var4 - var25 * 4 - 1]; + var27 = var43[var25 * 4 + 2] - var43[var4 - var25 * 4 - 3]; + var28 = var44[var25 * 2]; + var29 = var44[var25 * 2 + 1]; + var43[var4 - var25 * 4 - 1] = var26 * var28 - var27 * var29; + var43[var4 - var25 * 4 - 3] = var26 * var29 + var27 * var28; + } + + float var30; + float var31; + for(var25 = 0; var25 < var42; ++var25) { + var26 = var43[var17 + var25 * 4 + 3]; + var27 = var43[var17 + var25 * 4 + 1]; + var28 = var43[var25 * 4 + 3]; + var29 = var43[var25 * 4 + 1]; + var43[var17 + var25 * 4 + 3] = var26 + var28; + var43[var17 + var25 * 4 + 1] = var27 + var29; + var30 = var44[var17 - 4 - var25 * 4]; + var31 = var44[var17 - 3 - var25 * 4]; + var43[var25 * 4 + 3] = (var26 - var28) * var30 - (var27 - var29) * var31; + var43[var25 * 4 + 1] = (var27 - var29) * var30 + (var26 - var28) * var31; + } + + var25 = WorldMapCacheName.method634(var4 - 1); + + int var47; + int var48; + int var49; + int var50; + for(var47 = 0; var47 < var25 - 3; ++var47) { + var48 = var4 >> var47 + 2; + var49 = 8 << var47; + + for(var50 = 0; var50 < 2 << var47; ++var50) { + int var51 = var4 - var48 * var50 * 2; + int var52 = var4 - var48 * (var50 * 2 + 1); + + for(int var32 = 0; var32 < var4 >> var47 + 4; ++var32) { + int var33 = var32 * 4; + float var34 = var43[var51 - 1 - var33]; + float var35 = var43[var51 - 3 - var33]; + float var36 = var43[var52 - 1 - var33]; + float var37 = var43[var52 - 3 - var33]; + var43[var51 - 1 - var33] = var34 + var36; + var43[var51 - 3 - var33] = var35 + var37; + float var38 = var44[var32 * var49]; + float var39 = var44[var32 * var49 + 1]; + var43[var52 - 1 - var33] = (var34 - var36) * var38 - (var35 - var37) * var39; + var43[var52 - 3 - var33] = (var35 - var37) * var38 + (var34 - var36) * var39; + } + } + } + + for(var47 = 1; var47 < var42 - 1; ++var47) { + var48 = var24[var47]; + if(var47 < var48) { + var49 = var47 * 8; + var50 = var48 * 8; + var30 = var43[var49 + 1]; + var43[var49 + 1] = var43[var50 + 1]; + var43[var50 + 1] = var30; + var30 = var43[var49 + 3]; + var43[var49 + 3] = var43[var50 + 3]; + var43[var50 + 3] = var30; + var30 = var43[var49 + 5]; + var43[var49 + 5] = var43[var50 + 5]; + var43[var50 + 5] = var30; + var30 = var43[var49 + 7]; + var43[var49 + 7] = var43[var50 + 7]; + var43[var50 + 7] = var30; + } + } + + for(var47 = 0; var47 < var17; ++var47) { + var43[var47] = var43[var47 * 2 + 1]; + } + + for(var47 = 0; var47 < var42; ++var47) { + var43[var4 - 1 - var47 * 2] = var43[var47 * 4]; + var43[var4 - 2 - var47 * 2] = var43[var47 * 4 + 1]; + var43[var4 - var40 - 1 - var47 * 2] = var43[var47 * 4 + 2]; + var43[var4 - var40 - 2 - var47 * 2] = var43[var47 * 4 + 3]; + } + + for(var47 = 0; var47 < var42; ++var47) { + var27 = var23[var47 * 2]; + var28 = var23[var47 * 2 + 1]; + var29 = var43[var17 + var47 * 2]; + var30 = var43[var17 + var47 * 2 + 1]; + var31 = var43[var4 - 2 - var47 * 2]; + float var53 = var43[var4 - 1 - var47 * 2]; + float var54 = var28 * (var29 - var31) + var27 * (var30 + var53); + var43[var17 + var47 * 2] = (var29 + var31 + var54) * 0.5F; + var43[var4 - 2 - var47 * 2] = (var29 + var31 - var54) * 0.5F; + var54 = var28 * (var30 + var53) - var27 * (var29 - var31); + var43[var17 + var47 * 2 + 1] = (var30 - var53 + var54) * 0.5F; + var43[var4 - 1 - var47 * 2] = (-var30 + var53 + var54) * 0.5F; + } + + for(var47 = 0; var47 < var40; ++var47) { + var43[var47] = var43[var17 + var47 * 2] * var22[var47 * 2] + var43[var17 + var47 * 2 + 1] * var22[var47 * 2 + 1]; + var43[var17 - 1 - var47] = var43[var17 + var47 * 2] * var22[var47 * 2 + 1] - var43[var17 + var47 * 2 + 1] * var22[var47 * 2]; + } + + for(var47 = 0; var47 < var40; ++var47) { + var43[var47 + (var4 - var40)] = -var43[var47]; + } + + for(var47 = 0; var47 < var40; ++var47) { + var43[var47] = var43[var40 + var47]; + } + + for(var47 = 0; var47 < var40; ++var47) { + var43[var40 + var47] = -var43[var40 - var47 - 1]; + } + + for(var47 = 0; var47 < var40; ++var47) { + var43[var17 + var47] = var43[var4 - var47 - 1]; + } + + for(var47 = var8; var47 < var9; ++var47) { + var27 = (float)Math.sin(((double)(var47 - var8) + 0.5D) / (double)var10 * 0.5D * 3.141592653589793D); + __cd_c[var47] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27); + } + + for(var47 = var11; var47 < var12; ++var47) { + var27 = (float)Math.sin(((double)(var47 - var11) + 0.5D) / (double)var13 * 0.5D * 3.141592653589793D + 1.5707963267948966D); + __cd_c[var47] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27); + } + } + + float[] var41 = null; + if(this.__y > 0) { + var40 = var4 + this.__y >> 2; + var41 = new float[var40]; + int var20; + if(!this.__b) { + for(var42 = 0; var42 < this.__h; ++var42) { + var20 = var42 + (this.__y >> 1); + var41[var42] += this.__t[var20]; + } + } + + if(!var15) { + for(var42 = var8; var42 < var4 >> 1; ++var42) { + var20 = var41.length - (var4 >> 1) + var42; + var41[var20] += __cd_c[var42]; + } + } + } + + float[] var46 = this.__t; + this.__t = __cd_c; + __cd_c = var46; + this.__y = var4; + this.__h = var12 - (var4 >> 1); + this.__b = var15; + return var41; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "([I)Lcx;" + ) + @Export("toRawSound") + RawSound toRawSound(int[] var1) { + if(var1 != null && var1[0] <= 0) { + return null; + } else { + if(this.samples == null) { + this.__y = 0; + this.__t = new float[__cd_d]; + this.samples = new byte[this.sampleCount]; + this.__ay = 0; + this.__ah = 0; + } + + for(; this.__ah < this.__m.length; ++this.__ah) { + if(var1 != null && var1[0] <= 0) { + return null; + } + + float[] var2 = this.__g_175(this.__ah); + if(var2 != null) { + int var3 = this.__ay; + int var4 = var2.length; + if(var4 > this.sampleCount - var3) { + var4 = this.sampleCount - var3; + } + + for(int var5 = 0; var5 < var4; ++var5) { + int var6 = (int)(128.0F + var2[var5] * 128.0F); + if((var6 & -256) != 0) { + var6 = ~var6 >> 31; + } + + this.samples[var3++] = (byte)(var6 - 128); + } + + if(var1 != null) { + var1[0] -= var3 - this.__ay; + } + + this.__ay = var3; + } + } + + this.__t = null; + byte[] var7 = this.samples; + this.samples = null; + return new RawSound(this.sampleRate, var7, this.start, this.end, this.__u); + } + } + + @ObfuscatedName("m") + static float method2357(int var0) { + int var1 = var0 & 2097151; + int var2 = var0 & Integer.MIN_VALUE; + int var3 = (var0 & 2145386496) >> 21; + if(var2 != 0) { + var1 = -var1; + } + + return (float)((double)var1 * Math.pow(2.0D, (double)(var3 - 788))); + } + + @ObfuscatedName("f") + static void method2337(byte[] var0, int var1) { + __cd_g = var0; + __cd_l = var1; + __cd_e = 0; + } + + @ObfuscatedName("q") + static int method2338() { + int var0 = __cd_g[__cd_l] >> __cd_e & 1; + ++__cd_e; + __cd_l += __cd_e >> 3; + __cd_e &= 7; + return var0; + } + + @ObfuscatedName("w") + static int method2352(int var0) { + int var1 = 0; + + int var2; + int var3; + for(var2 = 0; var0 >= 8 - __cd_e; var0 -= var3) { + var3 = 8 - __cd_e; + int var4 = (1 << var3) - 1; + var1 += (__cd_g[__cd_l] >> __cd_e & var4) << var2; + __cd_e = 0; + ++__cd_l; + var2 += var3; + } + + if(var0 > 0) { + var3 = (1 << var0) - 1; + var1 += (__cd_g[__cd_l] >> __cd_e & var3) << var2; + __cd_e += var0; + } + + return var1; + } + + @ObfuscatedName("u") + static void method2341(byte[] var0) { + method2337(var0, 0); + __cd_x = 1 << method2352(4); + __cd_d = 1 << method2352(4); + __cd_c = new float[__cd_d]; + + int var1; + int var2; + int var3; + int var4; + int var5; + for(var1 = 0; var1 < 2; ++var1) { + var2 = var1 != 0?__cd_d:__cd_x; + var3 = var2 >> 1; + var4 = var2 >> 2; + var5 = var2 >> 3; + float[] var6 = new float[var3]; + + for(int var7 = 0; var7 < var4; ++var7) { + var6[var7 * 2] = (float)Math.cos((double)(var7 * 4) * 3.141592653589793D / (double)var2); + var6[var7 * 2 + 1] = -((float)Math.sin((double)(var7 * 4) * 3.141592653589793D / (double)var2)); + } + + float[] var12 = new float[var3]; + + for(int var8 = 0; var8 < var4; ++var8) { + var12[var8 * 2] = (float)Math.cos((double)(var8 * 2 + 1) * 3.141592653589793D / (double)(var2 * 2)); + var12[var8 * 2 + 1] = (float)Math.sin((double)(var8 * 2 + 1) * 3.141592653589793D / (double)(var2 * 2)); + } + + float[] var13 = new float[var4]; + + for(int var9 = 0; var9 < var5; ++var9) { + var13[var9 * 2] = (float)Math.cos((double)(var9 * 4 + 2) * 3.141592653589793D / (double)var2); + var13[var9 * 2 + 1] = -((float)Math.sin((double)(var9 * 4 + 2) * 3.141592653589793D / (double)var2)); + } + + int[] var14 = new int[var5]; + int var10 = WorldMapCacheName.method634(var5 - 1); + + for(int var11 = 0; var11 < var5; ++var11) { + var14[var11] = GrandExchangeEvent.method87(var11, var10); + } + + if(var1 != 0) { + __cd_ag = var6; + __cd_aq = var12; + __cd_aj = var13; + __cd_ar = var14; + } else { + __cd_r = var6; + __cd_p = var12; + __cd_v = var13; + __cd_av = var14; + } + } + + var1 = method2352(8) + 1; + field1323 = new class98[var1]; + + for(var2 = 0; var2 < var1; ++var2) { + field1323[var2] = new class98(); + } + + var2 = method2352(6) + 1; + + for(var3 = 0; var3 < var2; ++var3) { + method2352(16); + } + + var2 = method2352(6) + 1; + field1324 = new class102[var2]; + + for(var3 = 0; var3 < var2; ++var3) { + field1324[var3] = new class102(); + } + + var3 = method2352(6) + 1; + field1344 = new class109[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + field1344[var4] = new class109(); + } + + var4 = method2352(6) + 1; + field1326 = new class114[var4]; + + for(var5 = 0; var5 < var4; ++var5) { + field1326[var5] = new class114(); + } + + var5 = method2352(6) + 1; + __cd_z = new boolean[var5]; + __cd_j = new int[var5]; + + for(int var15 = 0; var15 < var5; ++var15) { + __cd_z[var15] = method2338() != 0; + method2352(16); + method2352(16); + __cd_j[var15] = method2352(8); + } + + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Lir;)Z" + ) + static boolean method2343(AbstractIndexCache var0) { + if(!__cd_s) { + byte[] var1 = var0.takeRecord(0, 0); + if(var1 == null) { + return false; + } + + method2341(var1); + __cd_s = true; + } + + return true; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Lir;II)Lcd;" + ) + @Export("readMusicSample") + static MusicSample readMusicSample(AbstractIndexCache var0, int var1, int var2) { + if(!method2343(var0)) { + var0.tryLoadRecord(var1, var2); + return null; + } else { + byte[] var3 = var0.takeRecord(var1, var2); + return var3 == null?null:new MusicSample(var3); + } + } +} diff --git a/rs-client/src/main/java/MusicTrack.java b/rs-client/src/main/java/MusicTrack.java new file mode 100644 index 0000000000..6f340aae23 --- /dev/null +++ b/rs-client/src/main/java/MusicTrack.java @@ -0,0 +1,435 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("he") +@Implements("MusicTrack") +public class MusicTrack extends Node { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("table") + NodeHashTable table; + @ObfuscatedName("f") + @Export("midi") + byte[] midi; + + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + MusicTrack(Buffer var1) { + var1.index = var1.array.length - 3; + int var2 = var1.readUnsignedByte(); + int var3 = var1.__ag_302(); + int var4 = var2 * 10 + 14; + var1.index = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + + int var13; + int var14; + int var15; + for(var13 = 0; var13 < var2; ++var13) { + var14 = -1; + + while(true) { + var15 = var1.readUnsignedByte(); + if(var15 != var14) { + ++var4; + } + + var14 = var15 & 15; + if(var15 == 7) { + break; + } + + if(var15 == 23) { + ++var5; + } else if(var14 == 0) { + ++var7; + } else if(var14 == 1) { + ++var8; + } else if(var14 == 2) { + ++var6; + } else if(var14 == 3) { + ++var9; + } else if(var14 == 4) { + ++var10; + } else if(var14 == 5) { + ++var11; + } else { + if(var14 != 6) { + throw new RuntimeException(); + } + + ++var12; + } + } + } + + var4 += var5 * 5; + var4 += (var7 + var8 + var6 + var9 + var11) * 2; + var4 = var4 + var10 + var12; + var13 = var1.index; + var14 = var2 + var5 + var6 + var7 + var8 + var9 + var10 + var11 + var12; + + for(var15 = 0; var15 < var14; ++var15) { + var1.__as_311(); + } + + var4 += var1.index - var13; + var15 = var1.index; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = 0; + int var21 = 0; + int var22 = 0; + int var23 = 0; + int var24 = 0; + int var25 = 0; + int var26 = 0; + int var27 = 0; + int var28 = 0; + + int var29; + for(var29 = 0; var29 < var6; ++var29) { + var28 = var28 + var1.readUnsignedByte() & 127; + if(var28 != 0 && var28 != 32) { + if(var28 == 1) { + ++var16; + } else if(var28 == 33) { + ++var17; + } else if(var28 == 7) { + ++var18; + } else if(var28 == 39) { + ++var19; + } else if(var28 == 10) { + ++var20; + } else if(var28 == 42) { + ++var21; + } else if(var28 == 99) { + ++var22; + } else if(var28 == 98) { + ++var23; + } else if(var28 == 101) { + ++var24; + } else if(var28 == 100) { + ++var25; + } else if(var28 != 64 && var28 != 65 && var28 != 120 && var28 != 121 && var28 != 123) { + ++var27; + } else { + ++var26; + } + } else { + ++var12; + } + } + + var29 = 0; + int var30 = var1.index; + var1.index += var26; + int var31 = var1.index; + var1.index += var11; + int var32 = var1.index; + var1.index += var10; + int var33 = var1.index; + var1.index += var9; + int var34 = var1.index; + var1.index += var16; + int var35 = var1.index; + var1.index += var18; + int var36 = var1.index; + var1.index += var20; + int var37 = var1.index; + var1.index += var7 + var8 + var11; + int var38 = var1.index; + var1.index += var7; + int var39 = var1.index; + var1.index += var27; + int var40 = var1.index; + var1.index += var8; + int var41 = var1.index; + var1.index += var17; + int var42 = var1.index; + var1.index += var19; + int var43 = var1.index; + var1.index += var21; + int var44 = var1.index; + var1.index += var12; + int var45 = var1.index; + var1.index += var9; + int var46 = var1.index; + var1.index += var22; + int var47 = var1.index; + var1.index += var23; + int var48 = var1.index; + var1.index += var24; + int var49 = var1.index; + var1.index += var25; + int var50 = var1.index; + var1.index += var5 * 3; + this.midi = new byte[var4]; + Buffer var51 = new Buffer(this.midi); + var51.writeInt(1297377380); + var51.writeInt(6); + var51.writeShort(var2 > 1?1:0); + var51.writeShort(var2); + var51.writeShort(var3); + var1.index = var13; + int var52 = 0; + int var53 = 0; + int var54 = 0; + int var55 = 0; + int var56 = 0; + int var57 = 0; + int var58 = 0; + int[] var59 = new int[128]; + var28 = 0; + + label231: + for(int var60 = 0; var60 < var2; ++var60) { + var51.writeInt(1297379947); + var51.index += 4; + int var61 = var51.index; + int var62 = -1; + + while(true) { + while(true) { + int var63 = var1.__as_311(); + var51.__c_301(var63); + int var64 = var1.array[var29++] & 255; + boolean var65 = var64 != var62; + var62 = var64 & 15; + if(var64 == 7) { + if(var65) { + var51.writeByte(255); + } + + var51.writeByte(47); + var51.writeByte(0); + var51.__t_298(var51.index - var61); + continue label231; + } + + if(var64 == 23) { + if(var65) { + var51.writeByte(255); + } + + var51.writeByte(81); + var51.writeByte(3); + var51.writeByte(var1.array[var50++]); + var51.writeByte(var1.array[var50++]); + var51.writeByte(var1.array[var50++]); + } else { + var52 ^= var64 >> 4; + if(var62 == 0) { + if(var65) { + var51.writeByte(var52 + 144); + } + + var53 += var1.array[var37++]; + var54 += var1.array[var38++]; + var51.writeByte(var53 & 127); + var51.writeByte(var54 & 127); + } else if(var62 == 1) { + if(var65) { + var51.writeByte(var52 + 128); + } + + var53 += var1.array[var37++]; + var55 += var1.array[var40++]; + var51.writeByte(var53 & 127); + var51.writeByte(var55 & 127); + } else if(var62 == 2) { + if(var65) { + var51.writeByte(var52 + 176); + } + + var28 = var28 + var1.array[var15++] & 127; + var51.writeByte(var28); + byte var66; + if(var28 != 0 && var28 != 32) { + if(var28 == 1) { + var66 = var1.array[var34++]; + } else if(var28 == 33) { + var66 = var1.array[var41++]; + } else if(var28 == 7) { + var66 = var1.array[var35++]; + } else if(var28 == 39) { + var66 = var1.array[var42++]; + } else if(var28 == 10) { + var66 = var1.array[var36++]; + } else if(var28 == 42) { + var66 = var1.array[var43++]; + } else if(var28 == 99) { + var66 = var1.array[var46++]; + } else if(var28 == 98) { + var66 = var1.array[var47++]; + } else if(var28 == 101) { + var66 = var1.array[var48++]; + } else if(var28 == 100) { + var66 = var1.array[var49++]; + } else if(var28 != 64 && var28 != 65 && var28 != 120 && var28 != 121 && var28 != 123) { + var66 = var1.array[var39++]; + } else { + var66 = var1.array[var30++]; + } + } else { + var66 = var1.array[var44++]; + } + + int var67 = var66 + var59[var28]; + var59[var28] = var67; + var51.writeByte(var67 & 127); + } else if(var62 == 3) { + if(var65) { + var51.writeByte(var52 + 224); + } + + var56 += var1.array[var45++]; + var56 += var1.array[var33++] << 7; + var51.writeByte(var56 & 127); + var51.writeByte(var56 >> 7 & 127); + } else if(var62 == 4) { + if(var65) { + var51.writeByte(var52 + 208); + } + + var57 += var1.array[var32++]; + var51.writeByte(var57 & 127); + } else if(var62 == 5) { + if(var65) { + var51.writeByte(var52 + 160); + } + + var53 += var1.array[var37++]; + var58 += var1.array[var31++]; + var51.writeByte(var53 & 127); + var51.writeByte(var58 & 127); + } else { + if(var62 != 6) { + throw new RuntimeException(); + } + + if(var65) { + var51.writeByte(var52 + 192); + } + + var51.writeByte(var1.array[var44++]); + } + } + } + } + } + + } + + @ObfuscatedName("f") + @Export("__f_381") + void __f_381() { + if(this.table == null) { + this.table = new NodeHashTable(16); + int[] var1 = new int[16]; + int[] var2 = new int[16]; + var2[9] = 128; + var1[9] = 128; + MidiFileReader var4 = new MidiFileReader(this.midi); + int var5 = var4.trackCount(); + + int var6; + for(var6 = 0; var6 < var5; ++var6) { + var4.gotoTrack(var6); + var4.readTrackLength(var6); + var4.markTrackPosition(var6); + } + + label53: + do { + while(true) { + var6 = var4.getPrioritizedTrack(); + int var7 = var4.trackLengths[var6]; + + while(var7 == var4.trackLengths[var6]) { + var4.gotoTrack(var6); + int var8 = var4.readMessage(var6); + if(var8 == 1) { + var4.setTrackDone(); + var4.markTrackPosition(var6); + continue label53; + } + + int var9 = var8 & 240; + int var10; + int var11; + int var12; + if(var9 == 176) { + var10 = var8 & 15; + var11 = var8 >> 8 & 127; + var12 = var8 >> 16 & 127; + if(var11 == 0) { + var1[var10] = (var12 << 14) + (var1[var10] & -2080769); + } + + if(var11 == 32) { + var1[var10] = (var1[var10] & -16257) + (var12 << 7); + } + } + + if(var9 == 192) { + var10 = var8 & 15; + var11 = var8 >> 8 & 127; + var2[var10] = var11 + var1[var10]; + } + + if(var9 == 144) { + var10 = var8 & 15; + var11 = var8 >> 8 & 127; + var12 = var8 >> 16 & 127; + if(var12 > 0) { + int var13 = var2[var10]; + ByteArrayNode var14 = (ByteArrayNode)this.table.get((long)var13); + if(var14 == null) { + var14 = new ByteArrayNode(new byte[128]); + this.table.put(var14, (long)var13); + } + + var14.byteArray[var11] = 1; + } + } + + var4.readTrackLength(var6); + var4.markTrackPosition(var6); + } + } + } while(!var4.isDone()); + + } + } + + @ObfuscatedName("q") + @Export("clear") + void clear() { + this.table = null; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;II)Lhe;" + ) + @Export("readTrack") + public static MusicTrack readTrack(AbstractIndexCache var0, int var1, int var2) { + byte[] var3 = var0.takeRecord(var1, var2); + return var3 == null?null:new MusicTrack(new Buffer(var3)); + } +} diff --git a/rs-client/src/main/java/NanoClock.java b/rs-client/src/main/java/NanoClock.java new file mode 100644 index 0000000000..5abf46daf5 --- /dev/null +++ b/rs-client/src/main/java/NanoClock.java @@ -0,0 +1,56 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fp") +@Implements("NanoClock") +public class NanoClock extends Clock { + @ObfuscatedName("m") + @ObfuscatedGetter( + longValue = 7586221391557635221L + ) + @Export("lastTimeNano") + long lastTimeNano; + + public NanoClock() { + this.lastTimeNano = System.nanoTime(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "61" + ) + public void mark() { + this.lastTimeNano = System.nanoTime(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-126803683" + ) + public int wait(int var1, int var2) { + long var3 = 1000000L * (long)var2; + long var5 = this.lastTimeNano - System.nanoTime(); + if(var5 < var3) { + var5 = var3; + } + + class203.method4010(var5 / 1000000L); + long var7 = System.nanoTime(); + + int var9; + for(var9 = 0; var9 < 10 && (var9 < 1 || this.lastTimeNano < var7); this.lastTimeNano += 1000000L * (long)var1) { + ++var9; + } + + if(this.lastTimeNano < var7) { + this.lastTimeNano = var7; + } + + return var9; + } +} diff --git a/rs-client/src/main/java/NetCache.java b/rs-client/src/main/java/NetCache.java new file mode 100644 index 0000000000..94aac85c0a --- /dev/null +++ b/rs-client/src/main/java/NetCache.java @@ -0,0 +1,148 @@ +import java.util.zip.CRC32; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("iq") +@Implements("NetCache") +public class NetCache { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfu;" + ) + @Export("NetCache_socket") + public static AbstractSocket NetCache_socket; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 948359621 + ) + @Export("__iq_f") + public static int __iq_f; + @ObfuscatedName("q") + @ObfuscatedGetter( + longValue = -4580427166942649525L + ) + @Export("__iq_q") + public static long __iq_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("NetCache_pendingPriorityWrites") + public static NodeHashTable NetCache_pendingPriorityWrites; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1495729287 + ) + @Export("NetCache_pendingPriorityWritesCount") + public static int NetCache_pendingPriorityWritesCount; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("NetCache_pendingPriorityResponses") + public static NodeHashTable NetCache_pendingPriorityResponses; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 516430597 + ) + @Export("NetCache_pendingPriorityResponsesCount") + public static int NetCache_pendingPriorityResponsesCount; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Ljp;" + ) + @Export("NetCache_pendingWritesQueue") + public static DualNodeDeque NetCache_pendingWritesQueue; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("NetCache_pendingWrites") + public static NodeHashTable NetCache_pendingWrites; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1592359229 + ) + @Export("NetCache_pendingWritesCount") + public static int NetCache_pendingWritesCount; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("NetCache_pendingResponses") + public static NodeHashTable NetCache_pendingResponses; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -1627751389 + ) + @Export("NetCache_pendingResponsesCount") + public static int NetCache_pendingResponsesCount; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lgr;" + ) + @Export("NetCache_responseHeaderBuffer") + public static Buffer NetCache_responseHeaderBuffer; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 840549915 + ) + @Export("__iq_j") + public static int __iq_j; + @ObfuscatedName("t") + @Export("NetCache_crc") + public static CRC32 NetCache_crc; + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "[Lit;" + ) + @Export("NetCache_indexCaches") + public static IndexCache[] NetCache_indexCaches; + @ObfuscatedName("b") + @Export("__iq_b") + public static byte __iq_b; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = -1404585009 + ) + @Export("NetCache_crcMismatches") + public static int NetCache_crcMismatches; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = -1141619871 + ) + @Export("NetCache_ioExceptions") + public static int NetCache_ioExceptions; + + static { + __iq_f = 0; + NetCache_pendingPriorityWrites = new NodeHashTable(4096); + NetCache_pendingPriorityWritesCount = 0; + NetCache_pendingPriorityResponses = new NodeHashTable(32); + NetCache_pendingPriorityResponsesCount = 0; + NetCache_pendingWritesQueue = new DualNodeDeque(); + NetCache_pendingWrites = new NodeHashTable(4096); + NetCache_pendingWritesCount = 0; + NetCache_pendingResponses = new NodeHashTable(4096); + NetCache_pendingResponsesCount = 0; + NetCache_responseHeaderBuffer = new Buffer(8); + __iq_j = 0; + NetCache_crc = new CRC32(); + NetCache_indexCaches = new IndexCache[256]; + __iq_b = 0; + NetCache_crcMismatches = 0; + NetCache_ioExceptions = 0; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IB)Lbm;", + garbageValue = "31" + ) + static Message method4708(int var0) { + return (Message)Messages.Messages_hashTable.get((long)var0); + } +} diff --git a/rs-client/src/main/java/NetFileRequest.java b/rs-client/src/main/java/NetFileRequest.java new file mode 100644 index 0000000000..afd1e99e19 --- /dev/null +++ b/rs-client/src/main/java/NetFileRequest.java @@ -0,0 +1,115 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("iz") +@Implements("NetFileRequest") +public class NetFileRequest extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache") + public IndexCache indexCache; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1487103265 + ) + @Export("crc") + public int crc; + @ObfuscatedName("q") + @Export("padding") + public byte padding; + + @ObfuscatedName("jt") + @ObfuscatedSignature( + signature = "([Lho;II)V", + garbageValue = "1807602893" + ) + static final void method4555(Widget[] var0, int var1) { + for(int var2 = 0; var2 < var0.length; ++var2) { + Widget var3 = var0[var2]; + if(var3 != null && var3.parentId == var1 && (!var3.isIf3 || !PacketBufferNode.method3673(var3))) { + if(var3.type == 0) { + if(!var3.isIf3 && PacketBufferNode.method3673(var3) && var3 != Clock.mousedOverWidgetIf1) { + continue; + } + + method4555(var0, var3.id); + if(var3.children != null) { + method4555(var3.children, var3.id); + } + + WidgetGroupParent var7 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var3.id); + if(var7 != null) { + ClientPreferences.method1809(var7.group); + } + } + + if(var3.type == 6) { + int var5; + if(var3.sequenceId != -1 || var3.sequenceId2 != -1) { + boolean var4 = class238.runCs1(var3); + if(var4) { + var5 = var3.sequenceId2; + } else { + var5 = var3.sequenceId; + } + + if(var5 != -1) { + SequenceDefinition var6 = WorldMapAreaData.getSequenceDefinition(var5); + + for(var3.modelFrameCycle += Client.__client_gy; var3.modelFrameCycle > var6.frameLengths[var3.modelFrame]; class22.method295(var3)) { + var3.modelFrameCycle -= var6.frameLengths[var3.modelFrame]; + ++var3.modelFrame; + if(var3.modelFrame >= var6.frameIds.length) { + var3.modelFrame -= var6.frameCount; + if(var3.modelFrame < 0 || var3.modelFrame >= var6.frameIds.length) { + var3.modelFrame = 0; + } + } + } + } + } + + if(var3.__bh != 0 && !var3.isIf3) { + int var8 = var3.__bh >> 16; + var5 = var3.__bh << 16 >> 16; + var8 *= Client.__client_gy; + var5 *= Client.__client_gy; + var3.modelAngleX = var8 + var3.modelAngleX & 2047; + var3.modelAngleY = var5 + var3.modelAngleY & 2047; + class22.method295(var3); + } + } + } + } + + } + + @ObfuscatedName("js") + @ObfuscatedSignature( + signature = "(IIIILln;Lhp;B)V", + garbageValue = "-37" + ) + static final void method4554(int var0, int var1, int var2, int var3, Sprite var4, SpriteMask var5) { + if(var4 != null) { + int var6 = Client.minimapOrientation & 2047; + int var7 = var3 * var3 + var2 * var2; + if(var7 <= 6400) { + int var8 = Rasterizer3D.Rasterizer3D_sine[var6]; + int var9 = Rasterizer3D.Rasterizer3D_cosine[var6]; + int var10 = var3 * var8 + var9 * var2 >> 16; + int var11 = var3 * var9 - var8 * var2 >> 16; + if(var7 > 2500) { + var4.__ac_512(var10 + var5.width / 2 - var4.width / 2, var5.height / 2 - var11 - var4.height / 2, var0, var1, var5.width, var5.height, var5.xStarts, var5.xWidths); + } else { + var4.__a_505(var0 + var10 + var5.width / 2 - var4.width / 2, var5.height / 2 + var1 - var11 - var4.height / 2); + } + + } + } + } +} diff --git a/rs-client/src/main/java/NetSocket.java b/rs-client/src/main/java/NetSocket.java new file mode 100644 index 0000000000..14900a4d47 --- /dev/null +++ b/rs-client/src/main/java/NetSocket.java @@ -0,0 +1,544 @@ +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fb") +@Implements("NetSocket") +public final class NetSocket extends AbstractSocket implements Runnable { + @ObfuscatedName("bm") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__fb_bm") + static IndexedSprite __fb_bm; + @ObfuscatedName("m") + @Export("inputStream") + InputStream inputStream; + @ObfuscatedName("f") + @Export("outputStream") + OutputStream outputStream; + @ObfuscatedName("q") + @Export("socket") + Socket socket; + @ObfuscatedName("w") + @Export("isClosed") + boolean isClosed; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lfz;" + ) + @Export("taskHandler") + TaskHandler taskHandler; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lfm;" + ) + @Export("task") + Task task; + @ObfuscatedName("g") + @Export("array") + byte[] array; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -738185459 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 2057244853 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @Export("exceptionWriting") + boolean exceptionWriting; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -1644762957 + ) + @Export("__d") + final int __d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -782964015 + ) + @Export("__k") + final int __k; + + @ObfuscatedSignature( + signature = "(Ljava/net/Socket;Lfz;I)V" + ) + public NetSocket(Socket var1, TaskHandler var2, int var3) throws IOException { + this.isClosed = false; + this.__l = 0; + this.__e = 0; + this.exceptionWriting = false; + this.taskHandler = var2; + this.socket = var1; + this.__d = var3; + this.__k = var3 - 100; + this.socket.setSoTimeout(30000); + this.socket.setTcpNoDelay(true); + this.socket.setReceiveBufferSize(65536); + this.socket.setSendBufferSize(65536); + this.inputStream = this.socket.getInputStream(); + this.outputStream = this.socket.getOutputStream(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1765046516" + ) + public boolean isAvailable(int var1) throws IOException { + return this.isClosed?false:this.inputStream.available() >= var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1078471130" + ) + public int available() throws IOException { + return this.isClosed?0:this.inputStream.available(); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "516705222" + ) + public int readUnsignedByte() throws IOException { + return this.isClosed?0:this.inputStream.read(); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "([BIII)I", + garbageValue = "-1089665746" + ) + public int read(byte[] var1, int var2, int var3) throws IOException { + if(this.isClosed) { + return 0; + } else { + int var4; + int var5; + for(var4 = var3; var3 > 0; var3 -= var5) { + var5 = this.inputStream.read(var1, var2, var3); + if(var5 <= 0) { + throw new EOFException(); + } + + var2 += var5; + } + + return var4; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-86" + ) + public void write(byte[] var1, int var2, int var3) throws IOException { + this.write0(var1, var2, var3); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1252618448" + ) + public void close() { + if(!this.isClosed) { + synchronized(this) { + this.isClosed = true; + this.notifyAll(); + } + + if(this.task != null) { + while(this.task.status == 0) { + class203.method4010(1L); + } + + if(this.task.status == 1) { + try { + ((Thread)this.task.result).join(); + } catch (InterruptedException var3) { + ; + } + } + } + + this.task = null; + } + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "([BIIB)V", + garbageValue = "-77" + ) + @Export("write0") + void write0(byte[] var1, int var2, int var3) throws IOException { + if(!this.isClosed) { + if(this.exceptionWriting) { + this.exceptionWriting = false; + throw new IOException(); + } else { + if(this.array == null) { + this.array = new byte[this.__d]; + } + + synchronized(this) { + for(int var5 = 0; var5 < var3; ++var5) { + this.array[this.__e] = var1[var5 + var2]; + this.__e = (this.__e + 1) % this.__d; + if((this.__k + this.__l) % this.__d == this.__e) { + throw new IOException(); + } + } + + if(this.task == null) { + this.task = this.taskHandler.newThreadTask(this, 3); + } + + this.notifyAll(); + } + } + } + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + try { + while(true) { + label84: { + int var1; + int var2; + synchronized(this) { + if(this.__e == this.__l) { + if(this.isClosed) { + break label84; + } + + try { + this.wait(); + } catch (InterruptedException var10) { + ; + } + } + + var2 = this.__l; + if(this.__e >= this.__l) { + var1 = this.__e - this.__l; + } else { + var1 = this.__d - this.__l; + } + } + + if(var1 <= 0) { + continue; + } + + try { + this.outputStream.write(this.array, var2, var1); + } catch (IOException var9) { + this.exceptionWriting = true; + } + + this.__l = (var1 + this.__l) % this.__d; + + try { + if(this.__e == this.__l) { + this.outputStream.flush(); + } + } catch (IOException var8) { + this.exceptionWriting = true; + } + continue; + } + + try { + if(this.inputStream != null) { + this.inputStream.close(); + } + + if(this.outputStream != null) { + this.outputStream.close(); + } + + if(this.socket != null) { + this.socket.close(); + } + } catch (IOException var7) { + ; + } + + this.array = null; + break; + } + } catch (Exception var12) { + NpcDefinition.sendStackTrace((String)null, var12); + } + + } + + @Export("finalize") + @ObfuscatedName("finalize") + protected void finalize() { + this.close(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIILfe;Lfy;Z[I[IB)I", + garbageValue = "-98" + ) + public static int method3571(int var0, int var1, int var2, class179 var3, CollisionMap var4, boolean var5, int[] var6, int[] var7) { + int var9; + for(int var8 = 0; var8 < 128; ++var8) { + for(var9 = 0; var9 < 128; ++var9) { + class178.__fi_q[var8][var9] = 0; + class178.__fi_w[var8][var9] = 99999999; + } + } + + int var10; + int var11; + byte var13; + int var14; + int var15; + int var17; + int var19; + int var20; + int var21; + boolean var28; + int var30; + int var31; + int var33; + if(var2 == 1) { + var10 = var0; + var11 = var1; + byte var12 = 64; + var13 = 64; + var14 = var0 - var12; + var15 = var1 - var13; + class178.__fi_q[var12][var13] = 99; + class178.__fi_w[var12][var13] = 0; + byte var16 = 0; + var17 = 0; + class178.__fi_l[var16] = var0; + var33 = var16 + 1; + class178.__fi_e[var16] = var1; + int[][] var18 = var4.flags; + + boolean var29; + while(true) { + if(var33 == var17) { + WidgetGroupParent.__bx_o = var10; + UrlRequester.__eo_u = var11; + var29 = false; + break; + } + + var10 = class178.__fi_l[var17]; + var11 = class178.__fi_e[var17]; + var17 = var17 + 1 & 4095; + var30 = var10 - var14; + var31 = var11 - var15; + var19 = var10 - var4.xInset; + var20 = var11 - var4.yInset; + if(var3.vmethod3644(1, var10, var11, var4)) { + WidgetGroupParent.__bx_o = var10; + UrlRequester.__eo_u = var11; + var29 = true; + break; + } + + var21 = class178.__fi_w[var30][var31] + 1; + if(var30 > 0 && class178.__fi_q[var30 - 1][var31] == 0 && (var18[var19 - 1][var20] & 19136776) == 0) { + class178.__fi_l[var33] = var10 - 1; + class178.__fi_e[var33] = var11; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30 - 1][var31] = 2; + class178.__fi_w[var30 - 1][var31] = var21; + } + + if(var30 < 127 && class178.__fi_q[var30 + 1][var31] == 0 && (var18[var19 + 1][var20] & 19136896) == 0) { + class178.__fi_l[var33] = var10 + 1; + class178.__fi_e[var33] = var11; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30 + 1][var31] = 8; + class178.__fi_w[var30 + 1][var31] = var21; + } + + if(var31 > 0 && class178.__fi_q[var30][var31 - 1] == 0 && (var18[var19][var20 - 1] & 19136770) == 0) { + class178.__fi_l[var33] = var10; + class178.__fi_e[var33] = var11 - 1; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30][var31 - 1] = 1; + class178.__fi_w[var30][var31 - 1] = var21; + } + + if(var31 < 127 && class178.__fi_q[var30][var31 + 1] == 0 && (var18[var19][var20 + 1] & 19136800) == 0) { + class178.__fi_l[var33] = var10; + class178.__fi_e[var33] = var11 + 1; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30][var31 + 1] = 4; + class178.__fi_w[var30][var31 + 1] = var21; + } + + if(var30 > 0 && var31 > 0 && class178.__fi_q[var30 - 1][var31 - 1] == 0 && (var18[var19 - 1][var20 - 1] & 19136782) == 0 && (var18[var19 - 1][var20] & 19136776) == 0 && (var18[var19][var20 - 1] & 19136770) == 0) { + class178.__fi_l[var33] = var10 - 1; + class178.__fi_e[var33] = var11 - 1; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30 - 1][var31 - 1] = 3; + class178.__fi_w[var30 - 1][var31 - 1] = var21; + } + + if(var30 < 127 && var31 > 0 && class178.__fi_q[var30 + 1][var31 - 1] == 0 && (var18[var19 + 1][var20 - 1] & 19136899) == 0 && (var18[var19 + 1][var20] & 19136896) == 0 && (var18[var19][var20 - 1] & 19136770) == 0) { + class178.__fi_l[var33] = var10 + 1; + class178.__fi_e[var33] = var11 - 1; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30 + 1][var31 - 1] = 9; + class178.__fi_w[var30 + 1][var31 - 1] = var21; + } + + if(var30 > 0 && var31 < 127 && class178.__fi_q[var30 - 1][var31 + 1] == 0 && (var18[var19 - 1][var20 + 1] & 19136824) == 0 && (var18[var19 - 1][var20] & 19136776) == 0 && (var18[var19][var20 + 1] & 19136800) == 0) { + class178.__fi_l[var33] = var10 - 1; + class178.__fi_e[var33] = var11 + 1; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30 - 1][var31 + 1] = 6; + class178.__fi_w[var30 - 1][var31 + 1] = var21; + } + + if(var30 < 127 && var31 < 127 && class178.__fi_q[var30 + 1][var31 + 1] == 0 && (var18[var19 + 1][var20 + 1] & 19136992) == 0 && (var18[var19 + 1][var20] & 19136896) == 0 && (var18[var19][var20 + 1] & 19136800) == 0) { + class178.__fi_l[var33] = var10 + 1; + class178.__fi_e[var33] = var11 + 1; + var33 = var33 + 1 & 4095; + class178.__fi_q[var30 + 1][var31 + 1] = 12; + class178.__fi_w[var30 + 1][var31 + 1] = var21; + } + } + + var28 = var29; + } else if(var2 == 2) { + var28 = WorldMapSection2.method593(var0, var1, var3, var4); + } else { + var28 = IndexStore.method3585(var0, var1, var2, var3, var4); + } + + var9 = var0 - 64; + var10 = var1 - 64; + var11 = WidgetGroupParent.__bx_o; + var30 = UrlRequester.__eo_u; + if(!var28) { + var31 = Integer.MAX_VALUE; + var14 = Integer.MAX_VALUE; + byte var32 = 10; + var33 = var3.field2120; + var17 = var3.field2121; + int var27 = var3.field2122; + var19 = var3.field2123; + + for(var20 = var33 - var32; var20 <= var32 + var33; ++var20) { + for(var21 = var17 - var32; var21 <= var17 + var32; ++var21) { + int var22 = var20 - var9; + int var23 = var21 - var10; + if(var22 >= 0 && var23 >= 0 && var22 < 128 && var23 < 128 && class178.__fi_w[var22][var23] < 100) { + int var24 = 0; + if(var20 < var33) { + var24 = var33 - var20; + } else if(var20 > var27 + var33 - 1) { + var24 = var20 - (var27 + var33 - 1); + } + + int var25 = 0; + if(var21 < var17) { + var25 = var17 - var21; + } else if(var21 > var19 + var17 - 1) { + var25 = var21 - (var19 + var17 - 1); + } + + int var26 = var25 * var25 + var24 * var24; + if(var26 < var31 || var26 == var31 && class178.__fi_w[var22][var23] < var14) { + var31 = var26; + var14 = class178.__fi_w[var22][var23]; + var11 = var20; + var30 = var21; + } + } + } + } + + if(var31 == Integer.MAX_VALUE) { + return -1; + } + } + + if(var0 == var11 && var30 == var1) { + return 0; + } else { + var13 = 0; + class178.__fi_l[var13] = var11; + var31 = var13 + 1; + class178.__fi_e[var13] = var30; + + for(var14 = var15 = class178.__fi_q[var11 - var9][var30 - var10]; var0 != var11 || var30 != var1; var14 = class178.__fi_q[var11 - var9][var30 - var10]) { + if(var14 != var15) { + var15 = var14; + class178.__fi_l[var31] = var11; + class178.__fi_e[var31++] = var30; + } + + if((var14 & 2) != 0) { + ++var11; + } else if((var14 & 8) != 0) { + --var11; + } + + if((var14 & 1) != 0) { + ++var30; + } else if((var14 & 4) != 0) { + --var30; + } + } + + var33 = 0; + + while(var31-- > 0) { + var6[var33] = class178.__fi_l[var31]; + var7[var33++] = class178.__fi_e[var31]; + if(var33 >= var6.length) { + break; + } + } + + return var33; + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Lir;Lir;Lhm;I)Z", + garbageValue = "-590103687" + ) + public static boolean method3537(AbstractIndexCache var0, AbstractIndexCache var1, AbstractIndexCache var2, MidiPcmStream var3) { + class1.__f_m = var0; + class214.__hf_f = var1; + class214.__hf_q = var2; + class214.midiPcmStream = var3; + return true; + } +} diff --git a/rs-client/src/main/java/Node.java b/rs-client/src/main/java/Node.java new file mode 100644 index 0000000000..56baec5554 --- /dev/null +++ b/rs-client/src/main/java/Node.java @@ -0,0 +1,41 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gw") +@Implements("Node") +public class Node { + @ObfuscatedName("cl") + @Export("key") + public long key; + @ObfuscatedName("ct") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("previous") + public Node previous; + @ObfuscatedName("cz") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("next") + public Node next; + + @ObfuscatedName("es") + @Export("remove") + public void remove() { + if(this.next != null) { + this.next.previous = this.previous; + this.previous.next = this.next; + this.previous = null; + this.next = null; + } + } + + @ObfuscatedName("eg") + @Export("hasNext") + public boolean hasNext() { + return this.next != null; + } +} diff --git a/rs-client/src/main/java/NodeDeque.java b/rs-client/src/main/java/NodeDeque.java new file mode 100644 index 0000000000..f2b7a54fbb --- /dev/null +++ b/rs-client/src/main/java/NodeDeque.java @@ -0,0 +1,182 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("je") +@Implements("NodeDeque") +public class NodeDeque { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("sentinel") + public Node sentinel; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("current") + Node current; + + public NodeDeque() { + this.sentinel = new Node(); + this.sentinel.previous = this.sentinel; + this.sentinel.next = this.sentinel; + } + + @ObfuscatedName("m") + @Export("clear") + public void clear() { + while(true) { + Node var1 = this.sentinel.previous; + if(var1 == this.sentinel) { + this.current = null; + return; + } + + var1.remove(); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgw;)V" + ) + @Export("addFirst") + public void addFirst(Node var1) { + if(var1.next != null) { + var1.remove(); + } + + var1.next = this.sentinel.next; + var1.previous = this.sentinel; + var1.next.previous = var1; + var1.previous.next = var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgw;)V" + ) + @Export("addLast") + public void addLast(Node var1) { + if(var1.next != null) { + var1.remove(); + } + + var1.next = this.sentinel; + var1.previous = this.sentinel.previous; + var1.next.previous = var1; + var1.previous.next = var1; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("removeLast") + public Node removeLast() { + Node var1 = this.sentinel.previous; + if(var1 == this.sentinel) { + return null; + } else { + var1.remove(); + return var1; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("removeFirst") + public Node removeFirst() { + Node var1 = this.sentinel.next; + if(var1 == this.sentinel) { + return null; + } else { + var1.remove(); + return var1; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("last") + public Node last() { + Node var1 = this.sentinel.previous; + if(var1 == this.sentinel) { + this.current = null; + return null; + } else { + this.current = var1.previous; + return var1; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("first") + public Node first() { + Node var1 = this.sentinel.next; + if(var1 == this.sentinel) { + this.current = null; + return null; + } else { + this.current = var1.next; + return var1; + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("previous") + public Node previous() { + Node var1 = this.current; + if(var1 == this.sentinel) { + this.current = null; + return null; + } else { + this.current = var1.previous; + return var1; + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("next") + public Node next() { + Node var1 = this.current; + if(var1 == this.sentinel) { + this.current = null; + return null; + } else { + this.current = var1.next; + return var1; + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgw;Lgw;)V" + ) + public static void method5270(Node var0, Node var1) { + if(var0.next != null) { + var0.remove(); + } + + var0.next = var1.next; + var0.previous = var1; + var0.next.previous = var0; + var0.previous.next = var0; + } +} diff --git a/rs-client/src/main/java/NodeHashTable.java b/rs-client/src/main/java/NodeHashTable.java new file mode 100644 index 0000000000..2e4fcbf1bb --- /dev/null +++ b/rs-client/src/main/java/NodeHashTable.java @@ -0,0 +1,139 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ld") +@Implements("NodeHashTable") +public final class NodeHashTable { + @ObfuscatedName("m") + @Export("size") + int size; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "[Lgw;" + ) + @Export("buckets") + Node[] buckets; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("currentGet") + Node currentGet; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgw;" + ) + @Export("current") + Node current; + @ObfuscatedName("o") + @Export("index") + int index; + + public NodeHashTable(int var1) { + this.index = 0; + this.size = var1; + this.buckets = new Node[var1]; + + for(int var2 = 0; var2 < var1; ++var2) { + Node var3 = this.buckets[var2] = new Node(); + var3.previous = var3; + var3.next = var3; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(J)Lgw;" + ) + @Export("get") + public Node get(long var1) { + Node var3 = this.buckets[(int)(var1 & (long)(this.size - 1))]; + + for(this.currentGet = var3.previous; var3 != this.currentGet; this.currentGet = this.currentGet.previous) { + if(this.currentGet.key == var1) { + Node var4 = this.currentGet; + this.currentGet = this.currentGet.previous; + return var4; + } + } + + this.currentGet = null; + return null; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgw;J)V" + ) + @Export("put") + public void put(Node var1, long var2) { + if(var1.next != null) { + var1.remove(); + } + + Node var4 = this.buckets[(int)(var2 & (long)(this.size - 1))]; + var1.next = var4.next; + var1.previous = var4; + var1.next.previous = var1; + var1.previous.next = var1; + var1.key = var2; + } + + @ObfuscatedName("q") + @Export("clear") + public void clear() { + for(int var1 = 0; var1 < this.size; ++var1) { + Node var2 = this.buckets[var1]; + + while(true) { + Node var3 = var2.previous; + if(var3 == var2) { + break; + } + + var3.remove(); + } + } + + this.currentGet = null; + this.current = null; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("first") + public Node first() { + this.index = 0; + return this.next(); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "()Lgw;" + ) + @Export("next") + public Node next() { + Node var1; + if(this.index > 0 && this.buckets[this.index - 1] != this.current) { + var1 = this.current; + this.current = var1.previous; + return var1; + } else { + do { + if(this.index >= this.size) { + return null; + } + + var1 = this.buckets[this.index++].previous; + } while(var1 == this.buckets[this.index - 1]); + + this.current = var1.previous; + return var1; + } + } +} diff --git a/rs-client/src/main/java/Npc.java b/rs-client/src/main/java/Npc.java new file mode 100644 index 0000000000..8d0db12d02 --- /dev/null +++ b/rs-client/src/main/java/Npc.java @@ -0,0 +1,194 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cv") +@Implements("NPC") +public final class Npc extends Actor { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Ljz;" + ) + @Export("definition") + NpcDefinition definition; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IBI)V", + garbageValue = "306250019" + ) + @Export("__m_162") + final void __m_162(int var1, byte var2) { + int var3 = super.pathX[0]; + int var4 = super.pathY[0]; + if(var1 == 0) { + --var3; + ++var4; + } + + if(var1 == 1) { + ++var4; + } + + if(var1 == 2) { + ++var3; + ++var4; + } + + if(var1 == 3) { + --var3; + } + + if(var1 == 4) { + ++var3; + } + + if(var1 == 5) { + --var3; + --var4; + } + + if(var1 == 6) { + --var4; + } + + if(var1 == 7) { + ++var3; + --var4; + } + + if(super.sequence != -1 && WorldMapAreaData.getSequenceDefinition(super.sequence).__s == 1) { + super.sequence = -1; + } + + if(super.pathLength < 9) { + ++super.pathLength; + } + + for(int var5 = super.pathLength; var5 > 0; --var5) { + super.pathX[var5] = super.pathX[var5 - 1]; + super.pathY[var5] = super.pathY[var5 - 1]; + super.pathTraversed[var5] = super.pathTraversed[var5 - 1]; + } + + super.pathX[0] = var3; + super.pathY[0] = var4; + super.pathTraversed[0] = var2; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIZI)V", + garbageValue = "-1647134110" + ) + @Export("__f_163") + final void __f_163(int var1, int var2, boolean var3) { + if(super.sequence != -1 && WorldMapAreaData.getSequenceDefinition(super.sequence).__s == 1) { + super.sequence = -1; + } + + if(!var3) { + int var4 = var1 - super.pathX[0]; + int var5 = var2 - super.pathY[0]; + if(var4 >= -8 && var4 <= 8 && var5 >= -8 && var5 <= 8) { + if(super.pathLength < 9) { + ++super.pathLength; + } + + for(int var6 = super.pathLength; var6 > 0; --var6) { + super.pathX[var6] = super.pathX[var6 - 1]; + super.pathY[var6] = super.pathY[var6 - 1]; + super.pathTraversed[var6] = super.pathTraversed[var6 - 1]; + } + + super.pathX[0] = var1; + super.pathY[0] = var2; + super.pathTraversed[0] = 1; + return; + } + } + + super.pathLength = 0; + super.__ch = 0; + super.__cq = 0; + super.pathX[0] = var1; + super.pathY[0] = var2; + super.x = super.size * 64 + super.pathX[0] * 128; + super.y = super.size * 64 + super.pathY[0] * 128; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + @Export("getModel") + protected final Model getModel() { + if(this.definition == null) { + return null; + } else { + SequenceDefinition var1 = super.sequence != -1 && super.sequenceDelay == 0?WorldMapAreaData.getSequenceDefinition(super.sequence):null; + SequenceDefinition var2 = super.movementSequence != -1 && (super.movementSequence != super.idleSequence || var1 == null)?WorldMapAreaData.getSequenceDefinition(super.movementSequence):null; + Model var3 = this.definition.getModel(var1, super.sequenceFrame, var2, super.movementFrame); + if(var3 == null) { + return null; + } else { + var3.calculateBoundsCylinder(); + super.defaultHeight = var3.height; + if(super.spotAnimation != -1 && super.spotAnimationFrame != -1) { + Model var4 = class50.getSpotAnimationDefinition(super.spotAnimation).getModel(super.spotAnimationFrame); + if(var4 != null) { + var4.offsetBy(0, -super.heightOffset, 0); + Model[] var5 = new Model[]{var3, var4}; + var3 = new Model(var5, 2); + } + } + + if(this.definition.size == 1) { + var3.isSingleTile = true; + } + + return var3; + } + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "1" + ) + final boolean isVisible() { + return this.definition != null; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(ILff;Lit;B)V", + garbageValue = "-51" + ) + static void method2009(int var0, IndexStore var1, IndexCache var2) { + IndexStoreAction var3 = new IndexStoreAction(); + var3.type = 1; + var3.key = (long)var0; + var3.indexStore = var1; + var3.indexCache = var2; + NodeDeque var4 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { + IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.addFirst(var3); + } + + Object var9 = IndexStoreActionHandler.IndexStoreActionHandler_lock; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_lock) { + if(IndexStoreActionHandler.__iv_q == 0) { + Frames.IndexStoreActionHandler_thread = new Thread(new IndexStoreActionHandler()); + Frames.IndexStoreActionHandler_thread.setDaemon(true); + Frames.IndexStoreActionHandler_thread.start(); + Frames.IndexStoreActionHandler_thread.setPriority(5); + } + + IndexStoreActionHandler.__iv_q = 600; + } + } +} diff --git a/rs-client/src/main/java/NpcDefinition.java b/rs-client/src/main/java/NpcDefinition.java new file mode 100644 index 0000000000..c46fbb587d --- /dev/null +++ b/rs-client/src/main/java/NpcDefinition.java @@ -0,0 +1,747 @@ +import java.io.DataInputStream; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.net.URL; +import java.net.URLConnection; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jz") +@Implements("NPCDefinition") +public class NpcDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("NpcDefinition_indexCache") + static AbstractIndexCache NpcDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("NpcDefinition_modelIndexCache") + static AbstractIndexCache NpcDefinition_modelIndexCache; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("NpcDefinition_cached") + static EvictingDualNodeHashTable NpcDefinition_cached; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("NpcDefinition_cachedModels") + static EvictingDualNodeHashTable NpcDefinition_cachedModels; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1937346627 + ) + @Export("id") + public int id; + @ObfuscatedName("u") + @Export("name") + public String name; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1541308911 + ) + @Export("size") + public int size; + @ObfuscatedName("l") + @Export("archives") + int[] archives; + @ObfuscatedName("e") + @Export("__e") + int[] __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 275200787 + ) + @Export("idleSequence") + public int idleSequence; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 819690597 + ) + @Export("turnLeftSequence") + public int turnLeftSequence; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 1311553413 + ) + @Export("turnRightSequence") + public int turnRightSequence; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -284110917 + ) + @Export("walkSequence") + public int walkSequence; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 1952230339 + ) + @Export("walkTurnSequence") + public int walkTurnSequence; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -1213774321 + ) + @Export("walkTurnLeftSequence") + public int walkTurnLeftSequence; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -96930503 + ) + @Export("walkTurnRightSequence") + public int walkTurnRightSequence; + @ObfuscatedName("j") + @Export("recolorFrom") + short[] recolorFrom; + @ObfuscatedName("s") + @Export("recolorTo") + short[] recolorTo; + @ObfuscatedName("t") + @Export("retextureFrom") + short[] retextureFrom; + @ObfuscatedName("y") + @Export("retextureTo") + short[] retextureTo; + @ObfuscatedName("h") + @Export("actions") + public String[] actions; + @ObfuscatedName("b") + @Export("drawMapDot") + public boolean drawMapDot; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 1192179847 + ) + @Export("combatLevel") + public int combatLevel; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = -1469219067 + ) + @Export("widthScale") + int widthScale; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = 1390683537 + ) + @Export("heightScale") + int heightScale; + @ObfuscatedName("v") + @Export("isVisible") + public boolean isVisible; + @ObfuscatedName("ag") + @ObfuscatedGetter( + intValue = -1235927151 + ) + @Export("__ag") + int __ag; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = 1962875903 + ) + @Export("__aq") + int __aq; + @ObfuscatedName("aj") + @ObfuscatedGetter( + intValue = 235824283 + ) + @Export("headIconPrayer") + public int headIconPrayer; + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = -506638747 + ) + @Export("__av") + public int __av; + @ObfuscatedName("ar") + @Export("transforms") + public int[] transforms; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = 1011388197 + ) + @Export("transformVarbit") + int transformVarbit; + @ObfuscatedName("ay") + @ObfuscatedGetter( + intValue = 1631362233 + ) + @Export("transformVarp") + int transformVarp; + @ObfuscatedName("ah") + @Export("isInteractable") + public boolean isInteractable; + @ObfuscatedName("ak") + @Export("isClickable") + public boolean isClickable; + @ObfuscatedName("aw") + @Export("isFollower") + public boolean isFollower; + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("params") + IterableNodeHashTable params; + + static { + NpcDefinition_cached = new EvictingDualNodeHashTable(64); + NpcDefinition_cachedModels = new EvictingDualNodeHashTable(50); + } + + NpcDefinition() { + this.name = "null"; + this.size = 1; + this.idleSequence = -1; + this.turnLeftSequence = -1; + this.turnRightSequence = -1; + this.walkSequence = -1; + this.walkTurnSequence = -1; + this.walkTurnLeftSequence = -1; + this.walkTurnRightSequence = -1; + this.actions = new String[5]; + this.drawMapDot = true; + this.combatLevel = -1; + this.widthScale = 128; + this.heightScale = 128; + this.isVisible = false; + this.__ag = 0; + this.__aq = 0; + this.headIconPrayer = -1; + this.__av = 32; + this.transformVarbit = -1; + this.transformVarp = -1; + this.isInteractable = true; + this.isClickable = true; + this.isFollower = false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "482179419" + ) + @Export("init") + void init() { + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-893102766" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;IB)V", + garbageValue = "-98" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + int var3; + int var4; + if(var2 == 1) { + var3 = var1.readUnsignedByte(); + this.archives = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.archives[var4] = var1.__ag_302(); + } + } else if(var2 == 2) { + this.name = var1.readStringCp1252NullTerminated(); + } else if(var2 == 12) { + this.size = var1.readUnsignedByte(); + } else if(var2 == 13) { + this.idleSequence = var1.__ag_302(); + } else if(var2 == 14) { + this.walkSequence = var1.__ag_302(); + } else if(var2 == 15) { + this.turnLeftSequence = var1.__ag_302(); + } else if(var2 == 16) { + this.turnRightSequence = var1.__ag_302(); + } else if(var2 == 17) { + this.walkSequence = var1.__ag_302(); + this.walkTurnSequence = var1.__ag_302(); + this.walkTurnLeftSequence = var1.__ag_302(); + this.walkTurnRightSequence = var1.__ag_302(); + } else if(var2 >= 30 && var2 < 35) { + this.actions[var2 - 30] = var1.readStringCp1252NullTerminated(); + if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) { + this.actions[var2 - 30] = null; + } + } else if(var2 == 40) { + var3 = var1.readUnsignedByte(); + this.recolorFrom = new short[var3]; + this.recolorTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.recolorFrom[var4] = (short)var1.__ag_302(); + this.recolorTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 41) { + var3 = var1.readUnsignedByte(); + this.retextureFrom = new short[var3]; + this.retextureTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.retextureFrom[var4] = (short)var1.__ag_302(); + this.retextureTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 60) { + var3 = var1.readUnsignedByte(); + this.__e = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__e[var4] = var1.__ag_302(); + } + } else if(var2 == 93) { + this.drawMapDot = false; + } else if(var2 == 95) { + this.combatLevel = var1.__ag_302(); + } else if(var2 == 97) { + this.widthScale = var1.__ag_302(); + } else if(var2 == 98) { + this.heightScale = var1.__ag_302(); + } else if(var2 == 99) { + this.isVisible = true; + } else if(var2 == 100) { + this.__ag = var1.readByte(); + } else if(var2 == 101) { + this.__aq = var1.readByte(); + } else if(var2 == 102) { + this.headIconPrayer = var1.__ag_302(); + } else if(var2 == 103) { + this.__av = var1.__ag_302(); + } else if(var2 != 106 && var2 != 118) { + if(var2 == 107) { + this.isInteractable = false; + } else if(var2 == 109) { + this.isClickable = false; + } else if(var2 == 111) { + this.isFollower = true; + } else if(var2 == 249) { + this.params = AbstractIndexCache.readStringIntParameters(var1, this.params); + } + } else { + this.transformVarbit = var1.__ag_302(); + if(this.transformVarbit == 65535) { + this.transformVarbit = -1; + } + + this.transformVarp = var1.__ag_302(); + if(this.transformVarp == 65535) { + this.transformVarp = -1; + } + + var3 = -1; + if(var2 == 118) { + var3 = var1.__ag_302(); + if(var3 == 65535) { + var3 = -1; + } + } + + var4 = var1.readUnsignedByte(); + this.transforms = new int[var4 + 2]; + + for(int var5 = 0; var5 <= var4; ++var5) { + this.transforms[var5] = var1.__ag_302(); + if(this.transforms[var5] == 65535) { + this.transforms[var5] = -1; + } + } + + this.transforms[var4 + 1] = var3; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Ljh;ILjh;II)Ldu;", + garbageValue = "1205135740" + ) + @Export("getModel") + public final Model getModel(SequenceDefinition var1, int var2, SequenceDefinition var3, int var4) { + if(this.transforms != null) { + NpcDefinition var12 = this.transform(); + return var12 == null?null:var12.getModel(var1, var2, var3, var4); + } else { + Model var5 = (Model)NpcDefinition_cachedModels.get((long)this.id); + if(var5 == null) { + boolean var6 = false; + + for(int var7 = 0; var7 < this.archives.length; ++var7) { + if(!NpcDefinition_modelIndexCache.tryLoadRecord(this.archives[var7], 0)) { + var6 = true; + } + } + + if(var6) { + return null; + } + + ModelData[] var8 = new ModelData[this.archives.length]; + + int var9; + for(var9 = 0; var9 < this.archives.length; ++var9) { + var8[var9] = ModelData.method2788(NpcDefinition_modelIndexCache, this.archives[var9], 0); + } + + ModelData var11; + if(var8.length == 1) { + var11 = var8[0]; + } else { + var11 = new ModelData(var8, var8.length); + } + + if(this.recolorFrom != null) { + for(var9 = 0; var9 < this.recolorFrom.length; ++var9) { + var11.recolor(this.recolorFrom[var9], this.recolorTo[var9]); + } + } + + if(this.retextureFrom != null) { + for(var9 = 0; var9 < this.retextureFrom.length; ++var9) { + var11.retexture(this.retextureFrom[var9], this.retextureTo[var9]); + } + } + + var5 = var11.toModel(this.__ag + 64, this.__aq * 5 + 850, -30, -50, -30); + NpcDefinition_cachedModels.put(var5, (long)this.id); + } + + Model var10; + if(var1 != null && var3 != null) { + var10 = var1.animateSequence2(var5, var2, var3, var4); + } else if(var1 != null) { + var10 = var1.animateSequence(var5, var2); + } else if(var3 != null) { + var10 = var3.animateSequence(var5, var4); + } else { + var10 = var5.toSharedSequenceModel(true); + } + + if(this.widthScale != 128 || this.heightScale != 128) { + var10.scale(this.widthScale, this.heightScale, this.widthScale); + } + + return var10; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)Ldw;", + garbageValue = "-682265638" + ) + @Export("getModelData") + public final ModelData getModelData() { + if(this.transforms != null) { + NpcDefinition var1 = this.transform(); + return var1 == null?null:var1.getModelData(); + } else if(this.__e == null) { + return null; + } else { + boolean var5 = false; + + for(int var2 = 0; var2 < this.__e.length; ++var2) { + if(!NpcDefinition_modelIndexCache.tryLoadRecord(this.__e[var2], 0)) { + var5 = true; + } + } + + if(var5) { + return null; + } else { + ModelData[] var6 = new ModelData[this.__e.length]; + + for(int var3 = 0; var3 < this.__e.length; ++var3) { + var6[var3] = ModelData.method2788(NpcDefinition_modelIndexCache, this.__e[var3], 0); + } + + ModelData var7; + if(var6.length == 1) { + var7 = var6[0]; + } else { + var7 = new ModelData(var6, var6.length); + } + + int var4; + if(this.recolorFrom != null) { + for(var4 = 0; var4 < this.recolorFrom.length; ++var4) { + var7.recolor(this.recolorFrom[var4], this.recolorTo[var4]); + } + } + + if(this.retextureFrom != null) { + for(var4 = 0; var4 < this.retextureFrom.length; ++var4) { + var7.retexture(this.retextureFrom[var4], this.retextureTo[var4]); + } + } + + return var7; + } + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(B)Ljz;", + garbageValue = "-113" + ) + @Export("transform") + public final NpcDefinition transform() { + int var1 = -1; + if(this.transformVarbit != -1) { + var1 = WorldMapSection2.getVarbit(this.transformVarbit); + } else if(this.transformVarp != -1) { + var1 = Varps.Varps_main[this.transformVarp]; + } + + int var2; + if(var1 >= 0 && var1 < this.transforms.length - 1) { + var2 = this.transforms[var1]; + } else { + var2 = this.transforms[this.transforms.length - 1]; + } + + return var2 != -1?ObjectDefinition.getNpcDefinition(var2):null; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "853540088" + ) + @Export("__e_435") + public boolean __e_435() { + if(this.transforms == null) { + return true; + } else { + int var1 = -1; + if(this.transformVarbit != -1) { + var1 = WorldMapSection2.getVarbit(this.transformVarbit); + } else if(this.transformVarp != -1) { + var1 = Varps.Varps_main[this.transformVarp]; + } + + return var1 >= 0 && var1 < this.transforms.length?this.transforms[var1] != -1:this.transforms[this.transforms.length - 1] != -1; + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "256516117" + ) + @Export("getIntParam") + public int getIntParam(int var1, int var2) { + IterableNodeHashTable var4 = this.params; + int var3; + if(var4 == null) { + var3 = var2; + } else { + IntegerNode var5 = (IntegerNode)var4.get((long)var1); + if(var5 == null) { + var3 = var2; + } else { + var3 = var5.integer; + } + } + + return var3; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)Ljava/lang/String;", + garbageValue = "-245239968" + ) + @Export("getStringParam") + public String getStringParam(int var1, String var2) { + return Frames.method3238(this.params, var1, var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/Throwable;I)V", + garbageValue = "-2130256963" + ) + @Export("sendStackTrace") + public static void sendStackTrace(String var0, Throwable var1) { + if(var1 != null) { + var1.printStackTrace(); + } else { + try { + String var2 = ""; + if(var1 != null) { + var2 = Canvas.method860(var1); + } + + if(var0 != null) { + if(var1 != null) { + var2 = var2 + " | "; + } + + var2 = var2 + var0; + } + + System.out.println("Error: " + var2); + var2 = var2.replace(':', '.'); + var2 = var2.replace('@', '_'); + var2 = var2.replace('&', '_'); + var2 = var2.replace('#', '_'); + if(RunException.applet == null) { + return; + } + + URL var3 = new URL(RunException.applet.getCodeBase(), "clienterror.ws?c=" + RunException.revision + "&u=" + RunException.localPlayerName + "&v1=" + TaskHandler.javaVendor + "&v2=" + TaskHandler.javaVersion + "&ct=" + RunException.__fx_w + "&e=" + var2); + DataInputStream var4 = new DataInputStream(var3.openStream()); + var4.read(); + var4.close(); + } catch (Exception var5) { + ; + } + + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(IIIIIIIS)Z", + garbageValue = "-6579" + ) + static final boolean method5164(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = ViewportMouse.ViewportMouse_y + var6; + if(var7 < var0 && var7 < var1 && var7 < var2) { + return false; + } else { + var7 = ViewportMouse.ViewportMouse_y - var6; + if(var7 > var0 && var7 > var1 && var7 > var2) { + return false; + } else { + var7 = ViewportMouse.ViewportMouse_x + var6; + if(var7 < var3 && var7 < var4 && var7 < var5) { + return false; + } else { + var7 = ViewportMouse.ViewportMouse_x - var6; + return var7 <= var3 || var7 <= var4 || var7 <= var5; + } + } + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "330235566" + ) + static void method5162() { + Login.Login_username = Login.Login_username.trim(); + if(Login.Login_username.length() == 0) { + class54.method1089("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); + } else { + long var1; + try { + URL var3 = new URL(Message.method1227("services", false) + "m=accountappeal/login.ws"); + URLConnection var4 = var3.openConnection(); + var4.setRequestProperty("connection", "close"); + var4.setDoInput(true); + var4.setDoOutput(true); + var4.setConnectTimeout(5000); + OutputStreamWriter var5 = new OutputStreamWriter(var4.getOutputStream()); + var5.write("data1=req"); + var5.flush(); + InputStream var6 = var4.getInputStream(); + Buffer var7 = new Buffer(new byte[1000]); + + while(true) { + int var8 = var6.read(var7.array, var7.index, 1000 - var7.index); + if(var8 == -1) { + var7.index = 0; + long var10 = var7.readLong(); + var1 = var10; + break; + } + + var7.index += var8; + if(var7.index >= 1000) { + var1 = 0L; + break; + } + } + } catch (Exception var14) { + var1 = 0L; + } + + int var0; + if(var1 == 0L) { + var0 = 5; + } else { + var0 = class72.method1778(var1, Login.Login_username); + } + + switch(var0) { + case 2: + class54.method1089(Strings.__id_jr, Strings.__id_jv, Strings.__id_ju); + Login.__cu_aw = 6; + break; + case 3: + class54.method1089("", "Error connecting to server.", ""); + break; + case 4: + class54.method1089("The part of the website you are trying", "to connect to is offline at the moment.", "Please try again later."); + break; + case 5: + class54.method1089("Sorry, there was an error trying to", "log you in to this part of the website.", "Please try again later."); + break; + case 6: + class54.method1089("", "Error connecting to server.", ""); + break; + case 7: + class54.method1089("You must enter a valid login to proceed. For accounts", "created after 24th November 2010, please use your", "email address. Otherwise please use your username."); + } + + } + } + + @ObfuscatedName("kw") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Ljava/lang/String;", + garbageValue = "1100306484" + ) + static String method5161(String var0) { + PlayerType[] var1 = class48.method865(); + + for(int var2 = 0; var2 < var1.length; ++var2) { + PlayerType var3 = var1[var2]; + if(var3.modIcon != -1 && var0.startsWith(ItemContainer.method1170(var3.modIcon))) { + var0 = var0.substring(6 + Integer.toString(var3.modIcon).length()); + break; + } + } + + return var0; + } +} diff --git a/rs-client/src/main/java/ObjectDefinition.java b/rs-client/src/main/java/ObjectDefinition.java new file mode 100644 index 0000000000..c4ec49ab44 --- /dev/null +++ b/rs-client/src/main/java/ObjectDefinition.java @@ -0,0 +1,950 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jr") +@Implements("ObjectDefinition") +public class ObjectDefinition extends DualNode { + @ObfuscatedName("m") + @Export("ObjectDefinition_isLowDetail") + static boolean ObjectDefinition_isLowDetail; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("ObjectDefinition_indexCache") + static AbstractIndexCache ObjectDefinition_indexCache; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jr_q") + static AbstractIndexCache __jr_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("ObjectDefinition_cached") + static EvictingDualNodeHashTable ObjectDefinition_cached; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__jr_o") + public static EvictingDualNodeHashTable __jr_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__jr_u") + static EvictingDualNodeHashTable __jr_u; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("ObjectDefinition_cachedModels") + static EvictingDualNodeHashTable ObjectDefinition_cachedModels; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "[Ldw;" + ) + @Export("__jr_l") + static ModelData[] __jr_l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -2034835389 + ) + @Export("id") + public int id; + @ObfuscatedName("x") + @Export("__x") + int[] __x; + @ObfuscatedName("d") + @Export("__d") + int[] __d; + @ObfuscatedName("k") + @Export("name") + public String name; + @ObfuscatedName("n") + @Export("recolorFrom") + short[] recolorFrom; + @ObfuscatedName("i") + @Export("recolorTo") + short[] recolorTo; + @ObfuscatedName("a") + @Export("retextureFrom") + short[] retextureFrom; + @ObfuscatedName("z") + @Export("retextureTo") + short[] retextureTo; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 998026479 + ) + @Export("sizeX") + public int sizeX; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = -301273619 + ) + @Export("sizeY") + public int sizeY; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = -553719901 + ) + @Export("interactType") + public int interactType; + @ObfuscatedName("y") + @Export("boolean1") + public boolean boolean1; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 1419333853 + ) + @Export("int1") + public int int1; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = -268374709 + ) + @Export("clipType") + int clipType; + @ObfuscatedName("c") + @Export("nonFlatShading") + boolean nonFlatShading; + @ObfuscatedName("r") + @Export("modelClipped") + public boolean modelClipped; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -1018236769 + ) + @Export("animationId") + public int animationId; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = 713665805 + ) + @Export("int2") + public int int2; + @ObfuscatedName("ag") + @ObfuscatedGetter( + intValue = 533219139 + ) + @Export("ambient") + int ambient; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = -216646581 + ) + @Export("contrast") + int contrast; + @ObfuscatedName("aj") + @Export("actions") + public String[] actions; + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = -1737602209 + ) + @Export("mapIconId") + public int mapIconId; + @ObfuscatedName("ar") + @ObfuscatedGetter( + intValue = -324183669 + ) + @Export("mapSceneId") + public int mapSceneId; + @ObfuscatedName("ac") + @Export("isRotated") + boolean isRotated; + @ObfuscatedName("ay") + @Export("clipped") + public boolean clipped; + @ObfuscatedName("ah") + @ObfuscatedGetter( + intValue = -1509832827 + ) + @Export("modelSizeX") + int modelSizeX; + @ObfuscatedName("ak") + @ObfuscatedGetter( + intValue = 511434049 + ) + @Export("modelHeight") + int modelHeight; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = 1746573233 + ) + @Export("modelSizeY") + int modelSizeY; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = 967376007 + ) + @Export("offsetX") + int offsetX; + @ObfuscatedName("ab") + @ObfuscatedGetter( + intValue = -1720702573 + ) + @Export("offsetHeight") + int offsetHeight; + @ObfuscatedName("ae") + @ObfuscatedGetter( + intValue = 818611483 + ) + @Export("offsetY") + int offsetY; + @ObfuscatedName("at") + @Export("boolean2") + public boolean boolean2; + @ObfuscatedName("ad") + @Export("isSolid") + boolean isSolid; + @ObfuscatedName("ap") + @ObfuscatedGetter( + intValue = 1455451843 + ) + @Export("int3") + public int int3; + @ObfuscatedName("as") + @Export("transforms") + public int[] transforms; + @ObfuscatedName("am") + @ObfuscatedGetter( + intValue = 1136644531 + ) + @Export("transformVarbit") + int transformVarbit; + @ObfuscatedName("an") + @ObfuscatedGetter( + intValue = -2119965579 + ) + @Export("transformConfigId") + int transformConfigId; + @ObfuscatedName("az") + @ObfuscatedGetter( + intValue = 374616127 + ) + @Export("ambientSoundId") + public int ambientSoundId; + @ObfuscatedName("au") + @ObfuscatedGetter( + intValue = -1990510197 + ) + @Export("int4") + public int int4; + @ObfuscatedName("ao") + @ObfuscatedGetter( + intValue = -1519592967 + ) + @Export("int5") + public int int5; + @ObfuscatedName("aa") + @ObfuscatedGetter( + intValue = 1201773735 + ) + @Export("int6") + public int int6; + @ObfuscatedName("ax") + @Export("__ax") + public int[] __ax; + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("params") + IterableNodeHashTable params; + + static { + ObjectDefinition_isLowDetail = false; + ObjectDefinition_cached = new EvictingDualNodeHashTable(4096); + __jr_o = new EvictingDualNodeHashTable(500); + __jr_u = new EvictingDualNodeHashTable(30); + ObjectDefinition_cachedModels = new EvictingDualNodeHashTable(30); + __jr_l = new ModelData[4]; + } + + ObjectDefinition() { + this.name = "null"; + this.sizeX = 1; + this.sizeY = 1; + this.interactType = 2; + this.boolean1 = true; + this.int1 = -1; + this.clipType = -1; + this.nonFlatShading = false; + this.modelClipped = false; + this.animationId = -1; + this.int2 = 16; + this.ambient = 0; + this.contrast = 0; + this.actions = new String[5]; + this.mapIconId = -1; + this.mapSceneId = -1; + this.isRotated = false; + this.clipped = true; + this.modelSizeX = 128; + this.modelHeight = 128; + this.modelSizeY = 128; + this.offsetX = 0; + this.offsetHeight = 0; + this.offsetY = 0; + this.boolean2 = false; + this.isSolid = false; + this.int3 = -1; + this.transformVarbit = -1; + this.transformConfigId = -1; + this.ambientSoundId = -1; + this.int4 = 0; + this.int5 = 0; + this.int6 = 0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-245255765" + ) + @Export("init") + void init() { + if(this.int1 == -1) { + this.int1 = 0; + if(this.__x != null && (this.__d == null || this.__d[0] == 10)) { + this.int1 = 1; + } + + for(int var1 = 0; var1 < 5; ++var1) { + if(this.actions[var1] != null) { + this.int1 = 1; + } + } + } + + if(this.int3 == -1) { + this.int3 = this.interactType != 0?1:0; + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1210669830" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-2044409717" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + int var3; + int var4; + if(var2 == 1) { + var3 = var1.readUnsignedByte(); + if(var3 > 0) { + if(this.__x != null && !ObjectDefinition_isLowDetail) { + var1.index += var3 * 3; + } else { + this.__d = new int[var3]; + this.__x = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__x[var4] = var1.__ag_302(); + this.__d[var4] = var1.readUnsignedByte(); + } + } + } + } else if(var2 == 2) { + this.name = var1.readStringCp1252NullTerminated(); + } else if(var2 == 5) { + var3 = var1.readUnsignedByte(); + if(var3 > 0) { + if(this.__x != null && !ObjectDefinition_isLowDetail) { + var1.index += var3 * 2; + } else { + this.__d = null; + this.__x = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__x[var4] = var1.__ag_302(); + } + } + } + } else if(var2 == 14) { + this.sizeX = var1.readUnsignedByte(); + } else if(var2 == 15) { + this.sizeY = var1.readUnsignedByte(); + } else if(var2 == 17) { + this.interactType = 0; + this.boolean1 = false; + } else if(var2 == 18) { + this.boolean1 = false; + } else if(var2 == 19) { + this.int1 = var1.readUnsignedByte(); + } else if(var2 == 21) { + this.clipType = 0; + } else if(var2 == 22) { + this.nonFlatShading = true; + } else if(var2 == 23) { + this.modelClipped = true; + } else if(var2 == 24) { + this.animationId = var1.__ag_302(); + if(this.animationId == 65535) { + this.animationId = -1; + } + } else if(var2 == 27) { + this.interactType = 1; + } else if(var2 == 28) { + this.int2 = var1.readUnsignedByte(); + } else if(var2 == 29) { + this.ambient = var1.readByte(); + } else if(var2 == 39) { + this.contrast = var1.readByte() * 25; + } else if(var2 >= 30 && var2 < 35) { + this.actions[var2 - 30] = var1.readStringCp1252NullTerminated(); + if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) { + this.actions[var2 - 30] = null; + } + } else if(var2 == 40) { + var3 = var1.readUnsignedByte(); + this.recolorFrom = new short[var3]; + this.recolorTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.recolorFrom[var4] = (short)var1.__ag_302(); + this.recolorTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 41) { + var3 = var1.readUnsignedByte(); + this.retextureFrom = new short[var3]; + this.retextureTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.retextureFrom[var4] = (short)var1.__ag_302(); + this.retextureTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 62) { + this.isRotated = true; + } else if(var2 == 64) { + this.clipped = false; + } else if(var2 == 65) { + this.modelSizeX = var1.__ag_302(); + } else if(var2 == 66) { + this.modelHeight = var1.__ag_302(); + } else if(var2 == 67) { + this.modelSizeY = var1.__ag_302(); + } else if(var2 == 68) { + this.mapSceneId = var1.__ag_302(); + } else if(var2 == 69) { + var1.readUnsignedByte(); + } else if(var2 == 70) { + this.offsetX = var1.__aq_303(); + } else if(var2 == 71) { + this.offsetHeight = var1.__aq_303(); + } else if(var2 == 72) { + this.offsetY = var1.__aq_303(); + } else if(var2 == 73) { + this.boolean2 = true; + } else if(var2 == 74) { + this.isSolid = true; + } else if(var2 == 75) { + this.int3 = var1.readUnsignedByte(); + } else if(var2 != 77 && var2 != 92) { + if(var2 == 78) { + this.ambientSoundId = var1.__ag_302(); + this.int4 = var1.readUnsignedByte(); + } else if(var2 == 79) { + this.int5 = var1.__ag_302(); + this.int6 = var1.__ag_302(); + this.int4 = var1.readUnsignedByte(); + var3 = var1.readUnsignedByte(); + this.__ax = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__ax[var4] = var1.__ag_302(); + } + } else if(var2 == 81) { + this.clipType = var1.readUnsignedByte() * 256; + } else if(var2 == 82) { + this.mapIconId = var1.__ag_302(); + } else if(var2 == 249) { + this.params = AbstractIndexCache.readStringIntParameters(var1, this.params); + } + } else { + this.transformVarbit = var1.__ag_302(); + if(this.transformVarbit == 65535) { + this.transformVarbit = -1; + } + + this.transformConfigId = var1.__ag_302(); + if(this.transformConfigId == 65535) { + this.transformConfigId = -1; + } + + var3 = -1; + if(var2 == 92) { + var3 = var1.__ag_302(); + if(var3 == 65535) { + var3 = -1; + } + } + + var4 = var1.readUnsignedByte(); + this.transforms = new int[var4 + 2]; + + for(int var5 = 0; var5 <= var4; ++var5) { + this.transforms[var5] = var1.__ag_302(); + if(this.transforms[var5] == 65535) { + this.transforms[var5] = -1; + } + } + + this.transforms[var4 + 1] = var3; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1880172029" + ) + @Export("__u_421") + public final boolean __u_421(int var1) { + if(this.__d != null) { + for(int var4 = 0; var4 < this.__d.length; ++var4) { + if(this.__d[var4] == var1) { + return __jr_q.tryLoadRecord(this.__x[var4] & 65535, 0); + } + } + + return true; + } else if(this.__x == null) { + return true; + } else if(var1 != 10) { + return true; + } else { + boolean var2 = true; + + for(int var3 = 0; var3 < this.__x.length; ++var3) { + var2 &= __jr_q.tryLoadRecord(this.__x[var3] & 65535, 0); + } + + return var2; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-666846742" + ) + @Export("__g_422") + public final boolean __g_422() { + if(this.__x == null) { + return true; + } else { + boolean var1 = true; + + for(int var2 = 0; var2 < this.__x.length; ++var2) { + var1 &= __jr_q.tryLoadRecord(this.__x[var2] & 65535, 0); + } + + return var1; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(II[[IIIIS)Lex;", + garbageValue = "-27831" + ) + @Export("__l_423") + public final Entity __l_423(int var1, int var2, int[][] var3, int var4, int var5, int var6) { + long var7; + if(this.__d == null) { + var7 = (long)(var2 + (this.id << 10)); + } else { + var7 = (long)(var2 + (var1 << 3) + (this.id << 10)); + } + + Object var9 = (Entity)__jr_u.get(var7); + if(var9 == null) { + ModelData var10 = this.getModelData(var1, var2); + if(var10 == null) { + return null; + } + + if(!this.nonFlatShading) { + var9 = var10.toModel(this.ambient + 64, this.contrast + 768, -50, -10, -50); + } else { + var10.__aq = (short)(this.ambient + 64); + var10.__aj = (short)(this.contrast + 768); + var10.__h_228(); + var9 = var10; + } + + __jr_u.put((DualNode)var9, var7); + } + + if(this.nonFlatShading) { + var9 = ((ModelData)var9).__o_218(); + } + + if(this.clipType >= 0) { + if(var9 instanceof Model) { + var9 = ((Model)var9).contourGround(var3, var4, var5, var6, true, this.clipType); + } else if(var9 instanceof ModelData) { + var9 = ((ModelData)var9).__u_219(var3, var4, var5, var6, true, this.clipType); + } + } + + return (Entity)var9; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(II[[IIIIB)Ldu;", + garbageValue = "0" + ) + @Export("getModel") + public final Model getModel(int var1, int var2, int[][] var3, int var4, int var5, int var6) { + long var7; + if(this.__d == null) { + var7 = (long)(var2 + (this.id << 10)); + } else { + var7 = (long)(var2 + (var1 << 3) + (this.id << 10)); + } + + Model var9 = (Model)ObjectDefinition_cachedModels.get(var7); + if(var9 == null) { + ModelData var10 = this.getModelData(var1, var2); + if(var10 == null) { + return null; + } + + var9 = var10.toModel(this.ambient + 64, this.contrast + 768, -50, -10, -50); + ObjectDefinition_cachedModels.put(var9, var7); + } + + if(this.clipType >= 0) { + var9 = var9.contourGround(var3, var4, var5, var6, true, this.clipType); + } + + return var9; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(II[[IIIILjh;II)Ldu;", + garbageValue = "1045723499" + ) + @Export("getModelDynamic") + public final Model getModelDynamic(int var1, int var2, int[][] var3, int var4, int var5, int var6, SequenceDefinition var7, int var8) { + long var9; + if(this.__d == null) { + var9 = (long)(var2 + (this.id << 10)); + } else { + var9 = (long)(var2 + (var1 << 3) + (this.id << 10)); + } + + Model var11 = (Model)ObjectDefinition_cachedModels.get(var9); + if(var11 == null) { + ModelData var12 = this.getModelData(var1, var2); + if(var12 == null) { + return null; + } + + var11 = var12.toModel(this.ambient + 64, this.contrast + 768, -50, -10, -50); + ObjectDefinition_cachedModels.put(var11, var9); + } + + if(var7 == null && this.clipType == -1) { + return var11; + } else { + if(var7 != null) { + var11 = var7.animateObject(var11, var8, var2); + } else { + var11 = var11.toSharedSequenceModel(true); + } + + if(this.clipType >= 0) { + var11 = var11.contourGround(var3, var4, var5, var6, false, this.clipType); + } + + return var11; + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(IIB)Ldw;", + garbageValue = "6" + ) + @Export("getModelData") + final ModelData getModelData(int var1, int var2) { + ModelData var3 = null; + boolean var4; + int var5; + int var7; + if(this.__d == null) { + if(var1 != 10) { + return null; + } + + if(this.__x == null) { + return null; + } + + var4 = this.isRotated; + if(var1 == 2 && var2 > 3) { + var4 = !var4; + } + + var5 = this.__x.length; + + for(int var6 = 0; var6 < var5; ++var6) { + var7 = this.__x[var6]; + if(var4) { + var7 += 65536; + } + + var3 = (ModelData)__jr_o.get((long)var7); + if(var3 == null) { + var3 = ModelData.method2788(__jr_q, var7 & 65535, 0); + if(var3 == null) { + return null; + } + + if(var4) { + var3.__t_226(); + } + + __jr_o.put(var3, (long)var7); + } + + if(var5 > 1) { + __jr_l[var6] = var3; + } + } + + if(var5 > 1) { + var3 = new ModelData(__jr_l, var5); + } + } else { + int var9 = -1; + + for(var5 = 0; var5 < this.__d.length; ++var5) { + if(this.__d[var5] == var1) { + var9 = var5; + break; + } + } + + if(var9 == -1) { + return null; + } + + var5 = this.__x[var9]; + boolean var10 = this.isRotated ^ var2 > 3; + if(var10) { + var5 += 65536; + } + + var3 = (ModelData)__jr_o.get((long)var5); + if(var3 == null) { + var3 = ModelData.method2788(__jr_q, var5 & 65535, 0); + if(var3 == null) { + return null; + } + + if(var10) { + var3.__t_226(); + } + + __jr_o.put(var3, (long)var5); + } + } + + if(this.modelSizeX == 128 && this.modelHeight == 128 && this.modelSizeY == 128) { + var4 = false; + } else { + var4 = true; + } + + boolean var11; + if(this.offsetX == 0 && this.offsetHeight == 0 && this.offsetY == 0) { + var11 = false; + } else { + var11 = true; + } + + ModelData var8 = new ModelData(var3, var2 == 0 && !var4 && !var11, this.recolorFrom == null, null == this.retextureFrom, true); + if(var1 == 4 && var2 > 3) { + var8.__a_224(256); + var8.__z_225(45, 0, -45); + } + + var2 &= 3; + if(var2 == 1) { + var8.__l_221(); + } else if(var2 == 2) { + var8.__x_222(); + } else if(var2 == 3) { + var8.__d_223(); + } + + if(this.recolorFrom != null) { + for(var7 = 0; var7 < this.recolorFrom.length; ++var7) { + var8.recolor(this.recolorFrom[var7], this.recolorTo[var7]); + } + } + + if(this.retextureFrom != null) { + for(var7 = 0; var7 < this.retextureFrom.length; ++var7) { + var8.retexture(this.retextureFrom[var7], this.retextureTo[var7]); + } + } + + if(var4) { + var8.__y_227(this.modelSizeX, this.modelHeight, this.modelSizeY); + } + + if(var11) { + var8.__z_225(this.offsetX, this.offsetHeight, this.offsetY); + } + + return var8; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(B)Ljr;", + garbageValue = "-107" + ) + @Export("transform") + public final ObjectDefinition transform() { + int var1 = -1; + if(this.transformVarbit != -1) { + var1 = WorldMapSection2.getVarbit(this.transformVarbit); + } else if(this.transformConfigId != -1) { + var1 = Varps.Varps_main[this.transformConfigId]; + } + + int var2; + if(var1 >= 0 && var1 < this.transforms.length - 1) { + var2 = this.transforms[var1]; + } else { + var2 = this.transforms[this.transforms.length - 1]; + } + + return var2 != -1?class50.getObjectDefinition(var2):null; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(IIB)I", + garbageValue = "-52" + ) + @Export("getIntParam") + public int getIntParam(int var1, int var2) { + IterableNodeHashTable var4 = this.params; + int var3; + if(var4 == null) { + var3 = var2; + } else { + IntegerNode var5 = (IntegerNode)var4.get((long)var1); + if(var5 == null) { + var3 = var2; + } else { + var3 = var5.integer; + } + } + + return var3; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)Ljava/lang/String;", + garbageValue = "-1961654631" + ) + @Export("getStringParam") + public String getStringParam(int var1, String var2) { + return Frames.method3238(this.params, var1, var2); + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "8470625" + ) + @Export("__t_424") + public boolean __t_424() { + if(this.transforms == null) { + return this.ambientSoundId != -1 || this.__ax != null; + } else { + for(int var1 = 0; var1 < this.transforms.length; ++var1) { + if(this.transforms[var1] != -1) { + ObjectDefinition var2 = class50.getObjectDefinition(this.transforms[var1]); + if(var2.ambientSoundId != -1 || var2.__ax != null) { + return true; + } + } + } + + return false; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Ljz;", + garbageValue = "-1284680749" + ) + @Export("getNpcDefinition") + public static NpcDefinition getNpcDefinition(int var0) { + NpcDefinition var1 = (NpcDefinition)NpcDefinition.NpcDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = NpcDefinition.NpcDefinition_indexCache.takeRecord(9, var0); + var1 = new NpcDefinition(); + var1.id = var0; + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + var1.init(); + NpcDefinition.NpcDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "0" + ) + public static void method5041() { + ItemDefinition.Sprite_cached.clear(); + } +} diff --git a/rs-client/src/main/java/ObjectNode.java b/rs-client/src/main/java/ObjectNode.java new file mode 100644 index 0000000000..e58c8b133b --- /dev/null +++ b/rs-client/src/main/java/ObjectNode.java @@ -0,0 +1,15 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("fk") +@Implements("ObjectNode") +public class ObjectNode extends Node { + @ObfuscatedName("m") + @Export("obj") + public final Object obj; + + public ObjectNode(Object var1) { + this.obj = var1; + } +} diff --git a/rs-client/src/main/java/ObjectSound.java b/rs-client/src/main/java/ObjectSound.java new file mode 100644 index 0000000000..ba344aa439 --- /dev/null +++ b/rs-client/src/main/java/ObjectSound.java @@ -0,0 +1,137 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("be") +@Implements("ObjectSound") +public final class ObjectSound extends Node { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("objectSounds") + static NodeDeque objectSounds; + @ObfuscatedName("dg") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache2") + static IndexCache indexCache2; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 647270745 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -800464493 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -85911525 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -211591209 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 512258949 + ) + @Export("__u") + int __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1344558633 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -731474443 + ) + @Export("soundEffectId") + int soundEffectId; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lds;" + ) + @Export("stream1") + RawPcmStream stream1; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1608400407 + ) + @Export("__x") + int __x; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 1748890449 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @Export("soundEffectIds") + int[] soundEffectIds; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -1041508847 + ) + @Export("surfaceOffsetY") + int __n; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lds;" + ) + @Export("stream2") + RawPcmStream stream2; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Ljr;" + ) + @Export("obj") + ObjectDefinition obj; + + static { + objectSounds = new NodeDeque(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "585404027" + ) + @Export("set") + void set() { + int var1 = this.soundEffectId; + ObjectDefinition var2 = this.obj.transform(); + if(var2 != null) { + this.soundEffectId = var2.ambientSoundId; + this.__g = var2.int4 * 128; + this.__x = var2.int5; + this.__d = var2.int6; + this.soundEffectIds = var2.__ax; + } else { + this.soundEffectId = -1; + this.__g = 0; + this.__x = 0; + this.__d = 0; + this.soundEffectIds = null; + } + + if(var1 != this.soundEffectId && this.stream1 != null) { + TaskHandler.pcmStreamMixer.removeSubStream(this.stream1); + this.stream1 = null; + } + + } +} diff --git a/rs-client/src/main/java/Occluder.java b/rs-client/src/main/java/Occluder.java new file mode 100644 index 0000000000..84e8db0e18 --- /dev/null +++ b/rs-client/src/main/java/Occluder.java @@ -0,0 +1,196 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ee") +@Implements("Occluder") +public final class Occluder { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -691483983 + ) + @Export("minTileX") + int minTileX; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -13700523 + ) + @Export("maxTileX") + int maxTileX; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 768402657 + ) + @Export("minTileY") + int minTileY; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1501977891 + ) + @Export("maxTileY") + int maxTileY; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -806776509 + ) + @Export("type") + int type; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1824663821 + ) + @Export("minX") + int minX; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -2141305127 + ) + @Export("maxX") + int maxX; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -41239751 + ) + @Export("minZ") + int minZ; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1805075909 + ) + @Export("maxZ") + int maxZ; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 842961497 + ) + @Export("minY") + int minY; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -1114046315 + ) + @Export("maxY") + int maxY; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 826041747 + ) + @Export("__k") + int __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -407777817 + ) + @Export("surfaceOffsetY") + int __n; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 1324959981 + ) + @Export("__i") + int __i; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -1527021367 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -570391007 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = -373839103 + ) + @Export("__j") + int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = -1334433969 + ) + @Export("__s") + int __s; + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IB)Lia;", + garbageValue = "16" + ) + public static VarbitDefinition method3255(int var0) { + VarbitDefinition var1 = (VarbitDefinition)VarbitDefinition.VarbitDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = VarbitDefinition.VarbitDefinition_indexCache.takeRecord(14, var0); + var1 = new VarbitDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + VarbitDefinition.VarbitDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "([BI)Lcg;", + garbageValue = "-1164060583" + ) + @Export("newScript") + static Script newScript(byte[] var0) { + Script var1 = new Script(); + Buffer var2 = new Buffer(var0); + var2.index = var2.array.length - 2; + int var3 = var2.__ag_302(); + int var4 = var2.array.length - 2 - var3 - 12; + var2.index = var4; + int var5 = var2.readInt(); + var1.localIntCount = var2.__ag_302(); + var1.localStringCount = var2.__ag_302(); + var1.intArgumentCount = var2.__ag_302(); + var1.stringArgumentCount = var2.__ag_302(); + int var6 = var2.readUnsignedByte(); + int var7; + int var8; + if(var6 > 0) { + var1.switches = var1.__o_164(var6); + + for(var7 = 0; var7 < var6; ++var7) { + var8 = var2.__ag_302(); + IterableNodeHashTable var9 = new IterableNodeHashTable(var8 > 0?World.method1759(var8):1); + var1.switches[var7] = var9; + + while(var8-- > 0) { + int var10 = var2.readInt(); + int var11 = var2.readInt(); + var9.put(new IntegerNode(var11), (long)var10); + } + } + } + + var2.index = 0; + var2.readStringCp1252NullTerminatedOrNull(); + var1.opcodes = new int[var5]; + var1.intOperands = new int[var5]; + var1.stringOperands = new String[var5]; + + for(var7 = 0; var2.index < var4; var1.opcodes[var7++] = var8) { + var8 = var2.__ag_302(); + if(var8 == 3) { + var1.stringOperands[var7] = var2.readStringCp1252NullTerminated(); + } else if(var8 < 100 && var8 != 21 && var8 != 38 && var8 != 39) { + var1.intOperands[var7] = var2.readInt(); + } else { + var1.intOperands[var7] = var2.readUnsignedByte(); + } + } + + return var1; + } +} diff --git a/rs-client/src/main/java/OverlayDefinition.java b/rs-client/src/main/java/OverlayDefinition.java new file mode 100644 index 0000000000..001869f336 --- /dev/null +++ b/rs-client/src/main/java/OverlayDefinition.java @@ -0,0 +1,249 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jf") +@Implements("OverlayDefinition") +public class OverlayDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jf_m") + public static AbstractIndexCache __jf_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__jf_f") + public static EvictingDualNodeHashTable __jf_f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -111851793 + ) + @Export("rgb") + public int rgb; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 733377225 + ) + @Export("texture") + public int texture; + @ObfuscatedName("o") + @Export("__o") + public boolean __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 528865753 + ) + @Export("rgb2") + public int rgb2; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 2013422835 + ) + @Export("hue") + public int hue; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1719896767 + ) + @Export("saturation") + public int saturation; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -624223733 + ) + @Export("lightness") + public int lightness; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -122393061 + ) + @Export("hue2") + public int hue2; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 1514187401 + ) + @Export("saturation2") + public int saturation2; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 127639041 + ) + @Export("lightness2") + public int lightness2; + + static { + __jf_f = new EvictingDualNodeHashTable(64); + } + + public OverlayDefinition() { + this.rgb = 0; + this.texture = -1; + this.__o = true; + this.rgb2 = -1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "867788548" + ) + @Export("init") + public void init() { + if(this.rgb2 != -1) { + this.setHsl(this.rgb2); + this.hue2 = this.hue; + this.saturation2 = this.saturation; + this.lightness2 = this.lightness; + } + + this.setHsl(this.rgb); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-424203051" + ) + @Export("read") + public void read(Buffer var1, int var2) { + while(true) { + int var3 = var1.readUnsignedByte(); + if(var3 == 0) { + return; + } + + this.readNext(var1, var3, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;III)V", + garbageValue = "2094105763" + ) + @Export("readNext") + void readNext(Buffer var1, int var2, int var3) { + if(var2 == 1) { + this.rgb = var1.readMedium(); + } else if(var2 == 2) { + this.texture = var1.readUnsignedByte(); + } else if(var2 == 5) { + this.__o = false; + } else if(var2 == 7) { + this.rgb2 = var1.readMedium(); + } else if(var2 == 8) { + ; + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "489697731" + ) + @Export("setHsl") + void setHsl(int var1) { + double var2 = (double)(var1 >> 16 & 255) / 256.0D; + double var4 = (double)(var1 >> 8 & 255) / 256.0D; + double var6 = (double)(var1 & 255) / 256.0D; + double var8 = var2; + if(var4 < var2) { + var8 = var4; + } + + if(var6 < var8) { + var8 = var6; + } + + double var10 = var2; + if(var4 > var2) { + var10 = var4; + } + + if(var6 > var10) { + var10 = var6; + } + + double var12 = 0.0D; + double var14 = 0.0D; + double var16 = (var10 + var8) / 2.0D; + if(var8 != var10) { + if(var16 < 0.5D) { + var14 = (var10 - var8) / (var8 + var10); + } + + if(var16 >= 0.5D) { + var14 = (var10 - var8) / (2.0D - var10 - var8); + } + + if(var10 == var2) { + var12 = (var4 - var6) / (var10 - var8); + } else if(var10 == var4) { + var12 = (var6 - var2) / (var10 - var8) + 2.0D; + } else if(var10 == var6) { + var12 = (var2 - var4) / (var10 - var8) + 4.0D; + } + } + + var12 /= 6.0D; + this.hue = (int)(var12 * 256.0D); + this.saturation = (int)(256.0D * var14); + this.lightness = (int)(var16 * 256.0D); + if(this.saturation < 0) { + this.saturation = 0; + } else if(this.saturation > 255) { + this.saturation = 255; + } + + if(this.lightness < 0) { + this.lightness = 0; + } else if(this.lightness > 255) { + this.lightness = 255; + } + + } + + @ObfuscatedName("iw") + @ObfuscatedSignature( + signature = "(Lho;IIB)V", + garbageValue = "30" + ) + @Export("alignWidgetPosition") + static void alignWidgetPosition(Widget var0, int var1, int var2) { + if(var0.xAlignment == 0) { + var0.x = var0.rawX; + } else if(var0.xAlignment == 1) { + var0.x = var0.rawX + (var1 - var0.width) / 2; + } else if(var0.xAlignment == 2) { + var0.x = var1 - var0.width - var0.rawX; + } else if(var0.xAlignment == 3) { + var0.x = var0.rawX * var1 >> 14; + } else if(var0.xAlignment == 4) { + var0.x = (var0.rawX * var1 >> 14) + (var1 - var0.width) / 2; + } else { + var0.x = var1 - var0.width - (var0.rawX * var1 >> 14); + } + + if(var0.yAlignment == 0) { + var0.y = var0.rawY; + } else if(var0.yAlignment == 1) { + var0.y = (var2 - var0.height) / 2 + var0.rawY; + } else if(var0.yAlignment == 2) { + var0.y = var2 - var0.height - var0.rawY; + } else if(var0.yAlignment == 3) { + var0.y = var2 * var0.rawY >> 14; + } else if(var0.yAlignment == 4) { + var0.y = (var2 * var0.rawY >> 14) + (var2 - var0.height) / 2; + } else { + var0.y = var2 - var0.height - (var2 * var0.rawY >> 14); + } + + } +} diff --git a/rs-client/src/main/java/OwnWorldComparator.java b/rs-client/src/main/java/OwnWorldComparator.java new file mode 100644 index 0000000000..4be097ab28 --- /dev/null +++ b/rs-client/src/main/java/OwnWorldComparator.java @@ -0,0 +1,88 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bj") +@Implements("OwnWorldComparator") +public class OwnWorldComparator implements Comparator { + @ObfuscatedName("m") + @Export("__m") + boolean __m; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ll;Ll;B)I", + garbageValue = "21" + ) + @Export("__m_132") + int __m_132(GrandExchangeEvent var1, GrandExchangeEvent var2) { + if(var2.world == var1.world) { + return 0; + } else { + if(this.__m) { + if(Client.worldId == var1.world) { + return -1; + } + + if(var2.world == Client.worldId) { + return 1; + } + } + + return var1.world < var2.world?-1:1; + } + } + + @Export("__equals_134") + @ObfuscatedName("equals") + public boolean __equals_134(Object var1) { + return super.equals(var1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_132((GrandExchangeEvent)var1, (GrandExchangeEvent)var2); + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-662838966" + ) + static int method1285(int var0, Script var1, boolean var2) { + int var3; + if(var0 == 5504) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + int var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + if(!Client.isCameraLocked) { + Client.cameraPitchTarget = var3; + Client.minimapOrientation = var4; + } + + return 1; + } else if(var0 == 5505) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.cameraPitchTarget; + return 1; + } else if(var0 == 5506) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.minimapOrientation; + return 1; + } else if(var0 == 5530) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var3 < 0) { + var3 = 0; + } + + Client.__client_ho = var3; + return 1; + } else if(var0 == 5531) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_ho; + return 1; + } else { + return 2; + } + } +} diff --git a/rs-client/src/main/java/PacketBuffer.java b/rs-client/src/main/java/PacketBuffer.java new file mode 100644 index 0000000000..8198487a11 --- /dev/null +++ b/rs-client/src/main/java/PacketBuffer.java @@ -0,0 +1,234 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hx") +@Implements("PacketBuffer") +public final class PacketBuffer extends Buffer { + @ObfuscatedName("x") + @Export("PacketBuffer_masks") + static final int[] PacketBuffer_masks; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 701739159 + ) + @Export("__hx_z") + public static int __hx_z; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lhn;" + ) + @Export("isaacCipher0") + IsaacCipher isaacCipher0; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -1048718919 + ) + @Export("bitIndex") + int bitIndex; + + static { + PacketBuffer_masks = new int[]{0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215, 33554431, 67108863, 134217727, 268435455, 536870911, 1073741823, Integer.MAX_VALUE, -1}; + } + + public PacketBuffer(int var1) { + super(var1); + } + + @ObfuscatedName("io") + @ObfuscatedSignature( + signature = "([II)V", + garbageValue = "-763699765" + ) + @Export("newIsaacCipher") + public void newIsaacCipher(int[] var1) { + this.isaacCipher0 = new IsaacCipher(var1); + } + + @ObfuscatedName("ih") + @ObfuscatedSignature( + signature = "(Lhn;B)V", + garbageValue = "0" + ) + @Export("setIsaacCipher") + public void setIsaacCipher(IsaacCipher var1) { + this.isaacCipher0 = var1; + } + + @ObfuscatedName("im") + @ObfuscatedSignature( + signature = "(IS)V", + garbageValue = "1405" + ) + @Export("writeByteIsaac") + public void writeByteIsaac(int var1) { + super.array[++super.index - 1] = (byte)(var1 + this.isaacCipher0.__m_336()); + } + + @ObfuscatedName("ii") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1990206702" + ) + @Export("readByteIsaac") + public int readByteIsaac() { + return super.array[++super.index - 1] - this.isaacCipher0.__m_336() & 255; + } + + @ObfuscatedName("ig") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "101" + ) + @Export("__ig_334") + public boolean __ig_334() { + int var1 = super.array[super.index] - this.isaacCipher0.__f_337() & 255; + return var1 >= 128; + } + + @ObfuscatedName("ia") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "2087071250" + ) + @Export("readSmartByteShortIsaac") + public int readSmartByteShortIsaac() { + int var1 = super.array[++super.index - 1] - this.isaacCipher0.__m_336() & 255; + return var1 < 128?var1:(var1 - 128 << 8) + (super.array[++super.index - 1] - this.isaacCipher0.__m_336() & 255); + } + + @ObfuscatedName("jb") + @ObfuscatedSignature( + signature = "([BIII)V", + garbageValue = "-1168019189" + ) + @Export("__jb_335") + public void __jb_335(byte[] var1, int var2, int var3) { + for(int var4 = 0; var4 < var3; ++var4) { + var1[var4 + var2] = (byte)(super.array[++super.index - 1] - this.isaacCipher0.__m_336()); + } + + } + + @ObfuscatedName("jq") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1207949100" + ) + @Export("importIndex") + public void importIndex() { + this.bitIndex = super.index * 8; + } + + @ObfuscatedName("jw") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "1710439720" + ) + @Export("readBits") + public int readBits(int var1) { + int var2 = this.bitIndex >> 3; + int var3 = 8 - (this.bitIndex & 7); + int var4 = 0; + + for(this.bitIndex += var1; var1 > var3; var3 = 8) { + var4 += (super.array[var2++] & PacketBuffer_masks[var3]) << var1 - var3; + var1 -= var3; + } + + if(var3 == var1) { + var4 += super.array[var2] & PacketBuffer_masks[var3]; + } else { + var4 += super.array[var2] >> var3 - var1 & PacketBuffer_masks[var1]; + } + + return var4; + } + + @ObfuscatedName("jm") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1466909963" + ) + @Export("exportIndex") + public void exportIndex() { + super.index = (this.bitIndex + 7) / 8; + } + + @ObfuscatedName("jr") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-141269845" + ) + @Export("bitsRemaining") + public int bitsRemaining(int var1) { + return var1 * 8 - this.bitIndex; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "1249956146" + ) + static boolean method4062(int var0, int var1) { + return var0 != 4 || var1 < 8; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lit;IIIBZI)V", + garbageValue = "-1562700981" + ) + @Export("requestNetFile") + static void requestNetFile(IndexCache var0, int var1, int var2, int var3, byte var4, boolean var5) { + long var6 = (long)((var1 << 16) + var2); + NetFileRequest var8 = (NetFileRequest)NetCache.NetCache_pendingPriorityWrites.get(var6); + if(var8 == null) { + var8 = (NetFileRequest)NetCache.NetCache_pendingPriorityResponses.get(var6); + if(var8 == null) { + var8 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var6); + if(var8 != null) { + if(var5) { + var8.removeDual(); + NetCache.NetCache_pendingPriorityWrites.put(var8, var6); + --NetCache.NetCache_pendingWritesCount; + ++NetCache.NetCache_pendingPriorityWritesCount; + } + + } else { + if(!var5) { + var8 = (NetFileRequest)NetCache.NetCache_pendingResponses.get(var6); + if(var8 != null) { + return; + } + } + + var8 = new NetFileRequest(); + var8.indexCache = var0; + var8.crc = var3; + var8.padding = var4; + if(var5) { + NetCache.NetCache_pendingPriorityWrites.put(var8, var6); + ++NetCache.NetCache_pendingPriorityWritesCount; + } else { + NetCache.NetCache_pendingWritesQueue.addFirst(var8); + NetCache.NetCache_pendingWrites.put(var8, var6); + ++NetCache.NetCache_pendingWritesCount; + } + + } + } + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "587268539" + ) + public static int method4081(int var0, int var1) { + return (var0 + 40000 << 8) + var1; + } +} diff --git a/rs-client/src/main/java/PacketBufferNode.java b/rs-client/src/main/java/PacketBufferNode.java new file mode 100644 index 0000000000..15514416c1 --- /dev/null +++ b/rs-client/src/main/java/PacketBufferNode.java @@ -0,0 +1,72 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gg") +@Implements("PacketBufferNode") +public class PacketBufferNode extends Node { + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "[Lgg;" + ) + @Export("packetBufferNodes") + public static PacketBufferNode[] packetBufferNodes; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1583654139 + ) + @Export("__gg_u") + public static int __gg_u; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgs;" + ) + @Export("__m") + public ClientPacket __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1433542775 + ) + @Export("__f") + public int __f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lhx;" + ) + @Export("packetBuffer") + public PacketBuffer packetBuffer; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -2051819203 + ) + @Export("__w") + public int __w; + + static { + packetBufferNodes = new PacketBufferNode[300]; + __gg_u = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1987685511" + ) + @Export("__f_292") + public void __f_292() { + if(__gg_u < packetBufferNodes.length) { + packetBufferNodes[++__gg_u - 1] = this; + } + } + + @ObfuscatedName("kq") + @ObfuscatedSignature( + signature = "(Lho;I)Z", + garbageValue = "-739353556" + ) + static boolean method3673(Widget var0) { + return var0.isHidden; + } +} diff --git a/rs-client/src/main/java/PacketWriter.java b/rs-client/src/main/java/PacketWriter.java new file mode 100644 index 0000000000..2f2d8a1ffd --- /dev/null +++ b/rs-client/src/main/java/PacketWriter.java @@ -0,0 +1,206 @@ +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cl") +@Implements("PacketWriter") +public class PacketWriter { + @ObfuscatedName("pg") + @ObfuscatedSignature( + signature = "Lkv;" + ) + @Export("clanChat") + static ClanChat clanChat; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfu;" + ) + @Export("socket0") + AbstractSocket socket0; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lja;" + ) + @Export("packetBufferNodes") + IterableNodeDeque packetBufferNodes; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1028046199 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgr;" + ) + @Export("buffer") + Buffer buffer; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lhn;" + ) + @Export("isaacCipher") + public IsaacCipher isaacCipher; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lhx;" + ) + @Export("packetBuffer") + PacketBuffer packetBuffer; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("serverPacket0") + ServerPacket serverPacket0; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1986766063 + ) + @Export("serverPacket0Length") + int serverPacket0Length; + @ObfuscatedName("e") + @Export("__e") + boolean __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 120570975 + ) + @Export("__x") + int __x; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 1672229609 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__k") + ServerPacket __k; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("surfaceOffsetY") + ServerPacket __n; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__i") + ServerPacket __i; + + PacketWriter() { + this.packetBufferNodes = new IterableNodeDeque(); + this.__q = 0; + this.buffer = new Buffer(5000); + this.packetBuffer = new PacketBuffer(40000); + this.serverPacket0 = null; + this.serverPacket0Length = 0; + this.__e = true; + this.__x = 0; + this.__d = 0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1561094077" + ) + @Export("__m_165") + final void __m_165() { + this.packetBufferNodes.clear(); + this.__q = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1839929685" + ) + @Export("__f_166") + final void __f_166() throws IOException { + if(this.socket0 != null && this.__q > 0) { + this.buffer.index = 0; + + while(true) { + PacketBufferNode var1 = (PacketBufferNode)this.packetBufferNodes.last(); + if(var1 == null || var1.__w > this.buffer.array.length - this.buffer.index) { + this.socket0.write(this.buffer.array, 0, this.buffer.index); + this.__d = 0; + break; + } + + this.buffer.__s_297(var1.packetBuffer.array, 0, var1.__w); + this.__q -= var1.__w; + var1.remove(); + var1.packetBuffer.__f_295(); + var1.__f_292(); + } + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgg;I)V", + garbageValue = "599379248" + ) + @Export("__q_167") + public final void __q_167(PacketBufferNode var1) { + this.packetBufferNodes.addFirst(var1); + var1.__w = var1.packetBuffer.index; + var1.packetBuffer.index = 0; + this.__q += var1.__w; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lfu;B)V", + garbageValue = "111" + ) + @Export("setSocket") + void setSocket(AbstractSocket var1) { + this.socket0 = var1; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2060019267" + ) + @Export("close") + void close() { + if(this.socket0 != null) { + this.socket0.close(); + this.socket0 = null; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "120" + ) + @Export("removeSocket") + void removeSocket() { + this.socket0 = null; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)Lfu;", + garbageValue = "1161554709" + ) + @Export("getSocket") + AbstractSocket getSocket() { + return this.socket0; + } +} diff --git a/rs-client/src/main/java/ParamKeyDefinition.java b/rs-client/src/main/java/ParamKeyDefinition.java new file mode 100644 index 0000000000..eb4b7f01a1 --- /dev/null +++ b/rs-client/src/main/java/ParamKeyDefinition.java @@ -0,0 +1,395 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jb") +@Implements("ParamKeyDefinition") +public class ParamKeyDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jb_m") + public static AbstractIndexCache __jb_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("ParamKeyDefinition_cached") + static EvictingDualNodeHashTable ParamKeyDefinition_cached; + @ObfuscatedName("q") + @Export("type") + char type; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1133042753 + ) + @Export("keyInt") + public int keyInt; + @ObfuscatedName("o") + @Export("keyString") + public String keyString; + @ObfuscatedName("u") + @Export("isMembersOnly") + boolean isMembersOnly; + + static { + ParamKeyDefinition_cached = new EvictingDualNodeHashTable(64); + } + + ParamKeyDefinition() { + this.isMembersOnly = true; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "121" + ) + @Export("init") + void init() { + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-975533635" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "1664350313" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.type = class14.method171(var1.readByte()); + } else if(var2 == 2) { + this.keyInt = var1.readInt(); + } else if(var2 == 4) { + this.isMembersOnly = false; + } else if(var2 == 5) { + this.keyString = var1.readStringCp1252NullTerminated(); + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1897943299" + ) + @Export("isString") + public boolean isString() { + return this.type == 's'; + } + + @ObfuscatedName("hs") + @ObfuscatedSignature( + signature = "(IIIIIIII)V", + garbageValue = "-904254947" + ) + static final void method4933(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + if(var2 >= 1 && var3 >= 1 && var2 <= 102 && var3 <= 102) { + if(Client.isLowDetail && var0 != SoundSystem.plane) { + return; + } + + long var7 = 0L; + boolean var9 = true; + boolean var10 = false; + boolean var11 = false; + if(var1 == 0) { + var7 = class65.scene.__ar_244(var0, var2, var3); + } + + if(var1 == 1) { + var7 = class65.scene.__ac_245(var0, var2, var3); + } + + if(var1 == 2) { + var7 = class65.scene.__ay_246(var0, var2, var3); + } + + if(var1 == 3) { + var7 = class65.scene.getFloorDecorationTag(var0, var2, var3); + } + + int var12; + if(0L != var7) { + var12 = class65.scene.getObjectFlags(var0, var2, var3, var7); + int var39 = HitSplatDefinition.method4972(var7); + int var40 = var12 & 31; + int var41 = var12 >> 6 & 3; + ObjectDefinition var13; + if(var1 == 0) { + class65.scene.removeBoundaryObject(var0, var2, var3); + var13 = class50.getObjectDefinition(var39); + if(var13.interactType != 0) { + Client.collisionMaps[var0].__g_288(var2, var3, var40, var41, var13.boolean1); + } + } + + if(var1 == 1) { + class65.scene.removeWallDecoration(var0, var2, var3); + } + + if(var1 == 2) { + class65.scene.__c_242(var0, var2, var3); + var13 = class50.getObjectDefinition(var39); + if(var2 + var13.sizeX > 103 || var3 + var13.sizeX > 103 || var2 + var13.sizeY > 103 || var3 + var13.sizeY > 103) { + return; + } + + if(var13.interactType != 0) { + Client.collisionMaps[var0].__l_289(var2, var3, var13.sizeX, var13.sizeY, var41, var13.boolean1); + } + } + + if(var1 == 3) { + class65.scene.removeFloorDecoration(var0, var2, var3); + var13 = class50.getObjectDefinition(var39); + if(var13.interactType == 1) { + Client.collisionMaps[var0].__x_291(var2, var3); + } + } + } + + if(var4 >= 0) { + var12 = var0; + if(var0 < 3 && (Tiles.Tiles_renderFlags[1][var2][var3] & 2) == 2) { + var12 = var0 + 1; + } + + Scene var42 = class65.scene; + CollisionMap var14 = Client.collisionMaps[var0]; + ObjectDefinition var15 = class50.getObjectDefinition(var4); + int var16; + int var17; + if(var5 != 1 && var5 != 3) { + var16 = var15.sizeX; + var17 = var15.sizeY; + } else { + var16 = var15.sizeY; + var17 = var15.sizeX; + } + + int var18; + int var19; + if(var16 + var2 <= 104) { + var18 = (var16 >> 1) + var2; + var19 = var2 + (var16 + 1 >> 1); + } else { + var18 = var2; + var19 = var2 + 1; + } + + int var20; + int var21; + if(var3 + var17 <= 104) { + var20 = var3 + (var17 >> 1); + var21 = var3 + (var17 + 1 >> 1); + } else { + var20 = var3; + var21 = var3 + 1; + } + + int[][] var22 = Tiles.Tiles_heights[var12]; + int var23 = var22[var18][var21] + var22[var19][var20] + var22[var18][var20] + var22[var19][var21] >> 2; + int var24 = (var2 << 7) + (var16 << 6); + int var25 = (var3 << 7) + (var17 << 6); + long var26 = FontName.method5637(var2, var3, 2, var15.int1 == 0, var4); + int var28 = (var5 << 6) + var6; + if(var15.int3 == 1) { + var28 += 256; + } + + Object var29; + if(var6 == 22) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(22, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 22, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newFloorDecoration(var0, var2, var3, var23, (Entity)var29, var26, var28); + if(var15.interactType == 1) { + var14.__o_286(var2, var3); + } + } else if(var6 != 10 && var6 != 11) { + if(var6 >= 12) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(var6, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, var6, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.__d_238(var0, var2, var3, var23, 1, 1, (Entity)var29, 0, var26, var28); + if(var15.interactType != 0) { + var14.__q_284(var2, var3, var16, var17, var15.boolean1); + } + } else if(var6 == 0) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(0, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 0, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newBoundaryObject(var0, var2, var3, var23, (Entity)var29, (Entity)null, Tiles.__bq_t[var5], 0, var26, var28); + if(var15.interactType != 0) { + var14.__f_283(var2, var3, var6, var5, var15.boolean1); + } + } else if(var6 == 1) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(1, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 1, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newBoundaryObject(var0, var2, var3, var23, (Entity)var29, (Entity)null, Tiles.__bq_y[var5], 0, var26, var28); + if(var15.interactType != 0) { + var14.__f_283(var2, var3, var6, var5, var15.boolean1); + } + } else { + int var35; + if(var6 == 2) { + var35 = var5 + 1 & 3; + Object var30; + Object var31; + if(var15.animationId == -1 && var15.transforms == null) { + var30 = var15.getModel(2, var5 + 4, var22, var24, var23, var25); + var31 = var15.getModel(2, var35, var22, var24, var23, var25); + } else { + var30 = new DynamicObject(var4, 2, var5 + 4, var12, var2, var3, var15.animationId, true, (Entity)null); + var31 = new DynamicObject(var4, 2, var35, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newBoundaryObject(var0, var2, var3, var23, (Entity)var30, (Entity)var31, Tiles.__bq_t[var5], Tiles.__bq_t[var35], var26, var28); + if(var15.interactType != 0) { + var14.__f_283(var2, var3, var6, var5, var15.boolean1); + } + } else if(var6 == 3) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(3, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 3, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newBoundaryObject(var0, var2, var3, var23, (Entity)var29, (Entity)null, Tiles.__bq_y[var5], 0, var26, var28); + if(var15.interactType != 0) { + var14.__f_283(var2, var3, var6, var5, var15.boolean1); + } + } else if(var6 == 9) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(var6, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, var6, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.__d_238(var0, var2, var3, var23, 1, 1, (Entity)var29, 0, var26, var28); + if(var15.interactType != 0) { + var14.__q_284(var2, var3, var16, var17, var15.boolean1); + } + } else if(var6 == 4) { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(4, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 4, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newWallDecoration(var0, var2, var3, var23, (Entity)var29, (Entity)null, Tiles.__bq_t[var5], 0, 0, 0, var26, var28); + } else { + Object var32; + long var36; + if(var6 == 5) { + var35 = 16; + var36 = var42.__ar_244(var0, var2, var3); + if(var36 != 0L) { + var35 = class50.getObjectDefinition(HitSplatDefinition.method4972(var36)).int2; + } + + if(var15.animationId == -1 && var15.transforms == null) { + var32 = var15.getModel(4, var5, var22, var24, var23, var25); + } else { + var32 = new DynamicObject(var4, 4, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newWallDecoration(var0, var2, var3, var23, (Entity)var32, (Entity)null, Tiles.__bq_t[var5], 0, var35 * Tiles.__bq_h[var5], var35 * Tiles.__bq_b[var5], var26, var28); + } else if(var6 == 6) { + var35 = 8; + var36 = var42.__ar_244(var0, var2, var3); + if(var36 != 0L) { + var35 = class50.getObjectDefinition(HitSplatDefinition.method4972(var36)).int2 / 2; + } + + if(var15.animationId == -1 && var15.transforms == null) { + var32 = var15.getModel(4, var5 + 4, var22, var24, var23, var25); + } else { + var32 = new DynamicObject(var4, 4, var5 + 4, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newWallDecoration(var0, var2, var3, var23, (Entity)var32, (Entity)null, 256, var5, var35 * Tiles.__bq_c[var5], var35 * Tiles.__bq_r[var5], var26, var28); + } else if(var6 == 7) { + int var38 = var5 + 2 & 3; + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(4, var38 + 4, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 4, var38 + 4, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newWallDecoration(var0, var2, var3, var23, (Entity)var29, (Entity)null, 256, var38, 0, 0, var26, var28); + } else if(var6 == 8) { + var35 = 8; + var36 = var42.__ar_244(var0, var2, var3); + if(var36 != 0L) { + var35 = class50.getObjectDefinition(HitSplatDefinition.method4972(var36)).int2 / 2; + } + + int var34 = var5 + 2 & 3; + Object var33; + if(var15.animationId == -1 && var15.transforms == null) { + var32 = var15.getModel(4, var5 + 4, var22, var24, var23, var25); + var33 = var15.getModel(4, var34 + 4, var22, var24, var23, var25); + } else { + var32 = new DynamicObject(var4, 4, var5 + 4, var12, var2, var3, var15.animationId, true, (Entity)null); + var33 = new DynamicObject(var4, 4, var34 + 4, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + var42.newWallDecoration(var0, var2, var3, var23, (Entity)var32, (Entity)var33, 256, var5, var35 * Tiles.__bq_c[var5], var35 * Tiles.__bq_r[var5], var26, var28); + } + } + } + } else { + if(var15.animationId == -1 && var15.transforms == null) { + var29 = var15.getModel(10, var5, var22, var24, var23, var25); + } else { + var29 = new DynamicObject(var4, 10, var5, var12, var2, var3, var15.animationId, true, (Entity)null); + } + + if(var29 != null) { + var42.__d_238(var0, var2, var3, var23, var16, var17, (Entity)var29, var6 == 11?256:0, var26, var28); + } + + if(var15.interactType != 0) { + var14.__q_284(var2, var3, var16, var17, var15.boolean1); + } + } + } + } + + } +} diff --git a/rs-client/src/main/java/PcmPlayer.java b/rs-client/src/main/java/PcmPlayer.java new file mode 100644 index 0000000000..14f603392f --- /dev/null +++ b/rs-client/src/main/java/PcmPlayer.java @@ -0,0 +1,475 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("co") +@Implements("PcmPlayer") +public class PcmPlayer { + @ObfuscatedName("u") + @Export("isStereo") + protected static boolean isStereo; + @ObfuscatedName("i") + @Export("samples") + protected int[] samples; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Ldc;" + ) + @Export("stream0") + PcmStream stream0; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 1125788887 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + longValue = -8124323644430480811L + ) + @Export("timeMs") + long timeMs; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = -1671644011 + ) + @Export("capacity") + int capacity; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 951871565 + ) + @Export("frequency") + int frequency; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = 1907203055 + ) + @Export("__y") + int __y; + @ObfuscatedName("h") + @ObfuscatedGetter( + longValue = -200656835998283411L + ) + @Export("retryTimeMs") + long retryTimeMs; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 48658021 + ) + @Export("__b") + int __b; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 1624619697 + ) + @Export("__c") + int __c; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = -1586398263 + ) + @Export("nextPosition") + int nextPosition; + @ObfuscatedName("p") + @ObfuscatedGetter( + longValue = -8188447292076890879L + ) + @Export("__p") + long __p; + @ObfuscatedName("v") + @Export("__v") + boolean __v; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = -645495803 + ) + @Export("__ac") + int __ac; + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "[Ldc;" + ) + @Export("__ay") + PcmStream[] __ay; + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "[Ldc;" + ) + @Export("__ah") + PcmStream[] __ah; + + protected PcmPlayer() { + this.__z = 32; + this.timeMs = class203.currentTimeMs(); + this.retryTimeMs = 0L; + this.__b = 0; + this.__c = 0; + this.nextPosition = 0; + this.__p = 0L; + this.__v = true; + this.__ac = 0; + this.__ay = new PcmStream[8]; + this.__ah = new PcmStream[8]; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "949670609" + ) + protected void init() throws Exception { + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1738349775" + ) + protected void open(int var1) throws Exception { + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "0" + ) + protected int position() throws Exception { + return this.capacity; + } + + @ObfuscatedName("w") + protected void write() throws Exception { + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "244995961" + ) + protected void close() { + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-191421600" + ) + protected void discard() throws Exception { + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(Ldc;I)V", + garbageValue = "2106357590" + ) + @Export("setStream") + public final synchronized void setStream(PcmStream var1) { + this.stream0 = var1; + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "453523469" + ) + @Export("run") + public final synchronized void run() { + if(this.samples != null) { + long var1 = class203.currentTimeMs(); + + try { + if(0L != this.retryTimeMs) { + if(var1 < this.retryTimeMs) { + return; + } + + this.open(this.capacity); + this.retryTimeMs = 0L; + this.__v = true; + } + + int var3 = this.position(); + if(this.nextPosition - var3 > this.__b) { + this.__b = this.nextPosition - var3; + } + + int var4 = this.__y + this.frequency; + if(var4 + 256 > 16384) { + var4 = 16128; + } + + if(var4 + 256 > this.capacity) { + this.capacity += 1024; + if(this.capacity > 16384) { + this.capacity = 16384; + } + + this.close(); + this.open(this.capacity); + var3 = 0; + this.__v = true; + if(var4 + 256 > this.capacity) { + var4 = this.capacity - 256; + this.__y = var4 - this.frequency; + } + } + + while(var3 < var4) { + this.fill(this.samples, 256); + this.write(); + var3 += 256; + } + + if(var1 > this.__p) { + if(!this.__v) { + if(this.__b == 0 && this.__c == 0) { + this.close(); + this.retryTimeMs = 2000L + var1; + return; + } + + this.__y = Math.min(this.__c, this.__b); + this.__c = this.__b; + } else { + this.__v = false; + } + + this.__b = 0; + this.__p = 2000L + var1; + } + + this.nextPosition = var3; + } catch (Exception var7) { + this.close(); + this.retryTimeMs = var1 + 2000L; + } + + try { + if(var1 > this.timeMs + 500000L) { + var1 = this.timeMs; + } + + while(var1 > 5000L + this.timeMs) { + this.skip(256); + this.timeMs += (long)(256000 / class309.PcmPlayer_sampleRate); + } + } catch (Exception var6) { + this.timeMs = var1; + } + + } + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-922069005" + ) + @Export("__ac_176") + public final void __ac_176() { + this.__v = true; + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "50" + ) + @Export("tryDiscard") + public final synchronized void tryDiscard() { + this.__v = true; + + try { + this.discard(); + } catch (Exception var2) { + this.close(); + this.retryTimeMs = class203.currentTimeMs() + 2000L; + } + + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "300201744" + ) + @Export("shutdown") + public final synchronized void shutdown() { + if(Messages.soundSystem != null) { + boolean var1 = true; + + for(int var2 = 0; var2 < 2; ++var2) { + if(this == Messages.soundSystem.players[var2]) { + Messages.soundSystem.players[var2] = null; + } + + if(Messages.soundSystem.players[var2] != null) { + var1 = false; + } + } + + if(var1) { + Friend.soundSystemExecutor.shutdownNow(); + Friend.soundSystemExecutor = null; + Messages.soundSystem = null; + } + } + + this.close(); + this.samples = null; + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-424358259" + ) + @Export("skip") + final void skip(int var1) { + this.__ac -= var1; + if(this.__ac < 0) { + this.__ac = 0; + } + + if(this.stream0 != null) { + this.stream0.__d_173(var1); + } + + } + + @ObfuscatedName("aw") + @Export("fill") + final void fill(int[] var1, int var2) { + int var3 = var2; + if(isStereo) { + var3 = var2 << 1; + } + + class212.clearIntArray(var1, 0, var3); + this.__ac -= var2; + if(this.stream0 != null && this.__ac <= 0) { + this.__ac += class309.PcmPlayer_sampleRate >> 4; + MidiPcmStream.PcmStream_disable(this.stream0); + this.__ab_177(this.stream0, this.stream0.__az_179()); + int var4 = 0; + int var5 = 255; + + int var6; + PcmStream var10; + label104: + for(var6 = 7; var5 != 0; --var6) { + int var7; + int var8; + if(var6 < 0) { + var7 = var6 & 3; + var8 = -(var6 >> 2); + } else { + var7 = var6; + var8 = 0; + } + + for(int var9 = var5 >>> var7 & 286331153; var9 != 0; var9 >>>= 4) { + if((var9 & 1) != 0) { + var5 &= ~(1 << var7); + var10 = null; + PcmStream var11 = this.__ay[var7]; + + label98: + while(true) { + while(true) { + if(var11 == null) { + break label98; + } + + AbstractSound var12 = var11.sound; + if(var12 != null && var12.position > var8) { + var5 |= 1 << var7; + var10 = var11; + var11 = var11.after; + } else { + var11.active = true; + int var13 = var11.__l_171(); + var4 += var13; + if(var12 != null) { + var12.position += var13; + } + + if(var4 >= this.__z) { + break label104; + } + + PcmStream var14 = var11.firstSubStream(); + if(var14 != null) { + for(int var15 = var11.__s; var14 != null; var14 = var11.nextSubStream()) { + this.__ab_177(var14, var15 * var14.__az_179() >> 8); + } + } + + PcmStream var18 = var11.after; + var11.after = null; + if(var10 == null) { + this.__ay[var7] = var18; + } else { + var10.after = var18; + } + + if(var18 == null) { + this.__ah[var7] = var10; + } + + var11 = var18; + } + } + } + } + + var7 += 4; + ++var8; + } + } + + for(var6 = 0; var6 < 8; ++var6) { + PcmStream var16 = this.__ay[var6]; + PcmStream[] var17 = this.__ay; + this.__ah[var6] = null; + + for(var17[var6] = null; var16 != null; var16 = var10) { + var10 = var16.after; + var16.after = null; + } + } + } + + if(this.__ac < 0) { + this.__ac = 0; + } + + if(this.stream0 != null) { + this.stream0.__e_172(var1, 0, var2); + } + + this.timeMs = class203.currentTimeMs(); + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(Ldc;II)V", + garbageValue = "-1884182540" + ) + @Export("__ab_177") + final void __ab_177(PcmStream var1, int var2) { + int var3 = var2 >> 5; + PcmStream var4 = this.__ah[var3]; + if(var4 == null) { + this.__ay[var3] = var1; + } else { + var4.after = var1; + } + + this.__ah[var3] = var1; + var1.__s = var2; + } +} diff --git a/rs-client/src/main/java/PcmPlayerProvider.java b/rs-client/src/main/java/PcmPlayerProvider.java new file mode 100644 index 0000000000..4c51d4d180 --- /dev/null +++ b/rs-client/src/main/java/PcmPlayerProvider.java @@ -0,0 +1,16 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cz") +@Implements("PcmPlayerProvider") +public interface PcmPlayerProvider { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)Lco;", + garbageValue = "-49" + ) + @Export("player") + PcmPlayer player(); +} diff --git a/rs-client/src/main/java/PcmStream.java b/rs-client/src/main/java/PcmStream.java new file mode 100644 index 0000000000..5f8a04d8d4 --- /dev/null +++ b/rs-client/src/main/java/PcmStream.java @@ -0,0 +1,68 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dc") +@Implements("PcmStream") +public abstract class PcmStream extends Node { + @ObfuscatedName("w") + @Export("active") + volatile boolean active; + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Ldc;" + ) + @Export("after") + PcmStream after; + @ObfuscatedName("s") + @Export("__s") + int __s; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Ldd;" + ) + @Export("sound") + AbstractSound sound; + + protected PcmStream() { + this.active = true; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected abstract PcmStream firstSubStream(); + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected abstract PcmStream nextSubStream(); + + @ObfuscatedName("l") + protected abstract int __l_171(); + + @ObfuscatedName("e") + protected abstract void __e_172(int[] var1, int var2, int var3); + + @ObfuscatedName("d") + protected abstract void __d_173(int var1); + + @ObfuscatedName("az") + int __az_179() { + return 255; + } + + @ObfuscatedName("ef") + @Export("update") + final void update(int[] var1, int var2, int var3) { + if(this.active) { + this.__e_172(var1, var2, var3); + } else { + this.__d_173(var3); + } + + } +} diff --git a/rs-client/src/main/java/PcmStreamMixer.java b/rs-client/src/main/java/PcmStreamMixer.java new file mode 100644 index 0000000000..0eeb230c0d --- /dev/null +++ b/rs-client/src/main/java/PcmStreamMixer.java @@ -0,0 +1,210 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ct") +@Implements("PcmStreamMixer") +public class PcmStreamMixer extends PcmStream { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("subStreams") + NodeDeque subStreams; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("__f") + NodeDeque __f; + @ObfuscatedName("q") + @Export("__q") + int __q; + @ObfuscatedName("o") + @Export("__o") + int __o; + + public PcmStreamMixer() { + this.subStreams = new NodeDeque(); + this.__f = new NodeDeque(); + this.__q = 0; + this.__o = -1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ldc;)V" + ) + @Export("addSubStream") + public final synchronized void addSubStream(PcmStream var1) { + this.subStreams.addLast(var1); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ldc;)V" + ) + @Export("removeSubStream") + public final synchronized void removeSubStream(PcmStream var1) { + var1.remove(); + } + + @ObfuscatedName("q") + @Export("__q_168") + void __q_168() { + if(this.__q > 0) { + for(PcmStreamMixerListener var1 = (PcmStreamMixerListener)this.__f.last(); var1 != null; var1 = (PcmStreamMixerListener)this.__f.previous()) { + var1.__m -= this.__q; + } + + this.__o -= this.__q; + this.__q = 0; + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgw;Ldf;)V" + ) + @Export("__w_169") + void __w_169(Node var1, PcmStreamMixerListener var2) { + while(this.__f.sentinel != var1 && ((PcmStreamMixerListener)var1).__m <= var2.__m) { + var1 = var1.previous; + } + + NodeDeque.method5270(var2, var1); + this.__o = ((PcmStreamMixerListener)this.__f.sentinel.previous).__m; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Ldf;)V" + ) + @Export("__o_170") + void __o_170(PcmStreamMixerListener var1) { + var1.remove(); + var1.remove2(); + Node var2 = this.__f.sentinel.previous; + if(var2 == this.__f.sentinel) { + this.__o = -1; + } else { + this.__o = ((PcmStreamMixerListener)var2).__m; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + @Export("firstSubStream") + protected PcmStream firstSubStream() { + return (PcmStream)this.subStreams.last(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + @Export("nextSubStream") + protected PcmStream nextSubStream() { + return (PcmStream)this.subStreams.previous(); + } + + @ObfuscatedName("l") + @Export("__l_171") + protected int __l_171() { + return 0; + } + + @ObfuscatedName("e") + @Export("__e_172") + public final synchronized void __e_172(int[] var1, int var2, int var3) { + do { + if(this.__o < 0) { + this.updateSubStreams(var1, var2, var3); + return; + } + + if(var3 + this.__q < this.__o) { + this.__q += var3; + this.updateSubStreams(var1, var2, var3); + return; + } + + int var4 = this.__o - this.__q; + this.updateSubStreams(var1, var2, var4); + var2 += var4; + var3 -= var4; + this.__q += var4; + this.__q_168(); + PcmStreamMixerListener var5 = (PcmStreamMixerListener)this.__f.last(); + synchronized(var5) { + int var7 = var5.update(); + if(var7 < 0) { + var5.__m = 0; + this.__o_170(var5); + } else { + var5.__m = var7; + this.__w_169(var5.previous, var5); + } + } + } while(var3 != 0); + + } + + @ObfuscatedName("x") + @Export("updateSubStreams") + void updateSubStreams(int[] var1, int var2, int var3) { + for(PcmStream var4 = (PcmStream)this.subStreams.last(); var4 != null; var4 = (PcmStream)this.subStreams.previous()) { + var4.update(var1, var2, var3); + } + + } + + @ObfuscatedName("d") + @Export("__d_173") + public final synchronized void __d_173(int var1) { + do { + if(this.__o < 0) { + this.skipSubStreams(var1); + return; + } + + if(this.__q + var1 < this.__o) { + this.__q += var1; + this.skipSubStreams(var1); + return; + } + + int var2 = this.__o - this.__q; + this.skipSubStreams(var2); + var1 -= var2; + this.__q += var2; + this.__q_168(); + PcmStreamMixerListener var3 = (PcmStreamMixerListener)this.__f.last(); + synchronized(var3) { + int var5 = var3.update(); + if(var5 < 0) { + var3.__m = 0; + this.__o_170(var3); + } else { + var3.__m = var5; + this.__w_169(var3.previous, var3); + } + } + } while(var1 != 0); + + } + + @ObfuscatedName("a") + @Export("skipSubStreams") + void skipSubStreams(int var1) { + for(PcmStream var2 = (PcmStream)this.subStreams.last(); var2 != null; var2 = (PcmStream)this.subStreams.previous()) { + var2.__d_173(var1); + } + + } +} diff --git a/rs-client/src/main/java/PcmStreamMixerListener.java b/rs-client/src/main/java/PcmStreamMixerListener.java new file mode 100644 index 0000000000..a87a239cc6 --- /dev/null +++ b/rs-client/src/main/java/PcmStreamMixerListener.java @@ -0,0 +1,23 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("df") +@Implements("PcmStreamMixerListener") +public abstract class PcmStreamMixerListener extends Node { + @ObfuscatedName("m") + @Export("__m") + int __m; + + @ObfuscatedName("m") + @Export("remove2") + abstract void remove2(); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lct;)I" + ) + @Export("update") + abstract int update(); +} diff --git a/rs-client/src/main/java/PlatformInfo.java b/rs-client/src/main/java/PlatformInfo.java new file mode 100644 index 0000000000..a94c76d1e9 --- /dev/null +++ b/rs-client/src/main/java/PlatformInfo.java @@ -0,0 +1,216 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lb") +@Implements("PlatformInfo") +public class PlatformInfo extends Node { + @ObfuscatedName("ay") + @ObfuscatedGetter( + intValue = 1318366785 + ) + @Export("__ay") + int __ay; + @ObfuscatedName("ah") + @Export("__ah") + boolean __ah; + @ObfuscatedName("ak") + @ObfuscatedGetter( + intValue = 703904161 + ) + @Export("__ak") + int __ak; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = 467004305 + ) + @Export("__aw") + int __aw; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = 2097018521 + ) + @Export("__al") + int __al; + @ObfuscatedName("ab") + @ObfuscatedGetter( + intValue = -1667177301 + ) + @Export("__ab") + int __ab; + @ObfuscatedName("ae") + @ObfuscatedGetter( + intValue = 385109109 + ) + @Export("__ae") + int __ae; + @ObfuscatedName("at") + @Export("__at") + boolean __at; + @ObfuscatedName("ad") + @ObfuscatedGetter( + intValue = -1765017 + ) + @Export("__ad") + int __ad; + @ObfuscatedName("ap") + @ObfuscatedGetter( + intValue = -817941105 + ) + @Export("__ap") + int __ap; + @ObfuscatedName("am") + @ObfuscatedGetter( + intValue = 30207059 + ) + @Export("__am") + int __am; + @ObfuscatedName("an") + @ObfuscatedGetter( + intValue = 890109053 + ) + @Export("__an") + int __an; + @ObfuscatedName("az") + @Export("__az") + String __az; + @ObfuscatedName("au") + @Export("__au") + String __au; + @ObfuscatedName("ao") + @Export("__ao") + String __ao; + @ObfuscatedName("aa") + @Export("__aa") + String __aa; + @ObfuscatedName("ax") + @ObfuscatedGetter( + intValue = 871094255 + ) + @Export("__ax") + int __ax; + @ObfuscatedName("af") + @ObfuscatedGetter( + intValue = 1955966365 + ) + @Export("__af") + int __af; + @ObfuscatedName("ai") + @ObfuscatedGetter( + intValue = 1196598207 + ) + @Export("__ai") + int __ai; + @ObfuscatedName("ba") + @ObfuscatedGetter( + intValue = -170839105 + ) + @Export("__ba") + int __ba; + @ObfuscatedName("bb") + @Export("__bb") + String __bb; + @ObfuscatedName("bs") + @Export("__bs") + String __bs; + @ObfuscatedName("bq") + @Export("__bq") + int[] __bq; + @ObfuscatedName("bn") + @ObfuscatedGetter( + intValue = 1466207635 + ) + @Export("__bn") + int __bn; + @ObfuscatedName("bk") + @Export("__bk") + String __bk; + + PlatformInfo(int var1, boolean var2, int var3, int var4, int var5, int var6, int var7, boolean var8, int var9, int var10, int var11, int var12, String var13, String var14, String var15, String var16, int var17, int var18, int var19, int var20, String var21, String var22, int[] var23, int var24, String var25) { + this.__bq = new int[3]; + this.__ay = var1; + this.__ah = var2; + this.__ak = var3; + this.__aw = var4; + this.__al = var5; + this.__ab = var6; + this.__ae = var7; + this.__at = var8; + this.__ad = var9; + this.__ap = var10; + this.__am = var11; + this.__an = var12; + this.__az = var13; + this.__au = var14; + this.__ao = var15; + this.__aa = var16; + this.__ax = var17; + this.__af = var18; + this.__ai = var19; + this.__ba = var20; + this.__bb = var21; + this.__bs = var22; + this.__bq = var23; + this.__bn = var24; + this.__bk = var25; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1518809220" + ) + @Export("write") + public void write(Buffer var1) { + var1.writeByte(7); + var1.writeByte(this.__ay); + var1.writeByte(this.__ah?1:0); + var1.writeByte(this.__ak); + var1.writeByte(this.__aw); + var1.writeByte(this.__al); + var1.writeByte(this.__ab); + var1.writeByte(this.__ae); + var1.writeByte(this.__at?1:0); + var1.writeShort(this.__ad); + var1.writeByte(this.__ap); + var1.writeMedium(this.__am); + var1.writeShort(this.__an); + var1.writeStringCp1252NullCircumfixed(this.__az); + var1.writeStringCp1252NullCircumfixed(this.__au); + var1.writeStringCp1252NullCircumfixed(this.__ao); + var1.writeStringCp1252NullCircumfixed(this.__aa); + var1.writeByte(this.__af); + var1.writeShort(this.__ax); + var1.writeStringCp1252NullCircumfixed(this.__bb); + var1.writeStringCp1252NullCircumfixed(this.__bs); + var1.writeByte(this.__ai); + var1.writeByte(this.__ba); + + for(int var2 = 0; var2 < this.__bq.length; ++var2) { + var1.writeInt(this.__bq[var2]); + } + + var1.writeInt(this.__bn); + var1.writeStringCp1252NullCircumfixed(this.__bk); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-2071624512" + ) + @Export("size") + public int size() { + byte var1 = 38; + int var2 = var1 + Client.method1692(this.__az); + var2 += Client.method1692(this.__au); + var2 += Client.method1692(this.__ao); + var2 += Client.method1692(this.__aa); + var2 += Client.method1692(this.__bb); + var2 += Client.method1692(this.__bs); + var2 += Client.method1692(this.__bk); + return var2; + } +} diff --git a/rs-client/src/main/java/PlatformInfoProvider.java b/rs-client/src/main/java/PlatformInfoProvider.java new file mode 100644 index 0000000000..f5b19f5e61 --- /dev/null +++ b/rs-client/src/main/java/PlatformInfoProvider.java @@ -0,0 +1,16 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lm") +@Implements("PlatformInfoProvider") +public interface PlatformInfoProvider { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Llb;", + garbageValue = "-843739713" + ) + @Export("get") + PlatformInfo get(); +} diff --git a/rs-client/src/main/java/Player.java b/rs-client/src/main/java/Player.java new file mode 100644 index 0000000000..bbd168853c --- /dev/null +++ b/rs-client/src/main/java/Player.java @@ -0,0 +1,545 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("br") +@Implements("Player") +public final class Player extends Actor { + @ObfuscatedName("gi") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("headIconHintSprites") + static Sprite[] headIconHintSprites; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lkp;" + ) + @Export("username") + Username username; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lhi;" + ) + @Export("appearance") + PlayerAppearance appearance; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 2021372599 + ) + @Export("headIconPk") + int headIconPk; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -793415473 + ) + @Export("headIconPrayer") + int headIconPrayer; + @ObfuscatedName("u") + @Export("actions") + String[] actions; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 984869133 + ) + @Export("combatLevel") + int combatLevel; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1136542281 + ) + @Export("skillLevel") + int skillLevel; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 1989338999 + ) + @Export("tileHeight") + int tileHeight; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -351876137 + ) + @Export("animationCycleStart") + int animationCycleStart; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -359981047 + ) + @Export("animationCycleEnd") + int animationCycleEnd; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 665272587 + ) + @Export("__k") + int __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -1624108131 + ) + @Export("tileHeight2") + int tileHeight2; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -1771431457 + ) + @Export("__i") + int __i; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Ldu;" + ) + @Export("model0") + Model model0; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 1610462047 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 224552403 + ) + @Export("__j") + int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 305969541 + ) + @Export("__s") + int __s; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 892671055 + ) + @Export("__t") + int __t; + @ObfuscatedName("y") + @Export("isUnanimated") + boolean isUnanimated; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 91041167 + ) + @Export("team") + int team; + @ObfuscatedName("b") + @Export("isHidden") + boolean isHidden; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 1332604413 + ) + @Export("plane") + int plane; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = 1486240677 + ) + @Export("index") + int index; + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("isFriendTriBool") + TriBool isFriendTriBool; + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("isInClanChat") + TriBool isInClanChat; + @ObfuscatedName("ag") + @Export("__ag") + boolean __ag; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = -539678769 + ) + @Export("tileX") + int tileX; + @ObfuscatedName("aj") + @ObfuscatedGetter( + intValue = 702193221 + ) + @Export("tileY") + int tileY; + + Player() { + this.headIconPk = -1; + this.headIconPrayer = -1; + this.actions = new String[3]; + + for(int var1 = 0; var1 < 3; ++var1) { + this.actions[var1] = ""; + } + + this.combatLevel = 0; + this.skillLevel = 0; + this.animationCycleStart = 0; + this.animationCycleEnd = 0; + this.isUnanimated = false; + this.team = 0; + this.isHidden = false; + this.isFriendTriBool = TriBool.TriBool_unknown; + this.isInClanChat = TriBool.TriBool_unknown; + this.__ag = false; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-801926003" + ) + @Export("read") + final void read(Buffer var1) { + var1.index = 0; + int var2 = var1.readUnsignedByte(); + this.headIconPk = var1.readByte(); + this.headIconPrayer = var1.readByte(); + int var3 = -1; + this.team = 0; + int[] var4 = new int[12]; + + int var6; + int var7; + for(int var5 = 0; var5 < 12; ++var5) { + var6 = var1.readUnsignedByte(); + if(var6 == 0) { + var4[var5] = 0; + } else { + var7 = var1.readUnsignedByte(); + var4[var5] = var7 + (var6 << 8); + if(var5 == 0 && var4[0] == 65535) { + var3 = var1.__ag_302(); + break; + } + + if(var4[var5] >= 512) { + int var8 = Skills.getItemDefinition(var4[var5] - 512).int1; + if(var8 != 0) { + this.team = var8; + } + } + } + } + + int[] var9 = new int[5]; + + for(var6 = 0; var6 < 5; ++var6) { + var7 = var1.readUnsignedByte(); + if(var7 < 0 || var7 >= class229.__hz_l[var6].length) { + var7 = 0; + } + + var9[var6] = var7; + } + + super.idleSequence = var1.__ag_302(); + if(super.idleSequence == 65535) { + super.idleSequence = -1; + } + + super.turnLeftSequence = var1.__ag_302(); + if(super.turnLeftSequence == 65535) { + super.turnLeftSequence = -1; + } + + super.turnRightSequence = super.turnLeftSequence; + super.walkSequence = var1.__ag_302(); + if(super.walkSequence == 65535) { + super.walkSequence = -1; + } + + super.walkTurnSequence = var1.__ag_302(); + if(super.walkTurnSequence == 65535) { + super.walkTurnSequence = -1; + } + + super.walkTurnLeftSequence = var1.__ag_302(); + if(super.walkTurnLeftSequence == 65535) { + super.walkTurnLeftSequence = -1; + } + + super.walkTurnRightSequence = var1.__ag_302(); + if(super.walkTurnRightSequence == 65535) { + super.walkTurnRightSequence = -1; + } + + super.runSequence = var1.__ag_302(); + if(super.runSequence == 65535) { + super.runSequence = -1; + } + + this.username = new Username(var1.readStringCp1252NullTerminated(), KeyHandler.loginType); + this.__q_125(); + this.__u_128(); + if(this == Canvas.localPlayer) { + RunException.localPlayerName = this.username.getName(); + } + + this.combatLevel = var1.readUnsignedByte(); + this.skillLevel = var1.__ag_302(); + this.isHidden = var1.readUnsignedByte() == 1; + if(Client.gameBuild == 0 && Client.rights >= 2) { + this.isHidden = false; + } + + if(this.appearance == null) { + this.appearance = new PlayerAppearance(); + } + + this.appearance.__m_385(var4, var9, var2 == 1, var3); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "92" + ) + @Export("isFriend") + boolean isFriend() { + if(this.isFriendTriBool == TriBool.TriBool_unknown) { + this.__w_126(); + } + + return this.isFriendTriBool == TriBool.TriBool_true; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2059706128" + ) + @Export("__q_125") + void __q_125() { + this.isFriendTriBool = TriBool.TriBool_unknown; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2126310249" + ) + @Export("__w_126") + void __w_126() { + this.isFriendTriBool = WorldMapArea.friendSystem.__t_161(this.username)?TriBool.TriBool_true:TriBool.TriBool_false; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "21" + ) + @Export("isClanMember") + boolean isClanMember() { + if(this.isInClanChat == TriBool.TriBool_unknown) { + this.__g_129(); + } + + return this.isInClanChat == TriBool.TriBool_true; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1982407728" + ) + @Export("__u_128") + void __u_128() { + this.isInClanChat = TriBool.TriBool_unknown; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "833825629" + ) + @Export("__g_129") + void __g_129() { + this.isInClanChat = PacketWriter.clanChat != null && PacketWriter.clanChat.contains(this.username)?TriBool.TriBool_true:TriBool.TriBool_false; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-2025332260" + ) + @Export("transformedSize") + int transformedSize() { + return this.appearance != null && this.appearance.npcTransformId != -1?ObjectDefinition.getNpcDefinition(this.appearance.npcTransformId).size:1; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + @Export("getModel") + protected final Model getModel() { + if(this.appearance == null) { + return null; + } else { + SequenceDefinition var1 = super.sequence != -1 && super.sequenceDelay == 0?WorldMapAreaData.getSequenceDefinition(super.sequence):null; + SequenceDefinition var2 = super.movementSequence == -1 || this.isUnanimated || super.idleSequence == super.movementSequence && var1 != null?null:WorldMapAreaData.getSequenceDefinition(super.movementSequence); + Model var3 = this.appearance.getModel(var1, super.sequenceFrame, var2, super.movementFrame); + if(var3 == null) { + return null; + } else { + var3.calculateBoundsCylinder(); + super.defaultHeight = var3.height; + Model var4; + Model[] var5; + if(!this.isUnanimated && super.spotAnimation != -1 && super.spotAnimationFrame != -1) { + var4 = class50.getSpotAnimationDefinition(super.spotAnimation).getModel(super.spotAnimationFrame); + if(var4 != null) { + var4.offsetBy(0, -super.heightOffset, 0); + var5 = new Model[]{var3, var4}; + var3 = new Model(var5, 2); + } + } + + if(!this.isUnanimated && this.model0 != null) { + if(Client.cycle >= this.animationCycleEnd) { + this.model0 = null; + } + + if(Client.cycle >= this.animationCycleStart && Client.cycle < this.animationCycleEnd) { + var4 = this.model0; + var4.offsetBy(this.__k - super.x, this.tileHeight2 - this.tileHeight, this.__i - super.y); + if(super.orientation == 512) { + var4.rotateY90Ccw(); + var4.rotateY90Ccw(); + var4.rotateY90Ccw(); + } else if(super.orientation == 1024) { + var4.rotateY90Ccw(); + var4.rotateY90Ccw(); + } else if(super.orientation == 1536) { + var4.rotateY90Ccw(); + } + + var5 = new Model[]{var3, var4}; + var3 = new Model(var5, 2); + if(super.orientation == 512) { + var4.rotateY90Ccw(); + } else if(super.orientation == 1024) { + var4.rotateY90Ccw(); + var4.rotateY90Ccw(); + } else if(super.orientation == 1536) { + var4.rotateY90Ccw(); + var4.rotateY90Ccw(); + var4.rotateY90Ccw(); + } + + var4.offsetBy(super.x - this.__k, this.tileHeight - this.tileHeight2, super.y - this.__i); + } + } + + var3.isSingleTile = true; + return var3; + } + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(IIBI)V", + garbageValue = "-2066158770" + ) + @Export("__x_130") + final void __x_130(int var1, int var2, byte var3) { + if(super.sequence != -1 && WorldMapAreaData.getSequenceDefinition(super.sequence).__s == 1) { + super.sequence = -1; + } + + super.__bc = -1; + if(var1 >= 0 && var1 < 104 && var2 >= 0 && var2 < 104) { + if(super.pathX[0] >= 0 && super.pathX[0] < 104 && super.pathY[0] >= 0 && super.pathY[0] < 104) { + if(var3 == 2) { + WorldMapIcon2.method316(this, var1, var2, (byte)2); + } + + this.__a_131(var1, var2, var3); + } else { + this.resetPath(var1, var2); + } + } else { + this.resetPath(var1, var2); + } + + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1966552419" + ) + @Export("resetPath") + void resetPath(int var1, int var2) { + super.pathLength = 0; + super.__ch = 0; + super.__cq = 0; + super.pathX[0] = var1; + super.pathY[0] = var2; + int var3 = this.transformedSize(); + super.x = super.pathX[0] * 128 + var3 * 64; + super.y = super.pathY[0] * 128 + var3 * 64; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(IIBI)V", + garbageValue = "-1280043751" + ) + @Export("__a_131") + final void __a_131(int var1, int var2, byte var3) { + if(super.pathLength < 9) { + ++super.pathLength; + } + + for(int var4 = super.pathLength; var4 > 0; --var4) { + super.pathX[var4] = super.pathX[var4 - 1]; + super.pathY[var4] = super.pathY[var4 - 1]; + super.pathTraversed[var4] = super.pathTraversed[var4 - 1]; + } + + super.pathX[0] = var1; + super.pathY[0] = var2; + super.pathTraversed[0] = var3; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "1" + ) + @Export("isVisible") + final boolean isVisible() { + return this.appearance != null; + } + + @ObfuscatedName("if") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "13" + ) + static void method1281() { + if(Client.isSpellSelected) { + Widget var0 = class204.getWidgetChild(ServerBuild.__iy_lo, Client.__client_lc); + if(var0 != null && var0.onTargetLeave != null) { + ScriptEvent var1 = new ScriptEvent(); + var1.widget = var0; + var1.args0 = var0.onTargetLeave; + AbstractIndexCache.runScript(var1); + } + + Client.isSpellSelected = false; + class22.method295(var0); + } + } +} diff --git a/rs-client/src/main/java/PlayerAppearance.java b/rs-client/src/main/java/PlayerAppearance.java new file mode 100644 index 0000000000..378fa71777 --- /dev/null +++ b/rs-client/src/main/java/PlayerAppearance.java @@ -0,0 +1,417 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hi") +@Implements("PlayerAppearance") +public class PlayerAppearance { + @ObfuscatedName("g") + @Export("__hi_g") + public static short[] __hi_g; + @ObfuscatedName("d") + @Export("__hi_d") + static final int[] __hi_d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("PlayerAppearance_cachedModels") + public static EvictingDualNodeHashTable PlayerAppearance_cachedModels; + @ObfuscatedName("m") + @Export("equipment") + int[] equipment; + @ObfuscatedName("f") + @Export("bodyColors") + int[] bodyColors; + @ObfuscatedName("q") + @Export("isFemale") + public boolean isFemale; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1676934923 + ) + @Export("npcTransformId") + public int npcTransformId; + @ObfuscatedName("o") + @ObfuscatedGetter( + longValue = -3506189412688081513L + ) + @Export("__o") + long __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + longValue = 8217880921734028425L + ) + @Export("__u") + long __u; + + static { + __hi_d = new int[]{8, 11, 4, 6, 9, 7, 10}; + PlayerAppearance_cachedModels = new EvictingDualNodeHashTable(260); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([I[IZII)V", + garbageValue = "727056871" + ) + @Export("__m_385") + public void __m_385(int[] var1, int[] var2, boolean var3, int var4) { + if(var1 == null) { + var1 = new int[12]; + + for(int var5 = 0; var5 < 7; ++var5) { + for(int var6 = 0; var6 < KitDefinition.__im_q; ++var6) { + KitDefinition var7 = WorldMapSection1.getKitDefinition(var6); + if(var7 != null && !var7.__k && var5 + (var3?7:0) == var7.__o) { + var1[__hi_d[var5]] = var6 + 256; + break; + } + } + } + } + + this.equipment = var1; + this.bodyColors = var2; + this.isFemale = var3; + this.npcTransformId = var4; + this.setHash(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IZI)V", + garbageValue = "-581016899" + ) + @Export("__f_386") + public void __f_386(int var1, boolean var2) { + if(var1 != 1 || !this.isFemale) { + int var3 = this.equipment[__hi_d[var1]]; + if(var3 != 0) { + var3 -= 256; + + KitDefinition var4; + do { + if(!var2) { + --var3; + if(var3 < 0) { + var3 = KitDefinition.__im_q - 1; + } + } else { + ++var3; + if(var3 >= KitDefinition.__im_q) { + var3 = 0; + } + } + + var4 = WorldMapSection1.getKitDefinition(var3); + } while(var4 == null || var4.__k || var1 + (this.isFemale?7:0) != var4.__o); + + this.equipment[__hi_d[var1]] = var3 + 256; + this.setHash(); + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IZI)V", + garbageValue = "1416503110" + ) + @Export("__q_387") + public void __q_387(int var1, boolean var2) { + int var3 = this.bodyColors[var1]; + if(!var2) { + do { + --var3; + if(var3 < 0) { + var3 = class229.__hz_l[var1].length - 1; + } + } while(!PacketBuffer.method4062(var1, var3)); + } else { + do { + ++var3; + if(var3 >= class229.__hz_l[var1].length) { + var3 = 0; + } + } while(!PacketBuffer.method4062(var1, var3)); + } + + this.bodyColors[var1] = var3; + this.setHash(); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(ZB)V", + garbageValue = "-90" + ) + @Export("__w_388") + public void __w_388(boolean var1) { + if(this.isFemale != var1) { + this.__m_385((int[])null, this.bodyColors, var1, -1); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "779254645" + ) + @Export("__o_389") + public void __o_389(Buffer var1) { + var1.writeByte(this.isFemale?1:0); + + int var2; + for(var2 = 0; var2 < 7; ++var2) { + int var3 = this.equipment[__hi_d[var2]]; + if(var3 == 0) { + var1.writeByte(-1); + } else { + var1.writeByte(var3 - 256); + } + } + + for(var2 = 0; var2 < 5; ++var2) { + var1.writeByte(this.bodyColors[var2]); + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "68" + ) + @Export("setHash") + void setHash() { + long var1 = this.__o; + int var3 = this.equipment[5]; + int var4 = this.equipment[9]; + this.equipment[5] = var4; + this.equipment[9] = var3; + this.__o = 0L; + + int var5; + for(var5 = 0; var5 < 12; ++var5) { + this.__o <<= 4; + if(this.equipment[var5] >= 256) { + this.__o += (long)(this.equipment[var5] - 256); + } + } + + if(this.equipment[0] >= 256) { + this.__o += (long)(this.equipment[0] - 256 >> 4); + } + + if(this.equipment[1] >= 256) { + this.__o += (long)(this.equipment[1] - 256 >> 8); + } + + for(var5 = 0; var5 < 5; ++var5) { + this.__o <<= 3; + this.__o += (long)this.bodyColors[var5]; + } + + this.__o <<= 1; + this.__o += (long)(this.isFemale?1:0); + this.equipment[5] = var3; + this.equipment[9] = var4; + if(var1 != 0L && this.__o != var1) { + PlayerAppearance_cachedModels.remove(var1); + } + + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ljh;ILjh;II)Ldu;", + garbageValue = "-735725541" + ) + @Export("getModel") + public Model getModel(SequenceDefinition var1, int var2, SequenceDefinition var3, int var4) { + if(this.npcTransformId != -1) { + return ObjectDefinition.getNpcDefinition(this.npcTransformId).getModel(var1, var2, var3, var4); + } else { + long var5 = this.__o; + int[] var7 = this.equipment; + if(var1 != null && (var1.shield >= 0 || var1.weapon >= 0)) { + var7 = new int[12]; + + for(int var15 = 0; var15 < 12; ++var15) { + var7[var15] = this.equipment[var15]; + } + + if(var1.shield >= 0) { + var5 += (long)(var1.shield - this.equipment[5] << 40); + var7[5] = var1.shield; + } + + if(var1.weapon >= 0) { + var5 += (long)(var1.weapon - this.equipment[3] << 48); + var7[3] = var1.weapon; + } + } + + Model var8 = (Model)PlayerAppearance_cachedModels.get(var5); + if(var8 == null) { + boolean var9 = false; + + int var11; + for(int var10 = 0; var10 < 12; ++var10) { + var11 = var7[var10]; + if(var11 >= 256 && var11 < 512 && !WorldMapSection1.getKitDefinition(var11 - 256).__w_413()) { + var9 = true; + } + + if(var11 >= 512 && !Skills.getItemDefinition(var11 - 512).__z_431(this.isFemale)) { + var9 = true; + } + } + + if(var9) { + if(this.__u != -1L) { + var8 = (Model)PlayerAppearance_cachedModels.get(this.__u); + } + + if(var8 == null) { + return null; + } + } + + if(var8 == null) { + ModelData[] var16 = new ModelData[12]; + var11 = 0; + + int var13; + for(int var12 = 0; var12 < 12; ++var12) { + var13 = var7[var12]; + ModelData var14; + if(var13 >= 256 && var13 < 512) { + var14 = WorldMapSection1.getKitDefinition(var13 - 256).__o_414(); + if(var14 != null) { + var16[var11++] = var14; + } + } + + if(var13 >= 512) { + var14 = Skills.getItemDefinition(var13 - 512).__j_432(this.isFemale); + if(var14 != null) { + var16[var11++] = var14; + } + } + } + + ModelData var18 = new ModelData(var16, var11); + + for(var13 = 0; var13 < 5; ++var13) { + if(this.bodyColors[var13] < class229.__hz_l[var13].length) { + var18.recolor(__hi_g[var13], class229.__hz_l[var13][this.bodyColors[var13]]); + } + + if(this.bodyColors[var13] < IndexCacheLoader.__bd_x[var13].length) { + var18.recolor(class227.__hj_e[var13], IndexCacheLoader.__bd_x[var13][this.bodyColors[var13]]); + } + } + + var8 = var18.toModel(64, 850, -30, -50, -30); + PlayerAppearance_cachedModels.put(var8, var5); + this.__u = var5; + } + } + + if(var1 == null && var3 == null) { + return var8; + } else { + Model var17; + if(var1 != null && var3 != null) { + var17 = var1.animateSequence2(var8, var2, var3, var4); + } else if(var1 != null) { + var17 = var1.animateSequence(var8, var2); + } else { + var17 = var3.animateSequence(var8, var4); + } + + return var17; + } + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)Ldw;", + garbageValue = "1807737418" + ) + @Export("getModelData") + ModelData getModelData() { + if(this.npcTransformId != -1) { + return ObjectDefinition.getNpcDefinition(this.npcTransformId).getModelData(); + } else { + boolean var1 = false; + + int var3; + for(int var2 = 0; var2 < 12; ++var2) { + var3 = this.equipment[var2]; + if(var3 >= 256 && var3 < 512 && !WorldMapSection1.getKitDefinition(var3 - 256).__u_415()) { + var1 = true; + } + + if(var3 >= 512 && !Skills.getItemDefinition(var3 - 512).__s_433(this.isFemale)) { + var1 = true; + } + } + + if(var1) { + return null; + } else { + ModelData[] var7 = new ModelData[12]; + var3 = 0; + + int var5; + for(int var4 = 0; var4 < 12; ++var4) { + var5 = this.equipment[var4]; + ModelData var6; + if(var5 >= 256 && var5 < 512) { + var6 = WorldMapSection1.getKitDefinition(var5 - 256).__g_416(); + if(var6 != null) { + var7[var3++] = var6; + } + } + + if(var5 >= 512) { + var6 = Skills.getItemDefinition(var5 - 512).__t_434(this.isFemale); + if(var6 != null) { + var7[var3++] = var6; + } + } + } + + ModelData var8 = new ModelData(var7, var3); + + for(var5 = 0; var5 < 5; ++var5) { + if(this.bodyColors[var5] < class229.__hz_l[var5].length) { + var8.recolor(__hi_g[var5], class229.__hz_l[var5][this.bodyColors[var5]]); + } + + if(this.bodyColors[var5] < IndexCacheLoader.__bd_x[var5].length) { + var8.recolor(class227.__hj_e[var5], IndexCacheLoader.__bd_x[var5][this.bodyColors[var5]]); + } + } + + return var8; + } + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "123" + ) + @Export("getChatHeadId") + public int getChatHeadId() { + return this.npcTransformId == -1?(this.equipment[0] << 15) + this.equipment[1] + (this.equipment[11] << 5) + (this.equipment[8] << 10) + (this.bodyColors[0] << 25) + (this.bodyColors[4] << 20):305419896 + ObjectDefinition.getNpcDefinition(this.npcTransformId).id; + } +} diff --git a/rs-client/src/main/java/PlayerType.java b/rs-client/src/main/java/PlayerType.java new file mode 100644 index 0000000000..93f6790cab --- /dev/null +++ b/rs-client/src/main/java/PlayerType.java @@ -0,0 +1,100 @@ +import java.awt.Image; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ij") +@Implements("PlayerType") +public enum PlayerType implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lij;" + ) + @Export("PlayerType_normal") + PlayerType_normal(0, -1, true, false, true), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lij;" + ) + @Export("PlayerType_playerModerator") + PlayerType_playerModerator(1, 0, true, true, true), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lij;" + ) + @Export("PlayerType_jagexModerator") + PlayerType_jagexModerator(2, 1, true, true, false), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lij;" + ) + @Export("PlayerType_ironman") + PlayerType_ironman(3, 2, false, false, true), + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lij;" + ) + @Export("PlayerType_ultimateIronman") + PlayerType_ultimateIronman(4, 3, false, false, true), + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lij;" + ) + @Export("PlayerType_hardcoreIronman") + PlayerType_hardcoreIronman(5, 10, false, false, true); + @ObfuscatedName("ak") + @Export("__ij_ak") + static Image __ij_ak; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1999564657 + ) + @Export("id") + final int id; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 613822977 + ) + @Export("modIcon") + public final int modIcon; + @ObfuscatedName("e") + @Export("isPrivileged") + public final boolean isPrivileged; + @ObfuscatedName("x") + @Export("isUser") + public final boolean isUser; + + PlayerType(int var3, int var4, boolean var5, boolean var6, boolean var7) { + this.id = var3; + this.modIcon = var4; + this.isPrivileged = var6; + this.isUser = var7; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.id; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "300731074" + ) + static void method4547(int var0) { + ItemContainer var1 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); + if(var1 != null) { + for(int var2 = 0; var2 < var1.ids.length; ++var2) { + var1.ids[var2] = -1; + var1.quantities[var2] = 0; + } + + } + } +} diff --git a/rs-client/src/main/java/Players.java b/rs-client/src/main/java/Players.java new file mode 100644 index 0000000000..0b8eca1f88 --- /dev/null +++ b/rs-client/src/main/java/Players.java @@ -0,0 +1,193 @@ +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cq") +@Implements("Players") +public class Players { + @ObfuscatedName("q") + @Export("__cq_q") + static byte[] __cq_q; + @ObfuscatedName("w") + @Export("__cq_w") + static byte[] __cq_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "[Lgr;" + ) + @Export("__cq_o") + static Buffer[] __cq_o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -766468303 + ) + @Export("Players_count") + static int Players_count; + @ObfuscatedName("g") + @Export("Players_indices") + static int[] Players_indices; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 945250525 + ) + @Export("__cq_l") + static int __cq_l; + @ObfuscatedName("e") + @Export("__cq_e") + static int[] __cq_e; + @ObfuscatedName("x") + @Export("Players_regions") + static int[] Players_regions; + @ObfuscatedName("d") + @Export("Players_orientations") + static int[] Players_orientations; + @ObfuscatedName("k") + @Export("Players_targetIndices") + static int[] Players_targetIndices; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -22568397 + ) + @Export("__cq_n") + static int __cq_n; + @ObfuscatedName("i") + @Export("__cq_i") + static int[] __cq_i; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lgr;" + ) + @Export("__cq_a") + static Buffer __cq_a; + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "Lgr;" + ) + @Export("NetCache_reference") + public static Buffer NetCache_reference; + + static { + __cq_q = new byte[2048]; + __cq_w = new byte[2048]; + __cq_o = new Buffer[2048]; + Players_count = 0; + Players_indices = new int[2048]; + __cq_l = 0; + __cq_e = new int[2048]; + Players_regions = new int[2048]; + Players_orientations = new int[2048]; + Players_targetIndices = new int[2048]; + __cq_n = 0; + __cq_i = new int[2048]; + __cq_a = new Buffer(new byte[5000]); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/lang/Throwable;Ljava/lang/String;)Lfx;" + ) + public static RunException method2120(Throwable var0, String var1) { + RunException var2; + if(var0 instanceof RunException) { + var2 = (RunException)var0; + var2.string = var2.string + ' ' + var1; + } else { + var2 = new RunException(var0, var1); + } + + return var2; + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(Lfz;III)Lco;", + garbageValue = "-1237576843" + ) + @Export("newPcmPlayer") + public static final PcmPlayer newPcmPlayer(TaskHandler var0, int var1, int var2) { + if(var1 >= 0 && var1 < 2) { + if(var2 < 256) { + var2 = 256; + } + + try { + PcmPlayer var3 = class65.pcmPlayerProvider.player(); + var3.samples = new int[(PcmPlayer.isStereo?2:1) * 256]; + var3.frequency = var2; + var3.init(); + var3.capacity = (var2 & -1024) + 1024; + if(var3.capacity > 16384) { + var3.capacity = 16384; + } + + var3.open(var3.capacity); + if(Login.pcmPlayerCount > 0 && Messages.soundSystem == null) { + Messages.soundSystem = new SoundSystem(); + Friend.soundSystemExecutor = Executors.newScheduledThreadPool(1); + Friend.soundSystemExecutor.scheduleAtFixedRate(Messages.soundSystem, 0L, 10L, TimeUnit.MILLISECONDS); + } + + if(Messages.soundSystem != null) { + if(Messages.soundSystem.players[var1] != null) { + throw new IllegalArgumentException(); + } + + Messages.soundSystem.players[var1] = var3; + } + + return var3; + } catch (Throwable var4) { + return new PcmPlayer(); + } + } else { + throw new IllegalArgumentException(); + } + } + + @ObfuscatedName("hu") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "46802049" + ) + static final void method2112(int var0, int var1, int var2, int var3) { + for(int var4 = 0; var4 < Client.rootWidgetCount; ++var4) { + if(Client.rootWidgetWidths[var4] + Client.rootWidgetXs[var4] > var0 && Client.rootWidgetXs[var4] < var0 + var2 && Client.rootWidgetHeights[var4] + Client.rootWidgetYs[var4] > var1 && Client.rootWidgetYs[var4] < var3 + var1) { + Client.__client_od[var4] = true; + } + } + + } + + @ObfuscatedName("jf") + @ObfuscatedSignature( + signature = "(Lho;III)V", + garbageValue = "-1991202495" + ) + @Export("clickWidget") + static final void clickWidget(Widget var0, int var1, int var2) { + if(Client.clickedWidget == null && !Client.isMenuOpen) { + if(var0 != null && class48.method869(var0) != null) { + Client.clickedWidget = var0; + Client.clickedWidgetParent = class48.method869(var0); + Client.widgetClickX = var1; + Client.widgetClickY = var2; + MouseRecorder.widgetDragDuration = 0; + Client.isDraggingWidget = false; + int var3 = Client.menuOptionsCount - 1; + if(var3 != -1) { + UnitPriceComparator.tempMenuAction = new MenuAction(); + UnitPriceComparator.tempMenuAction.argument1 = Client.menuArguments1[var3]; + UnitPriceComparator.tempMenuAction.argument2 = Client.menuArguments2[var3]; + UnitPriceComparator.tempMenuAction.opcode = Client.menuOpcodes[var3]; + UnitPriceComparator.tempMenuAction.argument0 = Client.menuArguments0[var3]; + UnitPriceComparator.tempMenuAction.action = Client.menuActions[var3]; + } + + } + } + } +} diff --git a/rs-client/src/main/java/Projectile.java b/rs-client/src/main/java/Projectile.java new file mode 100644 index 0000000000..8d6e496e77 --- /dev/null +++ b/rs-client/src/main/java/Projectile.java @@ -0,0 +1,282 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cb") +@Implements("Projectile") +public final class Projectile extends Entity { + @ObfuscatedName("ck") + @ObfuscatedSignature( + signature = "Lbu;" + ) + @Export("mouseRecorder") + static MouseRecorder mouseRecorder; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 2111080001 + ) + @Export("id") + int id; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1038876505 + ) + @Export("plane") + int plane; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1652455041 + ) + @Export("sourceX") + int sourceX; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1421996173 + ) + @Export("sourceY") + int sourceY; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -4446033 + ) + @Export("sourceZ") + int sourceZ; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -675081925 + ) + @Export("endHeight") + int endHeight; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 358196599 + ) + @Export("cycleStart") + int cycleStart; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 2121946763 + ) + @Export("cycleEnd") + int cycleEnd; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -769539171 + ) + @Export("slope") + int slope; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -2074328969 + ) + @Export("startHeight") + int startHeight; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 551413977 + ) + @Export("targetIndex") + int targetIndex; + @ObfuscatedName("k") + @Export("isMoving") + boolean isMoving; + @ObfuscatedName("n") + @Export("x") + double x; + @ObfuscatedName("i") + @Export("y") + double y; + @ObfuscatedName("a") + @Export("z") + double z; + @ObfuscatedName("z") + @Export("speedX") + double speedX; + @ObfuscatedName("j") + @Export("speedY") + double speedY; + @ObfuscatedName("s") + @Export("speed") + double speed; + @ObfuscatedName("t") + @Export("speedZ") + double speedZ; + @ObfuscatedName("y") + @Export("accelerationZ") + double accelerationZ; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 1281680175 + ) + @Export("yaw") + int yaw; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = -2072120189 + ) + @Export("pitch") + int pitch; + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Ljh;" + ) + @Export("sequenceDefinition") + SequenceDefinition sequenceDefinition; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = -377214997 + ) + @Export("frame") + int frame; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -742871951 + ) + @Export("frameCycle") + int frameCycle; + + Projectile(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + this.isMoving = false; + this.frame = 0; + this.frameCycle = 0; + this.id = var1; + this.plane = var2; + this.sourceX = var3; + this.sourceY = var4; + this.sourceZ = var5; + this.cycleStart = var6; + this.cycleEnd = var7; + this.slope = var8; + this.startHeight = var9; + this.targetIndex = var10; + this.endHeight = var11; + this.isMoving = false; + int var12 = class50.getSpotAnimationDefinition(this.id).sequence; + if(var12 != -1) { + this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(var12); + } else { + this.sequenceDefinition = null; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "-553495769" + ) + @Export("setDestination") + final void setDestination(int var1, int var2, int var3, int var4) { + double var5; + if(!this.isMoving) { + var5 = (double)(var1 - this.sourceX); + double var7 = (double)(var2 - this.sourceY); + double var9 = Math.sqrt(var5 * var5 + var7 * var7); + this.x = (double)this.sourceX + var5 * (double)this.startHeight / var9; + this.y = (double)this.sourceY + (double)this.startHeight * var7 / var9; + this.z = (double)this.sourceZ; + } + + var5 = (double)(this.cycleEnd + 1 - var4); + this.speedX = ((double)var1 - this.x) / var5; + this.speedY = ((double)var2 - this.y) / var5; + this.speed = Math.sqrt(this.speedY * this.speedY + this.speedX * this.speedX); + if(!this.isMoving) { + this.speedZ = -this.speed * Math.tan(0.02454369D * (double)this.slope); + } + + this.accelerationZ = ((double)var3 - this.z - var5 * this.speedZ) * 2.0D / (var5 * var5); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1351865817" + ) + @Export("advance") + final void advance(int var1) { + this.isMoving = true; + this.x += this.speedX * (double)var1; + this.y += (double)var1 * this.speedY; + this.z += (double)var1 * this.accelerationZ * 0.5D * (double)var1 + this.speedZ * (double)var1; + this.speedZ += this.accelerationZ * (double)var1; + this.yaw = (int)(Math.atan2(this.speedX, this.speedY) * 325.949D) + 1024 & 2047; + this.pitch = (int)(Math.atan2(this.speedZ, this.speed) * 325.949D) & 2047; + if(this.sequenceDefinition != null) { + this.frameCycle += var1; + + while(true) { + do { + do { + if(this.frameCycle <= this.sequenceDefinition.frameLengths[this.frame]) { + return; + } + + this.frameCycle -= this.sequenceDefinition.frameLengths[this.frame]; + ++this.frame; + } while(this.frame < this.sequenceDefinition.frameIds.length); + + this.frame -= this.sequenceDefinition.frameCount; + } while(this.frame >= 0 && this.frame < this.sequenceDefinition.frameIds.length); + + this.frame = 0; + } + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ldu;", + garbageValue = "-2134947096" + ) + protected final Model getModel() { + SpotAnimationDefinition var1 = class50.getSpotAnimationDefinition(this.id); + Model var2 = var1.getModel(this.frame); + if(var2 == null) { + return null; + } else { + var2.rotateZ(this.pitch); + return var2; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "([BZB)Ljava/lang/Object;", + garbageValue = "95" + ) + @Export("byteArrayToObject") + public static Object byteArrayToObject(byte[] var0, boolean var1) { + if(var0 == null) { + return null; + } else { + if(var0.length > 136 && !AbstractByteArrayCopier.directBufferUnavailable) { + try { + DirectByteArrayCopier var2 = new DirectByteArrayCopier(); + var2.set(var0); + return var2; + } catch (Throwable var3) { + AbstractByteArrayCopier.directBufferUnavailable = true; + } + } + + return var0; + } + } + + @ObfuscatedName("g") + static final void method2081(long var0) { + ViewportMouse.ViewportMouse_entityTags[++ViewportMouse.ViewportMouse_entityCount - 1] = var0; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "372821346" + ) + public static void method2089() { + WorldMapElement.WorldMapElement_cachedSprites.clear(); + } +} diff --git a/rs-client/src/main/java/RasterProvider.java b/rs-client/src/main/java/RasterProvider.java new file mode 100644 index 0000000000..4961433783 --- /dev/null +++ b/rs-client/src/main/java/RasterProvider.java @@ -0,0 +1,99 @@ +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.Point; +import java.awt.Shape; +import java.awt.image.BufferedImage; +import java.awt.image.DataBufferInt; +import java.awt.image.DirectColorModel; +import java.awt.image.Raster; +import java.awt.image.WritableRaster; +import java.util.Hashtable; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ai") +@Implements("RasterProvider") +public final class RasterProvider extends AbstractRasterProvider { + @ObfuscatedName("m") + @Export("component0") + Component component0; + @ObfuscatedName("f") + @Export("image") + Image image; + + RasterProvider(int var1, int var2, Component var3) { + super.width = var1; + super.height = var2; + super.pixels = new int[var2 * var1 + 1]; + DataBufferInt var4 = new DataBufferInt(super.pixels, super.pixels.length); + DirectColorModel var5 = new DirectColorModel(32, 16711680, 65280, 255); + WritableRaster var6 = Raster.createWritableRaster(var5.createCompatibleSampleModel(super.width, super.height), var4, (Point)null); + this.image = new BufferedImage(var5, var6, false, new Hashtable()); + this.setComponent(var3); + this.apply(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/awt/Component;B)V", + garbageValue = "63" + ) + @Export("setComponent") + final void setComponent(Component var1) { + this.component0 = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-430495007" + ) + public final void drawFull(int var1, int var2) { + this.drawFull0(this.component0.getGraphics(), var1, var2); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIIIB)V", + garbageValue = "18" + ) + public final void draw(int var1, int var2, int var3, int var4) { + this.draw0(this.component0.getGraphics(), var1, var2, var3, var4); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Ljava/awt/Graphics;III)V", + garbageValue = "-2102440865" + ) + @Export("drawFull0") + final void drawFull0(Graphics var1, int var2, int var3) { + try { + var1.drawImage(this.image, var2, var3, this.component0); + } catch (Exception var5) { + this.component0.repaint(); + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Ljava/awt/Graphics;IIIIB)V", + garbageValue = "3" + ) + @Export("draw0") + final void draw0(Graphics var1, int var2, int var3, int var4, int var5) { + try { + Shape var6 = var1.getClip(); + var1.clipRect(var2, var3, var4, var5); + var1.drawImage(this.image, 0, 0, this.component0); + var1.setClip(var6); + } catch (Exception var7) { + this.component0.repaint(); + } + + } +} diff --git a/rs-client/src/main/java/Rasterizer2D.java b/rs-client/src/main/java/Rasterizer2D.java new file mode 100644 index 0000000000..ca4f71584b --- /dev/null +++ b/rs-client/src/main/java/Rasterizer2D.java @@ -0,0 +1,836 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lf") +@Implements("Rasterizer2D") +public class Rasterizer2D extends DualNode { + @ObfuscatedName("aq") + @Export("Rasterizer2D_pixels") + public static int[] Rasterizer2D_pixels; + @ObfuscatedName("aj") + @Export("Rasterizer2D_width") + public static int Rasterizer2D_width; + @ObfuscatedName("av") + @Export("Rasterizer2D_height") + public static int Rasterizer2D_height; + @ObfuscatedName("ar") + @Export("Rasterizer2D_yClipStart") + public static int Rasterizer2D_yClipStart; + @ObfuscatedName("ac") + @Export("Rasterizer2D_yClipEnd") + public static int Rasterizer2D_yClipEnd; + @ObfuscatedName("ay") + @Export("Rasterizer2D_xClipStart") + public static int Rasterizer2D_xClipStart; + @ObfuscatedName("ah") + @Export("Rasterizer2D_xClipEnd") + public static int Rasterizer2D_xClipEnd; + + static { + Rasterizer2D_yClipStart = 0; + Rasterizer2D_yClipEnd = 0; + Rasterizer2D_xClipStart = 0; + Rasterizer2D_xClipEnd = 0; + } + + @ObfuscatedName("dp") + @Export("Rasterizer2D_replace") + public static void Rasterizer2D_replace(int[] var0, int var1, int var2) { + Rasterizer2D_pixels = var0; + Rasterizer2D_width = var1; + Rasterizer2D_height = var2; + Rasterizer2D_setClip(0, 0, var1, var2); + } + + @ObfuscatedName("ds") + @Export("Rasterizer2D_resetClip") + public static void Rasterizer2D_resetClip() { + Rasterizer2D_xClipStart = 0; + Rasterizer2D_yClipStart = 0; + Rasterizer2D_xClipEnd = Rasterizer2D_width; + Rasterizer2D_yClipEnd = Rasterizer2D_height; + } + + @ObfuscatedName("di") + @Export("Rasterizer2D_setClip") + public static void Rasterizer2D_setClip(int var0, int var1, int var2, int var3) { + if(var0 < 0) { + var0 = 0; + } + + if(var1 < 0) { + var1 = 0; + } + + if(var2 > Rasterizer2D_width) { + var2 = Rasterizer2D_width; + } + + if(var3 > Rasterizer2D_height) { + var3 = Rasterizer2D_height; + } + + Rasterizer2D_xClipStart = var0; + Rasterizer2D_yClipStart = var1; + Rasterizer2D_xClipEnd = var2; + Rasterizer2D_yClipEnd = var3; + } + + @ObfuscatedName("dc") + @Export("Rasterizer2D_expandClip") + public static void Rasterizer2D_expandClip(int var0, int var1, int var2, int var3) { + if(Rasterizer2D_xClipStart < var0) { + Rasterizer2D_xClipStart = var0; + } + + if(Rasterizer2D_yClipStart < var1) { + Rasterizer2D_yClipStart = var1; + } + + if(Rasterizer2D_xClipEnd > var2) { + Rasterizer2D_xClipEnd = var2; + } + + if(Rasterizer2D_yClipEnd > var3) { + Rasterizer2D_yClipEnd = var3; + } + + } + + @ObfuscatedName("dg") + @Export("Rasterizer2D_getClipArray") + public static void Rasterizer2D_getClipArray(int[] var0) { + var0[0] = Rasterizer2D_xClipStart; + var0[1] = Rasterizer2D_yClipStart; + var0[2] = Rasterizer2D_xClipEnd; + var0[3] = Rasterizer2D_yClipEnd; + } + + @ObfuscatedName("db") + @Export("Rasterizer2D_setClipArray") + public static void Rasterizer2D_setClipArray(int[] var0) { + Rasterizer2D_xClipStart = var0[0]; + Rasterizer2D_yClipStart = var0[1]; + Rasterizer2D_xClipEnd = var0[2]; + Rasterizer2D_yClipEnd = var0[3]; + } + + @ObfuscatedName("dd") + @Export("Rasterizer2D_clear") + public static void Rasterizer2D_clear() { + int var0 = 0; + + int var1; + for(var1 = Rasterizer2D_width * Rasterizer2D_height - 7; var0 < var1; Rasterizer2D_pixels[var0++] = 0) { + Rasterizer2D_pixels[var0++] = 0; + Rasterizer2D_pixels[var0++] = 0; + Rasterizer2D_pixels[var0++] = 0; + Rasterizer2D_pixels[var0++] = 0; + Rasterizer2D_pixels[var0++] = 0; + Rasterizer2D_pixels[var0++] = 0; + Rasterizer2D_pixels[var0++] = 0; + } + + for(var1 += 7; var0 < var1; Rasterizer2D_pixels[var0++] = 0) { + ; + } + + } + + @Export("drawCircle") + @ObfuscatedName("dy") + static void drawCircle(int var0, int var1, int var2, int var3) { + if(var2 == 0) { + Rasterizer2D_setPixel(var0, var1, var3); + } else { + if(var2 < 0) { + var2 = -var2; + } + + int var4 = var1 - var2; + if(var4 < Rasterizer2D_yClipStart) { + var4 = Rasterizer2D_yClipStart; + } + + int var5 = var2 + var1 + 1; + if(var5 > Rasterizer2D_yClipEnd) { + var5 = Rasterizer2D_yClipEnd; + } + + int var6 = var4; + int var7 = var2 * var2; + int var8 = 0; + int var9 = var1 - var4; + int var10 = var9 * var9; + int var11 = var10 - var9; + if(var1 > var5) { + var1 = var5; + } + + int var12; + int var13; + int var14; + int var15; + while(var6 < var1) { + while(var11 <= var7 || var10 <= var7) { + var10 = var10 + var8 + var8; + var11 += var8++ + var8; + } + + var12 = var0 - var8 + 1; + if(var12 < Rasterizer2D_xClipStart) { + var12 = Rasterizer2D_xClipStart; + } + + var13 = var0 + var8; + if(var13 > Rasterizer2D_xClipEnd) { + var13 = Rasterizer2D_xClipEnd; + } + + var14 = var12 + var6 * Rasterizer2D_width; + + for(var15 = var12; var15 < var13; ++var15) { + Rasterizer2D_pixels[var14++] = var3; + } + + ++var6; + var10 -= var9-- + var9; + var11 -= var9 + var9; + } + + var8 = var2; + var9 = var6 - var1; + var11 = var7 + var9 * var9; + var10 = var11 - var2; + + for(var11 -= var9; var6 < var5; var10 += var9++ + var9) { + while(var11 > var7 && var10 > var7) { + var11 -= var8-- + var8; + var10 -= var8 + var8; + } + + var12 = var0 - var8; + if(var12 < Rasterizer2D_xClipStart) { + var12 = Rasterizer2D_xClipStart; + } + + var13 = var0 + var8; + if(var13 > Rasterizer2D_xClipEnd - 1) { + var13 = Rasterizer2D_xClipEnd - 1; + } + + var14 = var12 + var6 * Rasterizer2D_width; + + for(var15 = var12; var15 <= var13; ++var15) { + Rasterizer2D_pixels[var14++] = var3; + } + + ++var6; + var11 = var11 + var9 + var9; + } + + } + } + + @ObfuscatedName("dk") + @Export("Rasterizer2D_drawCircleAlpha") + public static void Rasterizer2D_drawCircleAlpha(int var0, int var1, int var2, int var3, int var4) { + if(var4 != 0) { + if(var4 == 256) { + drawCircle(var0, var1, var2, var3); + } else { + if(var2 < 0) { + var2 = -var2; + } + + int var5 = 256 - var4; + int var6 = (var3 >> 16 & 255) * var4; + int var7 = (var3 >> 8 & 255) * var4; + int var8 = var4 * (var3 & 255); + int var12 = var1 - var2; + if(var12 < Rasterizer2D_yClipStart) { + var12 = Rasterizer2D_yClipStart; + } + + int var13 = var2 + var1 + 1; + if(var13 > Rasterizer2D_yClipEnd) { + var13 = Rasterizer2D_yClipEnd; + } + + int var14 = var12; + int var15 = var2 * var2; + int var16 = 0; + int var17 = var1 - var12; + int var18 = var17 * var17; + int var19 = var18 - var17; + if(var1 > var13) { + var1 = var13; + } + + int var9; + int var10; + int var11; + int var20; + int var21; + int var22; + int var23; + int var24; + while(var14 < var1) { + while(var19 <= var15 || var18 <= var15) { + var18 = var18 + var16 + var16; + var19 += var16++ + var16; + } + + var20 = var0 - var16 + 1; + if(var20 < Rasterizer2D_xClipStart) { + var20 = Rasterizer2D_xClipStart; + } + + var21 = var0 + var16; + if(var21 > Rasterizer2D_xClipEnd) { + var21 = Rasterizer2D_xClipEnd; + } + + var22 = var20 + var14 * Rasterizer2D_width; + + for(var23 = var20; var23 < var21; ++var23) { + var9 = var5 * (Rasterizer2D_pixels[var22] >> 16 & 255); + var10 = (Rasterizer2D_pixels[var22] >> 8 & 255) * var5; + var11 = var5 * (Rasterizer2D_pixels[var22] & 255); + var24 = (var8 + var11 >> 8) + (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8); + Rasterizer2D_pixels[var22++] = var24; + } + + ++var14; + var18 -= var17-- + var17; + var19 -= var17 + var17; + } + + var16 = var2; + var17 = -var17; + var19 = var15 + var17 * var17; + var18 = var19 - var2; + + for(var19 -= var17; var14 < var13; var18 += var17++ + var17) { + while(var19 > var15 && var18 > var15) { + var19 -= var16-- + var16; + var18 -= var16 + var16; + } + + var20 = var0 - var16; + if(var20 < Rasterizer2D_xClipStart) { + var20 = Rasterizer2D_xClipStart; + } + + var21 = var0 + var16; + if(var21 > Rasterizer2D_xClipEnd - 1) { + var21 = Rasterizer2D_xClipEnd - 1; + } + + var22 = var20 + var14 * Rasterizer2D_width; + + for(var23 = var20; var23 <= var21; ++var23) { + var9 = var5 * (Rasterizer2D_pixels[var22] >> 16 & 255); + var10 = (Rasterizer2D_pixels[var22] >> 8 & 255) * var5; + var11 = var5 * (Rasterizer2D_pixels[var22] & 255); + var24 = (var8 + var11 >> 8) + (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8); + Rasterizer2D_pixels[var22++] = var24; + } + + ++var14; + var19 = var19 + var17 + var17; + } + + } + } + } + + @ObfuscatedName("dl") + @Export("Rasterizer2D_moreAlpha") + public static void Rasterizer2D_moreAlpha(int var0, int var1, int var2, int var3, int var4, int var5) { + if(var0 < Rasterizer2D_xClipStart) { + var2 -= Rasterizer2D_xClipStart - var0; + var0 = Rasterizer2D_xClipStart; + } + + if(var1 < Rasterizer2D_yClipStart) { + var3 -= Rasterizer2D_yClipStart - var1; + var1 = Rasterizer2D_yClipStart; + } + + if(var0 + var2 > Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - var0; + } + + if(var3 + var1 > Rasterizer2D_yClipEnd) { + var3 = Rasterizer2D_yClipEnd - var1; + } + + var4 = (var5 * (var4 & 16711935) >> 8 & 16711935) + (var5 * (var4 & 65280) >> 8 & 65280); + int var6 = 256 - var5; + int var7 = Rasterizer2D_width - var2; + int var8 = var0 + Rasterizer2D_width * var1; + + for(int var9 = 0; var9 < var3; ++var9) { + for(int var10 = -var2; var10 < 0; ++var10) { + int var11 = Rasterizer2D_pixels[var8]; + var11 = ((var11 & 16711935) * var6 >> 8 & 16711935) + (var6 * (var11 & 65280) >> 8 & 65280); + Rasterizer2D_pixels[var8++] = var11 + var4; + } + + var8 += var7; + } + + } + + @ObfuscatedName("dr") + @Export("Rasterizer2D_fillRectangle") + public static void Rasterizer2D_fillRectangle(int var0, int var1, int var2, int var3, int var4) { + if(var0 < Rasterizer2D_xClipStart) { + var2 -= Rasterizer2D_xClipStart - var0; + var0 = Rasterizer2D_xClipStart; + } + + if(var1 < Rasterizer2D_yClipStart) { + var3 -= Rasterizer2D_yClipStart - var1; + var1 = Rasterizer2D_yClipStart; + } + + if(var0 + var2 > Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - var0; + } + + if(var3 + var1 > Rasterizer2D_yClipEnd) { + var3 = Rasterizer2D_yClipEnd - var1; + } + + int var5 = Rasterizer2D_width - var2; + int var6 = var0 + Rasterizer2D_width * var1; + + for(int var7 = -var3; var7 < 0; ++var7) { + for(int var8 = -var2; var8 < 0; ++var8) { + Rasterizer2D_pixels[var6++] = var4; + } + + var6 += var5; + } + + } + + @Export("drawGradient") + @ObfuscatedName("dw") + public static void drawGradient(int var0, int var1, int var2, int var3, int var4, int var5) { + if(var2 > 0 && var3 > 0) { + int var6 = 0; + int var7 = 65536 / var3; + if(var0 < Rasterizer2D_xClipStart) { + var2 -= Rasterizer2D_xClipStart - var0; + var0 = Rasterizer2D_xClipStart; + } + + if(var1 < Rasterizer2D_yClipStart) { + var6 += (Rasterizer2D_yClipStart - var1) * var7; + var3 -= Rasterizer2D_yClipStart - var1; + var1 = Rasterizer2D_yClipStart; + } + + if(var0 + var2 > Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - var0; + } + + if(var3 + var1 > Rasterizer2D_yClipEnd) { + var3 = Rasterizer2D_yClipEnd - var1; + } + + int var8 = Rasterizer2D_width - var2; + int var9 = var0 + Rasterizer2D_width * var1; + + for(int var10 = -var3; var10 < 0; ++var10) { + int var11 = 65536 - var6 >> 8; + int var12 = var6 >> 8; + int var13 = (var12 * (var5 & 16711935) + var11 * (var4 & 16711935) & -16711936) + (var12 * (var5 & 65280) + var11 * (var4 & 65280) & 16711680) >>> 8; + + for(int var14 = -var2; var14 < 0; ++var14) { + Rasterizer2D_pixels[var9++] = var13; + } + + var9 += var8; + var6 += var7; + } + + } + } + + @ObfuscatedName("dv") + @Export("drawGradientAlpha") + public static void drawGradientAlpha(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(var2 > 0 && var3 > 0) { + int var8 = 0; + int var9 = 65536 / var3; + if(var0 < Rasterizer2D_xClipStart) { + var2 -= Rasterizer2D_xClipStart - var0; + var0 = Rasterizer2D_xClipStart; + } + + if(var1 < Rasterizer2D_yClipStart) { + var8 += (Rasterizer2D_yClipStart - var1) * var9; + var3 -= Rasterizer2D_yClipStart - var1; + var1 = Rasterizer2D_yClipStart; + } + + if(var0 + var2 > Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - var0; + } + + if(var3 + var1 > Rasterizer2D_yClipEnd) { + var3 = Rasterizer2D_yClipEnd - var1; + } + + int var10 = Rasterizer2D_width - var2; + int var11 = var0 + Rasterizer2D_width * var1; + + for(int var12 = -var3; var12 < 0; ++var12) { + int var13 = 65536 - var8 >> 8; + int var14 = var8 >> 8; + int var15 = (var13 * var6 + var14 * var7 & 65280) >>> 8; + if(var15 == 0) { + var11 += Rasterizer2D_width; + var8 += var9; + } else { + int var16 = (var14 * (var5 & 16711935) + var13 * (var4 & 16711935) & -16711936) + (var14 * (var5 & 65280) + var13 * (var4 & 65280) & 16711680) >>> 8; + int var17 = 255 - var15; + int var18 = ((var16 & 16711935) * var15 >> 8 & 16711935) + (var15 * (var16 & 65280) >> 8 & 65280); + + for(int var19 = -var2; var19 < 0; ++var19) { + int var20 = Rasterizer2D_pixels[var11]; + if(var20 == 0) { + Rasterizer2D_pixels[var11++] = var18; + } else { + var20 = ((var20 & 16711935) * var17 >> 8 & 16711935) + (var17 * (var20 & 65280) >> 8 & 65280); + Rasterizer2D_pixels[var11++] = var18 + var20; + } + } + + var11 += var10; + var8 += var9; + } + } + + } + } + + @ObfuscatedName("do") + @ObfuscatedSignature( + signature = "(IIIIII[BIZ)V", + garbageValue = "1" + ) + @Export("raster2d7") + public static void raster2d7(int var0, int var1, int var2, int var3, int var4, int var5, byte[] var6, int var7) { + if(var0 + var2 >= 0 && var3 + var1 >= 0) { + if(var0 < Rasterizer2D_width && var1 < Rasterizer2D_height) { + int var8 = 0; + int var9 = 0; + if(var0 < 0) { + var8 -= var0; + var2 += var0; + } + + if(var1 < 0) { + var9 -= var1; + var3 += var1; + } + + if(var0 + var2 > Rasterizer2D_width) { + var2 = Rasterizer2D_width - var0; + } + + if(var3 + var1 > Rasterizer2D_height) { + var3 = Rasterizer2D_height - var1; + } + + int var10 = var6.length / var7; + int var11 = Rasterizer2D_width - var2; + int var12 = var4 >>> 24; + int var13 = var5 >>> 24; + int var14; + int var15; + int var16; + int var17; + int var18; + if(var12 == 255 && var13 == 255) { + var14 = var0 + var8 + (var9 + var1) * Rasterizer2D_width; + + for(var15 = var9 + var1; var15 < var3 + var9 + var1; ++var15) { + for(var16 = var0 + var8; var16 < var0 + var8 + var2; ++var16) { + var17 = (var15 - var1) % var10; + var18 = (var16 - var0) % var7; + if(var6[var18 + var17 * var7] != 0) { + Rasterizer2D_pixels[var14++] = var5; + } else { + Rasterizer2D_pixels[var14++] = var4; + } + } + + var14 += var11; + } + } else { + var14 = var0 + var8 + (var9 + var1) * Rasterizer2D_width; + + for(var15 = var9 + var1; var15 < var3 + var9 + var1; ++var15) { + for(var16 = var0 + var8; var16 < var0 + var8 + var2; ++var16) { + var17 = (var15 - var1) % var10; + var18 = (var16 - var0) % var7; + int var19 = var4; + if(var6[var18 + var17 * var7] != 0) { + var19 = var5; + } + + int var20 = var19 >>> 24; + int var21 = 255 - var20; + int var22 = Rasterizer2D_pixels[var14]; + int var23 = ((var19 & 16711935) * var20 + (var22 & 16711935) * var21 & -16711936) + (var20 * (var19 & 65280) + var21 * (var22 & 65280) & 16711680) >> 8; + Rasterizer2D_pixels[var14++] = var23; + } + + var14 += var11; + } + } + + } + } + } + + @ObfuscatedName("dh") + @Export("Rasterizer2D_drawRectangle") + public static void Rasterizer2D_drawRectangle(int var0, int var1, int var2, int var3, int var4) { + Rasterizer2D_drawHorizontalLine(var0, var1, var2, var4); + Rasterizer2D_drawHorizontalLine(var0, var3 + var1 - 1, var2, var4); + Rasterizer2D_drawVerticalLine(var0, var1, var3, var4); + Rasterizer2D_drawVerticalLine(var0 + var2 - 1, var1, var3, var4); + } + + @ObfuscatedName("dz") + @Export("Rasterizer2D_drawRectangleAlpha") + public static void Rasterizer2D_drawRectangleAlpha(int var0, int var1, int var2, int var3, int var4, int var5) { + Rasterizer2D_drawHorizontalLineAlpha(var0, var1, var2, var4, var5); + Rasterizer2D_drawHorizontalLineAlpha(var0, var3 + var1 - 1, var2, var4, var5); + if(var3 >= 3) { + Rasterizer2D_drawVerticalLineAlpha(var0, var1 + 1, var3 - 2, var4, var5); + Rasterizer2D_drawVerticalLineAlpha(var0 + var2 - 1, var1 + 1, var3 - 2, var4, var5); + } + + } + + @ObfuscatedName("dj") + @Export("Rasterizer2D_drawHorizontalLine") + public static void Rasterizer2D_drawHorizontalLine(int var0, int var1, int var2, int var3) { + if(var1 >= Rasterizer2D_yClipStart && var1 < Rasterizer2D_yClipEnd) { + if(var0 < Rasterizer2D_xClipStart) { + var2 -= Rasterizer2D_xClipStart - var0; + var0 = Rasterizer2D_xClipStart; + } + + if(var0 + var2 > Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - var0; + } + + int var4 = var0 + Rasterizer2D_width * var1; + + for(int var5 = 0; var5 < var2; ++var5) { + Rasterizer2D_pixels[var4 + var5] = var3; // XXX + } + + } + } + + @ObfuscatedName("du") + @Export("Rasterizer2D_drawHorizontalLineAlpha") + static void Rasterizer2D_drawHorizontalLineAlpha(int var0, int var1, int var2, int var3, int var4) { + if(var1 >= Rasterizer2D_yClipStart && var1 < Rasterizer2D_yClipEnd) { + if(var0 < Rasterizer2D_xClipStart) { + var2 -= Rasterizer2D_xClipStart - var0; + var0 = Rasterizer2D_xClipStart; + } + + if(var0 + var2 > Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - var0; + } + + int var5 = 256 - var4; + int var6 = (var3 >> 16 & 255) * var4; + int var7 = (var3 >> 8 & 255) * var4; + int var8 = var4 * (var3 & 255); + int var12 = var0 + Rasterizer2D_width * var1; + + for(int var13 = 0; var13 < var2; ++var13) { + int var9 = var5 * (Rasterizer2D_pixels[var12] >> 16 & 255); + int var10 = (Rasterizer2D_pixels[var12] >> 8 & 255) * var5; + int var11 = var5 * (Rasterizer2D_pixels[var12] & 255); + int var14 = (var8 + var11 >> 8) + (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8); + Rasterizer2D_pixels[var12++] = var14; + } + + } + } + + @ObfuscatedName("dm") + @Export("Rasterizer2D_drawVerticalLine") + public static void Rasterizer2D_drawVerticalLine(int var0, int var1, int var2, int var3) { + if(var0 >= Rasterizer2D_xClipStart && var0 < Rasterizer2D_xClipEnd) { + if(var1 < Rasterizer2D_yClipStart) { + var2 -= Rasterizer2D_yClipStart - var1; + var1 = Rasterizer2D_yClipStart; + } + + if(var2 + var1 > Rasterizer2D_yClipEnd) { + var2 = Rasterizer2D_yClipEnd - var1; + } + + int var4 = var0 + Rasterizer2D_width * var1; + + for(int var5 = 0; var5 < var2; ++var5) { + Rasterizer2D_pixels[var4 + var5 * Rasterizer2D_width] = var3; + } + + } + } + + @ObfuscatedName("dq") + @Export("Rasterizer2D_drawVerticalLineAlpha") + static void Rasterizer2D_drawVerticalLineAlpha(int var0, int var1, int var2, int var3, int var4) { + if(var0 >= Rasterizer2D_xClipStart && var0 < Rasterizer2D_xClipEnd) { + if(var1 < Rasterizer2D_yClipStart) { + var2 -= Rasterizer2D_yClipStart - var1; + var1 = Rasterizer2D_yClipStart; + } + + if(var2 + var1 > Rasterizer2D_yClipEnd) { + var2 = Rasterizer2D_yClipEnd - var1; + } + + int var5 = 256 - var4; + int var6 = (var3 >> 16 & 255) * var4; + int var7 = (var3 >> 8 & 255) * var4; + int var8 = var4 * (var3 & 255); + int var12 = var0 + Rasterizer2D_width * var1; + + for(int var13 = 0; var13 < var2; ++var13) { + int var9 = var5 * (Rasterizer2D_pixels[var12] >> 16 & 255); + int var10 = (Rasterizer2D_pixels[var12] >> 8 & 255) * var5; + int var11 = var5 * (Rasterizer2D_pixels[var12] & 255); + int var14 = (var8 + var11 >> 8) + (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8); + Rasterizer2D_pixels[var12] = var14; + var12 += Rasterizer2D_width; + } + + } + } + + @ObfuscatedName("et") + @Export("Rasterizer2D_drawLine") + public static void Rasterizer2D_drawLine(int var0, int var1, int var2, int var3, int var4) { + var2 -= var0; + var3 -= var1; + if(var3 == 0) { + if(var2 >= 0) { + Rasterizer2D_drawHorizontalLine(var0, var1, var2 + 1, var4); + } else { + Rasterizer2D_drawHorizontalLine(var0 + var2, var1, -var2 + 1, var4); + } + + } else if(var2 == 0) { + if(var3 >= 0) { + Rasterizer2D_drawVerticalLine(var0, var1, var3 + 1, var4); + } else { + Rasterizer2D_drawVerticalLine(var0, var3 + var1, -var3 + 1, var4); + } + + } else { + if(var3 + var2 < 0) { + var0 += var2; + var2 = -var2; + var1 += var3; + var3 = -var3; + } + + int var5; + int var6; + if(var2 > var3) { + var1 <<= 16; + var1 += 32768; + var3 <<= 16; + var5 = (int)Math.floor((double)var3 / (double)var2 + 0.5D); + var2 += var0; + if(var0 < Rasterizer2D_xClipStart) { + var1 += var5 * (Rasterizer2D_xClipStart - var0); + var0 = Rasterizer2D_xClipStart; + } + + if(var2 >= Rasterizer2D_xClipEnd) { + var2 = Rasterizer2D_xClipEnd - 1; + } + + while(var0 <= var2) { + var6 = var1 >> 16; + if(var6 >= Rasterizer2D_yClipStart && var6 < Rasterizer2D_yClipEnd) { + Rasterizer2D_pixels[var0 + var6 * Rasterizer2D_width] = var4; + } + + var1 += var5; + ++var0; + } + } else { + var0 <<= 16; + var0 += 32768; + var2 <<= 16; + var5 = (int)Math.floor((double)var2 / (double)var3 + 0.5D); + var3 += var1; + if(var1 < Rasterizer2D_yClipStart) { + var0 += (Rasterizer2D_yClipStart - var1) * var5; + var1 = Rasterizer2D_yClipStart; + } + + if(var3 >= Rasterizer2D_yClipEnd) { + var3 = Rasterizer2D_yClipEnd - 1; + } + + while(var1 <= var3) { + var6 = var0 >> 16; + if(var6 >= Rasterizer2D_xClipStart && var6 < Rasterizer2D_xClipEnd) { + Rasterizer2D_pixels[var6 + Rasterizer2D_width * var1] = var4; + } + + var0 += var5; + ++var1; + } + } + + } + } + + @ObfuscatedName("eb") + @Export("Rasterizer2D_setPixel") + static void Rasterizer2D_setPixel(int var0, int var1, int var2) { + if(var0 >= Rasterizer2D_xClipStart && var1 >= Rasterizer2D_yClipStart && var0 < Rasterizer2D_xClipEnd && var1 < Rasterizer2D_yClipEnd) { + Rasterizer2D_pixels[var0 + Rasterizer2D_width * var1] = var2; + } + } + + @ObfuscatedName("ek") + public static void method5948(int var0, int var1, int var2, int[] var3, int[] var4) { + int var5 = var0 + Rasterizer2D_width * var1; + + for(var1 = 0; var1 < var3.length; ++var1) { + int var6 = var5 + var3[var1]; + + for(var0 = -var4[var1]; var0 < 0; ++var0) { + Rasterizer2D_pixels[var6++] = var2; + } + + var5 += Rasterizer2D_width; + } + + } +} diff --git a/rs-client/src/main/java/Rasterizer3D.java b/rs-client/src/main/java/Rasterizer3D.java new file mode 100644 index 0000000000..bde438c83e --- /dev/null +++ b/rs-client/src/main/java/Rasterizer3D.java @@ -0,0 +1,3449 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("et") +@Implements("Rasterizer3D") +public class Rasterizer3D extends Rasterizer2D { + @ObfuscatedName("m") + @Export("__et_m") + static boolean __et_m; + @ObfuscatedName("f") + @Export("__et_f") + static boolean __et_f; + @ObfuscatedName("q") + @Export("Rasterizer3D_isLowDetailTexture") + static boolean Rasterizer3D_isLowDetailTexture; + @ObfuscatedName("w") + @Export("__et_w") + public static boolean __et_w; + @ObfuscatedName("o") + @Export("Rasterizer3D_alpha") + static int Rasterizer3D_alpha; + @ObfuscatedName("k") + @Export("Rasterizer3D_zoom") + public static int Rasterizer3D_zoom; + @ObfuscatedName("n") + @Export("Rasterizer3D_clipMidX") + static int Rasterizer3D_clipMidX; + @ObfuscatedName("i") + @Export("Rasterizer3D_clipMidY") + static int Rasterizer3D_clipMidY; + @ObfuscatedName("a") + @Export("Rasterizer3D_clipWidth") + static int Rasterizer3D_clipWidth; + @ObfuscatedName("z") + @Export("Rasterizer3D_clipHeight") + static int Rasterizer3D_clipHeight; + @ObfuscatedName("j") + @Export("Rasterizer3D_clipNegativeMidX") + static int Rasterizer3D_clipNegativeMidX; + @ObfuscatedName("s") + @Export("Rasterizer3D_clipMidX2") + static int Rasterizer3D_clipMidX2; + @ObfuscatedName("t") + @Export("Rasterizer3D_clipNegativeMidY") + static int Rasterizer3D_clipNegativeMidY; + @ObfuscatedName("y") + @Export("Rasterizer3D_clipMidY2") + static int Rasterizer3D_clipMidY2; + @ObfuscatedName("h") + @Export("Rasterizer3D_rowOffsets") + static int[] Rasterizer3D_rowOffsets; + @ObfuscatedName("b") + @Export("Rasterizer3D_colorPalette") + public static int[] Rasterizer3D_colorPalette; + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Lei;" + ) + @Export("Rasterizer3D_textureLoader") + public static TextureLoader Rasterizer3D_textureLoader; + @ObfuscatedName("r") + @Export("__et_r") + static int[] __et_r; + @ObfuscatedName("p") + @Export("__et_p") + static int[] __et_p; + @ObfuscatedName("v") + @Export("Rasterizer3D_sine") + public static int[] Rasterizer3D_sine; + @ObfuscatedName("ag") + @Export("Rasterizer3D_cosine") + public static int[] Rasterizer3D_cosine; + + static { + __et_m = false; + __et_f = false; + Rasterizer3D_isLowDetailTexture = false; + __et_w = true; + Rasterizer3D_alpha = 0; + Rasterizer3D_zoom = 512; + Rasterizer3D_rowOffsets = new int[1024]; + Rasterizer3D_colorPalette = new int[65536]; + __et_r = new int[512]; + __et_p = new int[2048]; + Rasterizer3D_sine = new int[2048]; + Rasterizer3D_cosine = new int[2048]; + + int var0; + for(var0 = 1; var0 < 512; ++var0) { + __et_r[var0] = 32768 / var0; + } + + for(var0 = 1; var0 < 2048; ++var0) { + __et_p[var0] = 65536 / var0; + } + + for(var0 = 0; var0 < 2048; ++var0) { + Rasterizer3D_sine[var0] = (int)(65536.0D * Math.sin((double)var0 * 0.0030679615D)); + Rasterizer3D_cosine[var0] = (int)(65536.0D * Math.cos((double)var0 * 0.0030679615D)); + } + + } + + @ObfuscatedName("m") + @Export("Rasterizer3D_method1") + public static final void Rasterizer3D_method1() { + Rasterizer3D_setClip(Rasterizer2D.Rasterizer2D_xClipStart, Rasterizer2D.Rasterizer2D_yClipStart, Rasterizer2D.Rasterizer2D_xClipEnd, Rasterizer2D.Rasterizer2D_yClipEnd); + } + + @ObfuscatedName("f") + @Export("Rasterizer3D_setClip") + static final void Rasterizer3D_setClip(int var0, int var1, int var2, int var3) { + Rasterizer3D_clipWidth = var2 - var0; + Rasterizer3D_clipHeight = var3 - var1; + Rasterizer3D_method3(); + if(Rasterizer3D_rowOffsets.length < Rasterizer3D_clipHeight) { + Rasterizer3D_rowOffsets = new int[World.method1759(Rasterizer3D_clipHeight)]; + } + + int var4 = var0 + Rasterizer2D.Rasterizer2D_width * var1; + + for(int var5 = 0; var5 < Rasterizer3D_clipHeight; ++var5) { + Rasterizer3D_rowOffsets[var5] = var4; + var4 += Rasterizer2D.Rasterizer2D_width; + } + + } + + @ObfuscatedName("q") + @Export("Rasterizer3D_method3") + public static final void Rasterizer3D_method3() { + Rasterizer3D_clipMidX = Rasterizer3D_clipWidth / 2; + Rasterizer3D_clipMidY = Rasterizer3D_clipHeight / 2; + Rasterizer3D_clipNegativeMidX = -Rasterizer3D_clipMidX; + Rasterizer3D_clipMidX2 = Rasterizer3D_clipWidth - Rasterizer3D_clipMidX; + Rasterizer3D_clipNegativeMidY = -Rasterizer3D_clipMidY; + Rasterizer3D_clipMidY2 = Rasterizer3D_clipHeight - Rasterizer3D_clipMidY; + } + + @ObfuscatedName("w") + public static final void method2989(int var0, int var1) { + int var2 = Rasterizer3D_rowOffsets[0]; + int var3 = var2 / Rasterizer2D.Rasterizer2D_width; + int var4 = var2 - var3 * Rasterizer2D.Rasterizer2D_width; + Rasterizer3D_clipMidX = var0 - var4; + Rasterizer3D_clipMidY = var1 - var3; + Rasterizer3D_clipNegativeMidX = -Rasterizer3D_clipMidX; + Rasterizer3D_clipMidX2 = Rasterizer3D_clipWidth - Rasterizer3D_clipMidX; + Rasterizer3D_clipNegativeMidY = -Rasterizer3D_clipMidY; + Rasterizer3D_clipMidY2 = Rasterizer3D_clipHeight - Rasterizer3D_clipMidY; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lei;)V" + ) + @Export("Rasterizer3D_setTextureLoader") + public static final void Rasterizer3D_setTextureLoader(TextureLoader var0) { + Rasterizer3D_textureLoader = var0; + } + + @ObfuscatedName("u") + @Export("Rasterizer3D_setBrightness") + public static final void Rasterizer3D_setBrightness(double var0) { + Rasterizer3D_buildPalette(var0, 0, 512); + } + + @ObfuscatedName("g") + @Export("Rasterizer3D_buildPalette") + static final void Rasterizer3D_buildPalette(double var0, int var2, int var3) { + int var4 = var2 * 128; + + for(int var5 = var2; var5 < var3; ++var5) { + double var6 = (double)(var5 >> 3) / 64.0D + 0.0078125D; + double var8 = (double)(var5 & 7) / 8.0D + 0.0625D; + + for(int var10 = 0; var10 < 128; ++var10) { + double var11 = (double)var10 / 128.0D; + double var13 = var11; + double var15 = var11; + double var17 = var11; + if(var8 != 0.0D) { + double var19; + if(var11 < 0.5D) { + var19 = var11 * (1.0D + var8); + } else { + var19 = var11 + var8 - var11 * var8; + } + + double var21 = 2.0D * var11 - var19; + double var23 = var6 + 0.3333333333333333D; + if(var23 > 1.0D) { + --var23; + } + + double var27 = var6 - 0.3333333333333333D; + if(var27 < 0.0D) { + ++var27; + } + + if(6.0D * var23 < 1.0D) { + var13 = var21 + (var19 - var21) * 6.0D * var23; + } else if(2.0D * var23 < 1.0D) { + var13 = var19; + } else if(3.0D * var23 < 2.0D) { + var13 = var21 + (var19 - var21) * (0.6666666666666666D - var23) * 6.0D; + } else { + var13 = var21; + } + + if(6.0D * var6 < 1.0D) { + var15 = var21 + (var19 - var21) * 6.0D * var6; + } else if(2.0D * var6 < 1.0D) { + var15 = var19; + } else if(3.0D * var6 < 2.0D) { + var15 = var21 + (var19 - var21) * (0.6666666666666666D - var6) * 6.0D; + } else { + var15 = var21; + } + + if(6.0D * var27 < 1.0D) { + var17 = var21 + (var19 - var21) * 6.0D * var27; + } else if(2.0D * var27 < 1.0D) { + var17 = var19; + } else if(3.0D * var27 < 2.0D) { + var17 = var21 + (var19 - var21) * (0.6666666666666666D - var27) * 6.0D; + } else { + var17 = var21; + } + } + + int var29 = (int)(var13 * 256.0D); + int var20 = (int)(var15 * 256.0D); + int var30 = (int)(var17 * 256.0D); + int var22 = var30 + (var20 << 8) + (var29 << 16); + var22 = Rasterizer3D_brighten(var22, var0); + if(var22 == 0) { + var22 = 1; + } + + Rasterizer3D_colorPalette[var4++] = var22; + } + } + + } + + @ObfuscatedName("l") + @Export("Rasterizer3D_brighten") + static int Rasterizer3D_brighten(int var0, double var1) { + double var3 = (double)(var0 >> 16) / 256.0D; + double var5 = (double)(var0 >> 8 & 255) / 256.0D; + double var7 = (double)(var0 & 255) / 256.0D; + var3 = Math.pow(var3, var1); + var5 = Math.pow(var5, var1); + var7 = Math.pow(var7, var1); + int var9 = (int)(var3 * 256.0D); + int var10 = (int)(var5 * 256.0D); + int var11 = (int)(var7 * 256.0D); + return var11 + (var10 << 8) + (var9 << 16); + } + + @ObfuscatedName("e") + public static void method2985(int var0, int var1, int var2) { + __et_m = var0 < 0 || var0 > Rasterizer3D_clipWidth || var1 < 0 || var1 > Rasterizer3D_clipWidth || var2 < 0 || var2 > Rasterizer3D_clipWidth; + } + + @ObfuscatedName("x") + static final void method3037(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = var4 - var3; + int var10 = var1 - var0; + int var11 = var5 - var3; + int var12 = var2 - var0; + int var13 = var7 - var6; + int var14 = var8 - var6; + int var15; + if(var2 != var1) { + var15 = (var5 - var4 << 14) / (var2 - var1); + } else { + var15 = 0; + } + + int var16; + if(var0 != var1) { + var16 = (var9 << 14) / var10; + } else { + var16 = 0; + } + + int var17; + if(var0 != var2) { + var17 = (var11 << 14) / var12; + } else { + var17 = 0; + } + + int var18 = var9 * var12 - var11 * var10; + if(var18 != 0) { + int var19 = (var13 * var12 - var14 * var10 << 8) / var18; + int var20 = (var14 * var9 - var13 * var11 << 8) / var18; + if(var0 <= var1 && var0 <= var2) { + if(var0 < Rasterizer3D_clipHeight) { + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + var6 = var19 + ((var6 << 8) - var3 * var19); + if(var1 < var2) { + var5 = var3 <<= 14; + if(var0 < 0) { + var5 -= var0 * var17; + var3 -= var0 * var16; + var6 -= var0 * var20; + var0 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var15 * var1; + var1 = 0; + } + + if(var0 != var1 && var17 < var16 || var0 == var1 && var17 > var15) { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var5 >> 14, var4 >> 14, var6, var19); + var5 += var17; + var4 += var15; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var5 >> 14, var3 >> 14, var6, var19); + var5 += var17; + var3 += var16; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var4 >> 14, var5 >> 14, var6, var19); + var5 += var17; + var4 += var15; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var3 >> 14, var5 >> 14, var6, var19); + var5 += var17; + var3 += var16; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + } else { + var4 = var3 <<= 14; + if(var0 < 0) { + var4 -= var0 * var17; + var3 -= var0 * var16; + var6 -= var0 * var20; + var0 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var15 * var2; + var2 = 0; + } + + if(var0 != var2 && var17 < var16 || var0 == var2 && var15 > var16) { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var5 >> 14, var3 >> 14, var6, var19); + var5 += var15; + var3 += var16; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var4 >> 14, var3 >> 14, var6, var19); + var4 += var17; + var3 += var16; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var3 >> 14, var5 >> 14, var6, var19); + var5 += var15; + var3 += var16; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, 0, 0, var3 >> 14, var4 >> 14, var6, var19); + var4 += var17; + var3 += var16; + var6 += var20; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + } + } + } else if(var1 <= var2) { + if(var1 < Rasterizer3D_clipHeight) { + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + var7 = var19 + ((var7 << 8) - var19 * var4); + if(var2 < var0) { + var3 = var4 <<= 14; + if(var1 < 0) { + var3 -= var16 * var1; + var4 -= var15 * var1; + var7 -= var20 * var1; + var1 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var17 * var2; + var2 = 0; + } + + if(var2 != var1 && var16 < var15 || var2 == var1 && var16 > var17) { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var3 >> 14, var5 >> 14, var7, var19); + var3 += var16; + var5 += var17; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var3 >> 14, var4 >> 14, var7, var19); + var3 += var16; + var4 += var15; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var5 >> 14, var3 >> 14, var7, var19); + var3 += var16; + var5 += var17; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var4 >> 14, var3 >> 14, var7, var19); + var3 += var16; + var4 += var15; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + } else { + var5 = var4 <<= 14; + if(var1 < 0) { + var5 -= var16 * var1; + var4 -= var15 * var1; + var7 -= var20 * var1; + var1 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var17; + var0 = 0; + } + + if(var16 < var15) { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var3 >> 14, var4 >> 14, var7, var19); + var3 += var17; + var4 += var15; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var5 >> 14, var4 >> 14, var7, var19); + var5 += var16; + var4 += var15; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var4 >> 14, var3 >> 14, var7, var19); + var3 += var17; + var4 += var15; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, 0, 0, var4 >> 14, var5 >> 14, var7, var19); + var5 += var16; + var4 += var15; + var7 += var20; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + } + } + } else if(var2 < Rasterizer3D_clipHeight) { + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + var8 = var19 + ((var8 << 8) - var5 * var19); + if(var0 < var1) { + var4 = var5 <<= 14; + if(var2 < 0) { + var4 -= var15 * var2; + var5 -= var17 * var2; + var8 -= var20 * var2; + var2 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var16; + var0 = 0; + } + + if(var15 < var17) { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var4 >> 14, var3 >> 14, var8, var19); + var4 += var15; + var3 += var16; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var4 >> 14, var5 >> 14, var8, var19); + var4 += var15; + var5 += var17; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var3 >> 14, var4 >> 14, var8, var19); + var4 += var15; + var3 += var16; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var5 >> 14, var4 >> 14, var8, var19); + var4 += var15; + var5 += var17; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + } else { + var3 = var5 <<= 14; + if(var2 < 0) { + var3 -= var15 * var2; + var5 -= var17 * var2; + var8 -= var20 * var2; + var2 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var16 * var1; + var1 = 0; + } + + if(var15 < var17) { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var4 >> 14, var5 >> 14, var8, var19); + var4 += var16; + var5 += var17; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var3 >> 14, var5 >> 14, var8, var19); + var3 += var15; + var5 += var17; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var5 >> 14, var4 >> 14, var8, var19); + var4 += var16; + var5 += var17; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_vertAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, 0, 0, var5 >> 14, var3 >> 14, var8, var19); + var3 += var15; + var5 += var17; + var8 += var20; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + } + } + } + } + + @ObfuscatedName("d") + @Export("Rasterizer3D_vertAlpha") + static final void Rasterizer3D_vertAlpha(int[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(__et_m) { + if(var5 > Rasterizer3D_clipWidth) { + var5 = Rasterizer3D_clipWidth; + } + + if(var4 < 0) { + var4 = 0; + } + } + + if(var4 < var5) { + var1 += var4; + var6 += var4 * var7; + int var8; + int var9; + int var10; + if(__et_w) { + var3 = var5 - var4 >> 2; + var7 <<= 2; + if(Rasterizer3D_alpha == 0) { + if(var3 > 0) { + do { + var2 = Rasterizer3D_colorPalette[var6 >> 8]; + var6 += var7; + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + --var3; + } while(var3 > 0); + } + + var3 = var5 - var4 & 3; + if(var3 > 0) { + var2 = Rasterizer3D_colorPalette[var6 >> 8]; + + do { + var0[var1++] = var2; + --var3; + } while(var3 > 0); + } + } else { + var8 = Rasterizer3D_alpha; + var9 = 256 - Rasterizer3D_alpha; + if(var3 > 0) { + do { + var2 = Rasterizer3D_colorPalette[var6 >> 8]; + var6 += var7; + var2 = (var9 * (var2 & 65280) >> 8 & 65280) + (var9 * (var2 & 16711935) >> 8 & 16711935); + var10 = var0[var1]; + var0[var1++] = ((var10 & 16711935) * var8 >> 8 & 16711935) + var2 + (var8 * (var10 & 65280) >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = ((var10 & 16711935) * var8 >> 8 & 16711935) + var2 + (var8 * (var10 & 65280) >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = ((var10 & 16711935) * var8 >> 8 & 16711935) + var2 + (var8 * (var10 & 65280) >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = ((var10 & 16711935) * var8 >> 8 & 16711935) + var2 + (var8 * (var10 & 65280) >> 8 & 65280); + --var3; + } while(var3 > 0); + } + + var3 = var5 - var4 & 3; + if(var3 > 0) { + var2 = Rasterizer3D_colorPalette[var6 >> 8]; + var2 = (var9 * (var2 & 65280) >> 8 & 65280) + (var9 * (var2 & 16711935) >> 8 & 16711935); + + do { + var10 = var0[var1]; + var0[var1++] = ((var10 & 16711935) * var8 >> 8 & 16711935) + var2 + (var8 * (var10 & 65280) >> 8 & 65280); + --var3; + } while(var3 > 0); + } + } + + } else { + var3 = var5 - var4; + if(Rasterizer3D_alpha == 0) { + do { + var0[var1++] = Rasterizer3D_colorPalette[var6 >> 8]; + var6 += var7; + --var3; + } while(var3 > 0); + } else { + var8 = Rasterizer3D_alpha; + var9 = 256 - Rasterizer3D_alpha; + + do { + var2 = Rasterizer3D_colorPalette[var6 >> 8]; + var6 += var7; + var2 = (var9 * (var2 & 65280) >> 8 & 65280) + (var9 * (var2 & 16711935) >> 8 & 16711935); + var10 = var0[var1]; + var0[var1++] = ((var10 & 16711935) * var8 >> 8 & 16711935) + var2 + (var8 * (var10 & 65280) >> 8 & 65280); + --var3; + } while(var3 > 0); + } + + } + } + } + + @ObfuscatedName("a") + public static final void method3020(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = 0; + if(var0 != var1) { + var7 = (var4 - var3 << 14) / (var1 - var0); + } + + int var8 = 0; + if(var2 != var1) { + var8 = (var5 - var4 << 14) / (var2 - var1); + } + + int var9 = 0; + if(var0 != var2) { + var9 = (var3 - var5 << 14) / (var0 - var2); + } + + if(var0 <= var1 && var0 <= var2) { + if(var0 < Rasterizer3D_clipHeight) { + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + if(var1 < var2) { + var5 = var3 <<= 14; + if(var0 < 0) { + var5 -= var0 * var9; + var3 -= var0 * var7; + var0 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var8 * var1; + var1 = 0; + } + + if((var0 == var1 || var9 >= var7) && (var0 != var1 || var9 <= var8)) { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var4 >> 14, var5 >> 14); + var5 += var9; + var4 += var8; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var3 >> 14, var5 >> 14); + var5 += var9; + var3 += var7; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var5 >> 14, var4 >> 14); + var5 += var9; + var4 += var8; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var5 >> 14, var3 >> 14); + var5 += var9; + var3 += var7; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + } else { + var4 = var3 <<= 14; + if(var0 < 0) { + var4 -= var0 * var9; + var3 -= var0 * var7; + var0 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var8 * var2; + var2 = 0; + } + + if(var0 != var2 && var9 < var7 || var0 == var2 && var8 > var7) { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var5 >> 14, var3 >> 14); + var5 += var8; + var3 += var7; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var4 >> 14, var3 >> 14); + var4 += var9; + var3 += var7; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var3 >> 14, var5 >> 14); + var5 += var8; + var3 += var7; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var6, 0, var3 >> 14, var4 >> 14); + var4 += var9; + var3 += var7; + var0 += Rasterizer2D.Rasterizer2D_width; + } + } + } + } + } else if(var1 <= var2) { + if(var1 < Rasterizer3D_clipHeight) { + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + if(var2 < var0) { + var3 = var4 <<= 14; + if(var1 < 0) { + var3 -= var7 * var1; + var4 -= var8 * var1; + var1 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var9 * var2; + var2 = 0; + } + + if((var2 == var1 || var7 >= var8) && (var2 != var1 || var7 <= var9)) { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var5 >> 14, var3 >> 14); + var3 += var7; + var5 += var9; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var4 >> 14, var3 >> 14); + var3 += var7; + var4 += var8; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var3 >> 14, var5 >> 14); + var3 += var7; + var5 += var9; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var3 >> 14, var4 >> 14); + var3 += var7; + var4 += var8; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + } else { + var5 = var4 <<= 14; + if(var1 < 0) { + var5 -= var7 * var1; + var4 -= var8 * var1; + var1 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var9; + var0 = 0; + } + + if(var7 < var8) { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var3 >> 14, var4 >> 14); + var3 += var9; + var4 += var8; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var5 >> 14, var4 >> 14); + var5 += var7; + var4 += var8; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var4 >> 14, var3 >> 14); + var3 += var9; + var4 += var8; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, 0, var4 >> 14, var5 >> 14); + var5 += var7; + var4 += var8; + var1 += Rasterizer2D.Rasterizer2D_width; + } + } + } + } + } else if(var2 < Rasterizer3D_clipHeight) { + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + if(var0 < var1) { + var4 = var5 <<= 14; + if(var2 < 0) { + var4 -= var8 * var2; + var5 -= var9 * var2; + var2 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var7; + var0 = 0; + } + + if(var8 < var9) { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var4 >> 14, var3 >> 14); + var4 += var8; + var3 += var7; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var4 >> 14, var5 >> 14); + var4 += var8; + var5 += var9; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var3 >> 14, var4 >> 14); + var4 += var8; + var3 += var7; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var5 >> 14, var4 >> 14); + var4 += var8; + var5 += var9; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + } else { + var3 = var5 <<= 14; + if(var2 < 0) { + var3 -= var8 * var2; + var5 -= var9 * var2; + var2 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var7 * var1; + var1 = 0; + } + + if(var8 < var9) { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var4 >> 14, var5 >> 14); + var4 += var7; + var5 += var9; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var3 >> 14, var5 >> 14); + var3 += var8; + var5 += var9; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var5 >> 14, var4 >> 14); + var4 += var7; + var5 += var9; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + + Rasterizer3D_horizAlpha(Rasterizer2D.Rasterizer2D_pixels, var2, var6, 0, var5 >> 14, var3 >> 14); + var3 += var8; + var5 += var9; + var2 += Rasterizer2D.Rasterizer2D_width; + } + } + } + } + } + + @ObfuscatedName("z") + @Export("Rasterizer3D_horizAlpha") + static final void Rasterizer3D_horizAlpha(int[] var0, int var1, int var2, int var3, int var4, int var5) { + if(__et_m) { + if(var5 > Rasterizer3D_clipWidth) { + var5 = Rasterizer3D_clipWidth; + } + + if(var4 < 0) { + var4 = 0; + } + } + + if(var4 < var5) { + var1 += var4; + var3 = var5 - var4 >> 2; + if(Rasterizer3D_alpha != 0) { + if(Rasterizer3D_alpha == 254) { + while(true) { + --var3; + if(var3 < 0) { + var3 = var5 - var4 & 3; + + while(true) { + --var3; + if(var3 < 0) { + return; + } + + var0[var1++] = var0[var1]; + } + } + + var0[var1++] = var0[var1]; + var0[var1++] = var0[var1]; + var0[var1++] = var0[var1]; + var0[var1++] = var0[var1]; + } + } else { + int var6 = Rasterizer3D_alpha; + int var7 = 256 - Rasterizer3D_alpha; + var2 = (var7 * (var2 & 65280) >> 8 & 65280) + (var7 * (var2 & 16711935) >> 8 & 16711935); + + while(true) { + --var3; + int var8; + if(var3 < 0) { + var3 = var5 - var4 & 3; + + while(true) { + --var3; + if(var3 < 0) { + return; + } + + var8 = var0[var1]; + var0[var1++] = ((var8 & 16711935) * var6 >> 8 & 16711935) + var2 + (var6 * (var8 & 65280) >> 8 & 65280); + } + } + + var8 = var0[var1]; + var0[var1++] = ((var8 & 16711935) * var6 >> 8 & 16711935) + var2 + (var6 * (var8 & 65280) >> 8 & 65280); + var8 = var0[var1]; + var0[var1++] = ((var8 & 16711935) * var6 >> 8 & 16711935) + var2 + (var6 * (var8 & 65280) >> 8 & 65280); + var8 = var0[var1]; + var0[var1++] = ((var8 & 16711935) * var6 >> 8 & 16711935) + var2 + (var6 * (var8 & 65280) >> 8 & 65280); + var8 = var0[var1]; + var0[var1++] = ((var8 & 16711935) * var6 >> 8 & 16711935) + var2 + (var6 * (var8 & 65280) >> 8 & 65280); + } + } + } else { + while(true) { + --var3; + if(var3 < 0) { + var3 = var5 - var4 & 3; + + while(true) { + --var3; + if(var3 < 0) { + return; + } + + var0[var1++] = var2; + } + } + + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + } + } + } + } + + @ObfuscatedName("j") + static final void method2986(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18) { + int[] var19 = Rasterizer3D_textureLoader.load(var18); + int var20; + if(var19 == null) { + var20 = Rasterizer3D_textureLoader.__w_213(var18); + method3037(var0, var1, var2, var3, var4, var5, method3040(var20, var6), method3040(var20, var7), method3040(var20, var8)); + } else { + Rasterizer3D_isLowDetailTexture = Rasterizer3D_textureLoader.isLowDetail(var18); + __et_f = Rasterizer3D_textureLoader.__o_214(var18); + var20 = var4 - var3; + int var21 = var1 - var0; + int var22 = var5 - var3; + int var23 = var2 - var0; + int var24 = var7 - var6; + int var25 = var8 - var6; + int var26 = 0; + if(var0 != var1) { + var26 = (var4 - var3 << 14) / (var1 - var0); + } + + int var27 = 0; + if(var2 != var1) { + var27 = (var5 - var4 << 14) / (var2 - var1); + } + + int var28 = 0; + if(var0 != var2) { + var28 = (var3 - var5 << 14) / (var0 - var2); + } + + int var29 = var20 * var23 - var22 * var21; + if(var29 != 0) { + int var30 = (var24 * var23 - var25 * var21 << 9) / var29; + int var31 = (var25 * var20 - var24 * var22 << 9) / var29; + var10 = var9 - var10; + var13 = var12 - var13; + var16 = var15 - var16; + var11 -= var9; + var14 -= var12; + var17 -= var15; + int var32 = var11 * var12 - var9 * var14 << 14; + int var33 = (int)(((long)(var15 * var14 - var17 * var12) << 3 << 14) / (long)Rasterizer3D_zoom); + int var34 = (int)(((long)(var17 * var9 - var11 * var15) << 14) / (long)Rasterizer3D_zoom); + int var35 = var10 * var12 - var13 * var9 << 14; + int var36 = (int)(((long)(var13 * var15 - var16 * var12) << 3 << 14) / (long)Rasterizer3D_zoom); + int var37 = (int)(((long)(var16 * var9 - var10 * var15) << 14) / (long)Rasterizer3D_zoom); + int var38 = var13 * var11 - var10 * var14 << 14; + int var39 = (int)(((long)(var16 * var14 - var13 * var17) << 3 << 14) / (long)Rasterizer3D_zoom); + int var40 = (int)(((long)(var17 * var10 - var11 * var16) << 14) / (long)Rasterizer3D_zoom); + int var41; + if(var0 <= var1 && var0 <= var2) { + if(var0 < Rasterizer3D_clipHeight) { + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + var6 = var30 + ((var6 << 9) - var3 * var30); + if(var1 < var2) { + var5 = var3 <<= 14; + if(var0 < 0) { + var5 -= var0 * var28; + var3 -= var0 * var26; + var6 -= var0 * var31; + var0 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var27 * var1; + var1 = 0; + } + + var41 = var0 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var0 != var1 && var28 < var26 || var0 == var1 && var28 > var27) { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var5 >> 14, var4 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var5 >> 14, var3 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var4 >> 14, var5 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var3 >> 14, var5 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var4 = var3 <<= 14; + if(var0 < 0) { + var4 -= var0 * var28; + var3 -= var0 * var26; + var6 -= var0 * var31; + var0 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var27 * var2; + var2 = 0; + } + + var41 = var0 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var0 != var2 && var28 < var26 || var0 == var2 && var27 > var26) { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var5 >> 14, var3 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var4 >> 14, var3 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var3 >> 14, var5 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var3 >> 14, var4 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if(var1 <= var2) { + if(var1 < Rasterizer3D_clipHeight) { + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + var7 = var30 + ((var7 << 9) - var30 * var4); + if(var2 < var0) { + var3 = var4 <<= 14; + if(var1 < 0) { + var3 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var28 * var2; + var2 = 0; + } + + var41 = var1 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var2 != var1 && var26 < var27 || var2 == var1 && var26 > var28) { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var3 >> 14, var5 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var3 >> 14, var4 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var5 >> 14, var3 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var4 >> 14, var3 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var5 = var4 <<= 14; + if(var1 < 0) { + var5 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var28; + var0 = 0; + } + + var41 = var1 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var26 < var27) { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var3 >> 14, var4 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var5 >> 14, var4 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var4 >> 14, var3 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var4 >> 14, var5 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if(var2 < Rasterizer3D_clipHeight) { + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + var8 = (var8 << 9) - var5 * var30 + var30; + if(var0 < var1) { + var4 = var5 <<= 14; + if(var2 < 0) { + var4 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var26; + var0 = 0; + } + + var41 = var2 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var27 < var28) { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var4 >> 14, var3 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var4 >> 14, var5 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var3 >> 14, var4 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var5 >> 14, var4 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var3 = var5 <<= 14; + if(var2 < 0) { + var3 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var26 * var1; + var1 = 0; + } + + var41 = var2 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var27 < var28) { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var4 >> 14, var5 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var3 >> 14, var5 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var5 >> 14, var4 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_iDontKnow(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var5 >> 14, var3 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } + } + } + + @ObfuscatedName("s") + @Export("Rasterizer3D_iDontKnow") + static final void Rasterizer3D_iDontKnow(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14) { + if(__et_m) { + if(var6 > Rasterizer3D_clipWidth) { + var6 = Rasterizer3D_clipWidth; + } + + if(var5 < 0) { + var5 = 0; + } + } + + if(var5 < var6) { + var4 += var5; + var7 += var5 * var8; + int var17 = var6 - var5; + int var15; + int var16; + int var10000; + int var18; + int var19; + int var20; + int var21; + int var22; + int var23; + if(Rasterizer3D_isLowDetailTexture) { + var23 = var5 - Rasterizer3D_clipMidX; + var9 += var23 * (var12 >> 3); + var10 += (var13 >> 3) * var23; + var11 += var23 * (var14 >> 3); + var22 = var11 >> 12; + if(var22 != 0) { + var18 = var9 / var22; + var19 = var10 / var22; + if(var18 < 0) { + var18 = 0; + } else if(var18 > 4032) { + var18 = 4032; + } + } else { + var18 = 0; + var19 = 0; + } + + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 12; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + if(var20 < 0) { + var20 = 0; + } else if(var20 > 4032) { + var20 = 4032; + } + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 20) + var19; + var16 = (var21 - var19 >> 3) + (var20 - var18 >> 3 << 20); + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if(__et_f) { + if(var17 > 0) { + do { + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var10000 = var16 + var2; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 12; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + if(var20 < 0) { + var20 = 0; + } else if(var20 > 4032) { + var20 = 4032; + } + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 20) + var19; + var16 = (var21 - var19 >> 3) + (var20 - var18 >> 3 << 20); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + --var17; + } while(var17 > 0); + } + } else { + if(var17 > 0) { + do { + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var10000 = var16 + var2; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 12; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + if(var20 < 0) { + var20 = 0; + } else if(var20 > 4032) { + var20 = 4032; + } + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 20) + var19; + var16 = (var21 - var19 >> 3) + (var20 - var18 >> 3 << 20); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while(var17 > 0); + } + } + } else { + var23 = var5 - Rasterizer3D_clipMidX; + var9 += var23 * (var12 >> 3); + var10 += (var13 >> 3) * var23; + var11 += var23 * (var14 >> 3); + var22 = var11 >> 14; + if(var22 != 0) { + var18 = var9 / var22; + var19 = var10 / var22; + if(var18 < 0) { + var18 = 0; + } else if(var18 > 16256) { + var18 = 16256; + } + } else { + var18 = 0; + var19 = 0; + } + + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 14; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + if(var20 < 0) { + var20 = 0; + } else if(var20 > 16256) { + var20 = 16256; + } + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 18) + var19; + var16 = (var21 - var19 >> 3) + (var20 - var18 >> 3 << 18); + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if(__et_f) { + if(var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var10000 = var16 + var2; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 14; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + if(var20 < 0) { + var20 = 0; + } else if(var20 > 16256) { + var20 = 16256; + } + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 18) + var19; + var16 = (var21 - var19 >> 3) + (var20 - var18 >> 3 << 18); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + --var17; + } while(var17 > 0); + } + } else { + if(var17 > 0) { + do { + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var10000 = var16 + var2; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 14; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + if(var20 < 0) { + var20 = 0; + } else if(var20 > 16256) { + var20 = 16256; + } + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 18) + var19; + var16 = (var21 - var19 >> 3) + (var20 - var18 >> 3 << 18); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while(var17 > 0); + } + } + } + + } + } + + @ObfuscatedName("t") + static final void method3012(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18) { + int[] var19 = Rasterizer3D_textureLoader.load(var18); + int var20; + if(var19 == null) { + var20 = Rasterizer3D_textureLoader.__w_213(var18); + method3037(var0, var1, var2, var3, var4, var5, method3040(var20, var6), method3040(var20, var7), method3040(var20, var8)); + } else { + Rasterizer3D_isLowDetailTexture = Rasterizer3D_textureLoader.isLowDetail(var18); + __et_f = Rasterizer3D_textureLoader.__o_214(var18); + var20 = var4 - var3; + int var21 = var1 - var0; + int var22 = var5 - var3; + int var23 = var2 - var0; + int var24 = var7 - var6; + int var25 = var8 - var6; + int var26 = 0; + if(var0 != var1) { + var26 = (var4 - var3 << 14) / (var1 - var0); + } + + int var27 = 0; + if(var2 != var1) { + var27 = (var5 - var4 << 14) / (var2 - var1); + } + + int var28 = 0; + if(var0 != var2) { + var28 = (var3 - var5 << 14) / (var0 - var2); + } + + int var29 = var20 * var23 - var22 * var21; + if(var29 != 0) { + int var30 = (var24 * var23 - var25 * var21 << 9) / var29; + int var31 = (var25 * var20 - var24 * var22 << 9) / var29; + var10 = var9 - var10; + var13 = var12 - var13; + var16 = var15 - var16; + var11 -= var9; + var14 -= var12; + var17 -= var15; + int var32 = var11 * var12 - var9 * var14 << 14; + int var33 = (int)(((long)(var15 * var14 - var17 * var12) << 14) / (long)Rasterizer3D_zoom); + int var34 = (int)(((long)(var17 * var9 - var11 * var15) << 14) / (long)Rasterizer3D_zoom); + int var35 = var10 * var12 - var13 * var9 << 14; + int var36 = (int)(((long)(var13 * var15 - var16 * var12) << 14) / (long)Rasterizer3D_zoom); + int var37 = (int)(((long)(var16 * var9 - var10 * var15) << 14) / (long)Rasterizer3D_zoom); + int var38 = var13 * var11 - var10 * var14 << 14; + int var39 = (int)(((long)(var16 * var14 - var13 * var17) << 14) / (long)Rasterizer3D_zoom); + int var40 = (int)(((long)(var17 * var10 - var11 * var16) << 14) / (long)Rasterizer3D_zoom); + int var41; + if(var0 <= var1 && var0 <= var2) { + if(var0 < Rasterizer3D_clipHeight) { + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + var6 = var30 + ((var6 << 9) - var3 * var30); + if(var1 < var2) { + var5 = var3 <<= 14; + if(var0 < 0) { + var5 -= var0 * var28; + var3 -= var0 * var26; + var6 -= var0 * var31; + var0 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var27 * var1; + var1 = 0; + } + + var41 = var0 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var0 != var1 && var28 < var26 || var0 == var1 && var28 > var27) { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var5 >> 14, var4 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var5 >> 14, var3 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var4 >> 14, var5 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var3 >> 14, var5 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var4 = var3 <<= 14; + if(var0 < 0) { + var4 -= var0 * var28; + var3 -= var0 * var26; + var6 -= var0 * var31; + var0 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var27 * var2; + var2 = 0; + } + + var41 = var0 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if((var0 == var2 || var28 >= var26) && (var0 != var2 || var27 <= var26)) { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var3 >> 14, var5 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var3 >> 14, var4 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = Rasterizer3D_rowOffsets[var0]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var5 >> 14, var3 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var0, var4 >> 14, var3 >> 14, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if(var1 <= var2) { + if(var1 < Rasterizer3D_clipHeight) { + if(var2 > Rasterizer3D_clipHeight) { + var2 = Rasterizer3D_clipHeight; + } + + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + var7 = var30 + ((var7 << 9) - var30 * var4); + if(var2 < var0) { + var3 = var4 <<= 14; + if(var1 < 0) { + var3 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var5 <<= 14; + if(var2 < 0) { + var5 -= var28 * var2; + var2 = 0; + } + + var41 = var1 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var2 != var1 && var26 < var27 || var2 == var1 && var26 > var28) { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var3 >> 14, var5 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var3 >> 14, var4 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var2; + if(var2 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var5 >> 14, var3 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var4 >> 14, var3 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var5 = var4 <<= 14; + if(var1 < 0) { + var5 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var28; + var0 = 0; + } + + var41 = var1 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var26 < var27) { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var3 >> 14, var4 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var5 >> 14, var4 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = Rasterizer3D_rowOffsets[var1]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var2; + if(var2 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var4 >> 14, var3 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var1, var4 >> 14, var5 >> 14, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if(var2 < Rasterizer3D_clipHeight) { + if(var0 > Rasterizer3D_clipHeight) { + var0 = Rasterizer3D_clipHeight; + } + + if(var1 > Rasterizer3D_clipHeight) { + var1 = Rasterizer3D_clipHeight; + } + + var8 = (var8 << 9) - var5 * var30 + var30; + if(var0 < var1) { + var4 = var5 <<= 14; + if(var2 < 0) { + var4 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var3 <<= 14; + if(var0 < 0) { + var3 -= var0 * var26; + var0 = 0; + } + + var41 = var2 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var27 < var28) { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var4 >> 14, var3 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var4 >> 14, var5 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var0; + if(var0 < 0) { + while(true) { + --var1; + if(var1 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var3 >> 14, var4 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var5 >> 14, var4 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var3 = var5 <<= 14; + if(var2 < 0) { + var3 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var4 <<= 14; + if(var1 < 0) { + var4 -= var26 * var1; + var1 = 0; + } + + var41 = var2 - Rasterizer3D_clipMidY; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if(var27 < var28) { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var4 >> 14, var5 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var3 >> 14, var5 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = Rasterizer3D_rowOffsets[var2]; + + while(true) { + --var1; + if(var1 < 0) { + while(true) { + --var0; + if(var0 < 0) { + return; + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var5 >> 14, var4 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + Rasterizer3D_textureAlpha(Rasterizer2D.Rasterizer2D_pixels, var19, 0, 0, var2, var5 >> 14, var3 >> 14, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Rasterizer2D.Rasterizer2D_width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } + } + } + + @ObfuscatedName("y") + @Export("Rasterizer3D_textureAlpha") + static final void Rasterizer3D_textureAlpha(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14) { + if(__et_m) { + if(var6 > Rasterizer3D_clipWidth) { + var6 = Rasterizer3D_clipWidth; + } + + if(var5 < 0) { + var5 = 0; + } + } + + if(var5 < var6) { + var4 += var5; + var7 += var5 * var8; + int var17 = var6 - var5; + int var15; + int var16; + int var18; + int var19; + int var20; + int var21; + int var22; + int var23; + if(Rasterizer3D_isLowDetailTexture) { + var23 = var5 - Rasterizer3D_clipMidX; + var9 += var23 * var12; + var10 += var13 * var23; + var11 += var23 * var14; + var22 = var11 >> 12; + if(var22 != 0) { + var18 = var9 / var22; + var19 = var10 / var22; + } else { + var18 = 0; + var19 = 0; + } + + var9 += var17 * var12; + var10 += var13 * var17; + var11 += var17 * var14; + var22 = var11 >> 12; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 20) + var19; + var16 = (var21 - var19) / var17 + ((var20 - var18) / var17 << 20); + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if(__et_f) { + if(var17 > 0) { + do { + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + var3 = var1[(var2 >>> 26) + (var2 & 4032)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + --var17; + } while(var17 > 0); + } + } else { + if(var17 > 0) { + do { + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + if((var3 = var1[(var2 >>> 26) + (var2 & 4032)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while(var17 > 0); + } + } + } else { + var23 = var5 - Rasterizer3D_clipMidX; + var9 += var23 * var12; + var10 += var13 * var23; + var11 += var23 * var14; + var22 = var11 >> 14; + if(var22 != 0) { + var18 = var9 / var22; + var19 = var10 / var22; + } else { + var18 = 0; + var19 = 0; + } + + var9 += var17 * var12; + var10 += var13 * var17; + var11 += var17 * var14; + var22 = var11 >> 14; + if(var22 != 0) { + var20 = var9 / var22; + var21 = var10 / var22; + } else { + var20 = 0; + var21 = 0; + } + + var2 = (var18 << 18) + var19; + var16 = (var21 - var19) / var17 + ((var20 - var18) / var17 << 18); + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if(__et_f) { + if(var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + var2 += var16; + --var17; + } while(var17 > 0); + } + } else { + if(var17 > 0) { + do { + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while(var17 > 0); + } + + var17 = var6 - var5 & 7; + if(var17 > 0) { + do { + if((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = (var15 * (var3 & 65280) & 16711680) + ((var3 & 16711935) * var15 & -16711936) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while(var17 > 0); + } + } + } + + } + } + + @ObfuscatedName("h") + static final int method3040(int var0, int var1) { + var1 = (var0 & 127) * var1 >> 7; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & 65408) + var1; + } + + @ObfuscatedName("b") + static final int method3039(int var0, int var1, int var2, int var3) { + return var0 * var2 + var3 * var1 >> 16; + } + + @ObfuscatedName("c") + static final int method3004(int var0, int var1, int var2, int var3) { + return var2 * var1 - var3 * var0 >> 16; + } + + @ObfuscatedName("p") + static final int method3005(int var0, int var1, int var2, int var3) { + return var0 * var2 - var3 * var1 >> 16; + } + + @ObfuscatedName("v") + static final int method3006(int var0, int var1, int var2, int var3) { + return var3 * var0 + var2 * var1 >> 16; + } + + @ObfuscatedName("ag") + static final int method3007(int var0, int var1, int var2, int var3) { + return var0 * var2 + var3 * var1 >> 16; + } + + @ObfuscatedName("aq") + static final int method3008(int var0, int var1, int var2, int var3) { + return var2 * var1 - var3 * var0 >> 16; + } +} diff --git a/rs-client/src/main/java/RawPcmStream.java b/rs-client/src/main/java/RawPcmStream.java new file mode 100644 index 0000000000..5f2fda9c74 --- /dev/null +++ b/rs-client/src/main/java/RawPcmStream.java @@ -0,0 +1,1592 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ds") +@Implements("RawPcmStream") +public class RawPcmStream extends PcmStream { + @ObfuscatedName("m") + @Export("__m") + int __m; + @ObfuscatedName("f") + @Export("__f") + int __f; + @ObfuscatedName("q") + @Export("__q") + int __q; + @ObfuscatedName("o") + @Export("__o") + int __o; + @ObfuscatedName("u") + @Export("__u") + int __u; + @ObfuscatedName("g") + @Export("__g") + int __g; + @ObfuscatedName("l") + @Export("__l") + int __l; + @ObfuscatedName("e") + @Export("__e") + int __e; + @ObfuscatedName("x") + @Export("start") + int start; + @ObfuscatedName("d") + @Export("end") + int end; + @ObfuscatedName("k") + @Export("__k") + boolean __k; + @ObfuscatedName("n") + @Export("surfaceOffsetY") + int __n; + @ObfuscatedName("i") + @Export("__i") + int __i; + @ObfuscatedName("a") + @Export("__a") + int __a; + @ObfuscatedName("z") + @Export("__z") + int __z; + + @ObfuscatedSignature( + signature = "(Lcx;III)V" + ) + RawPcmStream(RawSound var1, int var2, int var3, int var4) { + super.sound = var1; + this.start = var1.start; + this.end = var1.end; + this.__k = var1.__o; + this.__f = var2; + this.__q = var3; + this.__o = var4; + this.__m = 0; + this.__o_180(); + } + + @ObfuscatedSignature( + signature = "(Lcx;II)V" + ) + RawPcmStream(RawSound var1, int var2, int var3) { + super.sound = var1; + this.start = var1.start; + this.end = var1.end; + this.__k = var1.__o; + this.__f = var2; + this.__q = var3; + this.__o = 8192; + this.__m = 0; + this.__o_180(); + } + + @ObfuscatedName("o") + @Export("__o_180") + void __o_180() { + this.__u = this.__q; + this.__g = method2603(this.__q, this.__o); + this.__l = method2494(this.__q, this.__o); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected PcmStream firstSubStream() { + return null; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "()Ldc;" + ) + protected PcmStream nextSubStream() { + return null; + } + + @ObfuscatedName("l") + protected int __l_171() { + return this.__q == 0 && this.__n == 0?0:1; + } + + @ObfuscatedName("e") + public synchronized void __e_172(int[] var1, int var2, int var3) { + if(this.__q == 0 && this.__n == 0) { + this.__d_173(var3); + } else { + RawSound var4 = (RawSound)super.sound; + int var5 = this.start << 8; + int var6 = this.end << 8; + int var7 = var4.samples.length << 8; + int var8 = var6 - var5; + if(var8 <= 0) { + this.__e = 0; + } + + int var9 = var2; + var3 += var2; + if(this.__m < 0) { + if(this.__f <= 0) { + this.__b_189(); + this.remove(); + return; + } + + this.__m = 0; + } + + if(this.__m >= var7) { + if(this.__f >= 0) { + this.__b_189(); + this.remove(); + return; + } + + this.__m = var7 - 1; + } + + if(this.__e < 0) { + if(this.__k) { + if(this.__f < 0) { + var9 = this.__ap_203(var1, var2, var5, var3, var4.samples[this.start]); + if(this.__m >= var5) { + return; + } + + this.__m = var5 + var5 - 1 - this.__m; + this.__f = -this.__f; + } + + while(true) { + var9 = this.__ad_202(var1, var9, var6, var3, var4.samples[this.end - 1]); + if(this.__m < var6) { + return; + } + + this.__m = var6 + var6 - 1 - this.__m; + this.__f = -this.__f; + var9 = this.__ap_203(var1, var9, var5, var3, var4.samples[this.start]); + if(this.__m >= var5) { + return; + } + + this.__m = var5 + var5 - 1 - this.__m; + this.__f = -this.__f; + } + } else if(this.__f < 0) { + while(true) { + var9 = this.__ap_203(var1, var9, var5, var3, var4.samples[this.end - 1]); + if(this.__m >= var5) { + return; + } + + this.__m = var6 - 1 - (var6 - 1 - this.__m) % var8; + } + } else { + while(true) { + var9 = this.__ad_202(var1, var9, var6, var3, var4.samples[this.start]); + if(this.__m < var6) { + return; + } + + this.__m = var5 + (this.__m - var5) % var8; + } + } + } else { + if(this.__e > 0) { + if(this.__k) { + label140: { + if(this.__f < 0) { + var9 = this.__ap_203(var1, var2, var5, var3, var4.samples[this.start]); + if(this.__m >= var5) { + return; + } + + this.__m = var5 + var5 - 1 - this.__m; + this.__f = -this.__f; + if(--this.__e == 0) { + break label140; + } + } + + do { + var9 = this.__ad_202(var1, var9, var6, var3, var4.samples[this.end - 1]); + if(this.__m < var6) { + return; + } + + this.__m = var6 + var6 - 1 - this.__m; + this.__f = -this.__f; + if(--this.__e == 0) { + break; + } + + var9 = this.__ap_203(var1, var9, var5, var3, var4.samples[this.start]); + if(this.__m >= var5) { + return; + } + + this.__m = var5 + var5 - 1 - this.__m; + this.__f = -this.__f; + } while(--this.__e != 0); + } + } else { + int var10; + if(this.__f < 0) { + while(true) { + var9 = this.__ap_203(var1, var9, var5, var3, var4.samples[this.end - 1]); + if(this.__m >= var5) { + return; + } + + var10 = (var6 - 1 - this.__m) / var8; + if(var10 >= this.__e) { + this.__m += var8 * this.__e; + this.__e = 0; + break; + } + + this.__m += var8 * var10; + this.__e -= var10; + } + } else { + while(true) { + var9 = this.__ad_202(var1, var9, var6, var3, var4.samples[this.start]); + if(this.__m < var6) { + return; + } + + var10 = (this.__m - var5) / var8; + if(var10 >= this.__e) { + this.__m -= var8 * this.__e; + this.__e = 0; + break; + } + + this.__m -= var8 * var10; + this.__e -= var10; + } + } + } + } + + if(this.__f < 0) { + this.__ap_203(var1, var9, 0, var3, 0); + if(this.__m < 0) { + this.__m = -1; + this.__b_189(); + this.remove(); + } + } else { + this.__ad_202(var1, var9, var7, var3, 0); + if(this.__m >= var7) { + this.__m = var7; + this.__b_189(); + this.remove(); + } + } + + } + } + } + + @ObfuscatedName("x") + @Export("__x_181") + public synchronized void __x_181(int var1) { + this.__e = var1; + } + + @ObfuscatedName("d") + public synchronized void __d_173(int var1) { + if(this.__n > 0) { + if(var1 >= this.__n) { + if(this.__q == Integer.MIN_VALUE) { + this.__q = 0; + this.__l = 0; + this.__g = 0; + this.__u = 0; + this.remove(); + var1 = this.__n; + } + + this.__n = 0; + this.__o_180(); + } else { + this.__u += this.__i * var1; + this.__g += this.__a * var1; + this.__l += this.__z * var1; + this.__n -= var1; + } + } + + RawSound var2 = (RawSound)super.sound; + int var3 = this.start << 8; + int var4 = this.end << 8; + int var5 = var2.samples.length << 8; + int var6 = var4 - var3; + if(var6 <= 0) { + this.__e = 0; + } + + if(this.__m < 0) { + if(this.__f <= 0) { + this.__b_189(); + this.remove(); + return; + } + + this.__m = 0; + } + + if(this.__m >= var5) { + if(this.__f >= 0) { + this.__b_189(); + this.remove(); + return; + } + + this.__m = var5 - 1; + } + + this.__m += this.__f * var1; + if(this.__e < 0) { + if(!this.__k) { + if(this.__f < 0) { + if(this.__m >= var3) { + return; + } + + this.__m = var4 - 1 - (var4 - 1 - this.__m) % var6; + } else { + if(this.__m < var4) { + return; + } + + this.__m = var3 + (this.__m - var3) % var6; + } + + } else { + if(this.__f < 0) { + if(this.__m >= var3) { + return; + } + + this.__m = var3 + var3 - 1 - this.__m; + this.__f = -this.__f; + } + + while(this.__m >= var4) { + this.__m = var4 + var4 - 1 - this.__m; + this.__f = -this.__f; + if(this.__m >= var3) { + return; + } + + this.__m = var3 + var3 - 1 - this.__m; + this.__f = -this.__f; + } + + } + } else { + if(this.__e > 0) { + if(this.__k) { + label123: { + if(this.__f < 0) { + if(this.__m >= var3) { + return; + } + + this.__m = var3 + var3 - 1 - this.__m; + this.__f = -this.__f; + if(--this.__e == 0) { + break label123; + } + } + + do { + if(this.__m < var4) { + return; + } + + this.__m = var4 + var4 - 1 - this.__m; + this.__f = -this.__f; + if(--this.__e == 0) { + break; + } + + if(this.__m >= var3) { + return; + } + + this.__m = var3 + var3 - 1 - this.__m; + this.__f = -this.__f; + } while(--this.__e != 0); + } + } else { + int var7; + if(this.__f < 0) { + if(this.__m >= var3) { + return; + } + + var7 = (var4 - 1 - this.__m) / var6; + if(var7 < this.__e) { + this.__m += var6 * var7; + this.__e -= var7; + return; + } + + this.__m += var6 * this.__e; + this.__e = 0; + } else { + if(this.__m < var4) { + return; + } + + var7 = (this.__m - var3) / var6; + if(var7 < this.__e) { + this.__m -= var6 * var7; + this.__e -= var7; + return; + } + + this.__m -= var6 * this.__e; + this.__e = 0; + } + } + } + + if(this.__f < 0) { + if(this.__m < 0) { + this.__m = -1; + this.__b_189(); + this.remove(); + } + } else if(this.__m >= var5) { + this.__m = var5; + this.__b_189(); + this.remove(); + } + + } + } + + @ObfuscatedName("a") + @Export("__a_182") + public synchronized void __a_182(int var1) { + this.__j_184(var1 << 6, this.__t_186()); + } + + @ObfuscatedName("z") + @Export("__z_183") + synchronized void __z_183(int var1) { + this.__j_184(var1, this.__t_186()); + } + + @ObfuscatedName("j") + @Export("__j_184") + synchronized void __j_184(int var1, int var2) { + this.__q = var1; + this.__o = var2; + this.__n = 0; + this.__o_180(); + } + + @ObfuscatedName("s") + @Export("__s_185") + public synchronized int __s_185() { + return this.__q == Integer.MIN_VALUE?0:this.__q; + } + + @ObfuscatedName("t") + @Export("__t_186") + public synchronized int __t_186() { + return this.__o < 0?-1:this.__o; + } + + @ObfuscatedName("y") + @Export("__y_187") + public synchronized void __y_187(int var1) { + int var2 = ((RawSound)super.sound).samples.length << 8; + if(var1 < -1) { + var1 = -1; + } + + if(var1 > var2) { + var1 = var2; + } + + this.__m = var1; + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(Z)V", + garbageValue = "1" + ) + @Export("__h_188") + public synchronized void __h_188() { + this.__f = (this.__f ^ this.__f >> 31) + (this.__f >>> 31); + this.__f = -this.__f; + } + + @ObfuscatedName("b") + @Export("__b_189") + void __b_189() { + if(this.__n != 0) { + if(this.__q == Integer.MIN_VALUE) { + this.__q = 0; + } + + this.__n = 0; + this.__o_180(); + } + + } + + @ObfuscatedName("c") + @Export("__c_190") + public synchronized void __c_190(int var1, int var2) { + this.__p_191(var1, var2, this.__t_186()); + } + + @ObfuscatedName("p") + @Export("__p_191") + public synchronized void __p_191(int var1, int var2, int var3) { + if(var1 == 0) { + this.__j_184(var2, var3); + } else { + int var4 = method2603(var2, var3); + int var5 = method2494(var2, var3); + if(var4 == this.__g && var5 == this.__l) { + this.__n = 0; + } else { + int var6 = var2 - this.__u; + if(this.__u - var2 > var6) { + var6 = this.__u - var2; + } + + if(var4 - this.__g > var6) { + var6 = var4 - this.__g; + } + + if(this.__g - var4 > var6) { + var6 = this.__g - var4; + } + + if(var5 - this.__l > var6) { + var6 = var5 - this.__l; + } + + if(this.__l - var5 > var6) { + var6 = this.__l - var5; + } + + if(var1 > var6) { + var1 = var6; + } + + this.__n = var1; + this.__q = var2; + this.__o = var3; + this.__i = (var2 - this.__u) / var1; + this.__a = (var4 - this.__g) / var1; + this.__z = (var5 - this.__l) / var1; + } + } + } + + @ObfuscatedName("v") + @Export("__v_192") + public synchronized void __v_192(int var1) { + if(var1 == 0) { + this.__z_183(0); + this.remove(); + } else if(this.__g == 0 && this.__l == 0) { + this.__n = 0; + this.__q = 0; + this.__u = 0; + this.remove(); + } else { + int var2 = -this.__u; + if(this.__u > var2) { + var2 = this.__u; + } + + if(-this.__g > var2) { + var2 = -this.__g; + } + + if(this.__g > var2) { + var2 = this.__g; + } + + if(-this.__l > var2) { + var2 = -this.__l; + } + + if(this.__l > var2) { + var2 = this.__l; + } + + if(var1 > var2) { + var1 = var2; + } + + this.__n = var1; + this.__q = Integer.MIN_VALUE; + this.__i = -this.__u / var1; + this.__a = -this.__g / var1; + this.__z = -this.__l / var1; + } + } + + @ObfuscatedName("ah") + @Export("__ah_193") + public synchronized void __ah_193(int var1) { + if(this.__f < 0) { + this.__f = -var1; + } else { + this.__f = var1; + } + + } + + @ObfuscatedName("ab") + @Export("__ab_194") + public synchronized int __ab_194() { + return this.__f < 0?-this.__f:this.__f; + } + + @ObfuscatedName("ae") + @Export("__ae_195") + public boolean __ae_195() { + return this.__m < 0 || this.__m >= ((RawSound)super.sound).samples.length << 8; + } + + @ObfuscatedName("at") + @Export("__at_196") + public boolean __at_196() { + return this.__n != 0; + } + + @ObfuscatedName("ad") + @Export("__ad_202") + int __ad_202(int[] var1, int var2, int var3, int var4, int var5) { + while(true) { + if(this.__n > 0) { + int var6 = var2 + this.__n; + if(var6 > var4) { + var6 = var4; + } + + this.__n += var2; + if(this.__f == 256 && (this.__m & 255) == 0) { + if(PcmPlayer.isStereo) { + var2 = method2533(0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, this.__a, this.__z, 0, var6, var3, this); + } else { + var2 = method2532(((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, this.__i, 0, var6, var3, this); + } + } else if(PcmPlayer.isStereo) { + var2 = method2504(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, this.__a, this.__z, 0, var6, var3, this, this.__f, var5); + } else { + var2 = method2536(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, this.__i, 0, var6, var3, this, this.__f, var5); + } + + this.__n -= var2; + if(this.__n != 0) { + return var2; + } + + if(!this.__au_204()) { + continue; + } + + return var4; + } + + if(this.__f == 256 && (this.__m & 255) == 0) { + if(PcmPlayer.isStereo) { + return method2525(0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, 0, var4, var3, this); + } + + return method2563(((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, 0, var4, var3, this); + } + + if(PcmPlayer.isStereo) { + return method2529(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, 0, var4, var3, this, this.__f, var5); + } + + return method2528(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, 0, var4, var3, this, this.__f, var5); + } + } + + @ObfuscatedName("ap") + @Export("__ap_203") + int __ap_203(int[] var1, int var2, int var3, int var4, int var5) { + while(true) { + if(this.__n > 0) { + int var6 = var2 + this.__n; + if(var6 > var4) { + var6 = var4; + } + + this.__n += var2; + if(this.__f == -256 && (this.__m & 255) == 0) { + if(PcmPlayer.isStereo) { + var2 = method2547(0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, this.__a, this.__z, 0, var6, var3, this); + } else { + var2 = method2534(((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, this.__i, 0, var6, var3, this); + } + } else if(PcmPlayer.isStereo) { + var2 = method2624(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, this.__a, this.__z, 0, var6, var3, this, this.__f, var5); + } else { + var2 = method2538(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, this.__i, 0, var6, var3, this, this.__f, var5); + } + + this.__n -= var2; + if(this.__n != 0) { + return var2; + } + + if(!this.__au_204()) { + continue; + } + + return var4; + } + + if(this.__f == -256 && (this.__m & 255) == 0) { + if(PcmPlayer.isStereo) { + return method2496(0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, 0, var4, var3, this); + } + + return method2636(((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, 0, var4, var3, this); + } + + if(PcmPlayer.isStereo) { + return method2531(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__g, this.__l, 0, var4, var3, this, this.__f, var5); + } + + return method2509(0, 0, ((RawSound)super.sound).samples, var1, this.__m, var2, this.__u, 0, var4, var3, this, this.__f, var5); + } + } + + @ObfuscatedName("az") + @Export("__az_179") + int __az_179() { + int var1 = this.__u * 3 >> 6; + var1 = (var1 ^ var1 >> 31) + (var1 >>> 31); + if(this.__e == 0) { + var1 -= var1 * this.__m / (((RawSound)super.sound).samples.length << 8); + } else if(this.__e >= 0) { + var1 -= var1 * this.start / ((RawSound)super.sound).samples.length; + } + + return var1 > 255?255:var1; + } + + @ObfuscatedName("au") + @Export("__au_204") + boolean __au_204() { + int var1 = this.__q; + int var2; + int var3; + if(var1 == Integer.MIN_VALUE) { + var3 = 0; + var2 = 0; + var1 = 0; + } else { + var2 = method2603(var1, this.__o); + var3 = method2494(var1, this.__o); + } + + if(var1 == this.__u && var2 == this.__g && var3 == this.__l) { + if(this.__q == Integer.MIN_VALUE) { + this.__q = 0; + this.__l = 0; + this.__g = 0; + this.__u = 0; + this.remove(); + return true; + } else { + this.__o_180(); + return false; + } + } else { + if(this.__u < var1) { + this.__i = 1; + this.__n = var1 - this.__u; + } else if(this.__u > var1) { + this.__i = -1; + this.__n = this.__u - var1; + } else { + this.__i = 0; + } + + if(this.__g < var2) { + this.__a = 1; + if(this.__n == 0 || this.__n > var2 - this.__g) { + this.__n = var2 - this.__g; + } + } else if(this.__g > var2) { + this.__a = -1; + if(this.__n == 0 || this.__n > this.__g - var2) { + this.__n = this.__g - var2; + } + } else { + this.__a = 0; + } + + if(this.__l < var3) { + this.__z = 1; + if(this.__n == 0 || this.__n > var3 - this.__l) { + this.__n = var3 - this.__l; + } + } else if(this.__l > var3) { + this.__z = -1; + if(this.__n == 0 || this.__n > this.__l - var3) { + this.__n = this.__l - var3; + } + } else { + this.__z = 0; + } + + return false; + } + } + + @ObfuscatedName("m") + static int method2603(int var0, int var1) { + return var1 < 0?var0:(int)((double)var0 * Math.sqrt((double)(16384 - var1) * 1.220703125E-4D) + 0.5D); + } + + @ObfuscatedName("f") + static int method2494(int var0, int var1) { + return var1 < 0?-var0:(int)((double)var0 * Math.sqrt((double)var1 * 1.220703125E-4D) + 0.5D); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lcx;II)Lds;" + ) + public static RawPcmStream method2497(RawSound var0, int var1, int var2) { + return var0.samples != null && var0.samples.length != 0?new RawPcmStream(var0, (int)((long)var0.sampleRate * 256L * (long)var1 / (long)(class309.PcmPlayer_sampleRate * 100)), var2 << 6):null; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lcx;III)Lds;" + ) + public static RawPcmStream method2524(RawSound var0, int var1, int var2, int var3) { + return var0.samples != null && var0.samples.length != 0?new RawPcmStream(var0, var1, var2, var3):null; + } + + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "([B[IIIIIIILds;)I" + ) + static int method2563(byte[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, RawPcmStream var8) { + var2 >>= 8; + var7 >>= 8; + var4 <<= 2; + if((var5 = var3 + var7 - var2) > var6) { + var5 = var6; + } + + int var10001; + for(var5 -= 3; var3 < var5; var1[var10001] += var0[var2++] * var4) { + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var10001 = var3++; + } + + for(var5 += 3; var3 < var5; var1[var10001] += var0[var2++] * var4) { + var10001 = var3++; + } + + var8.__m = var2 << 8; + return var3; + } + + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "(I[B[IIIIIIIILds;)I" + ) + static int method2525(int var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, RawPcmStream var10) { + var3 >>= 8; + var9 >>= 8; + var5 <<= 2; + var6 <<= 2; + if((var7 = var4 + var9 - var3) > var8) { + var7 = var8; + } + + var4 <<= 1; + var7 <<= 1; + + int var10001; + byte var11; + for(var7 -= 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + for(var7 += 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + var10.__m = var3 << 8; + return var4 >> 1; + } + + @ObfuscatedName("ax") + @ObfuscatedSignature( + signature = "([B[IIIIIIILds;)I" + ) + static int method2636(byte[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, RawPcmStream var8) { + var2 >>= 8; + var7 >>= 8; + var4 <<= 2; + if((var5 = var3 + var2 - (var7 - 1)) > var6) { + var5 = var6; + } + + int var10001; + for(var5 -= 3; var3 < var5; var1[var10001] += var0[var2--] * var4) { + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var10001 = var3++; + } + + for(var5 += 3; var3 < var5; var1[var10001] += var0[var2--] * var4) { + var10001 = var3++; + } + + var8.__m = var2 << 8; + return var3; + } + + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "(I[B[IIIIIIIILds;)I" + ) + static int method2496(int var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, RawPcmStream var10) { + var3 >>= 8; + var9 >>= 8; + var5 <<= 2; + var6 <<= 2; + if((var7 = var3 + var4 - (var9 - 1)) > var8) { + var7 = var8; + } + + var4 <<= 1; + var7 <<= 1; + + int var10001; + byte var11; + for(var7 -= 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + for(var7 += 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + var10.__m = var3 << 8; + return var4 >> 1; + } + + @ObfuscatedName("ai") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIILds;II)I" + ) + static int method2528(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, RawPcmStream var10, int var11, int var12) { + if(var11 == 0 || (var7 = var5 + (var11 + (var9 - var4) - 257) / var11) > var8) { + var7 = var8; + } + + byte var13; + int var10001; + while(var5 < var7) { + var1 = var4 >> 8; + var13 = var2[var1]; + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var2[var1 + 1] - var13) * (var4 & 255)) * var6 >> 6; + var4 += var11; + } + + if(var11 == 0 || (var7 = var5 + (var11 + (var9 - var4) - 1) / var11) > var8) { + var7 = var8; + } + + for(var1 = var12; var5 < var7; var4 += var11) { + var13 = var2[var4 >> 8]; + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var1 - var13) * (var4 & 255)) * var6 >> 6; + } + + var10.__m = var4; + return var5; + } + + @ObfuscatedName("ba") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIIILds;II)I" + ) + static int method2529(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, RawPcmStream var11, int var12, int var13) { + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12 - 257) / var12) > var9) { + var8 = var9; + } + + var5 <<= 1; + + byte var14; + int var10001; + for(var8 <<= 1; var5 < var8; var4 += var12) { + var1 = var4 >> 8; + var14 = var2[var1]; + var0 = (var14 << 8) + (var4 & 255) * (var2[var1 + 1] - var14); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + if(var12 == 0 || (var8 = (var5 >> 1) + (var10 - var4 + var12 - 1) / var12) > var9) { + var8 = var9; + } + + var8 <<= 1; + + for(var1 = var13; var5 < var8; var4 += var12) { + var14 = var2[var4 >> 8]; + var0 = (var14 << 8) + (var1 - var14) * (var4 & 255); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + var11.__m = var4; + return var5 >> 1; + } + + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIILds;II)I" + ) + static int method2509(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, RawPcmStream var10, int var11, int var12) { + if(var11 == 0 || (var7 = var5 + (var11 + (var9 + 256 - var4)) / var11) > var8) { + var7 = var8; + } + + int var10001; + while(var5 < var7) { + var1 = var4 >> 8; + byte var13 = var2[var1 - 1]; + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var2[var1] - var13) * (var4 & 255)) * var6 >> 6; + var4 += var11; + } + + if(var11 == 0 || (var7 = var5 + (var11 + (var9 - var4)) / var11) > var8) { + var7 = var8; + } + + var0 = var12; + + for(var1 = var11; var5 < var7; var4 += var1) { + var10001 = var5++; + var3[var10001] += ((var0 << 8) + (var2[var4 >> 8] - var0) * (var4 & 255)) * var6 >> 6; + } + + var10.__m = var4; + return var5; + } + + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIIILds;II)I" + ) + static int method2531(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, RawPcmStream var11, int var12, int var13) { + if(var12 == 0 || (var8 = var5 + (var10 + 256 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + var5 <<= 1; + + int var10001; + for(var8 <<= 1; var5 < var8; var4 += var12) { + var1 = var4 >> 8; + byte var14 = var2[var1 - 1]; + var0 = (var2[var1] - var14) * (var4 & 255) + (var14 << 8); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + if(var12 == 0 || (var8 = (var5 >> 1) + (var10 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + var8 <<= 1; + + for(var1 = var13; var5 < var8; var4 += var12) { + var0 = (var1 << 8) + (var4 & 255) * (var2[var4 >> 8] - var1); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + var11.__m = var4; + return var5 >> 1; + } + + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "([B[IIIIIIIILds;)I" + ) + static int method2532(byte[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, RawPcmStream var9) { + var2 >>= 8; + var8 >>= 8; + var4 <<= 2; + var5 <<= 2; + if((var6 = var3 + var8 - var2) > var7) { + var6 = var7; + } + + var9.__g += var9.__a * (var6 - var3); + var9.__l += var9.__z * (var6 - var3); + + int var10001; + for(var6 -= 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + } + + for(var6 += 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + } + + var9.__u = var4 >> 2; + var9.__m = var2 << 8; + return var3; + } + + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "(I[B[IIIIIIIIIILds;)I" + ) + static int method2533(int var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, RawPcmStream var12) { + var3 >>= 8; + var11 >>= 8; + var5 <<= 2; + var6 <<= 2; + var7 <<= 2; + var8 <<= 2; + if((var9 = var11 + var4 - var3) > var10) { + var9 = var10; + } + + var12.__u += var12.__i * (var9 - var4); + var4 <<= 1; + var9 <<= 1; + + byte var13; + int var10001; + for(var9 -= 6; var4 < var9; var6 += var8) { + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + for(var9 += 6; var4 < var9; var6 += var8) { + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + var12.__g = var5 >> 2; + var12.__l = var6 >> 2; + var12.__m = var3 << 8; + return var4 >> 1; + } + + @ObfuscatedName("bk") + @ObfuscatedSignature( + signature = "([B[IIIIIIIILds;)I" + ) + static int method2534(byte[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, RawPcmStream var9) { + var2 >>= 8; + var8 >>= 8; + var4 <<= 2; + var5 <<= 2; + if((var6 = var3 + var2 - (var8 - 1)) > var7) { + var6 = var7; + } + + var9.__g += var9.__a * (var6 - var3); + var9.__l += var9.__z * (var6 - var3); + + int var10001; + for(var6 -= 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + } + + for(var6 += 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + } + + var9.__u = var4 >> 2; + var9.__m = var2 << 8; + return var3; + } + + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "(I[B[IIIIIIIIIILds;)I" + ) + static int method2547(int var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, RawPcmStream var12) { + var3 >>= 8; + var11 >>= 8; + var5 <<= 2; + var6 <<= 2; + var7 <<= 2; + var8 <<= 2; + if((var9 = var3 + var4 - (var11 - 1)) > var10) { + var9 = var10; + } + + var12.__u += var12.__i * (var9 - var4); + var4 <<= 1; + var9 <<= 1; + + byte var13; + int var10001; + for(var9 -= 6; var4 < var9; var6 += var8) { + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + for(var9 += 6; var4 < var9; var6 += var8) { + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + var12.__g = var5 >> 2; + var12.__l = var6 >> 2; + var12.__m = var3 << 8; + return var4 >> 1; + } + + @ObfuscatedName("bc") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIIILds;II)I" + ) + static int method2536(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, RawPcmStream var11, int var12, int var13) { + var11.__g -= var11.__a * var5; + var11.__l -= var11.__z * var5; + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12 - 257) / var12) > var9) { + var8 = var9; + } + + byte var14; + int var10001; + while(var5 < var8) { + var1 = var4 >> 8; + var14 = var2[var1]; + var10001 = var5++; + var3[var10001] += ((var14 << 8) + (var2[var1 + 1] - var14) * (var4 & 255)) * var6 >> 6; + var6 += var7; + var4 += var12; + } + + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12 - 1) / var12) > var9) { + var8 = var9; + } + + for(var1 = var13; var5 < var8; var4 += var12) { + var14 = var2[var4 >> 8]; + var10001 = var5++; + var3[var10001] += ((var14 << 8) + (var1 - var14) * (var4 & 255)) * var6 >> 6; + var6 += var7; + } + + var11.__g += var11.__a * var5; + var11.__l += var11.__z * var5; + var11.__u = var6; + var11.__m = var4; + return var5; + } + + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIIIIILds;II)I" + ) + static int method2504(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, RawPcmStream var13, int var14, int var15) { + var13.__u -= var5 * var13.__i; + if(var14 == 0 || (var10 = var5 + (var12 - var4 + var14 - 257) / var14) > var11) { + var10 = var11; + } + + var5 <<= 1; + + byte var16; + int var10001; + for(var10 <<= 1; var5 < var10; var4 += var14) { + var1 = var4 >> 8; + var16 = var2[var1]; + var0 = (var16 << 8) + (var4 & 255) * (var2[var1 + 1] - var16); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + if(var14 == 0 || (var10 = (var5 >> 1) + (var12 - var4 + var14 - 1) / var14) > var11) { + var10 = var11; + } + + var10 <<= 1; + + for(var1 = var15; var5 < var10; var4 += var14) { + var16 = var2[var4 >> 8]; + var0 = (var16 << 8) + (var1 - var16) * (var4 & 255); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + var5 >>= 1; + var13.__u += var13.__i * var5; + var13.__g = var6; + var13.__l = var7; + var13.__m = var4; + return var5; + } + + @ObfuscatedName("bx") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIIILds;II)I" + ) + static int method2538(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, RawPcmStream var11, int var12, int var13) { + var11.__g -= var11.__a * var5; + var11.__l -= var11.__z * var5; + if(var12 == 0 || (var8 = var5 + (var10 + 256 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + int var10001; + while(var5 < var8) { + var1 = var4 >> 8; + byte var14 = var2[var1 - 1]; + var10001 = var5++; + var3[var10001] += ((var14 << 8) + (var2[var1] - var14) * (var4 & 255)) * var6 >> 6; + var6 += var7; + var4 += var12; + } + + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + var0 = var13; + + for(var1 = var12; var5 < var8; var4 += var1) { + var10001 = var5++; + var3[var10001] += ((var0 << 8) + (var2[var4 >> 8] - var0) * (var4 & 255)) * var6 >> 6; + var6 += var7; + } + + var11.__g += var11.__a * var5; + var11.__l += var11.__z * var5; + var11.__u = var6; + var11.__m = var4; + return var5; + } + + @ObfuscatedName("by") + @ObfuscatedSignature( + signature = "(II[B[IIIIIIIIIILds;II)I" + ) + static int method2624(int var0, int var1, byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, RawPcmStream var13, int var14, int var15) { + var13.__u -= var5 * var13.__i; + if(var14 == 0 || (var10 = var5 + (var12 + 256 - var4 + var14) / var14) > var11) { + var10 = var11; + } + + var5 <<= 1; + + int var10001; + for(var10 <<= 1; var5 < var10; var4 += var14) { + var1 = var4 >> 8; + byte var16 = var2[var1 - 1]; + var0 = (var2[var1] - var16) * (var4 & 255) + (var16 << 8); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + if(var14 == 0 || (var10 = (var5 >> 1) + (var12 - var4 + var14) / var14) > var11) { + var10 = var11; + } + + var10 <<= 1; + + for(var1 = var15; var5 < var10; var4 += var14) { + var0 = (var1 << 8) + (var4 & 255) * (var2[var4 >> 8] - var1); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + var5 >>= 1; + var13.__u += var13.__i * var5; + var13.__g = var6; + var13.__l = var7; + var13.__m = var4; + return var5; + } +} diff --git a/rs-client/src/main/java/RawSound.java b/rs-client/src/main/java/RawSound.java new file mode 100644 index 0000000000..b9d8fd8a14 --- /dev/null +++ b/rs-client/src/main/java/RawSound.java @@ -0,0 +1,60 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cx") +@Implements("RawSound") +public class RawSound extends AbstractSound { + @ObfuscatedName("m") + @Export("sampleRate") + public int sampleRate; + @ObfuscatedName("f") + @Export("samples") + public byte[] samples; + @ObfuscatedName("q") + @Export("start") + public int start; + @ObfuscatedName("w") + @Export("end") + int end; + @ObfuscatedName("o") + @Export("__o") + public boolean __o; + + RawSound(int var1, byte[] var2, int var3, int var4) { + this.sampleRate = var1; + this.samples = var2; + this.start = var3; + this.end = var4; + } + + RawSound(int var1, byte[] var2, int var3, int var4, boolean var5) { + this.sampleRate = var1; + this.samples = var2; + this.start = var3; + this.end = var4; + this.__o = var5; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ldp;)Lcx;" + ) + @Export("resample") + public RawSound resample(Decimator var1) { + this.samples = var1.resample(this.samples); + this.sampleRate = var1.scaleRate(this.sampleRate); + if(this.start == this.end) { + this.start = this.end = var1.scalePosition(this.start); + } else { + this.start = var1.scalePosition(this.start); + this.end = var1.scalePosition(this.end); + if(this.start == this.end) { + --this.start; + } + } + + return this; + } +} diff --git a/rs-client/src/main/java/RectangleMode.java b/rs-client/src/main/java/RectangleMode.java new file mode 100644 index 0000000000..4a6349f170 --- /dev/null +++ b/rs-client/src/main/java/RectangleMode.java @@ -0,0 +1,68 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lj") +@Implements("RectangleMode") +public enum RectangleMode implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Llj;" + ) + @Export("__lj_m") + __lj_m(0, 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Llj;" + ) + @Export("__lj_f") + __lj_f(1, 1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Llj;" + ) + @Export("__lj_q") + __lj_q(2, 2); + @ObfuscatedName("d") + @Export("musicTrackBoolean") + public static boolean musicTrackBoolean; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1391612747 + ) + @Export("id") + public final int id; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1204297807 + ) + @Export("id2") + final int id2; + + RectangleMode(int var3, int var4) { + this.id = var3; + this.id2 = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.id2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Lir;ZB)V", + garbageValue = "1" + ) + public static void method6028(AbstractIndexCache var0, AbstractIndexCache var1, boolean var2) { + ObjectDefinition.ObjectDefinition_indexCache = var0; + ObjectDefinition.__jr_q = var1; + ObjectDefinition.ObjectDefinition_isLowDetail = var2; + } +} diff --git a/rs-client/src/main/java/ReflectionCheck.java b/rs-client/src/main/java/ReflectionCheck.java new file mode 100644 index 0000000000..db2469bb4d --- /dev/null +++ b/rs-client/src/main/java/ReflectionCheck.java @@ -0,0 +1,57 @@ +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lw") +@Implements("ReflectionCheck") +public class ReflectionCheck extends Node { + @ObfuscatedName("su") + @ObfuscatedSignature( + signature = "Lbf;" + ) + @Export("clientPreferences") + static ClientPreferences clientPreferences; + @ObfuscatedName("m") + @Export("arguments") + byte[][][] arguments; + @ObfuscatedName("f") + @Export("intReplaceValues") + int[] intReplaceValues; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1955146989 + ) + @Export("id") + int id; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1091722075 + ) + @Export("size") + int size; + @ObfuscatedName("o") + @Export("operations") + int[] operations; + @ObfuscatedName("u") + @Export("creationErrors") + int[] creationErrors; + @ObfuscatedName("g") + @Export("fields") + Field[] fields; + @ObfuscatedName("l") + @Export("methods") + Method[] methods; + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;II)Z", + garbageValue = "384237837" + ) + static boolean method5920(String var0, int var1) { + return FaceNormal.method3237(var0, var1, "openjs"); + } +} diff --git a/rs-client/src/main/java/RunException.java b/rs-client/src/main/java/RunException.java new file mode 100644 index 0000000000..1f11fe607a --- /dev/null +++ b/rs-client/src/main/java/RunException.java @@ -0,0 +1,70 @@ +import java.applet.Applet; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fx") +@Implements("RunException") +public class RunException extends RuntimeException { + @ObfuscatedName("m") + @Export("applet") + public static Applet applet; + @ObfuscatedName("f") + @Export("localPlayerName") + public static String localPlayerName; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -787495321 + ) + @Export("revision") + public static int revision; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 121013503 + ) + @Export("__fx_w") + public static int __fx_w; + @ObfuscatedName("o") + @Export("string") + String string; + @ObfuscatedName("u") + @Export("throwable") + Throwable throwable; + + RunException(Throwable var1, String var2) { + this.string = var2; + this.throwable = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Lgf;", + garbageValue = "1701309452" + ) + public static class190[] method3430() { + return new class190[]{class190.field2346, class190.field2352, class190.field2342, class190.field2341, class190.field2344, class190.field2345, class190.field2350, class190.field2347, class190.field2343, class190.field2349}; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2146928006" + ) + public static void method3431() { + Object var0 = IndexStoreActionHandler.IndexStoreActionHandler_lock; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_lock) { + if(IndexStoreActionHandler.__iv_q != 0) { + IndexStoreActionHandler.__iv_q = 1; + + try { + IndexStoreActionHandler.IndexStoreActionHandler_lock.wait(); + } catch (InterruptedException var3) { + ; + } + } + + } + } +} diff --git a/rs-client/src/main/java/Scene.java b/rs-client/src/main/java/Scene.java new file mode 100644 index 0000000000..c69f8c4a90 --- /dev/null +++ b/rs-client/src/main/java/Scene.java @@ -0,0 +1,2603 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("em") +@Implements("Scene") +public class Scene { + @ObfuscatedName("m") + @Export("Scene_isLowDetail") + public static boolean Scene_isLowDetail; + @ObfuscatedName("a") + @Export("tileUpdateCount") + static int tileUpdateCount; + @ObfuscatedName("z") + @Export("Scene_plane") + static int Scene_plane; + @ObfuscatedName("j") + @Export("Scene_drawnCount") + static int Scene_drawnCount; + @ObfuscatedName("s") + @Export("Scene_cameraXTileMin") + static int Scene_cameraXTileMin; + @ObfuscatedName("t") + @Export("Scene_cameraXTileMax") + static int Scene_cameraXTileMax; + @ObfuscatedName("y") + @Export("Scene_cameraYTileMin") + static int Scene_cameraYTileMin; + @ObfuscatedName("h") + @Export("Scene_cameraYTileMax") + static int Scene_cameraYTileMax; + @ObfuscatedName("b") + @Export("Scene_cameraXTile") + static int Scene_cameraXTile; + @ObfuscatedName("c") + @Export("Scene_cameraYTile") + static int Scene_cameraYTile; + @ObfuscatedName("r") + @Export("Scene_cameraX") + static int Scene_cameraX; + @ObfuscatedName("p") + @Export("Scene_cameraY") + static int Scene_cameraY; + @ObfuscatedName("v") + @Export("Scene_cameraZ") + static int Scene_cameraZ; + @ObfuscatedName("ag") + @Export("Scene_cameraPitchSine") + static int Scene_cameraPitchSine; + @ObfuscatedName("aq") + @Export("Scene_cameraPitchCosine") + static int Scene_cameraPitchCosine; + @ObfuscatedName("aj") + @Export("Scene_cameraYawSine") + static int Scene_cameraYawSine; + @ObfuscatedName("av") + @Export("Scene_cameraYawCosine") + static int Scene_cameraYawCosine; + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "[Leh;" + ) + @Export("Scene_gameObjects") + static GameObject[] Scene_gameObjects; + @ObfuscatedName("ac") + @Export("checkClick") + static boolean checkClick; + @ObfuscatedName("ay") + @Export("Scene_selectedPlane") + static int Scene_selectedPlane; + @ObfuscatedName("ah") + @Export("Scene_selectedScreenX") + static int Scene_selectedScreenX; + @ObfuscatedName("ak") + @Export("Scene_selectedScreenY") + static int Scene_selectedScreenY; + @ObfuscatedName("aw") + @Export("Scene_selectedX") + public static int Scene_selectedX; + @ObfuscatedName("al") + @Export("Scene_selectedY") + public static int Scene_selectedY; + @ObfuscatedName("ab") + @Export("__em_ab") + static boolean __em_ab; + @ObfuscatedName("ad") + @Export("__em_ad") + static int __em_ad; + @ObfuscatedName("ap") + @Export("Scene_planeOccluderCounts") + static int[] Scene_planeOccluderCounts; + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "[[Lee;" + ) + @Export("Scene_planeOccluders") + static Occluder[][] Scene_planeOccluders; + @ObfuscatedName("am") + @Export("Scene_currentOccludersCount") + static int Scene_currentOccludersCount; + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "[Lee;" + ) + @Export("Scene_currentOccluders") + static Occluder[] Scene_currentOccluders; + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("Scene_tilesDeque") + static NodeDeque Scene_tilesDeque; + @ObfuscatedName("au") + @Export("__em_au") + static final int[] __em_au; + @ObfuscatedName("ao") + @Export("__em_ao") + static final int[] __em_ao; + @ObfuscatedName("aa") + @Export("__em_aa") + static final int[] __em_aa; + @ObfuscatedName("ax") + @Export("__em_ax") + static final int[] __em_ax; + @ObfuscatedName("af") + @Export("__em_af") + static final int[] __em_af; + @ObfuscatedName("ai") + @Export("__em_ai") + static final int[] __em_ai; + @ObfuscatedName("ba") + @Export("__em_ba") + static final int[] __em_ba; + @ObfuscatedName("bc") + @Export("visibilityMap") + static boolean[][][][] visibilityMap; + @ObfuscatedName("bo") + @Export("visibleTiles") + static boolean[][] visibleTiles; + @ObfuscatedName("bx") + @Export("Scene_viewportXCenter") + static int Scene_viewportXCenter; + @ObfuscatedName("by") + @Export("Scene_viewportYCenter") + static int Scene_viewportYCenter; + @ObfuscatedName("bu") + @Export("Scene_viewportXMin") + static int Scene_viewportXMin; + @ObfuscatedName("bm") + @Export("Scene_viewportYMin") + static int Scene_viewportYMin; + @ObfuscatedName("bl") + @Export("Scene_viewportXMax") + static int Scene_viewportXMax; + @ObfuscatedName("br") + @Export("Scene_viewportYMax") + static int Scene_viewportYMax; + @ObfuscatedName("f") + @Export("planes") + int planes; + @ObfuscatedName("q") + @Export("xSize") + int xSize; + @ObfuscatedName("w") + @Export("ySize") + int ySize; + @ObfuscatedName("o") + @Export("tileHeights") + int[][][] tileHeights; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "[[[Ldj;" + ) + @Export("tiles") + Tile[][][] tiles; + @ObfuscatedName("g") + @Export("Scene_minPlane") + int Scene_minPlane; + @ObfuscatedName("l") + @Export("tempGameObjectsCount") + int tempGameObjectsCount; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "[Leh;" + ) + @Export("tempGameObjects") + GameObject[] tempGameObjects; + @ObfuscatedName("x") + @Export("__x") + int[][][] __x; + @ObfuscatedName("bk") + @Export("__bk") + int[][] __bk; + @ObfuscatedName("bd") + @Export("__bd") + int[][] __bd; + + static { + Scene_isLowDetail = true; + tileUpdateCount = 0; + Scene_plane = 0; + Scene_gameObjects = new GameObject[100]; + checkClick = false; + Scene_selectedPlane = 0; + Scene_selectedScreenX = 0; + Scene_selectedScreenY = 0; + Scene_selectedX = -1; + Scene_selectedY = -1; + __em_ab = false; + __em_ad = 4; + Scene_planeOccluderCounts = new int[__em_ad]; + Scene_planeOccluders = new Occluder[__em_ad][500]; + Scene_currentOccludersCount = 0; + Scene_currentOccluders = new Occluder[500]; + Scene_tilesDeque = new NodeDeque(); + __em_au = new int[]{19, 55, 38, 155, 255, 110, 137, 205, 76}; + __em_ao = new int[]{160, 192, 80, 96, 0, 144, 80, 48, 160}; + __em_aa = new int[]{76, 8, 137, 4, 0, 1, 38, 2, 19}; + __em_ax = new int[]{0, 0, 2, 0, 0, 2, 1, 1, 0}; + __em_af = new int[]{2, 0, 0, 2, 0, 0, 0, 4, 4}; + __em_ai = new int[]{0, 4, 4, 8, 0, 0, 8, 0, 0}; + __em_ba = new int[]{1, 1, 0, 0, 0, 8, 0, 0, 8}; + visibilityMap = new boolean[8][32][51][51]; + } + + public Scene(int var1, int var2, int var3, int[][][] var4) { + this.Scene_minPlane = 0; + this.tempGameObjectsCount = 0; + this.tempGameObjects = new GameObject[5000]; + this.__bk = new int[][]{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1}, {1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1}}; + this.__bd = new int[][]{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3}, {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, {3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12}}; + this.planes = var1; + this.xSize = var2; + this.ySize = var3; + this.tiles = new Tile[var1][var2][var3]; + this.__x = new int[var1][var2 + 1][var3 + 1]; + this.tileHeights = var4; + this.clear(); + } + + @ObfuscatedName("m") + @Export("clear") + public void clear() { + int var1; + int var2; + for(var1 = 0; var1 < this.planes; ++var1) { + for(var2 = 0; var2 < this.xSize; ++var2) { + for(int var3 = 0; var3 < this.ySize; ++var3) { + this.tiles[var1][var2][var3] = null; + } + } + } + + for(var1 = 0; var1 < __em_ad; ++var1) { + for(var2 = 0; var2 < Scene_planeOccluderCounts[var1]; ++var2) { + Scene_planeOccluders[var1][var2] = null; + } + + Scene_planeOccluderCounts[var1] = 0; + } + + for(var1 = 0; var1 < this.tempGameObjectsCount; ++var1) { + this.tempGameObjects[var1] = null; + } + + this.tempGameObjectsCount = 0; + + for(var1 = 0; var1 < Scene_gameObjects.length; ++var1) { + Scene_gameObjects[var1] = null; + } + + } + + @ObfuscatedName("f") + @Export("init") + public void init(int var1) { + this.Scene_minPlane = var1; + + for(int var2 = 0; var2 < this.xSize; ++var2) { + for(int var3 = 0; var3 < this.ySize; ++var3) { + if(this.tiles[var1][var2][var3] == null) { + this.tiles[var1][var2][var3] = new Tile(var1, var2, var3); + } + } + } + + } + + @ObfuscatedName("q") + @Export("setLinkBelow") + public void setLinkBelow(int var1, int var2) { + Tile var3 = this.tiles[0][var1][var2]; + + for(int var4 = 0; var4 < 3; ++var4) { + Tile var5 = this.tiles[var4][var1][var2] = this.tiles[var4 + 1][var1][var2]; + if(var5 != null) { + --var5.plane; + + for(int var6 = 0; var6 < var5.gameObjectsCount; ++var6) { + GameObject var7 = var5.gameObjects[var6]; + long var9 = var7.tag; + int var11 = (int)(var9 >>> 14 & 3L); + boolean var8 = var11 == 2; + if(var8 && var7.startX == var1 && var2 == var7.startY) { + --var7.plane; + } + } + } + } + + if(this.tiles[0][var1][var2] == null) { + this.tiles[0][var1][var2] = new Tile(0, var1, var2); + } + + this.tiles[0][var1][var2].linkedBelowTile = var3; + this.tiles[3][var1][var2] = null; + } + + @ObfuscatedName("o") + @Export("setTileMinPlane") + public void setTileMinPlane(int var1, int var2, int var3, int var4) { + Tile var5 = this.tiles[var1][var2][var3]; + if(var5 != null) { + this.tiles[var1][var2][var3].minPlane = var4; + } + } + + @ObfuscatedName("u") + @Export("addTile") + public void addTile(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18, int var19, int var20) { + TilePaint var21; + int var22; + if(var4 == 0) { + var21 = new TilePaint(var11, var12, var13, var14, -1, var19, false); + + for(var22 = var1; var22 >= 0; --var22) { + if(this.tiles[var22][var2][var3] == null) { + this.tiles[var22][var2][var3] = new Tile(var22, var2, var3); + } + } + + this.tiles[var1][var2][var3].paint = var21; + } else if(var4 != 1) { + TileModel var23 = new TileModel(var4, var5, var6, var2, var3, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20); + + for(var22 = var1; var22 >= 0; --var22) { + if(this.tiles[var22][var2][var3] == null) { + this.tiles[var22][var2][var3] = new Tile(var22, var2, var3); + } + } + + this.tiles[var1][var2][var3].model = var23; + } else { + var21 = new TilePaint(var15, var16, var17, var18, var6, var20, var8 == var7 && var7 == var9 && var10 == var7); + + for(var22 = var1; var22 >= 0; --var22) { + if(this.tiles[var22][var2][var3] == null) { + this.tiles[var22][var2][var3] = new Tile(var22, var2, var3); + } + } + + this.tiles[var1][var2][var3].paint = var21; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(IIIILex;JI)V" + ) + @Export("newFloorDecoration") + public void newFloorDecoration(int var1, int var2, int var3, int var4, Entity var5, long var6, int var8) { + if(var5 != null) { + FloorDecoration var9 = new FloorDecoration(); + var9.entity = var5; + var9.x = var2 * 128 + 64; + var9.y = var3 * 128 + 64; + var9.tileHeight = var4; + var9.tag = var6; + var9.flags = var8; + if(this.tiles[var1][var2][var3] == null) { + this.tiles[var1][var2][var3] = new Tile(var1, var2, var3); + } + + this.tiles[var1][var2][var3].floorDecoration = var9; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(IIIILex;JLex;Lex;)V" + ) + @Export("newGroundItemPile") + public void newGroundItemPile(int var1, int var2, int var3, int var4, Entity var5, long var6, Entity var8, Entity var9) { + GroundItemPile var10 = new GroundItemPile(); + var10.first = var5; + var10.x = var2 * 128 + 64; + var10.y = var3 * 128 + 64; + var10.tileHeight = var4; + var10.tag = var6; + var10.second = var8; + var10.third = var9; + int var11 = 0; + Tile var12 = this.tiles[var1][var2][var3]; + if(var12 != null) { + for(int var13 = 0; var13 < var12.gameObjectsCount; ++var13) { + if((var12.gameObjects[var13].flags & 256) == 256 && var12.gameObjects[var13].entity instanceof Model) { + Model var14 = (Model)var12.gameObjects[var13].entity; + var14.calculateBoundsCylinder(); + if(var14.height > var11) { + var11 = var14.height; + } + } + } + } + + var10.height = var11; + if(this.tiles[var1][var2][var3] == null) { + this.tiles[var1][var2][var3] = new Tile(var1, var2, var3); + } + + this.tiles[var1][var2][var3].groundItemPile = var10; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(IIIILex;Lex;IIJI)V" + ) + @Export("newBoundaryObject") + public void newBoundaryObject(int var1, int var2, int var3, int var4, Entity var5, Entity var6, int var7, int var8, long var9, int var11) { + if(var5 != null || var6 != null) { + BoundaryObject var12 = new BoundaryObject(); + var12.tag = var9; + var12.flags = var11; + var12.x = var2 * 128 + 64; + var12.y = var3 * 128 + 64; + var12.tileHeight = var4; + var12.entity1 = var5; + var12.entity2 = var6; + var12.orientationA = var7; + var12.orientationB = var8; + + for(int var13 = var1; var13 >= 0; --var13) { + if(this.tiles[var13][var2][var3] == null) { + this.tiles[var13][var2][var3] = new Tile(var13, var2, var3); + } + } + + this.tiles[var1][var2][var3].boundaryObject = var12; + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(IIIILex;Lex;IIIIJI)V" + ) + @Export("newWallDecoration") + public void newWallDecoration(int var1, int var2, int var3, int var4, Entity var5, Entity var6, int var7, int var8, int var9, int var10, long var11, int var13) { + if(var5 != null) { + WallDecoration var14 = new WallDecoration(); + var14.tag = var11; + var14.flags = var13; + var14.x = var2 * 128 + 64; + var14.y = var3 * 128 + 64; + var14.tileHeight = var4; + var14.entity1 = var5; + var14.entity2 = var6; + var14.orientation = var7; + var14.int7 = var8; + var14.xOffset = var9; + var14.yOffset = var10; + + for(int var15 = var1; var15 >= 0; --var15) { + if(this.tiles[var15][var2][var3] == null) { + this.tiles[var15][var2][var3] = new Tile(var15, var2, var3); + } + } + + this.tiles[var1][var2][var3].wallDecoration = var14; + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(IIIIIILex;IJI)Z" + ) + @Export("__d_238") + public boolean __d_238(int var1, int var2, int var3, int var4, int var5, int var6, Entity var7, int var8, long var9, int var11) { + if(var7 == null) { + return true; + } else { + int var12 = var5 * 64 + var2 * 128; + int var13 = var6 * 64 + var3 * 128; + return this.newGameObject(var1, var2, var3, var5, var6, var12, var13, var4, var7, var8, false, var9, var11); + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(IIIIILex;IJZ)Z" + ) + @Export("__a_239") + public boolean __a_239(int var1, int var2, int var3, int var4, int var5, Entity var6, int var7, long var8, boolean var10) { + if(var6 == null) { + return true; + } else { + int var11 = var2 - var5; + int var12 = var3 - var5; + int var13 = var5 + var2; + int var14 = var3 + var5; + if(var10) { + if(var7 > 640 && var7 < 1408) { + var14 += 128; + } + + if(var7 > 1152 && var7 < 1920) { + var13 += 128; + } + + if(var7 > 1664 || var7 < 384) { + var12 -= 128; + } + + if(var7 > 128 && var7 < 896) { + var11 -= 128; + } + } + + var11 /= 128; + var12 /= 128; + var13 /= 128; + var14 /= 128; + return this.newGameObject(var1, var11, var12, var13 - var11 + 1, var14 - var12 + 1, var2, var3, var4, var6, var7, true, var8, 0); + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(IIIIILex;IJIIII)Z" + ) + @Export("__z_240") + public boolean __z_240(int var1, int var2, int var3, int var4, int var5, Entity var6, int var7, long var8, int var10, int var11, int var12, int var13) { + return var6 == null?true:this.newGameObject(var1, var10, var11, var12 - var10 + 1, var13 - var11 + 1, var2, var3, var4, var6, var7, true, var8, 0); + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(IIIIIIIILex;IZJI)Z" + ) + @Export("newGameObject") + boolean newGameObject(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, Entity var9, int var10, boolean var11, long var12, int var14) { + int var16; + for(int var15 = var2; var15 < var2 + var4; ++var15) { + for(var16 = var3; var16 < var3 + var5; ++var16) { + if(var15 < 0 || var16 < 0 || var15 >= this.xSize || var16 >= this.ySize) { + return false; + } + + Tile var17 = this.tiles[var1][var15][var16]; + if(var17 != null && var17.gameObjectsCount >= 5) { + return false; + } + } + } + + GameObject var21 = new GameObject(); + var21.tag = var12; + var21.flags = var14; + var21.plane = var1; + var21.centerX = var6; + var21.centerY = var7; + var21.height = var8; + var21.entity = var9; + var21.orientation = var10; + var21.startX = var2; + var21.startY = var3; + var21.endX = var2 + var4 - 1; + var21.endY = var3 + var5 - 1; + + for(var16 = var2; var16 < var2 + var4; ++var16) { + for(int var22 = var3; var22 < var3 + var5; ++var22) { + int var18 = 0; + if(var16 > var2) { + ++var18; + } + + if(var16 < var2 + var4 - 1) { + var18 += 4; + } + + if(var22 > var3) { + var18 += 8; + } + + if(var22 < var3 + var5 - 1) { + var18 += 2; + } + + for(int var19 = var1; var19 >= 0; --var19) { + if(this.tiles[var19][var16][var22] == null) { + this.tiles[var19][var16][var22] = new Tile(var19, var16, var22); + } + } + + Tile var23 = this.tiles[var1][var16][var22]; + var23.gameObjects[var23.gameObjectsCount] = var21; + var23.gameObjectEdgeMasks[var23.gameObjectsCount] = var18; + var23.gameObjectsEdgeMask |= var18; + ++var23.gameObjectsCount; + } + } + + if(var11) { + this.tempGameObjects[this.tempGameObjectsCount++] = var21; + } + + return true; + } + + @ObfuscatedName("s") + @Export("clearTempGameObjects") + public void clearTempGameObjects() { + for(int var1 = 0; var1 < this.tempGameObjectsCount; ++var1) { + GameObject var2 = this.tempGameObjects[var1]; + this.removeGameObject(var2); + this.tempGameObjects[var1] = null; + } + + this.tempGameObjectsCount = 0; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(Leh;)V" + ) + @Export("removeGameObject") + void removeGameObject(GameObject var1) { + for(int var2 = var1.startX; var2 <= var1.endX; ++var2) { + for(int var3 = var1.startY; var3 <= var1.endY; ++var3) { + Tile var4 = this.tiles[var1.plane][var2][var3]; + if(var4 != null) { + int var5; + for(var5 = 0; var5 < var4.gameObjectsCount; ++var5) { + if(var4.gameObjects[var5] == var1) { + --var4.gameObjectsCount; + + for(int var6 = var5; var6 < var4.gameObjectsCount; ++var6) { + var4.gameObjects[var6] = var4.gameObjects[var6 + 1]; + var4.gameObjectEdgeMasks[var6] = var4.gameObjectEdgeMasks[var6 + 1]; + } + + var4.gameObjects[var4.gameObjectsCount] = null; + break; + } + } + + var4.gameObjectsEdgeMask = 0; + + for(var5 = 0; var5 < var4.gameObjectsCount; ++var5) { + var4.gameObjectsEdgeMask |= var4.gameObjectEdgeMasks[var5]; + } + } + } + } + + } + + @ObfuscatedName("y") + @Export("__y_241") + public void __y_241(int var1, int var2, int var3, int var4) { + Tile var5 = this.tiles[var1][var2][var3]; + if(var5 != null) { + WallDecoration var6 = var5.wallDecoration; + if(var6 != null) { + var6.xOffset = var4 * var6.xOffset / 16; + var6.yOffset = var4 * var6.yOffset / 16; + } + } + } + + @ObfuscatedName("h") + @Export("removeBoundaryObject") + public void removeBoundaryObject(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 != null) { + var4.boundaryObject = null; + } + } + + @ObfuscatedName("b") + @Export("removeWallDecoration") + public void removeWallDecoration(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 != null) { + var4.wallDecoration = null; + } + } + + @ObfuscatedName("c") + @Export("__c_242") + public void __c_242(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 != null) { + for(int var5 = 0; var5 < var4.gameObjectsCount; ++var5) { + GameObject var6 = var4.gameObjects[var5]; + long var8 = var6.tag; + int var10 = (int)(var8 >>> 14 & 3L); + boolean var7 = var10 == 2; + if(var7 && var2 == var6.startX && var3 == var6.startY) { + this.removeGameObject(var6); + return; + } + } + + } + } + + @ObfuscatedName("p") + @Export("removeFloorDecoration") + public void removeFloorDecoration(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 != null) { + var4.floorDecoration = null; + } + } + + @ObfuscatedName("v") + @Export("removeGroundItemPile") + public void removeGroundItemPile(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 != null) { + var4.groundItemPile = null; + } + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(III)Lej;" + ) + @Export("getBoundaryObject") + public BoundaryObject getBoundaryObject(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + return var4 == null?null:var4.boundaryObject; + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(III)Leq;" + ) + @Export("getWallDecoration") + public WallDecoration getWallDecoration(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + return var4 == null?null:var4.wallDecoration; + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(III)Leh;" + ) + @Export("__aj_243") + public GameObject __aj_243(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 == null) { + return null; + } else { + for(int var5 = 0; var5 < var4.gameObjectsCount; ++var5) { + GameObject var6 = var4.gameObjects[var5]; + long var8 = var6.tag; + int var10 = (int)(var8 >>> 14 & 3L); + boolean var7 = var10 == 2; + if(var7 && var2 == var6.startX && var3 == var6.startY) { + return var6; + } + } + + return null; + } + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(III)Ldo;" + ) + @Export("getFloorDecoration") + public FloorDecoration getFloorDecoration(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + return var4 != null && var4.floorDecoration != null?var4.floorDecoration:null; + } + + @ObfuscatedName("ar") + @Export("__ar_244") + public long __ar_244(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + return var4 != null && var4.boundaryObject != null?var4.boundaryObject.tag:0L; + } + + @ObfuscatedName("ac") + @Export("__ac_245") + public long __ac_245(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + return var4 != null && var4.wallDecoration != null?var4.wallDecoration.tag:0L; + } + + @ObfuscatedName("ay") + @Export("__ay_246") + public long __ay_246(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + if(var4 == null) { + return 0L; + } else { + for(int var5 = 0; var5 < var4.gameObjectsCount; ++var5) { + GameObject var6 = var4.gameObjects[var5]; + long var8 = var6.tag; + int var10 = (int)(var8 >>> 14 & 3L); + boolean var7 = var10 == 2; + if(var7 && var2 == var6.startX && var3 == var6.startY) { + return var6.tag; + } + } + + return 0L; + } + } + + @ObfuscatedName("ah") + @Export("getFloorDecorationTag") + public long getFloorDecorationTag(int var1, int var2, int var3) { + Tile var4 = this.tiles[var1][var2][var3]; + return var4 != null && var4.floorDecoration != null?var4.floorDecoration.tag:0L; + } + + @ObfuscatedName("ak") + @Export("getObjectFlags") + public int getObjectFlags(int var1, int var2, int var3, long var4) { + Tile var6 = this.tiles[var1][var2][var3]; + if(var6 == null) { + return -1; + } else if(var6.boundaryObject != null && var6.boundaryObject.tag == var4) { + return var6.boundaryObject.flags & 255; + } else if(var6.wallDecoration != null && var6.wallDecoration.tag == var4) { + return var6.wallDecoration.flags & 255; + } else if(var6.floorDecoration != null && var6.floorDecoration.tag == var4) { + return var6.floorDecoration.flags & 255; + } else { + for(int var7 = 0; var7 < var6.gameObjectsCount; ++var7) { + if(var6.gameObjects[var7].tag == var4) { + return var6.gameObjects[var7].flags & 255; + } + } + + return -1; + } + } + + @ObfuscatedName("aw") + @Export("__aw_247") + public void __aw_247(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.planes; ++var4) { + for(int var5 = 0; var5 < this.xSize; ++var5) { + for(int var6 = 0; var6 < this.ySize; ++var6) { + Tile var7 = this.tiles[var4][var5][var6]; + if(var7 != null) { + BoundaryObject var8 = var7.boundaryObject; + ModelData var10; + if(var8 != null && var8.entity1 instanceof ModelData) { + ModelData var9 = (ModelData)var8.entity1; + this.__ab_249(var9, var4, var5, var6, 1, 1); + if(var8.entity2 instanceof ModelData) { + var10 = (ModelData)var8.entity2; + this.__ab_249(var10, var4, var5, var6, 1, 1); + ModelData.method2800(var9, var10, 0, 0, 0, false); + var8.entity2 = var10.toModel(var10.__aq, var10.__aj, var1, var2, var3); + } + + var8.entity1 = var9.toModel(var9.__aq, var9.__aj, var1, var2, var3); + } + + for(int var12 = 0; var12 < var7.gameObjectsCount; ++var12) { + GameObject var14 = var7.gameObjects[var12]; + if(var14 != null && var14.entity instanceof ModelData) { + ModelData var11 = (ModelData)var14.entity; + this.__ab_249(var11, var4, var5, var6, var14.endX - var14.startX + 1, var14.endY - var14.startY + 1); + var14.entity = var11.toModel(var11.__aq, var11.__aj, var1, var2, var3); + } + } + + FloorDecoration var13 = var7.floorDecoration; + if(var13 != null && var13.entity instanceof ModelData) { + var10 = (ModelData)var13.entity; + this.__al_248(var10, var4, var5, var6); + var13.entity = var10.toModel(var10.__aq, var10.__aj, var1, var2, var3); + } + } + } + } + } + + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(Ldw;III)V" + ) + @Export("__al_248") + void __al_248(ModelData var1, int var2, int var3, int var4) { + Tile var5; + ModelData var6; + if(var3 < this.xSize) { + var5 = this.tiles[var2][var3 + 1][var4]; + if(var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { + var6 = (ModelData)var5.floorDecoration.entity; + ModelData.method2800(var1, var6, 128, 0, 0, true); + } + } + + if(var4 < this.xSize) { + var5 = this.tiles[var2][var3][var4 + 1]; + if(var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { + var6 = (ModelData)var5.floorDecoration.entity; + ModelData.method2800(var1, var6, 0, 0, 128, true); + } + } + + if(var3 < this.xSize && var4 < this.ySize) { + var5 = this.tiles[var2][var3 + 1][var4 + 1]; + if(var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { + var6 = (ModelData)var5.floorDecoration.entity; + ModelData.method2800(var1, var6, 128, 0, 128, true); + } + } + + if(var3 < this.xSize && var4 > 0) { + var5 = this.tiles[var2][var3 + 1][var4 - 1]; + if(var5 != null && var5.floorDecoration != null && var5.floorDecoration.entity instanceof ModelData) { + var6 = (ModelData)var5.floorDecoration.entity; + ModelData.method2800(var1, var6, 128, 0, -128, true); + } + } + + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(Ldw;IIIII)V" + ) + @Export("__ab_249") + void __ab_249(ModelData var1, int var2, int var3, int var4, int var5, int var6) { + boolean var7 = true; + int var8 = var3; + int var9 = var3 + var5; + int var10 = var4 - 1; + int var11 = var4 + var6; + + for(int var12 = var2; var12 <= var2 + 1; ++var12) { + if(var12 != this.planes) { + for(int var13 = var8; var13 <= var9; ++var13) { + if(var13 >= 0 && var13 < this.xSize) { + for(int var14 = var10; var14 <= var11; ++var14) { + if(var14 >= 0 && var14 < this.ySize && (!var7 || var13 >= var9 || var14 >= var11 || var14 < var4 && var3 != var13)) { + Tile var15 = this.tiles[var12][var13][var14]; + if(var15 != null) { + int var16 = (this.tileHeights[var12][var13 + 1][var14] + this.tileHeights[var12][var13 + 1][var14 + 1] + this.tileHeights[var12][var13][var14] + this.tileHeights[var12][var13][var14 + 1]) / 4 - (this.tileHeights[var2][var3 + 1][var4] + this.tileHeights[var2][var3][var4] + this.tileHeights[var2][var3 + 1][var4 + 1] + this.tileHeights[var2][var3][var4 + 1]) / 4; + BoundaryObject var17 = var15.boundaryObject; + if(var17 != null) { + ModelData var18; + if(var17.entity1 instanceof ModelData) { + var18 = (ModelData)var17.entity1; + ModelData.method2800(var1, var18, (1 - var5) * 64 + (var13 - var3) * 128, var16, (var14 - var4) * 128 + (1 - var6) * 64, var7); + } + + if(var17.entity2 instanceof ModelData) { + var18 = (ModelData)var17.entity2; + ModelData.method2800(var1, var18, (1 - var5) * 64 + (var13 - var3) * 128, var16, (var14 - var4) * 128 + (1 - var6) * 64, var7); + } + } + + for(int var23 = 0; var23 < var15.gameObjectsCount; ++var23) { + GameObject var19 = var15.gameObjects[var23]; + if(var19 != null && var19.entity instanceof ModelData) { + ModelData var20 = (ModelData)var19.entity; + int var21 = var19.endX - var19.startX + 1; + int var22 = var19.endY - var19.startY + 1; + ModelData.method2800(var1, var20, (var21 - var5) * 64 + (var19.startX - var3) * 128, var16, (var19.startY - var4) * 128 + (var22 - var6) * 64, var7); + } + } + } + } + } + } + } + + --var8; + var7 = false; + } + } + + } + + @ObfuscatedName("ae") + @Export("drawTileMinimap") + public void drawTileMinimap(int[] var1, int var2, int var3, int var4, int var5, int var6) { + Tile var7 = this.tiles[var4][var5][var6]; + if(var7 != null) { + TilePaint var8 = var7.paint; + int var10; + if(var8 != null) { + int var9 = var8.rgb; + if(var9 != 0) { + for(var10 = 0; var10 < 4; ++var10) { + var1[var2] = var9; + var1[var2 + 1] = var9; + var1[var2 + 2] = var9; + var1[var2 + 3] = var9; + var2 += var3; + } + + } + } else { + TileModel var18 = var7.model; + if(var18 != null) { + var10 = var18.shape; + int var11 = var18.rotation; + int var12 = var18.underlayRgb; + int var13 = var18.overlayRgb; + int[] var14 = this.__bk[var10]; + int[] var15 = this.__bd[var11]; + int var16 = 0; + int var17; + if(var12 != 0) { + for(var17 = 0; var17 < 4; ++var17) { + var1[var2] = var14[var15[var16++]] == 0?var12:var13; + var1[var2 + 1] = var14[var15[var16++]] == 0?var12:var13; + var1[var2 + 2] = var14[var15[var16++]] == 0?var12:var13; + var1[var2 + 3] = var14[var15[var16++]] == 0?var12:var13; + var2 += var3; + } + } else { + for(var17 = 0; var17 < 4; ++var17) { + if(var14[var15[var16++]] != 0) { + var1[var2] = var13; + } + + if(var14[var15[var16++]] != 0) { + var1[var2 + 1] = var13; + } + + if(var14[var15[var16++]] != 0) { + var1[var2 + 2] = var13; + } + + if(var14[var15[var16++]] != 0) { + var1[var2 + 3] = var13; + } + + var2 += var3; + } + } + + } + } + } + } + + @ObfuscatedName("ap") + @Export("menuOpen") + public void menuOpen(int var1, int var2, int var3, boolean var4) { + if(!method3187() || var4) { + checkClick = true; + __em_ab = var4; + Scene_selectedPlane = var1; + Scene_selectedScreenX = var2; + Scene_selectedScreenY = var3; + Scene_selectedX = -1; + Scene_selectedY = -1; + } + } + + @ObfuscatedName("as") + @Export("__as_250") + public void __as_250() { + __em_ab = true; + } + + @ObfuscatedName("az") + @Export("draw") + public void draw(int var1, int var2, int var3, int var4, int var5, int var6) { + if(var1 < 0) { + var1 = 0; + } else if(var1 >= this.xSize * 128) { + var1 = this.xSize * 128 - 1; + } + + if(var3 < 0) { + var3 = 0; + } else if(var3 >= this.ySize * 128) { + var3 = this.ySize * 128 - 1; + } + + if(var4 < 128) { + var4 = 128; + } else if(var4 > 383) { + var4 = 383; + } + + ++Scene_drawnCount; + Scene_cameraPitchSine = Rasterizer3D.Rasterizer3D_sine[var4]; + Scene_cameraPitchCosine = Rasterizer3D.Rasterizer3D_cosine[var4]; + Scene_cameraYawSine = Rasterizer3D.Rasterizer3D_sine[var5]; + Scene_cameraYawCosine = Rasterizer3D.Rasterizer3D_cosine[var5]; + visibleTiles = visibilityMap[(var4 - 128) / 32][var5 / 64]; + Scene_cameraX = var1; + Scene_cameraY = var2; + Scene_cameraZ = var3; + Scene_cameraXTile = var1 / 128; + Scene_cameraYTile = var3 / 128; + Scene_plane = var6; + Scene_cameraXTileMin = Scene_cameraXTile - 25; + if(Scene_cameraXTileMin < 0) { + Scene_cameraXTileMin = 0; + } + + Scene_cameraYTileMin = Scene_cameraYTile - 25; + if(Scene_cameraYTileMin < 0) { + Scene_cameraYTileMin = 0; + } + + Scene_cameraXTileMax = Scene_cameraXTile + 25; + if(Scene_cameraXTileMax > this.xSize) { + Scene_cameraXTileMax = this.xSize; + } + + Scene_cameraYTileMax = Scene_cameraYTile + 25; + if(Scene_cameraYTileMax > this.ySize) { + Scene_cameraYTileMax = this.ySize; + } + + this.occlude(); + tileUpdateCount = 0; + + int var7; + Tile[][] var8; + int var9; + int var10; + for(var7 = this.Scene_minPlane; var7 < this.planes; ++var7) { + var8 = this.tiles[var7]; + + for(var9 = Scene_cameraXTileMin; var9 < Scene_cameraXTileMax; ++var9) { + for(var10 = Scene_cameraYTileMin; var10 < Scene_cameraYTileMax; ++var10) { + Tile var11 = var8[var9][var10]; + if(var11 != null) { + if(var11.minPlane > var6 || !visibleTiles[var9 - Scene_cameraXTile + 25][var10 - Scene_cameraYTile + 25] && this.tileHeights[var7][var9][var10] - var2 < 2000) { + var11.drawPrimary = false; + var11.drawSecondary = false; + var11.drawGameObjectEdges = 0; + } else { + var11.drawPrimary = true; + var11.drawSecondary = true; + if(var11.gameObjectsCount > 0) { + var11.drawGameObjects = true; + } else { + var11.drawGameObjects = false; + } + + ++tileUpdateCount; + } + } + } + } + } + + int var12; + int var13; + int var14; + Tile var15; + int var16; + for(var7 = this.Scene_minPlane; var7 < this.planes; ++var7) { + var8 = this.tiles[var7]; + + for(var9 = -25; var9 <= 0; ++var9) { + var10 = var9 + Scene_cameraXTile; + var16 = Scene_cameraXTile - var9; + if(var10 >= Scene_cameraXTileMin || var16 < Scene_cameraXTileMax) { + for(var12 = -25; var12 <= 0; ++var12) { + var13 = var12 + Scene_cameraYTile; + var14 = Scene_cameraYTile - var12; + if(var10 >= Scene_cameraXTileMin) { + if(var13 >= Scene_cameraYTileMin) { + var15 = var8[var10][var13]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, true); + } + } + + if(var14 < Scene_cameraYTileMax) { + var15 = var8[var10][var14]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, true); + } + } + } + + if(var16 < Scene_cameraXTileMax) { + if(var13 >= Scene_cameraYTileMin) { + var15 = var8[var16][var13]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, true); + } + } + + if(var14 < Scene_cameraYTileMax) { + var15 = var8[var16][var14]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, true); + } + } + } + + if(tileUpdateCount == 0) { + checkClick = false; + return; + } + } + } + } + } + + for(var7 = this.Scene_minPlane; var7 < this.planes; ++var7) { + var8 = this.tiles[var7]; + + for(var9 = -25; var9 <= 0; ++var9) { + var10 = var9 + Scene_cameraXTile; + var16 = Scene_cameraXTile - var9; + if(var10 >= Scene_cameraXTileMin || var16 < Scene_cameraXTileMax) { + for(var12 = -25; var12 <= 0; ++var12) { + var13 = var12 + Scene_cameraYTile; + var14 = Scene_cameraYTile - var12; + if(var10 >= Scene_cameraXTileMin) { + if(var13 >= Scene_cameraYTileMin) { + var15 = var8[var10][var13]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, false); + } + } + + if(var14 < Scene_cameraYTileMax) { + var15 = var8[var10][var14]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, false); + } + } + } + + if(var16 < Scene_cameraXTileMax) { + if(var13 >= Scene_cameraYTileMin) { + var15 = var8[var16][var13]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, false); + } + } + + if(var14 < Scene_cameraYTileMax) { + var15 = var8[var16][var14]; + if(var15 != null && var15.drawPrimary) { + this.drawTile(var15, false); + } + } + } + + if(tileUpdateCount == 0) { + checkClick = false; + return; + } + } + } + } + } + + checkClick = false; + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(Ldj;Z)V" + ) + @Export("drawTile") + void drawTile(Tile var1, boolean var2) { + Scene_tilesDeque.addFirst(var1); + + while(true) { + Tile var3; + int var4; + int var5; + int var6; + int var7; + Tile[][] var8; + Tile var9; + int var11; + int var14; + int var15; + int var16; + int var24; + int var25; + do { + do { + do { + do { + do { + do { + while(true) { + BoundaryObject var10; + GameObject var12; + int var17; + int var18; + boolean var20; + int var21; + Tile var36; + while(true) { + do { + var3 = (Tile)Scene_tilesDeque.removeLast(); + if(var3 == null) { + return; + } + } while(!var3.drawSecondary); + + var4 = var3.x; + var5 = var3.y; + var6 = var3.plane; + var7 = var3.originalPlane; + var8 = this.tiles[var6]; + if(!var3.drawPrimary) { + break; + } + + if(var2) { + if(var6 > 0) { + var9 = this.tiles[var6 - 1][var4][var5]; + if(var9 != null && var9.drawSecondary) { + continue; + } + } + + if(var4 <= Scene_cameraXTile && var4 > Scene_cameraXTileMin) { + var9 = var8[var4 - 1][var5]; + if(var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 1) == 0)) { + continue; + } + } + + if(var4 >= Scene_cameraXTile && var4 < Scene_cameraXTileMax - 1) { + var9 = var8[var4 + 1][var5]; + if(var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 4) == 0)) { + continue; + } + } + + if(var5 <= Scene_cameraYTile && var5 > Scene_cameraYTileMin) { + var9 = var8[var4][var5 - 1]; + if(var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 8) == 0)) { + continue; + } + } + + if(var5 >= Scene_cameraYTile && var5 < Scene_cameraYTileMax - 1) { + var9 = var8[var4][var5 + 1]; + if(var9 != null && var9.drawSecondary && (var9.drawPrimary || (var3.gameObjectsEdgeMask & 2) == 0)) { + continue; + } + } + } else { + var2 = true; + } + + var3.drawPrimary = false; + if(var3.linkedBelowTile != null) { + var9 = var3.linkedBelowTile; + if(var9.paint != null) { + if(!this.__ba_253(0, var4, var5)) { + this.drawTileUnderlay(var9.paint, 0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5); + } + } else if(var9.model != null && !this.__ba_253(0, var4, var5)) { + this.drawTileOverlay(var9.model, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5); + } + + var10 = var9.boundaryObject; + if(var10 != null) { + var10.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var10.x - Scene_cameraX, var10.tileHeight - Scene_cameraY, var10.y - Scene_cameraZ, var10.tag); + } + + for(var11 = 0; var11 < var9.gameObjectsCount; ++var11) { + var12 = var9.gameObjects[var11]; + if(var12 != null) { + var12.entity.renderDraw(var12.orientation, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var12.centerX - Scene_cameraX, var12.height - Scene_cameraY, var12.centerY - Scene_cameraZ, var12.tag); + } + } + } + + var20 = false; + if(var3.paint != null) { + if(!this.__ba_253(var7, var4, var5)) { + var20 = true; + if(var3.paint.neColor != 12345678 || checkClick && var6 <= Scene_selectedPlane) { + this.drawTileUnderlay(var3.paint, var7, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5); + } + } + } else if(var3.model != null && !this.__ba_253(var7, var4, var5)) { + var20 = true; + this.drawTileOverlay(var3.model, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var4, var5); + } + + var21 = 0; + var11 = 0; + BoundaryObject var31 = var3.boundaryObject; + WallDecoration var13 = var3.wallDecoration; + if(var31 != null || var13 != null) { + if(var4 == Scene_cameraXTile) { + ++var21; + } else if(Scene_cameraXTile < var4) { + var21 += 2; + } + + if(var5 == Scene_cameraYTile) { + var21 += 3; + } else if(Scene_cameraYTile > var5) { + var21 += 6; + } + + var11 = __em_au[var21]; + var3.__b = __em_aa[var21]; + } + + if(var31 != null) { + if((var31.orientationA & __em_ao[var21]) != 0) { + if(var31.orientationA == 16) { + var3.drawGameObjectEdges = 3; + var3.__y = __em_ax[var21]; + var3.__h = 3 - var3.__y; + } else if(var31.orientationA == 32) { + var3.drawGameObjectEdges = 6; + var3.__y = __em_af[var21]; + var3.__h = 6 - var3.__y; + } else if(var31.orientationA == 64) { + var3.drawGameObjectEdges = 12; + var3.__y = __em_ai[var21]; + var3.__h = 12 - var3.__y; + } else { + var3.drawGameObjectEdges = 9; + var3.__y = __em_ba[var21]; + var3.__h = 9 - var3.__y; + } + } else { + var3.drawGameObjectEdges = 0; + } + + if((var31.orientationA & var11) != 0 && !this.__bb_254(var7, var4, var5, var31.orientationA)) { + var31.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var31.x - Scene_cameraX, var31.tileHeight - Scene_cameraY, var31.y - Scene_cameraZ, var31.tag); + } + + if((var31.orientationB & var11) != 0 && !this.__bb_254(var7, var4, var5, var31.orientationB)) { + var31.entity2.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var31.x - Scene_cameraX, var31.tileHeight - Scene_cameraY, var31.y - Scene_cameraZ, var31.tag); + } + } + + if(var13 != null && !this.__bs_255(var7, var4, var5, var13.entity1.height)) { + if((var13.orientation & var11) != 0) { + var13.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var13.x - Scene_cameraX + var13.xOffset, var13.tileHeight - Scene_cameraY, var13.y - Scene_cameraZ + var13.yOffset, var13.tag); + } else if(var13.orientation == 256) { + var14 = var13.x - Scene_cameraX; + var15 = var13.tileHeight - Scene_cameraY; + var16 = var13.y - Scene_cameraZ; + var17 = var13.int7; + if(var17 != 1 && var17 != 2) { + var18 = var14; + } else { + var18 = -var14; + } + + int var19; + if(var17 != 2 && var17 != 3) { + var19 = var16; + } else { + var19 = -var16; + } + + if(var19 < var18) { + var13.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var14 + var13.xOffset, var15, var16 + var13.yOffset, var13.tag); + } else if(var13.entity2 != null) { + var13.entity2.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var14, var15, var16, var13.tag); + } + } + } + + if(var20) { + FloorDecoration var22 = var3.floorDecoration; + if(var22 != null) { + var22.entity.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var22.x - Scene_cameraX, var22.tileHeight - Scene_cameraY, var22.y - Scene_cameraZ, var22.tag); + } + + GroundItemPile var23 = var3.groundItemPile; + if(var23 != null && var23.height == 0) { + if(var23.second != null) { + var23.second.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var23.x - Scene_cameraX, var23.tileHeight - Scene_cameraY, var23.y - Scene_cameraZ, var23.tag); + } + + if(var23.third != null) { + var23.third.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var23.x - Scene_cameraX, var23.tileHeight - Scene_cameraY, var23.y - Scene_cameraZ, var23.tag); + } + + if(var23.first != null) { + var23.first.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var23.x - Scene_cameraX, var23.tileHeight - Scene_cameraY, var23.y - Scene_cameraZ, var23.tag); + } + } + } + + var14 = var3.gameObjectsEdgeMask; + if(var14 != 0) { + if(var4 < Scene_cameraXTile && (var14 & 4) != 0) { + var36 = var8[var4 + 1][var5]; + if(var36 != null && var36.drawSecondary) { + Scene_tilesDeque.addFirst(var36); + } + } + + if(var5 < Scene_cameraYTile && (var14 & 2) != 0) { + var36 = var8[var4][var5 + 1]; + if(var36 != null && var36.drawSecondary) { + Scene_tilesDeque.addFirst(var36); + } + } + + if(var4 > Scene_cameraXTile && (var14 & 1) != 0) { + var36 = var8[var4 - 1][var5]; + if(var36 != null && var36.drawSecondary) { + Scene_tilesDeque.addFirst(var36); + } + } + + if(var5 > Scene_cameraYTile && (var14 & 8) != 0) { + var36 = var8[var4][var5 - 1]; + if(var36 != null && var36.drawSecondary) { + Scene_tilesDeque.addFirst(var36); + } + } + } + break; + } + + if(var3.drawGameObjectEdges != 0) { + var20 = true; + + for(var21 = 0; var21 < var3.gameObjectsCount; ++var21) { + if(var3.gameObjects[var21].lastDrawn != Scene_drawnCount && (var3.gameObjectEdgeMasks[var21] & var3.drawGameObjectEdges) == var3.__y) { + var20 = false; + break; + } + } + + if(var20) { + var10 = var3.boundaryObject; + if(!this.__bb_254(var7, var4, var5, var10.orientationA)) { + var10.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var10.x - Scene_cameraX, var10.tileHeight - Scene_cameraY, var10.y - Scene_cameraZ, var10.tag); + } + + var3.drawGameObjectEdges = 0; + } + } + + if(!var3.drawGameObjects) { + break; + } + + try { + int var34 = var3.gameObjectsCount; + var3.drawGameObjects = false; + var21 = 0; + + label563: + for(var11 = 0; var11 < var34; ++var11) { + var12 = var3.gameObjects[var11]; + if(var12.lastDrawn != Scene_drawnCount) { + for(var24 = var12.startX; var24 <= var12.endX; ++var24) { + for(var14 = var12.startY; var14 <= var12.endY; ++var14) { + var36 = var8[var24][var14]; + if(var36.drawPrimary) { + var3.drawGameObjects = true; + continue label563; + } + + if(var36.drawGameObjectEdges != 0) { + var16 = 0; + if(var24 > var12.startX) { + ++var16; + } + + if(var24 < var12.endX) { + var16 += 4; + } + + if(var14 > var12.startY) { + var16 += 8; + } + + if(var14 < var12.endY) { + var16 += 2; + } + + if((var16 & var36.drawGameObjectEdges) == var3.__h) { + var3.drawGameObjects = true; + continue label563; + } + } + } + } + + Scene_gameObjects[var21++] = var12; + var24 = Scene_cameraXTile - var12.startX; + var14 = var12.endX - Scene_cameraXTile; + if(var14 > var24) { + var24 = var14; + } + + var15 = Scene_cameraYTile - var12.startY; + var16 = var12.endY - Scene_cameraYTile; + if(var16 > var15) { + var12.__d = var24 + var16; + } else { + var12.__d = var24 + var15; + } + } + } + + while(var21 > 0) { + var11 = -50; + var25 = -1; + + for(var24 = 0; var24 < var21; ++var24) { + GameObject var35 = Scene_gameObjects[var24]; + if(var35.lastDrawn != Scene_drawnCount) { + if(var35.__d > var11) { + var11 = var35.__d; + var25 = var24; + } else if(var11 == var35.__d) { + var15 = var35.centerX - Scene_cameraX; + var16 = var35.centerY - Scene_cameraZ; + var17 = Scene_gameObjects[var25].centerX - Scene_cameraX; + var18 = Scene_gameObjects[var25].centerY - Scene_cameraZ; + if(var15 * var15 + var16 * var16 > var17 * var17 + var18 * var18) { + var25 = var24; + } + } + } + } + + if(var25 == -1) { + break; + } + + GameObject var33 = Scene_gameObjects[var25]; + var33.lastDrawn = Scene_drawnCount; + if(!this.__bq_256(var7, var33.startX, var33.endX, var33.startY, var33.endY, var33.entity.height)) { + var33.entity.renderDraw(var33.orientation, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var33.centerX - Scene_cameraX, var33.height - Scene_cameraY, var33.centerY - Scene_cameraZ, var33.tag); + } + + for(var14 = var33.startX; var14 <= var33.endX; ++var14) { + for(var15 = var33.startY; var15 <= var33.endY; ++var15) { + Tile var26 = var8[var14][var15]; + if(var26.drawGameObjectEdges != 0) { + Scene_tilesDeque.addFirst(var26); + } else if((var14 != var4 || var15 != var5) && var26.drawSecondary) { + Scene_tilesDeque.addFirst(var26); + } + } + } + } + + if(!var3.drawGameObjects) { + break; + } + } catch (Exception var28) { + var3.drawGameObjects = false; + break; + } + } + } while(!var3.drawSecondary); + } while(var3.drawGameObjectEdges != 0); + + if(var4 > Scene_cameraXTile || var4 <= Scene_cameraXTileMin) { + break; + } + + var9 = var8[var4 - 1][var5]; + } while(var9 != null && var9.drawSecondary); + + if(var4 < Scene_cameraXTile || var4 >= Scene_cameraXTileMax - 1) { + break; + } + + var9 = var8[var4 + 1][var5]; + } while(var9 != null && var9.drawSecondary); + + if(var5 > Scene_cameraYTile || var5 <= Scene_cameraYTileMin) { + break; + } + + var9 = var8[var4][var5 - 1]; + } while(var9 != null && var9.drawSecondary); + + if(var5 < Scene_cameraYTile || var5 >= Scene_cameraYTileMax - 1) { + break; + } + + var9 = var8[var4][var5 + 1]; + } while(var9 != null && var9.drawSecondary); + + var3.drawSecondary = false; + --tileUpdateCount; + GroundItemPile var32 = var3.groundItemPile; + if(var32 != null && var32.height != 0) { + if(var32.second != null) { + var32.second.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var32.x - Scene_cameraX, var32.tileHeight - Scene_cameraY - var32.height, var32.y - Scene_cameraZ, var32.tag); + } + + if(var32.third != null) { + var32.third.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var32.x - Scene_cameraX, var32.tileHeight - Scene_cameraY - var32.height, var32.y - Scene_cameraZ, var32.tag); + } + + if(var32.first != null) { + var32.first.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var32.x - Scene_cameraX, var32.tileHeight - Scene_cameraY - var32.height, var32.y - Scene_cameraZ, var32.tag); + } + } + + if(var3.__b != 0) { + WallDecoration var29 = var3.wallDecoration; + if(var29 != null && !this.__bs_255(var7, var4, var5, var29.entity1.height)) { + if((var29.orientation & var3.__b) != 0) { + var29.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var29.x - Scene_cameraX + var29.xOffset, var29.tileHeight - Scene_cameraY, var29.y - Scene_cameraZ + var29.yOffset, var29.tag); + } else if(var29.orientation == 256) { + var11 = var29.x - Scene_cameraX; + var25 = var29.tileHeight - Scene_cameraY; + var24 = var29.y - Scene_cameraZ; + var14 = var29.int7; + if(var14 != 1 && var14 != 2) { + var15 = var11; + } else { + var15 = -var11; + } + + if(var14 != 2 && var14 != 3) { + var16 = var24; + } else { + var16 = -var24; + } + + if(var16 >= var15) { + var29.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var11 + var29.xOffset, var25, var24 + var29.yOffset, var29.tag); + } else if(var29.entity2 != null) { + var29.entity2.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var11, var25, var24, var29.tag); + } + } + } + + BoundaryObject var27 = var3.boundaryObject; + if(var27 != null) { + if((var27.orientationB & var3.__b) != 0 && !this.__bb_254(var7, var4, var5, var27.orientationB)) { + var27.entity2.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var27.x - Scene_cameraX, var27.tileHeight - Scene_cameraY, var27.y - Scene_cameraZ, var27.tag); + } + + if((var27.orientationA & var3.__b) != 0 && !this.__bb_254(var7, var4, var5, var27.orientationA)) { + var27.entity1.renderDraw(0, Scene_cameraPitchSine, Scene_cameraPitchCosine, Scene_cameraYawSine, Scene_cameraYawCosine, var27.x - Scene_cameraX, var27.tileHeight - Scene_cameraY, var27.y - Scene_cameraZ, var27.tag); + } + } + } + + Tile var30; + if(var6 < this.planes - 1) { + var30 = this.tiles[var6 + 1][var4][var5]; + if(var30 != null && var30.drawSecondary) { + Scene_tilesDeque.addFirst(var30); + } + } + + if(var4 < Scene_cameraXTile) { + var30 = var8[var4 + 1][var5]; + if(var30 != null && var30.drawSecondary) { + Scene_tilesDeque.addFirst(var30); + } + } + + if(var5 < Scene_cameraYTile) { + var30 = var8[var4][var5 + 1]; + if(var30 != null && var30.drawSecondary) { + Scene_tilesDeque.addFirst(var30); + } + } + + if(var4 > Scene_cameraXTile) { + var30 = var8[var4 - 1][var5]; + if(var30 != null && var30.drawSecondary) { + Scene_tilesDeque.addFirst(var30); + } + } + + if(var5 > Scene_cameraYTile) { + var30 = var8[var4][var5 - 1]; + if(var30 != null && var30.drawSecondary) { + Scene_tilesDeque.addFirst(var30); + } + } + } + } + + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "(Leb;IIIIIII)V" + ) + @Export("drawTileUnderlay") + void drawTileUnderlay(TilePaint var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9; + int var10 = var9 = (var7 << 7) - Scene_cameraX; + int var11; + int var12 = var11 = (var8 << 7) - Scene_cameraZ; + int var13; + int var14 = var13 = var10 + 128; + int var15; + int var16 = var15 = var12 + 128; + int var17 = this.tileHeights[var2][var7][var8] - Scene_cameraY; + int var18 = this.tileHeights[var2][var7 + 1][var8] - Scene_cameraY; + int var19 = this.tileHeights[var2][var7 + 1][var8 + 1] - Scene_cameraY; + int var20 = this.tileHeights[var2][var7][var8 + 1] - Scene_cameraY; + int var21 = var10 * var6 + var5 * var12 >> 16; + var12 = var12 * var6 - var5 * var10 >> 16; + var10 = var21; + var21 = var17 * var4 - var3 * var12 >> 16; + var12 = var3 * var17 + var12 * var4 >> 16; + var17 = var21; + if(var12 >= 50) { + var21 = var14 * var6 + var5 * var11 >> 16; + var11 = var11 * var6 - var5 * var14 >> 16; + var14 = var21; + var21 = var18 * var4 - var3 * var11 >> 16; + var11 = var3 * var18 + var11 * var4 >> 16; + var18 = var21; + if(var11 >= 50) { + var21 = var13 * var6 + var5 * var16 >> 16; + var16 = var16 * var6 - var5 * var13 >> 16; + var13 = var21; + var21 = var19 * var4 - var3 * var16 >> 16; + var16 = var3 * var19 + var16 * var4 >> 16; + var19 = var21; + if(var16 >= 50) { + var21 = var9 * var6 + var5 * var15 >> 16; + var15 = var15 * var6 - var5 * var9 >> 16; + var9 = var21; + var21 = var20 * var4 - var3 * var15 >> 16; + var15 = var3 * var20 + var15 * var4 >> 16; + if(var15 >= 50) { + int var22 = var10 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidX; + int var23 = var17 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidY; + int var24 = var14 * Rasterizer3D.Rasterizer3D_zoom / var11 + Rasterizer3D.Rasterizer3D_clipMidX; + int var25 = var18 * Rasterizer3D.Rasterizer3D_zoom / var11 + Rasterizer3D.Rasterizer3D_clipMidY; + int var26 = var13 * Rasterizer3D.Rasterizer3D_zoom / var16 + Rasterizer3D.Rasterizer3D_clipMidX; + int var27 = var19 * Rasterizer3D.Rasterizer3D_zoom / var16 + Rasterizer3D.Rasterizer3D_clipMidY; + int var28 = var9 * Rasterizer3D.Rasterizer3D_zoom / var15 + Rasterizer3D.Rasterizer3D_clipMidX; + int var29 = var21 * Rasterizer3D.Rasterizer3D_zoom / var15 + Rasterizer3D.Rasterizer3D_clipMidY; + Rasterizer3D.Rasterizer3D_alpha = 0; + int var30; + if((var26 - var28) * (var25 - var29) - (var27 - var29) * (var24 - var28) > 0) { + Rasterizer3D.__et_m = false; + if(var26 < 0 || var28 < 0 || var24 < 0 || var26 > Rasterizer3D.Rasterizer3D_clipWidth || var28 > Rasterizer3D.Rasterizer3D_clipWidth || var24 > Rasterizer3D.Rasterizer3D_clipWidth) { + Rasterizer3D.__et_m = true; + } + + if(checkClick && containsBounds(Scene_selectedScreenX, Scene_selectedScreenY, var27, var29, var25, var26, var28, var24)) { + Scene_selectedX = var7; + Scene_selectedY = var8; + } + + if(var1.texture == -1) { + if(var1.neColor != 12345678) { + Rasterizer3D.method3037(var27, var29, var25, var26, var28, var24, var1.neColor, var1.nwColor, var1.seColor); + } + } else if(!Scene_isLowDetail) { + if(var1.isFlat) { + Rasterizer3D.method3012(var27, var29, var25, var26, var28, var24, var1.neColor, var1.nwColor, var1.seColor, var10, var14, var9, var17, var18, var21, var12, var11, var15, var1.texture); + } else { + Rasterizer3D.method3012(var27, var29, var25, var26, var28, var24, var1.neColor, var1.nwColor, var1.seColor, var13, var9, var14, var19, var21, var18, var16, var15, var11, var1.texture); + } + } else { + var30 = Rasterizer3D.Rasterizer3D_textureLoader.__w_213(var1.texture); + Rasterizer3D.method3037(var27, var29, var25, var26, var28, var24, method3108(var30, var1.neColor), method3108(var30, var1.nwColor), method3108(var30, var1.seColor)); + } + } + + if((var22 - var24) * (var29 - var25) - (var23 - var25) * (var28 - var24) > 0) { + Rasterizer3D.__et_m = false; + if(var22 < 0 || var24 < 0 || var28 < 0 || var22 > Rasterizer3D.Rasterizer3D_clipWidth || var24 > Rasterizer3D.Rasterizer3D_clipWidth || var28 > Rasterizer3D.Rasterizer3D_clipWidth) { + Rasterizer3D.__et_m = true; + } + + if(checkClick && containsBounds(Scene_selectedScreenX, Scene_selectedScreenY, var23, var25, var29, var22, var24, var28)) { + Scene_selectedX = var7; + Scene_selectedY = var8; + } + + if(var1.texture == -1) { + if(var1.swColor != 12345678) { + Rasterizer3D.method3037(var23, var25, var29, var22, var24, var28, var1.swColor, var1.seColor, var1.nwColor); + } + } else if(!Scene_isLowDetail) { + Rasterizer3D.method3012(var23, var25, var29, var22, var24, var28, var1.swColor, var1.seColor, var1.nwColor, var10, var14, var9, var17, var18, var21, var12, var11, var15, var1.texture); + } else { + var30 = Rasterizer3D.Rasterizer3D_textureLoader.__w_213(var1.texture); + Rasterizer3D.method3037(var23, var25, var29, var22, var24, var28, method3108(var30, var1.swColor), method3108(var30, var1.seColor), method3108(var30, var1.nwColor)); + } + } + + } + } + } + } + } + + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "(Ldv;IIIIII)V" + ) + @Export("drawTileOverlay") + void drawTileOverlay(TileModel var1, int var2, int var3, int var4, int var5, int var6, int var7) { + int var8 = var1.vertexX.length; + + int var9; + int var10; + int var11; + int var12; + int var13; + for(var9 = 0; var9 < var8; ++var9) { + var10 = var1.vertexX[var9] - Scene_cameraX; + var11 = var1.vertexY[var9] - Scene_cameraY; + var12 = var1.vertexZ[var9] - Scene_cameraZ; + var13 = var12 * var4 + var5 * var10 >> 16; + var12 = var5 * var12 - var10 * var4 >> 16; + var10 = var13; + var13 = var3 * var11 - var12 * var2 >> 16; + var12 = var11 * var2 + var3 * var12 >> 16; + if(var12 < 50) { + return; + } + + if(var1.triangleTextureId != null) { + TileModel.__dv_s[var9] = var10; + TileModel.__dv_t[var9] = var13; + TileModel.__dv_y[var9] = var12; + } + + TileModel.__dv_z[var9] = var10 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidX; + TileModel.__dv_j[var9] = var13 * Rasterizer3D.Rasterizer3D_zoom / var12 + Rasterizer3D.Rasterizer3D_clipMidY; + } + + Rasterizer3D.Rasterizer3D_alpha = 0; + var8 = var1.faceX.length; + + for(var9 = 0; var9 < var8; ++var9) { + var10 = var1.faceX[var9]; + var11 = var1.faceY[var9]; + var12 = var1.faceZ[var9]; + var13 = TileModel.__dv_z[var10]; + int var14 = TileModel.__dv_z[var11]; + int var15 = TileModel.__dv_z[var12]; + int var16 = TileModel.__dv_j[var10]; + int var17 = TileModel.__dv_j[var11]; + int var18 = TileModel.__dv_j[var12]; + if((var13 - var14) * (var18 - var17) - (var16 - var17) * (var15 - var14) > 0) { + Rasterizer3D.__et_m = false; + if(var13 < 0 || var14 < 0 || var15 < 0 || var13 > Rasterizer3D.Rasterizer3D_clipWidth || var14 > Rasterizer3D.Rasterizer3D_clipWidth || var15 > Rasterizer3D.Rasterizer3D_clipWidth) { + Rasterizer3D.__et_m = true; + } + + if(checkClick && containsBounds(Scene_selectedScreenX, Scene_selectedScreenY, var16, var17, var18, var13, var14, var15)) { + Scene_selectedX = var6; + Scene_selectedY = var7; + } + + if(var1.triangleTextureId != null && var1.triangleTextureId[var9] != -1) { + if(!Scene_isLowDetail) { + if(var1.isFlat) { + Rasterizer3D.method3012(var16, var17, var18, var13, var14, var15, var1.triangleColorA[var9], var1.triangleColorB[var9], var1.triangleColorC[var9], TileModel.__dv_s[0], TileModel.__dv_s[1], TileModel.__dv_s[3], TileModel.__dv_t[0], TileModel.__dv_t[1], TileModel.__dv_t[3], TileModel.__dv_y[0], TileModel.__dv_y[1], TileModel.__dv_y[3], var1.triangleTextureId[var9]); + } else { + Rasterizer3D.method3012(var16, var17, var18, var13, var14, var15, var1.triangleColorA[var9], var1.triangleColorB[var9], var1.triangleColorC[var9], TileModel.__dv_s[var10], TileModel.__dv_s[var11], TileModel.__dv_s[var12], TileModel.__dv_t[var10], TileModel.__dv_t[var11], TileModel.__dv_t[var12], TileModel.__dv_y[var10], TileModel.__dv_y[var11], TileModel.__dv_y[var12], var1.triangleTextureId[var9]); + } + } else { + int var19 = Rasterizer3D.Rasterizer3D_textureLoader.__w_213(var1.triangleTextureId[var9]); + Rasterizer3D.method3037(var16, var17, var18, var13, var14, var15, method3108(var19, var1.triangleColorA[var9]), method3108(var19, var1.triangleColorB[var9]), method3108(var19, var1.triangleColorC[var9])); + } + } else if(var1.triangleColorA[var9] != 12345678) { + Rasterizer3D.method3037(var16, var17, var18, var13, var14, var15, var1.triangleColorA[var9], var1.triangleColorB[var9], var1.triangleColorC[var9]); + } + } + } + + } + + @ObfuscatedName("ai") + @Export("occlude") + void occlude() { + int var1 = Scene_planeOccluderCounts[Scene_plane]; + Occluder[] var2 = Scene_planeOccluders[Scene_plane]; + Scene_currentOccludersCount = 0; + + for(int var3 = 0; var3 < var1; ++var3) { + Occluder var4 = var2[var3]; + int var5; + int var6; + int var7; + int var9; + boolean var13; + if(var4.type == 1) { + var5 = var4.minTileX - Scene_cameraXTile + 25; + if(var5 >= 0 && var5 <= 50) { + var6 = var4.minTileY - Scene_cameraYTile + 25; + if(var6 < 0) { + var6 = 0; + } + + var7 = var4.maxTileY - Scene_cameraYTile + 25; + if(var7 > 50) { + var7 = 50; + } + + var13 = false; + + while(var6 <= var7) { + if(visibleTiles[var5][var6++]) { + var13 = true; + break; + } + } + + if(var13) { + var9 = Scene_cameraX - var4.minX; + if(var9 > 32) { + var4.__k = 1; + } else { + if(var9 >= -32) { + continue; + } + + var4.__k = 2; + var9 = -var9; + } + + var4.__a = (var4.minZ - Scene_cameraZ << 8) / var9; + var4.__z = (var4.maxZ - Scene_cameraZ << 8) / var9; + var4.__j = (var4.minY - Scene_cameraY << 8) / var9; + var4.__s = (var4.maxY - Scene_cameraY << 8) / var9; + Scene_currentOccluders[Scene_currentOccludersCount++] = var4; + } + } + } else if(var4.type == 2) { + var5 = var4.minTileY - Scene_cameraYTile + 25; + if(var5 >= 0 && var5 <= 50) { + var6 = var4.minTileX - Scene_cameraXTile + 25; + if(var6 < 0) { + var6 = 0; + } + + var7 = var4.maxTileX - Scene_cameraXTile + 25; + if(var7 > 50) { + var7 = 50; + } + + var13 = false; + + while(var6 <= var7) { + if(visibleTiles[var6++][var5]) { + var13 = true; + break; + } + } + + if(var13) { + var9 = Scene_cameraZ - var4.minZ; + if(var9 > 32) { + var4.__k = 3; + } else { + if(var9 >= -32) { + continue; + } + + var4.__k = 4; + var9 = -var9; + } + + var4.__n = (var4.minX - Scene_cameraX << 8) / var9; + var4.__i = (var4.maxX - Scene_cameraX << 8) / var9; + var4.__j = (var4.minY - Scene_cameraY << 8) / var9; + var4.__s = (var4.maxY - Scene_cameraY << 8) / var9; + Scene_currentOccluders[Scene_currentOccludersCount++] = var4; + } + } + } else if(var4.type == 4) { + var5 = var4.minY - Scene_cameraY; + if(var5 > 128) { + var6 = var4.minTileY - Scene_cameraYTile + 25; + if(var6 < 0) { + var6 = 0; + } + + var7 = var4.maxTileY - Scene_cameraYTile + 25; + if(var7 > 50) { + var7 = 50; + } + + if(var6 <= var7) { + int var8 = var4.minTileX - Scene_cameraXTile + 25; + if(var8 < 0) { + var8 = 0; + } + + var9 = var4.maxTileX - Scene_cameraXTile + 25; + if(var9 > 50) { + var9 = 50; + } + + boolean var10 = false; + + label144: + for(int var11 = var8; var11 <= var9; ++var11) { + for(int var12 = var6; var12 <= var7; ++var12) { + if(visibleTiles[var11][var12]) { + var10 = true; + break label144; + } + } + } + + if(var10) { + var4.__k = 5; + var4.__n = (var4.minX - Scene_cameraX << 8) / var5; + var4.__i = (var4.maxX - Scene_cameraX << 8) / var5; + var4.__a = (var4.minZ - Scene_cameraZ << 8) / var5; + var4.__z = (var4.maxZ - Scene_cameraZ << 8) / var5; + Scene_currentOccluders[Scene_currentOccludersCount++] = var4; + } + } + } + } + } + + } + + @ObfuscatedName("ba") + @Export("__ba_253") + boolean __ba_253(int var1, int var2, int var3) { + int var4 = this.__x[var1][var2][var3]; + if(var4 == -Scene_drawnCount) { + return false; + } else if(var4 == Scene_drawnCount) { + return true; + } else { + int var5 = var2 << 7; + int var6 = var3 << 7; + if(this.__bn_257(var5 + 1, this.tileHeights[var1][var2][var3], var6 + 1) && this.__bn_257(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3], var6 + 1) && this.__bn_257(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3 + 1], var6 + 128 - 1) && this.__bn_257(var5 + 1, this.tileHeights[var1][var2][var3 + 1], var6 + 128 - 1)) { + this.__x[var1][var2][var3] = Scene_drawnCount; + return true; + } else { + this.__x[var1][var2][var3] = -Scene_drawnCount; + return false; + } + } + } + + @ObfuscatedName("bb") + @Export("__bb_254") + boolean __bb_254(int var1, int var2, int var3, int var4) { + if(!this.__ba_253(var1, var2, var3)) { + return false; + } else { + int var5 = var2 << 7; + int var6 = var3 << 7; + int var7 = this.tileHeights[var1][var2][var3] - 1; + int var8 = var7 - 120; + int var9 = var7 - 230; + int var10 = var7 - 238; + if(var4 < 16) { + if(var4 == 1) { + if(var5 > Scene_cameraX) { + if(!this.__bn_257(var5, var7, var6)) { + return false; + } + + if(!this.__bn_257(var5, var7, var6 + 128)) { + return false; + } + } + + if(var1 > 0) { + if(!this.__bn_257(var5, var8, var6)) { + return false; + } + + if(!this.__bn_257(var5, var8, var6 + 128)) { + return false; + } + } + + if(!this.__bn_257(var5, var9, var6)) { + return false; + } + + if(!this.__bn_257(var5, var9, var6 + 128)) { + return false; + } + + return true; + } + + if(var4 == 2) { + if(var6 < Scene_cameraZ) { + if(!this.__bn_257(var5, var7, var6 + 128)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var7, var6 + 128)) { + return false; + } + } + + if(var1 > 0) { + if(!this.__bn_257(var5, var8, var6 + 128)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var8, var6 + 128)) { + return false; + } + } + + if(!this.__bn_257(var5, var9, var6 + 128)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var9, var6 + 128)) { + return false; + } + + return true; + } + + if(var4 == 4) { + if(var5 < Scene_cameraX) { + if(!this.__bn_257(var5 + 128, var7, var6)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var7, var6 + 128)) { + return false; + } + } + + if(var1 > 0) { + if(!this.__bn_257(var5 + 128, var8, var6)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var8, var6 + 128)) { + return false; + } + } + + if(!this.__bn_257(var5 + 128, var9, var6)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var9, var6 + 128)) { + return false; + } + + return true; + } + + if(var4 == 8) { + if(var6 > Scene_cameraZ) { + if(!this.__bn_257(var5, var7, var6)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var7, var6)) { + return false; + } + } + + if(var1 > 0) { + if(!this.__bn_257(var5, var8, var6)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var8, var6)) { + return false; + } + } + + if(!this.__bn_257(var5, var9, var6)) { + return false; + } + + if(!this.__bn_257(var5 + 128, var9, var6)) { + return false; + } + + return true; + } + } + + return !this.__bn_257(var5 + 64, var10, var6 + 64)?false:(var4 == 16?this.__bn_257(var5, var9, var6 + 128):(var4 == 32?this.__bn_257(var5 + 128, var9, var6 + 128):(var4 == 64?this.__bn_257(var5 + 128, var9, var6):(var4 == 128?this.__bn_257(var5, var9, var6):true)))); + } + } + + @ObfuscatedName("bs") + @Export("__bs_255") + boolean __bs_255(int var1, int var2, int var3, int var4) { + if(!this.__ba_253(var1, var2, var3)) { + return false; + } else { + int var5 = var2 << 7; + int var6 = var3 << 7; + return this.__bn_257(var5 + 1, this.tileHeights[var1][var2][var3] - var4, var6 + 1) && this.__bn_257(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3] - var4, var6 + 1) && this.__bn_257(var5 + 128 - 1, this.tileHeights[var1][var2 + 1][var3 + 1] - var4, var6 + 128 - 1) && this.__bn_257(var5 + 1, this.tileHeights[var1][var2][var3 + 1] - var4, var6 + 128 - 1); + } + } + + @ObfuscatedName("bq") + @Export("__bq_256") + boolean __bq_256(int var1, int var2, int var3, int var4, int var5, int var6) { + int var7; + int var8; + if(var3 == var2 && var5 == var4) { + if(!this.__ba_253(var1, var2, var4)) { + return false; + } else { + var7 = var2 << 7; + var8 = var4 << 7; + return this.__bn_257(var7 + 1, this.tileHeights[var1][var2][var4] - var6, var8 + 1) && this.__bn_257(var7 + 128 - 1, this.tileHeights[var1][var2 + 1][var4] - var6, var8 + 1) && this.__bn_257(var7 + 128 - 1, this.tileHeights[var1][var2 + 1][var4 + 1] - var6, var8 + 128 - 1) && this.__bn_257(var7 + 1, this.tileHeights[var1][var2][var4 + 1] - var6, var8 + 128 - 1); + } + } else { + for(var7 = var2; var7 <= var3; ++var7) { + for(var8 = var4; var8 <= var5; ++var8) { + if(this.__x[var1][var7][var8] == -Scene_drawnCount) { + return false; + } + } + } + + var7 = (var2 << 7) + 1; + var8 = (var4 << 7) + 2; + int var9 = this.tileHeights[var1][var2][var4] - var6; + if(!this.__bn_257(var7, var9, var8)) { + return false; + } else { + int var10 = (var3 << 7) - 1; + if(!this.__bn_257(var10, var9, var8)) { + return false; + } else { + int var11 = (var5 << 7) - 1; + if(!this.__bn_257(var7, var9, var11)) { + return false; + } else if(!this.__bn_257(var10, var9, var11)) { + return false; + } else { + return true; + } + } + } + } + } + + @ObfuscatedName("bn") + @Export("__bn_257") + boolean __bn_257(int var1, int var2, int var3) { + for(int var4 = 0; var4 < Scene_currentOccludersCount; ++var4) { + Occluder var5 = Scene_currentOccluders[var4]; + int var6; + int var7; + int var8; + int var9; + int var10; + if(var5.__k == 1) { + var6 = var5.minX - var1; + if(var6 > 0) { + var7 = (var6 * var5.__a >> 8) + var5.minZ; + var8 = (var6 * var5.__z >> 8) + var5.maxZ; + var9 = (var6 * var5.__j >> 8) + var5.minY; + var10 = (var6 * var5.__s >> 8) + var5.maxY; + if(var3 >= var7 && var3 <= var8 && var2 >= var9 && var2 <= var10) { + return true; + } + } + } else if(var5.__k == 2) { + var6 = var1 - var5.minX; + if(var6 > 0) { + var7 = (var6 * var5.__a >> 8) + var5.minZ; + var8 = (var6 * var5.__z >> 8) + var5.maxZ; + var9 = (var6 * var5.__j >> 8) + var5.minY; + var10 = (var6 * var5.__s >> 8) + var5.maxY; + if(var3 >= var7 && var3 <= var8 && var2 >= var9 && var2 <= var10) { + return true; + } + } + } else if(var5.__k == 3) { + var6 = var5.minZ - var3; + if(var6 > 0) { + var7 = (var6 * var5.__n >> 8) + var5.minX; + var8 = (var6 * var5.__i >> 8) + var5.maxX; + var9 = (var6 * var5.__j >> 8) + var5.minY; + var10 = (var6 * var5.__s >> 8) + var5.maxY; + if(var1 >= var7 && var1 <= var8 && var2 >= var9 && var2 <= var10) { + return true; + } + } + } else if(var5.__k == 4) { + var6 = var3 - var5.minZ; + if(var6 > 0) { + var7 = (var6 * var5.__n >> 8) + var5.minX; + var8 = (var6 * var5.__i >> 8) + var5.maxX; + var9 = (var6 * var5.__j >> 8) + var5.minY; + var10 = (var6 * var5.__s >> 8) + var5.maxY; + if(var1 >= var7 && var1 <= var8 && var2 >= var9 && var2 <= var10) { + return true; + } + } + } else if(var5.__k == 5) { + var6 = var2 - var5.minY; + if(var6 > 0) { + var7 = (var6 * var5.__n >> 8) + var5.minX; + var8 = (var6 * var5.__i >> 8) + var5.maxX; + var9 = (var6 * var5.__a >> 8) + var5.minZ; + var10 = (var6 * var5.__z >> 8) + var5.maxZ; + if(var1 >= var7 && var1 <= var8 && var3 >= var9 && var3 <= var10) { + return true; + } + } + } + } + + return false; + } + + @ObfuscatedName("w") + @Export("Scene_addOccluder") + public static void Scene_addOccluder(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + Occluder var8 = new Occluder(); + var8.minTileX = var2 / 128; + var8.maxTileX = var3 / 128; + var8.minTileY = var4 / 128; + var8.maxTileY = var5 / 128; + var8.type = var1; + var8.minX = var2; + var8.maxX = var3; + var8.minZ = var4; + var8.maxZ = var5; + var8.minY = var6; + var8.maxY = var7; + Scene_planeOccluders[var0][Scene_planeOccluderCounts[var0]++] = var8; + } + + @ObfuscatedName("at") + @Export("Scene_buildVisiblityMap") + public static void Scene_buildVisiblityMap(int[] var0, int var1, int var2, int var3, int var4) { + Scene_viewportXMin = 0; + Scene_viewportYMin = 0; + Scene_viewportXMax = var3; + Scene_viewportYMax = var4; + Scene_viewportXCenter = var3 / 2; + Scene_viewportYCenter = var4 / 2; + boolean[][][][] var5 = new boolean[var0.length][32][53][53]; + + int var6; + int var7; + int var8; + int var9; + int var11; + int var12; + for(var6 = 128; var6 <= 383; var6 += 32) { + for(var7 = 0; var7 < 2048; var7 += 64) { + Scene_cameraPitchSine = Rasterizer3D.Rasterizer3D_sine[var6]; + Scene_cameraPitchCosine = Rasterizer3D.Rasterizer3D_cosine[var6]; + Scene_cameraYawSine = Rasterizer3D.Rasterizer3D_sine[var7]; + Scene_cameraYawCosine = Rasterizer3D.Rasterizer3D_cosine[var7]; + var8 = (var6 - 128) / 32; + var9 = var7 / 64; + + for(int var10 = -26; var10 < 26; ++var10) { + for(var11 = -26; var11 < 26; ++var11) { + var12 = var10 * 128; + int var13 = var11 * 128; + boolean var14 = false; + + for(int var15 = -var1; var15 <= var2; var15 += 128) { + if(method3100(var12, var0[var8] + var15, var13)) { + var14 = true; + break; + } + } + + var5[var8][var9][var10 + 1 + 25][var11 + 1 + 25] = var14; + } + } + } + } + + for(var6 = 0; var6 < 8; ++var6) { + for(var7 = 0; var7 < 32; ++var7) { + for(var8 = -25; var8 < 25; ++var8) { + for(var9 = -25; var9 < 25; ++var9) { + boolean var16 = false; + + label76: + for(var11 = -1; var11 <= 1; ++var11) { + for(var12 = -1; var12 <= 1; ++var12) { + if(var5[var6][var7][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { + var16 = true; + break label76; + } + + if(var5[var6][(var7 + 1) % 31][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { + var16 = true; + break label76; + } + + if(var5[var6 + 1][var7][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { + var16 = true; + break label76; + } + + if(var5[var6 + 1][(var7 + 1) % 31][var8 + var11 + 1 + 25][var9 + var12 + 1 + 25]) { + var16 = true; + break label76; + } + } + } + + visibilityMap[var6][var7][var8 + 25][var9 + 25] = var16; + } + } + } + } + + } + + @ObfuscatedName("ad") + static boolean method3100(int var0, int var1, int var2) { + int var3 = var0 * Scene_cameraYawCosine + var2 * Scene_cameraYawSine >> 16; + int var4 = var2 * Scene_cameraYawCosine - var0 * Scene_cameraYawSine >> 16; + int var5 = var4 * Scene_cameraPitchCosine + Scene_cameraPitchSine * var1 >> 16; + int var6 = Scene_cameraPitchCosine * var1 - var4 * Scene_cameraPitchSine >> 16; + if(var5 >= 50 && var5 <= 3500) { + int var7 = var3 * 128 / var5 + Scene_viewportXCenter; + int var8 = var6 * 128 / var5 + Scene_viewportYCenter; + return var7 >= Scene_viewportXMin && var7 <= Scene_viewportXMax && var8 >= Scene_viewportYMin && var8 <= Scene_viewportYMax; + } else { + return false; + } + } + + @ObfuscatedName("am") + public static boolean method3187() { + return __em_ab && Scene_selectedX != -1; + } + + @ObfuscatedName("an") + public static void method3103() { + Scene_selectedX = -1; + __em_ab = false; + } + + @ObfuscatedName("ax") + static final int method3108(int var0, int var1) { + var1 = (var0 & 127) * var1 >> 7; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & 65408) + var1; + } + + @Export("containsBounds") + @ObfuscatedName("af") + static boolean containsBounds(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(var1 < var2 && var1 < var3 && var1 < var4) { + return false; + } else if(var1 > var2 && var1 > var3 && var1 > var4) { + return false; + } else if(var0 < var5 && var0 < var6 && var0 < var7) { + return false; + } else if(var0 > var5 && var0 > var6 && var0 > var7) { + return false; + } else { + int var8 = (var1 - var2) * (var6 - var5) - (var0 - var5) * (var3 - var2); + int var9 = (var7 - var6) * (var1 - var3) - (var0 - var6) * (var4 - var3); + int var10 = (var5 - var7) * (var1 - var4) - (var2 - var4) * (var0 - var7); + return var8 == 0?(var9 != 0?(var9 < 0?var10 <= 0:var10 >= 0):true):(var8 < 0?var9 <= 0 && var10 <= 0:var9 >= 0 && var10 >= 0); + } + } +} diff --git a/rs-client/src/main/java/Script.java b/rs-client/src/main/java/Script.java new file mode 100644 index 0000000000..068866a0a1 --- /dev/null +++ b/rs-client/src/main/java/Script.java @@ -0,0 +1,138 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cg") +@Implements("Script") +public class Script extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("Script_cached") + static EvictingDualNodeHashTable Script_cached; + @ObfuscatedName("f") + @Export("opcodes") + int[] opcodes; + @ObfuscatedName("q") + @Export("intOperands") + int[] intOperands; + @ObfuscatedName("w") + @Export("stringOperands") + String[] stringOperands; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1952727759 + ) + @Export("localIntCount") + int localIntCount; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1124477681 + ) + @Export("localStringCount") + int localStringCount; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1077473933 + ) + @Export("intArgumentCount") + int intArgumentCount; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -503680987 + ) + @Export("stringArgumentCount") + int stringArgumentCount; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "[Llh;" + ) + @Export("switches") + IterableNodeHashTable[] switches; + + static { + Script_cached = new EvictingDualNodeHashTable(128); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(II)[Llh;", + garbageValue = "-729647116" + ) + @Export("__o_164") + IterableNodeHashTable[] __o_164(int var1) { + return new IterableNodeHashTable[var1]; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "36" + ) + static void method2216(int var0) { + ItemContainer var1 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); + if(var1 != null) { + var1.remove(); + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(IIII)I", + garbageValue = "992185550" + ) + static final int method2204(int var0, int var1, int var2) { + int var3 = var0 / var2; + int var4 = var0 & var2 - 1; + int var5 = var1 / var2; + int var6 = var1 & var2 - 1; + int var7 = method2214(var3, var5); + int var8 = method2214(var3 + 1, var5); + int var9 = method2214(var3, var5 + 1); + int var10 = method2214(var3 + 1, var5 + 1); + int var11 = GraphicsObject.method1986(var7, var8, var4, var2); + int var12 = GraphicsObject.method1986(var9, var10, var4, var2); + return GraphicsObject.method1986(var11, var12, var6, var2); + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "445983180" + ) + static final int method2214(int var0, int var1) { + int var2 = class236.method4537(var0 - 1, var1 - 1) + class236.method4537(var0 + 1, var1 - 1) + class236.method4537(var0 - 1, 1 + var1) + class236.method4537(var0 + 1, var1 + 1); + int var3 = class236.method4537(var0 - 1, var1) + class236.method4537(var0 + 1, var1) + class236.method4537(var0, var1 - 1) + class236.method4537(var0, 1 + var1); + int var4 = class236.method4537(var0, var1); + return var2 / 16 + var3 / 8 + var4 / 4; + } + + @ObfuscatedName("fs") + @ObfuscatedSignature( + signature = "(Ljh;IIII)V", + garbageValue = "-1584807244" + ) + static void method2201(SequenceDefinition var0, int var1, int var2, int var3) { + if(Client.soundEffectCount < 50 && Client.__client_qc != 0) { + if(var0.__e != null && var1 < var0.__e.length) { + int var4 = var0.__e[var1]; + if(var4 != 0) { + int var5 = var4 >> 8; + int var6 = var4 >> 4 & 7; + int var7 = var4 & 15; + Client.soundEffectIds[Client.soundEffectCount] = var5; + Client.unknownSoundValues1[Client.soundEffectCount] = var6; + Client.queuedSoundEffectDelays[Client.soundEffectCount] = 0; + Client.soundEffects[Client.soundEffectCount] = null; + int var8 = (var2 - 64) / 128; + int var9 = (var3 - 64) / 128; + Client.soundLocations[Client.soundEffectCount] = var7 + (var9 << 8) + (var8 << 16); + ++Client.soundEffectCount; + } + } + } + } +} diff --git a/rs-client/src/main/java/ScriptEvent.java b/rs-client/src/main/java/ScriptEvent.java new file mode 100644 index 0000000000..664404b3ce --- /dev/null +++ b/rs-client/src/main/java/ScriptEvent.java @@ -0,0 +1,355 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("by") +@Implements("ScriptEvent") +public class ScriptEvent extends Node { + @ObfuscatedName("fv") + @ObfuscatedSignature( + signature = "Lkk;" + ) + @Export("fontPlain11") + static Font fontPlain11; + @ObfuscatedName("hb") + @ObfuscatedGetter( + intValue = -1218466245 + ) + @Export("oculusOrbFocalPointY") + static int oculusOrbFocalPointY; + @ObfuscatedName("m") + @Export("args0") + Object[] args0; + @ObfuscatedName("f") + @Export("boolean1") + boolean boolean1; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("widget") + Widget widget; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 488198377 + ) + @Export("mouseX") + int mouseX; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 95719815 + ) + @Export("mouseY") + int mouseY; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1089993721 + ) + @Export("opIndex") + int opIndex; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("dragTarget") + Widget dragTarget; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1330602393 + ) + @Export("keyTyped") + int keyTyped; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 327085889 + ) + @Export("keyPressed") + int keyPressed; + @ObfuscatedName("x") + @Export("targetName") + String targetName; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -2138736593 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -161292529 + ) + @Export("type0") + int type0; + + public ScriptEvent() { + this.type0 = 76; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([Ljava/lang/Object;I)V", + garbageValue = "723852511" + ) + @Export("setArgs") + public void setArgs(Object[] var1) { + this.args0 = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-110" + ) + @Export("setType") + public void setType(int var1) { + this.type0 = var1; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "0" + ) + static int method1185(int var0, Script var1, boolean var2) { + Widget var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + if(var0 == 1600) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollX; + return 1; + } else if(var0 == 1601) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollY; + return 1; + } else if(var0 == 1602) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.text; + return 1; + } else if(var0 == 1603) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollWidth; + return 1; + } else if(var0 == 1604) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.scrollHeight; + return 1; + } else if(var0 == 1605) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelZoom; + return 1; + } else if(var0 == 1606) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelAngleX; + return 1; + } else if(var0 == 1607) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelAngleZ; + return 1; + } else if(var0 == 1608) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.modelAngleY; + return 1; + } else if(var0 == 1609) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.transparency; + return 1; + } else if(var0 == 1610) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.__af; + return 1; + } else if(var0 == 1611) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.color; + return 1; + } else if(var0 == 1612) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.color2; + return 1; + } else if(var0 == 1613) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.rectangleMode.rsOrdinal(); + return 1; + } else if(var0 == 1614) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.__bv?1:0; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "1256509027" + ) + static int method1187(int var0, Script var1, boolean var2) { + if(var0 == 3300) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.cycle; + return 1; + } else { + int var3; + int var4; + if(var0 == 3301) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class83.method2027(var3, var4); + return 1; + } else if(var0 == 3302) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapLabel.method442(var3, var4); + return 1; + } else if(var0 == 3303) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class1.method18(var3, var4); + return 1; + } else if(var0 == 3304) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class231.method4523(var3).size; + return 1; + } else if(var0 == 3305) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.currentLevels[var3]; + return 1; + } else if(var0 == 3306) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.levels[var3]; + return 1; + } else if(var0 == 3307) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.experience[var3]; + return 1; + } else { + int var5; + if(var0 == 3308) { + var3 = SoundSystem.plane; + var4 = (Canvas.localPlayer.x >> 7) + class50.baseX; + var5 = (Canvas.localPlayer.y >> 7) + GraphicsObject.baseY; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (var4 << 14) + var5 + (var3 << 28); + return 1; + } else if(var0 == 3309) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 >> 14 & 16383; + return 1; + } else if(var0 == 3310) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 >> 28; + return 1; + } else if(var0 == 3311) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 & 16383; + return 1; + } else if(var0 == 3312) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.isMembersWorld?1:0; + return 1; + } else if(var0 == 3313) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] + 32768; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class83.method2027(var3, var4); + return 1; + } else if(var0 == 3314) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] + 32768; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapLabel.method442(var3, var4); + return 1; + } else if(var0 == 3315) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] + 32768; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class1.method18(var3, var4); + return 1; + } else if(var0 == 3316) { + if(Client.rights >= 2) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.rights; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3317) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.rebootTimer; + return 1; + } else if(var0 == 3318) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.worldId; + return 1; + } else if(var0 == 3321) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.runEnergy; + return 1; + } else if(var0 == 3322) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.weight; + return 1; + } else if(var0 == 3323) { + if(Client.__client_mn) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 3324) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.worldProperties; + return 1; + } else if(var0 == 3325) { + class179.Interpreter_intStackSize -= 4; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + int var6 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + var3 += var4 << 14; + var3 += var5 << 28; + var3 += var6; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3; + return 1; + } else { + return 2; + } + } + } + } + + @ObfuscatedName("ep") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "-52" + ) + static void method1183(int var0, int var1) { + int[] var2 = new int[9]; + + for(int var3 = 0; var3 < var2.length; ++var3) { + int var4 = var3 * 32 + 15 + 128; + int var5 = var4 * 3 + 600; + int var7 = Rasterizer3D.Rasterizer3D_sine[var4]; + int var6 = method1176(var5, var1); + var2[var3] = var6 * var7 >> 16; + } + + Scene.Scene_buildVisiblityMap(var2, 500, 800, var0 * 334 / var1, 334); + } + + @ObfuscatedName("gj") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-914543563" + ) + static int method1176(int var0, int var1) { + int var2 = var1 - 334; + if(var2 < 0) { + var2 = 0; + } else if(var2 > 100) { + var2 = 100; + } + + int var3 = (Client.__client_rb - Client.__client_re) * var2 / 100 + Client.__client_re; + return var0 * var3 / 256; + } + + @ObfuscatedName("hf") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "35" + ) + static final void method1179() { + for(class68 var0 = (class68)Client.__client_kh.last(); var0 != null; var0 = (class68)Client.__client_kh.previous()) { + if(var0.field910 == -1) { + var0.field909 = 0; + class13.method165(var0); + } else { + var0.remove(); + } + } + + } +} diff --git a/rs-client/src/main/java/ScriptFrame.java b/rs-client/src/main/java/ScriptFrame.java new file mode 100644 index 0000000000..c31e812dc4 --- /dev/null +++ b/rs-client/src/main/java/ScriptFrame.java @@ -0,0 +1,70 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bn") +@Implements("ScriptFrame") +public class ScriptFrame { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lcg;" + ) + @Export("script") + Script script; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1715361849 + ) + @Export("pc") + int pc; + @ObfuscatedName("q") + @Export("intLocals") + int[] intLocals; + @ObfuscatedName("w") + @Export("stringLocals") + String[] stringLocals; + + ScriptFrame() { + this.pc = -1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([Lgc;II)Lgc;", + garbageValue = "-1726705535" + ) + @Export("findEnumerated") + public static Enumerated findEnumerated(Enumerated[] var0, int var1) { + Enumerated[] var2 = var0; + + for(int var3 = 0; var3 < var2.length; ++var3) { + Enumerated var4 = var2[var3]; + if(var1 == var4.rsOrdinal()) { + return var4; + } + } + + return null; + } + + @ObfuscatedName("kl") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-423549686" + ) + static void method1138() { + if(ClientParameter.field3645 != null) { + Client.__client_ss = Client.cycle; + ClientParameter.field3645.method4719(); + + for(int var0 = 0; var0 < Client.players.length; ++var0) { + if(Client.players[var0] != null) { + ClientParameter.field3645.method4738((Client.players[var0].x >> 7) + class50.baseX, (Client.players[var0].y >> 7) + GraphicsObject.baseY); + } + } + } + + } +} diff --git a/rs-client/src/main/java/SecureRandomCallable.java b/rs-client/src/main/java/SecureRandomCallable.java new file mode 100644 index 0000000000..f81565e721 --- /dev/null +++ b/rs-client/src/main/java/SecureRandomCallable.java @@ -0,0 +1,143 @@ +import java.util.concurrent.Callable; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bk") +@Implements("SecureRandomCallable") +public class SecureRandomCallable implements Callable { + @ObfuscatedName("g") + @Export("indexedSpriteHeights") + static int[] indexedSpriteHeights; + + @Export("call") + @ObfuscatedName("call") + public Object call() { + return AttackOption.method2034(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BB)Laq;", + garbageValue = "64" + ) + static class27 method1145(byte[] var0) { + return var0 == null?new class27():new class27(class27.method438(var0).pixels); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Lix;", + garbageValue = "0" + ) + public static VarpDefinition method1140(int var0) { + VarpDefinition var1 = (VarpDefinition)VarpDefinition.VarpDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = VarpDefinition.__ix_m.takeRecord(16, var0); + var1 = new VarpDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + VarpDefinition.VarpDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("jx") + @ObfuscatedSignature( + signature = "(IIII)Lbx;", + garbageValue = "329127611" + ) + static final WidgetGroupParent method1143(int var0, int var1, int var2) { + WidgetGroupParent var3 = new WidgetGroupParent(); + var3.group = var1; + var3.type = var2; + Client.widgetGroupParents.put(var3, (long)var0); + DevicePcmPlayerProvider.method845(var1); + Widget var4 = Huffman.getWidget(var0); + class22.method295(var4); + if(Client.__client_mo != null) { + class22.method295(Client.__client_mo); + Client.__client_mo = null; + } + + int var5; + int var6; + for(var5 = 0; var5 < Client.menuOptionsCount; ++var5) { + if(WorldMapManager.method672(Client.menuOpcodes[var5])) { + if(var5 < Client.menuOptionsCount - 1) { + for(var6 = var5; var6 < Client.menuOptionsCount - 1; ++var6) { + Client.menuActions[var6] = Client.menuActions[var6 + 1]; + Client.menuTargetNames[var6] = Client.menuTargetNames[var6 + 1]; + Client.menuOpcodes[var6] = Client.menuOpcodes[var6 + 1]; + Client.menuArguments0[var6] = Client.menuArguments0[var6 + 1]; + Client.menuArguments1[var6] = Client.menuArguments1[var6 + 1]; + Client.menuArguments2[var6] = Client.menuArguments2[var6 + 1]; + Client.menuShiftClick[var6] = Client.menuShiftClick[var6 + 1]; + } + } + + --var5; + --Client.menuOptionsCount; + } + } + + var5 = class214.menuWidth / 2 + class25.menuX; + var6 = GameShell.menuY; + int var7 = class2.fontBold12.stringWidth("Choose Option"); + + int var8; + for(var8 = 0; var8 < Client.menuOptionsCount; ++var8) { + Font var9 = class2.fontBold12; + String var10; + if(var8 < 0) { + var10 = ""; + } else if(Client.menuTargetNames[var8].length() > 0) { + var10 = Client.menuActions[var8] + " " + Client.menuTargetNames[var8]; + } else { + var10 = Client.menuActions[var8]; + } + + int var11 = var9.stringWidth(var10); + if(var11 > var7) { + var7 = var11; + } + } + + var7 += 8; + var8 = Client.menuOptionsCount * 15 + 22; + int var12 = var5 - var7 / 2; + if(var12 + var7 > SoundCache.canvasWidth) { + var12 = SoundCache.canvasWidth - var7; + } + + if(var12 < 0) { + var12 = 0; + } + + int var13 = var6; + if(var8 + var6 > Huffman.canvasHeight) { + var13 = Huffman.canvasHeight - var8; + } + + if(var13 < 0) { + var13 = 0; + } + + class25.menuX = var12; + GameShell.menuY = var13; + class214.menuWidth = var7; + AbstractWorldMapIcon.menuHeight = Client.menuOptionsCount * 15 + 22; + class39.revalidateWidgetScroll(Widget.widgets[var0 >> 16], var4, false); + WorldMapSection3.runWidgetOnLoadListener(var1); + if(Client.rootWidgetGroup != -1) { + GrandExchangeEvents.method74(Client.rootWidgetGroup, 1); + } + + return var3; + } +} diff --git a/rs-client/src/main/java/SecureRandomFuture.java b/rs-client/src/main/java/SecureRandomFuture.java new file mode 100644 index 0000000000..3f526b4e34 --- /dev/null +++ b/rs-client/src/main/java/SecureRandomFuture.java @@ -0,0 +1,102 @@ +import java.security.SecureRandom; +import java.util.Iterator; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cn") +@Implements("SecureRandomFuture") +public class SecureRandomFuture { + @ObfuscatedName("bu") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__cn_bu") + static IndexedSprite __cn_bu; + @ObfuscatedName("dy") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache5") + static IndexCache indexCache5; + @ObfuscatedName("jn") + @ObfuscatedSignature( + signature = "Ldl;" + ) + @Export("textureProvider") + static TextureProvider textureProvider; + @ObfuscatedName("m") + @Export("executor") + ExecutorService executor; + @ObfuscatedName("f") + @Export("future") + Future future; + + SecureRandomFuture() { + this.executor = Executors.newSingleThreadExecutor(); + this.future = this.executor.submit(new SecureRandomCallable()); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "201982911" + ) + @Export("shutdown") + void shutdown() { + this.executor.shutdown(); + this.executor = null; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1746832096" + ) + @Export("isDone") + boolean isDone() { + return this.future.isDone(); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)Ljava/security/SecureRandom;", + garbageValue = "1216808827" + ) + @Export("get") + SecureRandom get() { + try { + return (SecureRandom)this.future.get(); + } catch (Exception var2) { + return AttackOption.method2034(); + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1209786285" + ) + static void method2104() { + Iterator var0 = Messages.Messages_hashTable.iterator(); + + while(var0.hasNext()) { + Message var1 = (Message)var0.next(); + var1.clearIsFromIgnored(); + } + + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1357745818" + ) + public static boolean method2101(int var0) { + return (var0 >> 31 & 1) != 0; + } +} diff --git a/rs-client/src/main/java/SequenceDefinition.java b/rs-client/src/main/java/SequenceDefinition.java new file mode 100644 index 0000000000..2e3d8fb8bd --- /dev/null +++ b/rs-client/src/main/java/SequenceDefinition.java @@ -0,0 +1,378 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jh") +@Implements("SequenceDefinition") +public class SequenceDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("SequenceDefinition_indexCache") + public static AbstractIndexCache SequenceDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jh_f") + public static AbstractIndexCache __jh_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jh_q") + public static AbstractIndexCache __jh_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("SequenceDefinition_cached") + public static EvictingDualNodeHashTable SequenceDefinition_cached; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__jh_o") + public static EvictingDualNodeHashTable __jh_o; + @ObfuscatedName("u") + @Export("frameIds") + public int[] frameIds; + @ObfuscatedName("g") + @Export("frameIds2") + int[] frameIds2; + @ObfuscatedName("l") + @Export("frameLengths") + public int[] frameLengths; + @ObfuscatedName("e") + @Export("__e") + public int[] __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -736885973 + ) + @Export("frameCount") + public int frameCount; + @ObfuscatedName("d") + @Export("__d") + int[] __d; + @ObfuscatedName("k") + @Export("__k") + public boolean __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 1309695045 + ) + @Export("__n") + public int __n; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -1308226131 + ) + @Export("shield") + public int shield; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -1629538741 + ) + @Export("weapon") + public int weapon; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -28345361 + ) + @Export("__z") + public int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 1339014215 + ) + @Export("__j") + public int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 2012242069 + ) + @Export("__s") + public int __s; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 1147391369 + ) + @Export("__t") + public int __t; + + static { + SequenceDefinition_cached = new EvictingDualNodeHashTable(64); + __jh_o = new EvictingDualNodeHashTable(100); + } + + SequenceDefinition() { + this.frameCount = -1; + this.__k = false; + this.__n = 5; + this.shield = -1; + this.weapon = -1; + this.__z = 99; + this.__j = -1; + this.__s = -1; + this.__t = 2; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;S)V", + garbageValue = "259" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "154075720" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + int var3; + int var4; + if(var2 == 1) { + var3 = var1.__ag_302(); + this.frameLengths = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.frameLengths[var4] = var1.__ag_302(); + } + + this.frameIds = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.frameIds[var4] = var1.__ag_302(); + } + + for(var4 = 0; var4 < var3; ++var4) { + this.frameIds[var4] += var1.__ag_302() << 16; + } + } else if(var2 == 2) { + this.frameCount = var1.__ag_302(); + } else if(var2 == 3) { + var3 = var1.readUnsignedByte(); + this.__d = new int[var3 + 1]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__d[var4] = var1.readUnsignedByte(); + } + + this.__d[var3] = 9999999; + } else if(var2 == 4) { + this.__k = true; + } else if(var2 == 5) { + this.__n = var1.readUnsignedByte(); + } else if(var2 == 6) { + this.shield = var1.__ag_302(); + } else if(var2 == 7) { + this.weapon = var1.__ag_302(); + } else if(var2 == 8) { + this.__z = var1.readUnsignedByte(); + } else if(var2 == 9) { + this.__j = var1.readUnsignedByte(); + } else if(var2 == 10) { + this.__s = var1.readUnsignedByte(); + } else if(var2 == 11) { + this.__t = var1.readUnsignedByte(); + } else if(var2 == 12) { + var3 = var1.readUnsignedByte(); + this.frameIds2 = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.frameIds2[var4] = var1.__ag_302(); + } + + for(var4 = 0; var4 < var3; ++var4) { + this.frameIds2[var4] += var1.__ag_302() << 16; + } + } else if(var2 == 13) { + var3 = var1.readUnsignedByte(); + this.__e = new int[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.__e[var4] = var1.readMedium(); + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "1" + ) + @Export("init") + void init() { + if(this.__j == -1) { + if(this.__d != null) { + this.__j = 2; + } else { + this.__j = 0; + } + } + + if(this.__s == -1) { + if(this.__d != null) { + this.__s = 2; + } else { + this.__s = 0; + } + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Ldu;II)Ldu;", + garbageValue = "128527714" + ) + @Export("animateSequence") + public Model animateSequence(Model var1, int var2) { + var2 = this.frameIds[var2]; + Frames var3 = ItemContainer.getFrames(var2 >> 16); + var2 &= 65535; + if(var3 == null) { + return var1.toSharedSequenceModel(true); + } else { + Model var4 = var1.toSharedSequenceModel(!var3.hasAlphaTransform(var2)); + var4.animate(var3, var2); + return var4; + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Ldu;IIB)Ldu;", + garbageValue = "-65" + ) + @Export("animateObject") + Model animateObject(Model var1, int var2, int var3) { + var2 = this.frameIds[var2]; + Frames var4 = ItemContainer.getFrames(var2 >> 16); + var2 &= 65535; + if(var4 == null) { + return var1.toSharedSequenceModel(true); + } else { + Model var5 = var1.toSharedSequenceModel(!var4.hasAlphaTransform(var2)); + var3 &= 3; + if(var3 == 1) { + var5.rotateY270Ccw(); + } else if(var3 == 2) { + var5.rotateY180(); + } else if(var3 == 3) { + var5.rotateY90Ccw(); + } + + var5.animate(var4, var2); + if(var3 == 1) { + var5.rotateY90Ccw(); + } else if(var3 == 2) { + var5.rotateY180(); + } else if(var3 == 3) { + var5.rotateY270Ccw(); + } + + return var5; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ldu;II)Ldu;", + garbageValue = "-1692496767" + ) + @Export("animateSpotAnimation") + Model animateSpotAnimation(Model var1, int var2) { + var2 = this.frameIds[var2]; + Frames var3 = ItemContainer.getFrames(var2 >> 16); + var2 &= 65535; + if(var3 == null) { + return var1.toSharedSpotAnimationModel(true); + } else { + Model var4 = var1.toSharedSpotAnimationModel(!var3.hasAlphaTransform(var2)); + var4.animate(var3, var2); + return var4; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Ldu;ILjh;II)Ldu;", + garbageValue = "-386360993" + ) + @Export("animateSequence2") + public Model animateSequence2(Model var1, int var2, SequenceDefinition var3, int var4) { + var2 = this.frameIds[var2]; + Frames var5 = ItemContainer.getFrames(var2 >> 16); + var2 &= 65535; + if(var5 == null) { + return var3.animateSequence(var1, var4); + } else { + var4 = var3.frameIds[var4]; + Frames var6 = ItemContainer.getFrames(var4 >> 16); + var4 &= 65535; + Model var7; + if(var6 == null) { + var7 = var1.toSharedSequenceModel(!var5.hasAlphaTransform(var2)); + var7.animate(var5, var2); + return var7; + } else { + var7 = var1.toSharedSequenceModel(!var5.hasAlphaTransform(var2) & !var6.hasAlphaTransform(var4)); + var7.animate2(var5, var2, var6, var4, this.__d); + return var7; + } + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Ldu;II)Ldu;", + garbageValue = "-15433768" + ) + @Export("animateWidget") + public Model animateWidget(Model var1, int var2) { + int var3 = this.frameIds[var2]; + Frames var4 = ItemContainer.getFrames(var3 >> 16); + var3 &= 65535; + if(var4 == null) { + return var1.toSharedSequenceModel(true); + } else { + Frames var5 = null; + int var6 = 0; + if(this.frameIds2 != null && var2 < this.frameIds2.length) { + var6 = this.frameIds2[var2]; + var5 = ItemContainer.getFrames(var6 >> 16); + var6 &= 65535; + } + + Model var7; + if(var5 != null && var6 != 65535) { + var7 = var1.toSharedSequenceModel(!var4.hasAlphaTransform(var3) & !var5.hasAlphaTransform(var6)); + var7.animate(var4, var3); + var7.animate(var5, var6); + return var7; + } else { + var7 = var1.toSharedSequenceModel(!var4.hasAlphaTransform(var3)); + var7.animate(var4, var3); + return var7; + } + } + } +} diff --git a/rs-client/src/main/java/ServerBuild.java b/rs-client/src/main/java/ServerBuild.java new file mode 100644 index 0000000000..30b828ab0f --- /dev/null +++ b/rs-client/src/main/java/ServerBuild.java @@ -0,0 +1,64 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("iy") +@Implements("ServerBuild") +public class ServerBuild { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Liy;" + ) + @Export("__iy_m") + public static final ServerBuild __iy_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Liy;" + ) + @Export("__iy_f") + public static final ServerBuild __iy_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Liy;" + ) + @Export("__iy_q") + public static final ServerBuild __iy_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Liy;" + ) + @Export("__iy_w") + public static final ServerBuild __iy_w; + @ObfuscatedName("bx") + @Export("worldsUrl") + static String worldsUrl; + @ObfuscatedName("lo") + @ObfuscatedGetter( + intValue = -365366303 + ) + @Export("__iy_lo") + static int __iy_lo; + @ObfuscatedName("o") + @Export("name") + public final String name; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -947415971 + ) + @Export("id") + public final int id; + + static { + __iy_m = new ServerBuild("LIVE", 0); + __iy_f = new ServerBuild("BUILDLIVE", 3); + __iy_q = new ServerBuild("RC", 1); + __iy_w = new ServerBuild("WIP", 2); + } + + ServerBuild(String var1, int var2) { + this.name = var1; + this.id = var2; + } +} diff --git a/rs-client/src/main/java/ServerPacket.java b/rs-client/src/main/java/ServerPacket.java new file mode 100644 index 0000000000..ec2fe9dc64 --- /dev/null +++ b/rs-client/src/main/java/ServerPacket.java @@ -0,0 +1,731 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ge") +@Implements("ServerPacket") +public class ServerPacket { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_m") + public static final ServerPacket __ge_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_f") + public static final ServerPacket __ge_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_q") + public static final ServerPacket __ge_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_w") + public static final ServerPacket __ge_w; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_o") + public static final ServerPacket __ge_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_u") + public static final ServerPacket __ge_u; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_g") + public static final ServerPacket __ge_g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_l") + public static final ServerPacket __ge_l; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_e") + public static final ServerPacket __ge_e; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_x") + public static final ServerPacket __ge_x; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_d") + public static final ServerPacket __ge_d; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_k") + public static final ServerPacket __ge_k; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_n") + public static final ServerPacket __ge_n; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_i") + public static final ServerPacket __ge_i; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_a") + public static final ServerPacket __ge_a; + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_z") + public static final ServerPacket __ge_z; + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_j") + public static final ServerPacket __ge_j; + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_s") + public static final ServerPacket __ge_s; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_t") + public static final ServerPacket __ge_t; + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_y") + public static final ServerPacket __ge_y; + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_h") + public static final ServerPacket __ge_h; + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_b") + public static final ServerPacket __ge_b; + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_c") + public static final ServerPacket __ge_c; + @ObfuscatedName("r") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_r") + public static final ServerPacket __ge_r; + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_p") + public static final ServerPacket __ge_p; + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_v") + public static final ServerPacket __ge_v; + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ag") + public static final ServerPacket __ge_ag; + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_aq") + public static final ServerPacket __ge_aq; + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_aj") + public static final ServerPacket __ge_aj; + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_av") + public static final ServerPacket __ge_av; + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ar") + public static final ServerPacket __ge_ar; + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ac") + public static final ServerPacket __ge_ac; + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ay") + public static final ServerPacket __ge_ay; + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ah") + public static final ServerPacket __ge_ah; + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ak") + public static final ServerPacket __ge_ak; + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_aw") + public static final ServerPacket __ge_aw; + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_al") + public static final ServerPacket __ge_al; + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ab") + public static final ServerPacket __ge_ab; + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ae") + public static final ServerPacket __ge_ae; + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_at") + public static final ServerPacket __ge_at; + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ad") + public static final ServerPacket __ge_ad; + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ap") + public static final ServerPacket __ge_ap; + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_as") + public static final ServerPacket __ge_as; + @ObfuscatedName("am") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_am") + public static final ServerPacket __ge_am; + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_an") + public static final ServerPacket __ge_an; + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_az") + public static final ServerPacket __ge_az; + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_au") + public static final ServerPacket __ge_au; + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ao") + public static final ServerPacket __ge_ao; + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_aa") + public static final ServerPacket __ge_aa; + @ObfuscatedName("ax") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ax") + public static final ServerPacket __ge_ax; + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_af") + public static final ServerPacket __ge_af; + @ObfuscatedName("ai") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ai") + public static final ServerPacket __ge_ai; + @ObfuscatedName("ba") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ba") + public static final ServerPacket __ge_ba; + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bb") + public static final ServerPacket __ge_bb; + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bs") + public static final ServerPacket __ge_bs; + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bq") + public static final ServerPacket __ge_bq; + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bn") + public static final ServerPacket __ge_bn; + @ObfuscatedName("bk") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bk") + public static final ServerPacket __ge_bk; + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bd") + public static final ServerPacket __ge_bd; + @ObfuscatedName("bc") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bc") + public static final ServerPacket __ge_bc; + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bo") + public static final ServerPacket __ge_bo; + @ObfuscatedName("bx") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bx") + public static final ServerPacket __ge_bx; + @ObfuscatedName("by") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_by") + public static final ServerPacket __ge_by; + @ObfuscatedName("bu") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bu") + public static final ServerPacket __ge_bu; + @ObfuscatedName("bm") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bm") + public static final ServerPacket __ge_bm; + @ObfuscatedName("bl") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bl") + public static final ServerPacket __ge_bl; + @ObfuscatedName("br") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_br") + public static final ServerPacket __ge_br; + @ObfuscatedName("bj") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bj") + public static final ServerPacket __ge_bj; + @ObfuscatedName("bi") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bi") + public static final ServerPacket __ge_bi; + @ObfuscatedName("bz") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bz") + public static final ServerPacket __ge_bz; + @ObfuscatedName("bg") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bg") + public static final ServerPacket __ge_bg; + @ObfuscatedName("bt") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bt") + public static final ServerPacket __ge_bt; + @ObfuscatedName("bp") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bp") + public static final ServerPacket __ge_bp; + @ObfuscatedName("bf") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bf") + public static final ServerPacket __ge_bf; + @ObfuscatedName("bh") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bh") + public static final ServerPacket __ge_bh; + @ObfuscatedName("be") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_be") + public static final ServerPacket __ge_be; + @ObfuscatedName("bv") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bv") + public static final ServerPacket __ge_bv; + @ObfuscatedName("bw") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_bw") + public static final ServerPacket __ge_bw; + @ObfuscatedName("cr") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_cr") + public static final ServerPacket __ge_cr; + @ObfuscatedName("cv") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_cv") + public static final ServerPacket __ge_cv; + @ObfuscatedName("ce") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_ce") + public static final ServerPacket __ge_ce; + @ObfuscatedName("cy") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_cy") + public static final ServerPacket __ge_cy; + @ObfuscatedName("cs") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_cs") + public static final ServerPacket __ge_cs; + @ObfuscatedName("cm") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_cm") + public static final ServerPacket __ge_cm; + @ObfuscatedName("cj") + @ObfuscatedSignature( + signature = "Lge;" + ) + @Export("__ge_cj") + public static final ServerPacket __ge_cj; + @ObfuscatedName("ix") + @ObfuscatedGetter( + intValue = -1645409107 + ) + @Export("selectedItemWidget") + static int selectedItemWidget; + @ObfuscatedName("cu") + @ObfuscatedGetter( + intValue = 1117211673 + ) + @Export("id") + public final int id; + @ObfuscatedName("cb") + @ObfuscatedGetter( + intValue = 947096829 + ) + @Export("length") + public final int length; + + static { + __ge_m = new ServerPacket(0, -2); + __ge_f = new ServerPacket(1, 0); + __ge_q = new ServerPacket(2, 0); + __ge_w = new ServerPacket(3, -1); + __ge_o = new ServerPacket(4, 6); + __ge_u = new ServerPacket(5, 4); + __ge_g = new ServerPacket(6, 4); + __ge_l = new ServerPacket(7, 4); + __ge_e = new ServerPacket(8, 6); + __ge_x = new ServerPacket(9, 4); + __ge_d = new ServerPacket(10, -2); + __ge_k = new ServerPacket(11, 15); + __ge_n = new ServerPacket(12, 5); + __ge_i = new ServerPacket(13, 2); + __ge_a = new ServerPacket(14, 3); + __ge_z = new ServerPacket(15, 7); + __ge_j = new ServerPacket(16, 1); + __ge_s = new ServerPacket(17, -2); + __ge_t = new ServerPacket(18, -2); + __ge_y = new ServerPacket(19, -2); + __ge_h = new ServerPacket(20, 10); + __ge_b = new ServerPacket(21, 5); + __ge_c = new ServerPacket(22, 6); + __ge_r = new ServerPacket(23, 2); + __ge_p = new ServerPacket(24, 6); + __ge_v = new ServerPacket(25, 2); + __ge_ag = new ServerPacket(26, 5); + __ge_aq = new ServerPacket(27, -2); + __ge_aj = new ServerPacket(28, 0); + __ge_av = new ServerPacket(29, 0); + __ge_ar = new ServerPacket(30, 4); + __ge_ac = new ServerPacket(31, 6); + __ge_ay = new ServerPacket(32, -2); + __ge_ah = new ServerPacket(33, -2); + __ge_ak = new ServerPacket(34, 1); + __ge_aw = new ServerPacket(35, 6); + __ge_al = new ServerPacket(36, 6); + __ge_ab = new ServerPacket(37, -1); + __ge_ae = new ServerPacket(38, -2); + __ge_at = new ServerPacket(39, 4); + __ge_ad = new ServerPacket(40, 5); + __ge_ap = new ServerPacket(41, 8); + __ge_as = new ServerPacket(42, 14); + __ge_am = new ServerPacket(43, -2); + __ge_an = new ServerPacket(44, -2); + __ge_az = new ServerPacket(45, -1); + __ge_au = new ServerPacket(46, 2); + __ge_ao = new ServerPacket(47, -1); + __ge_aa = new ServerPacket(48, 12); + __ge_ax = new ServerPacket(49, 4); + __ge_af = new ServerPacket(50, 10); + __ge_ai = new ServerPacket(51, -2); + __ge_ba = new ServerPacket(52, 0); + __ge_bb = new ServerPacket(53, -2); + __ge_bs = new ServerPacket(54, -1); + __ge_bq = new ServerPacket(55, 20); + __ge_bn = new ServerPacket(56, -2); + __ge_bk = new ServerPacket(57, 28); + __ge_bd = new ServerPacket(58, -2); + __ge_bc = new ServerPacket(59, 8); + __ge_bo = new ServerPacket(60, 1); + __ge_bx = new ServerPacket(61, 6); + __ge_by = new ServerPacket(62, -2); + __ge_bu = new ServerPacket(63, 3); + __ge_bm = new ServerPacket(64, 2); + __ge_bl = new ServerPacket(65, 5); + __ge_br = new ServerPacket(66, -1); + __ge_bj = new ServerPacket(67, 2); + __ge_bi = new ServerPacket(68, 1); + __ge_bz = new ServerPacket(69, 8); + __ge_bg = new ServerPacket(70, -2); + __ge_bt = new ServerPacket(71, 2); + __ge_bp = new ServerPacket(72, 2); + __ge_bf = new ServerPacket(73, 0); + __ge_bh = new ServerPacket(74, 1); + __ge_be = new ServerPacket(75, 6); + __ge_bv = new ServerPacket(76, 6); + __ge_bw = new ServerPacket(77, 7); + __ge_cr = new ServerPacket(78, 0); + __ge_cv = new ServerPacket(79, -2); + __ge_ce = new ServerPacket(80, 2); + __ge_cy = new ServerPacket(81, -2); + __ge_cs = new ServerPacket(82, 8); + __ge_cm = new ServerPacket(83, 6); + __ge_cj = new ServerPacket(84, 2); + } + + ServerPacket(int var1, int var2) { + this.id = var1; + this.length = var2; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)Llq;", + garbageValue = "2048918805" + ) + static IndexedSprite method3663() { + IndexedSprite var0 = new IndexedSprite(); + var0.width = class328.indexedSpriteWidth; + var0.height = class328.indexedSpriteHeight; + var0.xOffset = class328.indexedSpriteOffsetXs[0]; + var0.yOffset = class328.indexedSpriteOffsetYs[0]; + var0.subWidth = VarbitDefinition.indexedSpriteWidths[0]; + var0.subHeight = SecureRandomCallable.indexedSpriteHeights[0]; + var0.palette = class328.indexedSpritePalette; + var0.pixels = class328.spritePixels[0]; + class328.indexedSpriteOffsetXs = null; + class328.indexedSpriteOffsetYs = null; + VarbitDefinition.indexedSpriteWidths = null; + SecureRandomCallable.indexedSpriteHeights = null; + class328.indexedSpritePalette = null; + class328.spritePixels = null; + return var0; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "([BIIIIIIILem;[Lfy;I)V", + garbageValue = "-1257461571" + ) + static final void method3662(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, Scene var8, CollisionMap[] var9) { + Buffer var10 = new Buffer(var0); + int var11 = -1; + + while(true) { + int var12 = var10.__at_308(); + if(var12 == 0) { + return; + } + + var11 += var12; + int var13 = 0; + + while(true) { + int var14 = var10.__ae_307(); + if(var14 == 0) { + break; + } + + var13 += var14 - 1; + int var15 = var13 & 63; + int var16 = var13 >> 6 & 63; + int var17 = var13 >> 12; + int var18 = var10.readUnsignedByte(); + int var19 = var18 >> 2; + int var20 = var18 & 3; + if(var17 == var4 && var16 >= var5 && var16 < var5 + 8 && var15 >= var6 && var15 < var6 + 8) { + ObjectDefinition var21 = class50.getObjectDefinition(var11); + int var24 = var16 & 7; + int var25 = var15 & 7; + int var27 = var21.sizeX; + int var28 = var21.sizeY; + int var29; + if((var20 & 1) == 1) { + var29 = var27; + var27 = var28; + var28 = var29; + } + + int var26 = var7 & 3; + int var23; + if(var26 == 0) { + var23 = var24; + } else if(var26 == 1) { + var23 = var25; + } else if(var26 == 2) { + var23 = 7 - var24 - (var27 - 1); + } else { + var23 = 7 - var25 - (var28 - 1); + } + + var29 = var2 + var23; + int var30 = var3 + class171.method3496(var16 & 7, var15 & 7, var7, var21.sizeX, var21.sizeY, var20); + if(var29 > 0 && var30 > 0 && var29 < 103 && var30 < 103) { + int var31 = var1; + if((Tiles.Tiles_renderFlags[1][var29][var30] & 2) == 2) { + var31 = var1 - 1; + } + + CollisionMap var32 = null; + if(var31 >= 0) { + var32 = var9[var31]; + } + + class227.method4446(var1, var29, var30, var11, var20 + var7 & 3, var19, var8, var32); + } + } + } + } + } +} diff --git a/rs-client/src/main/java/Skeleton.java b/rs-client/src/main/java/Skeleton.java new file mode 100644 index 0000000000..eb49ea8c5a --- /dev/null +++ b/rs-client/src/main/java/Skeleton.java @@ -0,0 +1,195 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ek") +@Implements("Skeleton") +public class Skeleton extends Node { + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 2096389021 + ) + @Export("__ek_x") + static int __ek_x; + @ObfuscatedName("dc") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache1") + static IndexCache indexCache1; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -1634889691 + ) + @Export("id") + int id; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1875841677 + ) + @Export("count") + int count; + @ObfuscatedName("q") + @Export("transformTypes") + int[] transformTypes; + @ObfuscatedName("w") + @Export("labels") + int[][] labels; + + Skeleton(int var1, byte[] var2) { + this.id = var1; + Buffer var3 = new Buffer(var2); + this.count = var3.readUnsignedByte(); + this.transformTypes = new int[this.count]; + this.labels = new int[this.count][]; + + int var4; + for(var4 = 0; var4 < this.count; ++var4) { + this.transformTypes[var4] = var3.readUnsignedByte(); + } + + for(var4 = 0; var4 < this.count; ++var4) { + this.labels[var4] = new int[var3.readUnsignedByte()]; + } + + for(var4 = 0; var4 < this.count; ++var4) { + for(int var5 = 0; var5 < this.labels[var4].length; ++var5) { + this.labels[var4][var5] = var3.readUnsignedByte(); + } + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lhx;IB)V", + garbageValue = "3" + ) + static final void method3062(PacketBuffer var0, int var1) { + int var2 = var0.index; + Players.__cq_n = 0; + int var3 = 0; + var0.importIndex(); + + int var4; + int var5; + int var6; + for(var4 = 0; var4 < Players.Players_count; ++var4) { + var5 = Players.Players_indices[var4]; + if((Players.__cq_q[var5] & 1) == 0) { + if(var3 > 0) { + --var3; + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else { + var6 = var0.readBits(1); + if(var6 == 0) { + var3 = GrandExchangeOffer.method105(var0); + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else { + class210.method4101(var0, var5); + } + } + } + } + + var0.exportIndex(); + if(var3 != 0) { + throw new RuntimeException(); + } else { + var0.importIndex(); + + for(var4 = 0; var4 < Players.Players_count; ++var4) { + var5 = Players.Players_indices[var4]; + if((Players.__cq_q[var5] & 1) != 0) { + if(var3 > 0) { + --var3; + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else { + var6 = var0.readBits(1); + if(var6 == 0) { + var3 = GrandExchangeOffer.method105(var0); + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else { + class210.method4101(var0, var5); + } + } + } + } + + var0.exportIndex(); + if(var3 != 0) { + throw new RuntimeException(); + } else { + var0.importIndex(); + + for(var4 = 0; var4 < Players.__cq_l; ++var4) { + var5 = Players.__cq_e[var4]; + if((Players.__cq_q[var5] & 1) != 0) { + if(var3 > 0) { + --var3; + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else { + var6 = var0.readBits(1); + if(var6 == 0) { + var3 = GrandExchangeOffer.method105(var0); + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else if(class236.updateExternalPlayer(var0, var5)) { + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } + } + } + } + + var0.exportIndex(); + if(var3 != 0) { + throw new RuntimeException(); + } else { + var0.importIndex(); + + for(var4 = 0; var4 < Players.__cq_l; ++var4) { + var5 = Players.__cq_e[var4]; + if((Players.__cq_q[var5] & 1) == 0) { + if(var3 > 0) { + --var3; + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else { + var6 = var0.readBits(1); + if(var6 == 0) { + var3 = GrandExchangeOffer.method105(var0); + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } else if(class236.updateExternalPlayer(var0, var5)) { + Players.__cq_q[var5] = (byte)(Players.__cq_q[var5] | 2); + } + } + } + } + + var0.exportIndex(); + if(var3 != 0) { + throw new RuntimeException(); + } else { + Players.Players_count = 0; + Players.__cq_l = 0; + + for(var4 = 1; var4 < 2048; ++var4) { + Players.__cq_q[var4] = (byte)(Players.__cq_q[var4] >> 1); + Player var7 = Client.players[var4]; + if(var7 != null) { + Players.Players_indices[++Players.Players_count - 1] = var4; + } else { + Players.__cq_e[++Players.__cq_l - 1] = var4; + } + } + + class21.method293(var0); + if(var0.index - var2 != var1) { + throw new RuntimeException(var0.index - var2 + " " + var1); + } + } + } + } + } + } +} diff --git a/rs-client/src/main/java/Skills.java b/rs-client/src/main/java/Skills.java new file mode 100644 index 0000000000..3482eb1f36 --- /dev/null +++ b/rs-client/src/main/java/Skills.java @@ -0,0 +1,93 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hc") +@Implements("Skills") +public class Skills { + @ObfuscatedName("f") + @Export("Skills_enabled") + public static final boolean[] Skills_enabled; + @ObfuscatedName("q") + @Export("Skills_experienceTable") + public static int[] Skills_experienceTable; + @ObfuscatedName("ef") + @Export("__hc_ef") + static int[] __hc_ef; + + static { + Skills_enabled = new boolean[]{true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false}; + Skills_experienceTable = new int[99]; + int var0 = 0; + + for(int var1 = 0; var1 < 99; ++var1) { + int var2 = var1 + 1; + int var3 = (int)((double)var2 + 300.0D * Math.pow(2.0D, (double)var2 / 7.0D)); + var0 += var3; + Skills_experienceTable[var1] = var0 / 4; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Ljv;", + garbageValue = "-1410801622" + ) + @Export("getItemDefinition") + public static ItemDefinition getItemDefinition(int var0) { + ItemDefinition var1 = (ItemDefinition)ItemDefinition.ItemDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = ItemDefinition.ItemDefinition_indexCache.takeRecord(10, var0); + var1 = new ItemDefinition(); + var1.id = var0; + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + var1.post(); + if(var1.noteTemplate != -1) { + var1.__o_426(getItemDefinition(var1.noteTemplate), getItemDefinition(var1.note)); + } + + if(var1.notedId != -1) { + var1.__u_427(getItemDefinition(var1.notedId), getItemDefinition(var1.unnotedId)); + } + + if(var1.placeholderTemplate != -1) { + var1.__g_428(getItemDefinition(var1.placeholderTemplate), getItemDefinition(var1.placeholder)); + } + + if(!class30.__ar_l && var1.isMembersOnly) { + var1.name = "Members object"; + var1.isTradable = false; + var1.groundActions = null; + var1.inventoryActions = null; + var1.shiftClickIndex0 = -1; + var1.int1 = 0; + if(var1.params != null) { + boolean var3 = false; + + for(Node var4 = var1.params.first(); var4 != null; var4 = var1.params.next()) { + ParamKeyDefinition var5 = class229.getParamKeyDefinition((int)var4.key); + if(var5.isMembersOnly) { + var4.remove(); + } else { + var3 = true; + } + } + + if(!var3) { + var1.params = null; + } + } + } + + ItemDefinition.ItemDefinition_cached.put(var1, (long)var0); + return var1; + } + } +} diff --git a/rs-client/src/main/java/SoftWrapper.java b/rs-client/src/main/java/SoftWrapper.java new file mode 100644 index 0000000000..ce8bf940a1 --- /dev/null +++ b/rs-client/src/main/java/SoftWrapper.java @@ -0,0 +1,27 @@ +import java.lang.ref.SoftReference; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("ef") +@Implements("SoftWrapper") +public class SoftWrapper extends Wrapper { + @ObfuscatedName("m") + @Export("ref") + SoftReference ref; + + SoftWrapper(Object var1, int var2) { + super(var2); + this.ref = new SoftReference(var1); + } + + @ObfuscatedName("m") + Object get() { + return this.ref.get(); + } + + @ObfuscatedName("f") + boolean isSoft() { + return true; + } +} diff --git a/rs-client/src/main/java/SoundCache.java b/rs-client/src/main/java/SoundCache.java new file mode 100644 index 0000000000..11816e754e --- /dev/null +++ b/rs-client/src/main/java/SoundCache.java @@ -0,0 +1,225 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dt") +@Implements("SoundCache") +public class SoundCache { + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = 1784515731 + ) + @Export("canvasWidth") + public static int canvasWidth; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("soundEffectIndex") + AbstractIndexCache soundEffectIndex; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("musicSampleIndex") + AbstractIndexCache musicSampleIndex; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("musicSamples") + NodeHashTable musicSamples; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lld;" + ) + @Export("rawSounds") + NodeHashTable rawSounds; + + @ObfuscatedSignature( + signature = "(Lir;Lir;)V" + ) + public SoundCache(AbstractIndexCache var1, AbstractIndexCache var2) { + this.musicSamples = new NodeHashTable(256); + this.rawSounds = new NodeHashTable(256); + this.soundEffectIndex = var1; + this.musicSampleIndex = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II[IS)Lcx;", + garbageValue = "17979" + ) + @Export("getSoundEffect0") + RawSound getSoundEffect0(int var1, int var2, int[] var3) { + int var4 = var2 ^ (var1 << 4 & 65535 | var1 >>> 12); + var4 |= var1 << 16; + long var5 = (long)var4; + RawSound var7 = (RawSound)this.rawSounds.get(var5); + if(var7 != null) { + return var7; + } else if(var3 != null && var3[0] <= 0) { + return null; + } else { + SoundEffect var8 = SoundEffect.readSoundEffect(this.soundEffectIndex, var1, var2); + if(var8 == null) { + return null; + } else { + var7 = var8.toRawSound(); + this.rawSounds.put(var7, var5); + if(var3 != null) { + var3[0] -= var7.samples.length; + } + + return var7; + } + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II[II)Lcx;", + garbageValue = "-847417897" + ) + @Export("getMusicSample0") + RawSound getMusicSample0(int var1, int var2, int[] var3) { + int var4 = var2 ^ (var1 << 4 & 65535 | var1 >>> 12); + var4 |= var1 << 16; + long var5 = (long)var4 ^ 4294967296L; + RawSound var7 = (RawSound)this.rawSounds.get(var5); + if(var7 != null) { + return var7; + } else if(var3 != null && var3[0] <= 0) { + return null; + } else { + MusicSample var8 = (MusicSample)this.musicSamples.get(var5); + if(var8 == null) { + var8 = MusicSample.readMusicSample(this.musicSampleIndex, var1, var2); + if(var8 == null) { + return null; + } + + this.musicSamples.put(var8, var5); + } + + var7 = var8.toRawSound(var3); + if(var7 == null) { + return null; + } else { + var8.remove(); + this.rawSounds.put(var7, var5); + return var7; + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I[IB)Lcx;", + garbageValue = "-28" + ) + @Export("getSoundEffect") + public RawSound getSoundEffect(int var1, int[] var2) { + if(this.soundEffectIndex.__t_397() == 1) { + return this.getSoundEffect0(0, var1, var2); + } else if(this.soundEffectIndex.__s_396(var1) == 1) { + return this.getSoundEffect0(var1, 0, var2); + } else { + throw new RuntimeException(); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I[II)Lcx;", + garbageValue = "-2131728116" + ) + @Export("getMusicSample") + public RawSound getMusicSample(int var1, int[] var2) { + if(this.musicSampleIndex.__t_397() == 1) { + return this.getMusicSample0(0, var1, var2); + } else if(this.musicSampleIndex.__s_396(var1) == 1) { + return this.getMusicSample0(var1, 0, var2); + } else { + throw new RuntimeException(); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;II[BII)I", + garbageValue = "-1706770105" + ) + @Export("encodeStringCp1252") + public static int encodeStringCp1252(CharSequence var0, int var1, int var2, byte[] var3, int var4) { + int var5 = var2 - var1; + + for(int var6 = 0; var6 < var5; ++var6) { + char var7 = var0.charAt(var6 + var1); + if(var7 > 0 && var7 < 128 || var7 >= 160 && var7 <= 255) { + var3[var6 + var4] = (byte)var7; + } else if(var7 == 8364) { + var3[var6 + var4] = -128; + } else if(var7 == 8218) { + var3[var6 + var4] = -126; + } else if(var7 == 402) { + var3[var6 + var4] = -125; + } else if(var7 == 8222) { + var3[var6 + var4] = -124; + } else if(var7 == 8230) { + var3[var6 + var4] = -123; + } else if(var7 == 8224) { + var3[var6 + var4] = -122; + } else if(var7 == 8225) { + var3[var6 + var4] = -121; + } else if(var7 == 710) { + var3[var6 + var4] = -120; + } else if(var7 == 8240) { + var3[var6 + var4] = -119; + } else if(var7 == 352) { + var3[var6 + var4] = -118; + } else if(var7 == 8249) { + var3[var6 + var4] = -117; + } else if(var7 == 338) { + var3[var6 + var4] = -116; + } else if(var7 == 381) { + var3[var6 + var4] = -114; + } else if(var7 == 8216) { + var3[var6 + var4] = -111; + } else if(var7 == 8217) { + var3[var6 + var4] = -110; + } else if(var7 == 8220) { + var3[var6 + var4] = -109; + } else if(var7 == 8221) { + var3[var6 + var4] = -108; + } else if(var7 == 8226) { + var3[var6 + var4] = -107; + } else if(var7 == 8211) { + var3[var6 + var4] = -106; + } else if(var7 == 8212) { + var3[var6 + var4] = -105; + } else if(var7 == 732) { + var3[var6 + var4] = -104; + } else if(var7 == 8482) { + var3[var6 + var4] = -103; + } else if(var7 == 353) { + var3[var6 + var4] = -102; + } else if(var7 == 8250) { + var3[var6 + var4] = -101; + } else if(var7 == 339) { + var3[var6 + var4] = -100; + } else if(var7 == 382) { + var3[var6 + var4] = -98; + } else if(var7 == 376) { + var3[var6 + var4] = -97; + } else { + var3[var6 + var4] = 63; + } + } + + return var5; + } +} diff --git a/rs-client/src/main/java/SoundEffect.java b/rs-client/src/main/java/SoundEffect.java new file mode 100644 index 0000000000..79e06ab3c7 --- /dev/null +++ b/rs-client/src/main/java/SoundEffect.java @@ -0,0 +1,133 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ci") +@Implements("SoundEffect") +public class SoundEffect { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "[Ldb;" + ) + @Export("instruments") + Instrument[] instruments; + @ObfuscatedName("q") + @Export("start") + int start; + @ObfuscatedName("w") + @Export("end") + int end; + + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + SoundEffect(Buffer var1) { + this.instruments = new Instrument[10]; + + for(int var2 = 0; var2 < 10; ++var2) { + int var3 = var1.readUnsignedByte(); + if(var3 != 0) { + --var1.index; + this.instruments[var2] = new Instrument(); + this.instruments[var2].decode(var1); + } + } + + this.start = var1.__ag_302(); + this.end = var1.__ag_302(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "()Lcx;" + ) + @Export("toRawSound") + public RawSound toRawSound() { + byte[] var1 = this.mix(); + return new RawSound(22050, var1, this.start * 22050 / 1000, this.end * 22050 / 1000); + } + + @ObfuscatedName("q") + @Export("__q_174") + public final int __q_174() { + int var1 = 9999999; + + int var2; + for(var2 = 0; var2 < 10; ++var2) { + if(this.instruments[var2] != null && this.instruments[var2].offset / 20 < var1) { + var1 = this.instruments[var2].offset / 20; + } + } + + if(this.start < this.end && this.start / 20 < var1) { + var1 = this.start / 20; + } + + if(var1 != 9999999 && var1 != 0) { + for(var2 = 0; var2 < 10; ++var2) { + if(this.instruments[var2] != null) { + this.instruments[var2].offset -= var1 * 20; + } + } + + if(this.start < this.end) { + this.start -= var1 * 20; + this.end -= var1 * 20; + } + + return var1; + } else { + return 0; + } + } + + @ObfuscatedName("w") + @Export("mix") + final byte[] mix() { + int var1 = 0; + + int var2; + for(var2 = 0; var2 < 10; ++var2) { + if(this.instruments[var2] != null && this.instruments[var2].duration + this.instruments[var2].offset > var1) { + var1 = this.instruments[var2].duration + this.instruments[var2].offset; + } + } + + if(var1 == 0) { + return new byte[0]; + } else { + var2 = var1 * 22050 / 1000; + byte[] var3 = new byte[var2]; + + for(int var4 = 0; var4 < 10; ++var4) { + if(this.instruments[var4] != null) { + int var5 = this.instruments[var4].duration * 22050 / 1000; + int var6 = this.instruments[var4].offset * 22050 / 1000; + int[] var7 = this.instruments[var4].synthesize(var5, this.instruments[var4].duration); + + for(int var8 = 0; var8 < var5; ++var8) { + int var9 = (var7[var8] >> 8) + var3[var8 + var6]; + if((var9 + 128 & -256) != 0) { + var9 = var9 >> 31 ^ 127; + } + + var3[var8 + var6] = (byte)var9; + } + } + } + + return var3; + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;II)Lci;" + ) + @Export("readSoundEffect") + public static SoundEffect readSoundEffect(AbstractIndexCache var0, int var1, int var2) { + byte[] var3 = var0.takeRecord(var1, var2); + return var3 == null?null:new SoundEffect(new Buffer(var3)); + } +} diff --git a/rs-client/src/main/java/SoundEnvelope.java b/rs-client/src/main/java/SoundEnvelope.java new file mode 100644 index 0000000000..633080a2f0 --- /dev/null +++ b/rs-client/src/main/java/SoundEnvelope.java @@ -0,0 +1,111 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("de") +@Implements("SoundEnvelope") +public class SoundEnvelope { + @ObfuscatedName("m") + @Export("segments") + int segments; + @ObfuscatedName("f") + @Export("durations") + int[] durations; + @ObfuscatedName("q") + @Export("phases") + int[] phases; + @ObfuscatedName("w") + @Export("start") + int start; + @ObfuscatedName("o") + @Export("end") + int end; + @ObfuscatedName("u") + @Export("form") + int form; + @ObfuscatedName("g") + @Export("ticks") + int ticks; + @ObfuscatedName("l") + @Export("phaseIndex") + int phaseIndex; + @ObfuscatedName("e") + @Export("step") + int step; + @ObfuscatedName("d") + @Export("amplitude") + int amplitude; + @ObfuscatedName("k") + @Export("max") + int max; + + SoundEnvelope() { + this.segments = 2; + this.durations = new int[2]; + this.phases = new int[2]; + this.durations[0] = 0; + this.durations[1] = 65535; + this.phases[0] = 0; + this.phases[1] = 65535; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + @Export("decode") + final void decode(Buffer var1) { + this.form = var1.readUnsignedByte(); + this.start = var1.readInt(); + this.end = var1.readInt(); + this.decodeSegments(var1); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + @Export("decodeSegments") + final void decodeSegments(Buffer var1) { + this.segments = var1.readUnsignedByte(); + this.durations = new int[this.segments]; + this.phases = new int[this.segments]; + + for(int var2 = 0; var2 < this.segments; ++var2) { + this.durations[var2] = var1.__ag_302(); + this.phases[var2] = var1.__ag_302(); + } + + } + + @ObfuscatedName("q") + @Export("reset") + final void reset() { + this.ticks = 0; + this.phaseIndex = 0; + this.step = 0; + this.amplitude = 0; + this.max = 0; + } + + @ObfuscatedName("w") + @Export("doStep") + final int doStep(int var1) { + if(this.max >= this.ticks) { + this.amplitude = this.phases[this.phaseIndex++] << 15; + if(this.phaseIndex >= this.segments) { + this.phaseIndex = this.segments - 1; + } + + this.ticks = (int)((double)this.durations[this.phaseIndex] / 65536.0D * (double)var1); + if(this.ticks > this.max) { + this.step = ((this.phases[this.phaseIndex] << 15) - this.amplitude) / (this.ticks - this.max); + } + } + + this.amplitude += this.step; + ++this.max; + return this.amplitude - this.step >> 15; + } +} diff --git a/rs-client/src/main/java/SoundSystem.java b/rs-client/src/main/java/SoundSystem.java new file mode 100644 index 0000000000..798f86746b --- /dev/null +++ b/rs-client/src/main/java/SoundSystem.java @@ -0,0 +1,72 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dx") +@Implements("SoundSystem") +public class SoundSystem implements Runnable { + @ObfuscatedName("jg") + @ObfuscatedGetter( + intValue = -631434243 + ) + @Export("plane") + static int plane; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "[Lco;" + ) + @Export("players") + volatile PcmPlayer[] players; + + SoundSystem() { + this.players = new PcmPlayer[2]; + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + try { + for(int var1 = 0; var1 < 2; ++var1) { + PcmPlayer var2 = this.players[var1]; + if(var2 != null) { + var2.run(); + } + } + } catch (Exception var4) { + NpcDefinition.sendStackTrace((String)null, var4); + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Lcg;", + garbageValue = "1479630296" + ) + static Script method2451(int var0) { + Script var1 = (Script)Script.Script_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = Formatting.indexCache12.takeRecord(var0, 0); + if(var2 == null) { + return null; + } else { + var1 = Occluder.newScript(var2); + Script.Script_cached.put(var1, (long)var0); + return var1; + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "20" + ) + static void method2456() { + WorldMapRegion.__av_o.clear(); + } +} diff --git a/rs-client/src/main/java/SpotAnimationDefinition.java b/rs-client/src/main/java/SpotAnimationDefinition.java new file mode 100644 index 0000000000..b690fbb072 --- /dev/null +++ b/rs-client/src/main/java/SpotAnimationDefinition.java @@ -0,0 +1,243 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("io") +@Implements("SpotAnimationDefinition") +public class SpotAnimationDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("SpotAnimationDefinition_indexCache") + public static AbstractIndexCache SpotAnimationDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("SpotAnimationDefinition_modelIndexCache") + public static AbstractIndexCache SpotAnimationDefinition_modelIndexCache; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("SpotAnimationDefinition_cached") + static EvictingDualNodeHashTable SpotAnimationDefinition_cached; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("SpotAnimationDefinition_cachedModels") + static EvictingDualNodeHashTable SpotAnimationDefinition_cachedModels; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -713866165 + ) + @Export("id") + int id; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -2065492247 + ) + @Export("archive") + int archive; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1580078789 + ) + @Export("sequence") + public int sequence; + @ObfuscatedName("l") + @Export("recolorFrom") + short[] recolorFrom; + @ObfuscatedName("e") + @Export("recolorTo") + short[] recolorTo; + @ObfuscatedName("x") + @Export("retextureFrom") + short[] retextureFrom; + @ObfuscatedName("d") + @Export("retextureTo") + short[] retextureTo; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 680796997 + ) + @Export("widthScale") + int widthScale; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 1199960995 + ) + @Export("heightScale") + int heightScale; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 1650590363 + ) + @Export("orientation") + int orientation; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -20619847 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 1866148625 + ) + @Export("__z") + int __z; + + static { + SpotAnimationDefinition_cached = new EvictingDualNodeHashTable(64); + SpotAnimationDefinition_cachedModels = new EvictingDualNodeHashTable(30); + } + + SpotAnimationDefinition() { + this.sequence = -1; + this.widthScale = 128; + this.heightScale = 128; + this.orientation = 0; + this.__a = 0; + this.__z = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "906815828" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "2099681848" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.archive = var1.__ag_302(); + } else if(var2 == 2) { + this.sequence = var1.__ag_302(); + } else if(var2 == 4) { + this.widthScale = var1.__ag_302(); + } else if(var2 == 5) { + this.heightScale = var1.__ag_302(); + } else if(var2 == 6) { + this.orientation = var1.__ag_302(); + } else if(var2 == 7) { + this.__a = var1.readUnsignedByte(); + } else if(var2 == 8) { + this.__z = var1.readUnsignedByte(); + } else { + int var3; + int var4; + if(var2 == 40) { + var3 = var1.readUnsignedByte(); + this.recolorFrom = new short[var3]; + this.recolorTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.recolorFrom[var4] = (short)var1.__ag_302(); + this.recolorTo[var4] = (short)var1.__ag_302(); + } + } else if(var2 == 41) { + var3 = var1.readUnsignedByte(); + this.retextureFrom = new short[var3]; + this.retextureTo = new short[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + this.retextureFrom[var4] = (short)var1.__ag_302(); + this.retextureTo[var4] = (short)var1.__ag_302(); + } + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)Ldu;", + garbageValue = "-77614529" + ) + @Export("getModel") + public final Model getModel(int var1) { + Model var2 = (Model)SpotAnimationDefinition_cachedModels.get((long)this.id); + if(var2 == null) { + ModelData var3 = ModelData.method2788(SpotAnimationDefinition_modelIndexCache, this.archive, 0); + if(var3 == null) { + return null; + } + + int var4; + if(this.recolorFrom != null) { + for(var4 = 0; var4 < this.recolorFrom.length; ++var4) { + var3.recolor(this.recolorFrom[var4], this.recolorTo[var4]); + } + } + + if(this.retextureFrom != null) { + for(var4 = 0; var4 < this.retextureFrom.length; ++var4) { + var3.retexture(this.retextureFrom[var4], this.retextureTo[var4]); + } + } + + var2 = var3.toModel(this.__a + 64, this.__z + 850, -30, -50, -30); + SpotAnimationDefinition_cachedModels.put(var2, (long)this.id); + } + + Model var5; + if(this.sequence != -1 && var1 != -1) { + var5 = WorldMapAreaData.getSequenceDefinition(this.sequence).animateSpotAnimation(var2, var1); + } else { + var5 = var2.toSharedSpotAnimationModel(true); + } + + if(this.widthScale != 128 || this.heightScale != 128) { + var5.scale(this.widthScale, this.heightScale, this.widthScale); + } + + if(this.orientation != 0) { + if(this.orientation == 90) { + var5.rotateY90Ccw(); + } + + if(this.orientation == 180) { + var5.rotateY90Ccw(); + var5.rotateY90Ccw(); + } + + if(this.orientation == 270) { + var5.rotateY90Ccw(); + var5.rotateY90Ccw(); + var5.rotateY90Ccw(); + } + } + + return var5; + } + + @ObfuscatedName("gn") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "95" + ) + static int method4822() { + return Client.isResizable?2:1; + } +} diff --git a/rs-client/src/main/java/Sprite.java b/rs-client/src/main/java/Sprite.java new file mode 100644 index 0000000000..c833d79b09 --- /dev/null +++ b/rs-client/src/main/java/Sprite.java @@ -0,0 +1,1666 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ln") +@Implements("Sprite") +public final class Sprite extends Rasterizer2D { + @ObfuscatedName("m") + @Export("pixels") + public int[] pixels; + @ObfuscatedName("f") + @Export("subWidth") + public int subWidth; + @ObfuscatedName("q") + @Export("subHeight") + public int subHeight; + @ObfuscatedName("w") + @Export("yOffset") + public int yOffset; + @ObfuscatedName("o") + @Export("xOffset") + int xOffset; + @ObfuscatedName("u") + @Export("width") + public int width; + @ObfuscatedName("g") + @Export("height") + public int height; + + public Sprite(int[] var1, int var2, int var3) { + this.pixels = var1; + this.subWidth = this.width = var2; + this.subHeight = this.height = var3; + this.xOffset = 0; + this.yOffset = 0; + } + + public Sprite(int var1, int var2) { + this(new int[var2 * var1], var1, var2); + } + + Sprite() { + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "()Lln;" + ) + @Export("copy") + public Sprite copy() { + Sprite var1 = new Sprite(this.subWidth, this.subHeight); + var1.width = this.width; + var1.height = this.height; + var1.yOffset = this.width - this.subWidth - this.yOffset; + var1.xOffset = this.xOffset; + + for(int var2 = 0; var2 < this.subHeight; ++var2) { + for(int var3 = 0; var3 < this.subWidth; ++var3) { + var1.pixels[var3 + var2 * this.subWidth] = this.pixels[var2 * this.subWidth + this.subWidth - 1 - var3]; + } + } + + return var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "()Lln;" + ) + @Export("copyNormalized") + public Sprite copyNormalized() { + Sprite var1 = new Sprite(this.width, this.height); + + for(int var2 = 0; var2 < this.subHeight; ++var2) { + for(int var3 = 0; var3 < this.subWidth; ++var3) { + var1.pixels[var3 + (var2 + this.xOffset) * this.width + this.yOffset] = this.pixels[var3 + var2 * this.subWidth]; + } + } + + return var1; + } + + @ObfuscatedName("q") + @Export("setRaster") + public void setRaster() { + Rasterizer2D.Rasterizer2D_replace(this.pixels, this.subWidth, this.subHeight); + } + + @ObfuscatedName("w") + @Export("normalize") + public void normalize() { + if(this.subWidth != this.width || this.subHeight != this.height) { + int[] var1 = new int[this.width * this.height]; + + for(int var2 = 0; var2 < this.subHeight; ++var2) { + for(int var3 = 0; var3 < this.subWidth; ++var3) { + var1[var3 + (var2 + this.xOffset) * this.width + this.yOffset] = this.pixels[var3 + var2 * this.subWidth]; + } + } + + this.pixels = var1; + this.subWidth = this.width; + this.subHeight = this.height; + this.yOffset = 0; + this.xOffset = 0; + } + } + + @ObfuscatedName("o") + @Export("__o_499") + public void __o_499(int var1) { + if(this.subWidth != this.width || this.subHeight != this.height) { + int var2 = var1; + if(var1 > this.yOffset) { + var2 = this.yOffset; + } + + int var3 = var1; + if(var1 + this.yOffset + this.subWidth > this.width) { + var3 = this.width - this.yOffset - this.subWidth; + } + + int var4 = var1; + if(var1 > this.xOffset) { + var4 = this.xOffset; + } + + int var5 = var1; + if(var1 + this.xOffset + this.subHeight > this.height) { + var5 = this.height - this.xOffset - this.subHeight; + } + + int var6 = var2 + var3 + this.subWidth; + int var7 = var4 + var5 + this.subHeight; + int[] var8 = new int[var6 * var7]; + + for(int var9 = 0; var9 < this.subHeight; ++var9) { + for(int var10 = 0; var10 < this.subWidth; ++var10) { + var8[var6 * (var9 + var4) + var10 + var2] = this.pixels[var10 + var9 * this.subWidth]; + } + } + + this.pixels = var8; + this.subWidth = var6; + this.subHeight = var7; + this.yOffset -= var2; + this.xOffset -= var4; + } + } + + @ObfuscatedName("u") + @Export("__u_500") + public void __u_500() { + int[] var1 = new int[this.subWidth * this.subHeight]; + int var2 = 0; + + for(int var3 = 0; var3 < this.subHeight; ++var3) { + for(int var4 = this.subWidth - 1; var4 >= 0; --var4) { + var1[var2++] = this.pixels[var4 + var3 * this.subWidth]; + } + } + + this.pixels = var1; + this.yOffset = this.width - this.subWidth - this.yOffset; + } + + @ObfuscatedName("g") + @Export("__g_501") + public void __g_501() { + int[] var1 = new int[this.subWidth * this.subHeight]; + int var2 = 0; + + for(int var3 = this.subHeight - 1; var3 >= 0; --var3) { + for(int var4 = 0; var4 < this.subWidth; ++var4) { + var1[var2++] = this.pixels[var4 + var3 * this.subWidth]; + } + } + + this.pixels = var1; + this.xOffset = this.height - this.subHeight - this.xOffset; + } + + @ObfuscatedName("l") + @Export("__l_502") + public void __l_502(int var1) { + int[] var2 = new int[this.subWidth * this.subHeight]; + int var3 = 0; + + for(int var4 = 0; var4 < this.subHeight; ++var4) { + for(int var5 = 0; var5 < this.subWidth; ++var5) { + int var6 = this.pixels[var3]; + if(var6 == 0) { + if(var5 > 0 && this.pixels[var3 - 1] != 0) { + var6 = var1; + } else if(var4 > 0 && this.pixels[var3 - this.subWidth] != 0) { + var6 = var1; + } else if(var5 < this.subWidth - 1 && this.pixels[var3 + 1] != 0) { + var6 = var1; + } else if(var4 < this.subHeight - 1 && this.pixels[var3 + this.subWidth] != 0) { + var6 = var1; + } + } + + var2[var3++] = var6; + } + } + + this.pixels = var2; + } + + @ObfuscatedName("e") + @Export("__e_503") + public void __e_503(int var1) { + for(int var2 = this.subHeight - 1; var2 > 0; --var2) { + int var3 = var2 * this.subWidth; + + for(int var4 = this.subWidth - 1; var4 > 0; --var4) { + if(this.pixels[var4 + var3] == 0 && this.pixels[var4 + var3 - 1 - this.subWidth] != 0) { + this.pixels[var4 + var3] = var1; + } + } + } + + } + + @ObfuscatedName("x") + @Export("drawAt") + public void drawAt(int var1, int var2) { + var1 += this.yOffset; + var2 += this.xOffset; + int var3 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var4 = 0; + int var5 = this.subHeight; + int var6 = this.subWidth; + int var7 = Rasterizer2D.Rasterizer2D_width - var6; + int var8 = 0; + int var9; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var9 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var5 -= var9; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var4 += var9 * var6; + var3 += var9 * Rasterizer2D.Rasterizer2D_width; + } + + if(var5 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var5 -= var5 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var9 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var6 -= var9; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var6 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var9 = var6 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + Sprite_something(Rasterizer2D.Rasterizer2D_pixels, this.pixels, var4, var3, var6, var5, var7, var8); + } + } + + @ObfuscatedName("a") + @Export("__a_505") + public void __a_505(int var1, int var2) { + var1 += this.yOffset; + var2 += this.xOffset; + int var3 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var4 = 0; + int var5 = this.subHeight; + int var6 = this.subWidth; + int var7 = Rasterizer2D.Rasterizer2D_width - var6; + int var8 = 0; + int var9; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var9 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var5 -= var9; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var4 += var9 * var6; + var3 += var9 * Rasterizer2D.Rasterizer2D_width; + } + + if(var5 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var5 -= var5 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var9 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var6 -= var9; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var6 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var9 = var6 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + Sprite_andAnotherOne(Rasterizer2D.Rasterizer2D_pixels, this.pixels, 0, var4, var3, var6, var5, var7, var8); + } + } + + @ObfuscatedName("j") + @Export("__j_506") + public void __j_506(int var1, int var2, int var3, int var4) { + if(var3 > 0 && var4 > 0) { + int var5 = this.subWidth; + int var6 = this.subHeight; + int var7 = 0; + int var8 = 0; + int var9 = this.width; + int var10 = this.height; + int var11 = (var9 << 16) / var3; + int var12 = (var10 << 16) / var4; + int var13; + if(this.yOffset > 0) { + var13 = (var11 + (this.yOffset << 16) - 1) / var11; + var1 += var13; + var7 += var13 * var11 - (this.yOffset << 16); + } + + if(this.xOffset > 0) { + var13 = (var12 + (this.xOffset << 16) - 1) / var12; + var2 += var13; + var8 += var13 * var12 - (this.xOffset << 16); + } + + if(var5 < var9) { + var3 = (var11 + ((var5 << 16) - var7) - 1) / var11; + } + + if(var6 < var10) { + var4 = (var12 + ((var6 << 16) - var8) - 1) / var12; + } + + var13 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var14 = Rasterizer2D.Rasterizer2D_width - var3; + if(var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + int var15; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var15 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var4 -= var15; + var13 += var15 * Rasterizer2D.Rasterizer2D_width; + var8 += var12 * var15; + } + + if(var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var15 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var3 -= var15; + var14 += var15; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var15 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var3 -= var15; + var13 += var15; + var7 += var11 * var15; + var14 += var15; + } + + Sprite_somethingElse(Rasterizer2D.Rasterizer2D_pixels, this.pixels, 0, var7, var8, var13, var14, var3, var4, var11, var12, var5); + } + } + + @ObfuscatedName("t") + @Export("__t_507") + public void __t_507(int var1, int var2, int var3, int var4) { + if(var3 == 256) { + this.__a_505(var1, var2); + } else { + var1 += this.yOffset; + var2 += this.xOffset; + int var5 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var6 = 0; + int var7 = this.subHeight; + int var8 = this.subWidth; + int var9 = Rasterizer2D.Rasterizer2D_width - var8; + int var10 = 0; + int var11; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var7 -= var11; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var6 += var11 * var8; + var5 += var11 * Rasterizer2D.Rasterizer2D_width; + } + + if(var7 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var7 -= var7 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var8 -= var11; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var6 += var11; + var5 += var11; + var10 += var11; + var9 += var11; + } + + if(var8 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var11 = var8 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var8 -= var11; + var10 += var11; + var9 += var11; + } + + if(var8 > 0 && var7 > 0) { + Sprite_anotherOne(Rasterizer2D.Rasterizer2D_pixels, this.pixels, 0, var6, var5, var8, var7, var9, var10, var3, var4); + } + } + } + + @ObfuscatedName("h") + @Export("__h_508") + public void __h_508(int var1, int var2, int var3) { + var1 += this.yOffset; + var2 += this.xOffset; + int var4 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var5 = 0; + int var6 = this.subHeight; + int var7 = this.subWidth; + int var8 = Rasterizer2D.Rasterizer2D_width - var7; + int var9 = 0; + int var10; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var6 -= var10; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var5 += var10 * var7; + var4 += var10 * Rasterizer2D.Rasterizer2D_width; + } + + if(var6 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var6 -= var6 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var7 -= var10; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + } + + if(var7 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var10 = var7 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if(var7 > 0 && var6 > 0) { + method6070(Rasterizer2D.Rasterizer2D_pixels, this.pixels, 0, var5, var4, var7, var6, var8, var9, var3); + } + } + + @ObfuscatedName("c") + @Export("__c_509") + public void __c_509(int var1, int var2, int var3, int var4, int var5) { + if(var3 > 0 && var4 > 0) { + int var6 = this.subWidth; + int var7 = this.subHeight; + int var8 = 0; + int var9 = 0; + int var10 = this.width; + int var11 = this.height; + int var12 = (var10 << 16) / var3; + int var13 = (var11 << 16) / var4; + int var14; + if(this.yOffset > 0) { + var14 = (var12 + (this.yOffset << 16) - 1) / var12; + var1 += var14; + var8 += var14 * var12 - (this.yOffset << 16); + } + + if(this.xOffset > 0) { + var14 = (var13 + (this.xOffset << 16) - 1) / var13; + var2 += var14; + var9 += var14 * var13 - (this.xOffset << 16); + } + + if(var6 < var10) { + var3 = (var12 + ((var6 << 16) - var8) - 1) / var12; + } + + if(var7 < var11) { + var4 = (var13 + ((var7 << 16) - var9) - 1) / var13; + } + + var14 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var15 = Rasterizer2D.Rasterizer2D_width - var3; + if(var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + int var16; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var16 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var4 -= var16; + var14 += var16 * Rasterizer2D.Rasterizer2D_width; + var9 += var13 * var16; + } + + if(var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var16 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var3 -= var16; + var15 += var16; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var16 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var3 -= var16; + var14 += var16; + var8 += var12 * var16; + var15 += var16; + } + + method6072(Rasterizer2D.Rasterizer2D_pixels, this.pixels, 0, var8, var9, var14, var15, var3, var4, var12, var13, var6, var5); + } + } + + @ObfuscatedName("v") + @Export("__v_510") + public void __v_510(int var1, int var2, int var3) { + var1 += this.yOffset; + var2 += this.xOffset; + int var4 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var5 = 0; + int var6 = this.subHeight; + int var7 = this.subWidth; + int var8 = Rasterizer2D.Rasterizer2D_width - var7; + int var9 = 0; + int var10; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var6 -= var10; + var2 = Rasterizer2D.Rasterizer2D_yClipStart; + var5 += var10 * var7; + var4 += var10 * Rasterizer2D.Rasterizer2D_width; + } + + if(var6 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var6 -= var6 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var7 -= var10; + var1 = Rasterizer2D.Rasterizer2D_xClipStart; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + } + + if(var7 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var10 = var7 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if(var7 > 0 && var6 > 0) { + if(var3 == 256) { + method6074(0, 0, 0, Rasterizer2D.Rasterizer2D_pixels, this.pixels, var5, 0, var4, 0, var7, var6, var8, var9); + } else { + method6075(0, 0, 0, Rasterizer2D.Rasterizer2D_pixels, this.pixels, var5, 0, var4, 0, var7, var6, var8, var9, var3); + } + + } + } + + @ObfuscatedName("aj") + @Export("__aj_511") + public void __aj_511(int var1, int var2, int var3, int var4, int var5) { + if(var3 > 0 && var4 > 0) { + int var6 = this.subWidth; + int var7 = this.subHeight; + int var8 = 0; + int var9 = 0; + int var10 = this.width; + int var11 = this.height; + int var12 = (var10 << 16) / var3; + int var13 = (var11 << 16) / var4; + int var14; + if(this.yOffset > 0) { + var14 = (var12 + (this.yOffset << 16) - 1) / var12; + var1 += var14; + var8 += var14 * var12 - (this.yOffset << 16); + } + + if(this.xOffset > 0) { + var14 = (var13 + (this.xOffset << 16) - 1) / var13; + var2 += var14; + var9 += var14 * var13 - (this.xOffset << 16); + } + + if(var6 < var10) { + var3 = (var12 + ((var6 << 16) - var8) - 1) / var12; + } + + if(var7 < var11) { + var4 = (var13 + ((var7 << 16) - var9) - 1) / var13; + } + + var14 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + int var15 = Rasterizer2D.Rasterizer2D_width - var3; + if(var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; + } + + int var16; + if(var2 < Rasterizer2D.Rasterizer2D_yClipStart) { + var16 = Rasterizer2D.Rasterizer2D_yClipStart - var2; + var4 -= var16; + var14 += var16 * Rasterizer2D.Rasterizer2D_width; + var9 += var13 * var16; + } + + if(var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var16 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; + var3 -= var16; + var15 += var16; + } + + if(var1 < Rasterizer2D.Rasterizer2D_xClipStart) { + var16 = Rasterizer2D.Rasterizer2D_xClipStart - var1; + var3 -= var16; + var14 += var16; + var8 += var12 * var16; + var15 += var16; + } + + if(var5 == 256) { + method6144(0, 0, 0, var8, this.pixels, Rasterizer2D.Rasterizer2D_pixels, 0, 0, -var4, var9, var14, var15, var3, var12, var13, var6); + } else { + method6078(0, 0, 0, var8, this.pixels, Rasterizer2D.Rasterizer2D_pixels, 0, 0, -var4, var9, var14, var15, var3, var12, var13, var6, var5); + } + + } + } + + @ObfuscatedName("ac") + @Export("__ac_512") + public void __ac_512(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7, int[] var8) { + int var9 = var2 < 0?-var2:0; + int var10 = var2 + this.subHeight <= var6?this.subHeight:var6 - var2; + int var11 = var1 < 0?-var1:0; + int var10000; + if(this.subWidth + var1 <= var5) { + var10000 = this.subWidth; + } else { + var10000 = var5 - var1; + } + + int var13 = var3 + var11 + (var9 + var2 + var4) * Rasterizer2D.Rasterizer2D_width + var1; + int var14 = var9 + var2; + + for(int var15 = var9; var15 < var10; ++var15) { + int var16 = var7[var14]; + int var17 = var8[var14++]; + int var18 = var13; + int var19; + if(var1 < var16) { + var19 = var16 - var1; + var18 = var13 + (var19 - var11); + } else { + var19 = var11; + } + + int var12; + if(this.subWidth + var1 <= var16 + var17) { + var12 = this.subWidth; + } else { + var12 = var16 + var17 - var1; + } + + for(int var20 = var19; var20 < var12; ++var20) { + int var21 = this.pixels[var20 + var15 * this.subWidth]; + if(var21 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var18++] = var21; + } else { + ++var18; + } + } + + var13 += Rasterizer2D.Rasterizer2D_width; + } + + } + + @ObfuscatedName("ay") + @Export("__ay_513") + public void __ay_513(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int[] var9, int[] var10) { + try { + int var11 = -var3 / 2; + int var12 = -var4 / 2; + int var13 = (int)(Math.sin((double)var7 / 326.11D) * 65536.0D); + int var14 = (int)(Math.cos((double)var7 / 326.11D) * 65536.0D); + var13 = var13 * var8 >> 8; + var14 = var14 * var8 >> 8; + int var15 = var12 * var13 + var11 * var14 + (var5 << 16); + int var16 = var12 * var14 - var11 * var13 + (var6 << 16); + int var17 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + + for(var2 = 0; var2 < var4; ++var2) { + int var18 = var9[var2]; + int var19 = var17 + var18; + int var20 = var15 + var14 * var18; + int var21 = var16 - var13 * var18; + + for(var1 = -var10[var2]; var1 < 0; ++var1) { + Rasterizer2D.Rasterizer2D_pixels[var19++] = this.pixels[this.subWidth * (var21 >> 16) + (var20 >> 16)]; + var20 += var14; + var21 -= var13; + } + + var15 += var13; + var16 += var14; + var17 += Rasterizer2D.Rasterizer2D_width; + } + } catch (Exception var23) { + ; + } + + } + + @ObfuscatedName("ah") + @Export("__ah_514") + public void __ah_514(int var1, int var2, int var3, int var4, int var5, int var6, double var7, int var9) { + try { + int var10 = -var3 / 2; + int var11 = -var4 / 2; + int var12 = (int)(Math.sin(var7) * 65536.0D); + int var13 = (int)(Math.cos(var7) * 65536.0D); + var12 = var12 * var9 >> 8; + var13 = var13 * var9 >> 8; + int var14 = var11 * var12 + var10 * var13 + (var5 << 16); + int var15 = var11 * var13 - var10 * var12 + (var6 << 16); + int var16 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; + + for(var2 = 0; var2 < var4; ++var2) { + int var17 = var16; + int var18 = var14; + int var19 = var15; + + for(var1 = -var3; var1 < 0; ++var1) { + int var20 = this.pixels[this.subWidth * (var19 >> 16) + (var18 >> 16)]; + if(var20 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var17++] = var20; + } else { + ++var17; + } + + var18 += var13; + var19 -= var12; + } + + var14 += var12; + var15 += var13; + var16 += Rasterizer2D.Rasterizer2D_width; + } + } catch (Exception var22) { + ; + } + + } + + @ObfuscatedName("ak") + @Export("__ak_515") + public void __ak_515(int var1, int var2, int var3, int var4) { + this.__aw_516(this.width << 3, this.height << 3, var1 << 4, var2 << 4, var3, var4); + } + + @ObfuscatedName("aw") + @Export("__aw_516") + void __aw_516(int var1, int var2, int var3, int var4, int var5, int var6) { + if(var6 != 0) { + var1 -= this.yOffset << 4; + var2 -= this.xOffset << 4; + double var7 = (double)(var5 & 65535) * 9.587379924285257E-5D; + int var9 = (int)Math.floor(Math.sin(var7) * (double)var6 + 0.5D); + int var10 = (int)Math.floor(Math.cos(var7) * (double)var6 + 0.5D); + int var11 = var10 * -var1 + -var2 * var9; + int var12 = -var2 * var10 + var9 * -(-var1); + int var13 = var10 * ((this.subWidth << 4) - var1) + -var2 * var9; + int var14 = var9 * -((this.subWidth << 4) - var1) + -var2 * var10; + int var15 = ((this.subHeight << 4) - var2) * var9 + var10 * -var1; + int var16 = ((this.subHeight << 4) - var2) * var10 + var9 * -(-var1); + int var17 = ((this.subHeight << 4) - var2) * var9 + var10 * ((this.subWidth << 4) - var1); + int var18 = ((this.subHeight << 4) - var2) * var10 + var9 * -((this.subWidth << 4) - var1); + int var19; + int var20; + if(var11 < var13) { + var19 = var11; + var20 = var13; + } else { + var19 = var13; + var20 = var11; + } + + if(var15 < var19) { + var19 = var15; + } + + if(var17 < var19) { + var19 = var17; + } + + if(var15 > var20) { + var20 = var15; + } + + if(var17 > var20) { + var20 = var17; + } + + int var21; + int var22; + if(var12 < var14) { + var21 = var12; + var22 = var14; + } else { + var21 = var14; + var22 = var12; + } + + if(var16 < var21) { + var21 = var16; + } + + if(var18 < var21) { + var21 = var18; + } + + if(var16 > var22) { + var22 = var16; + } + + if(var18 > var22) { + var22 = var18; + } + + var19 >>= 12; + var20 = var20 + 4095 >> 12; + var21 >>= 12; + var22 = var22 + 4095 >> 12; + var19 += var3; + var20 += var3; + var21 += var4; + var22 += var4; + var19 >>= 4; + var20 = var20 + 15 >> 4; + var21 >>= 4; + var22 = var22 + 15 >> 4; + if(var19 < Rasterizer2D.Rasterizer2D_xClipStart) { + var19 = Rasterizer2D.Rasterizer2D_xClipStart; + } + + if(var20 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var20 = Rasterizer2D.Rasterizer2D_xClipEnd; + } + + if(var21 < Rasterizer2D.Rasterizer2D_yClipStart) { + var21 = Rasterizer2D.Rasterizer2D_yClipStart; + } + + if(var22 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var22 = Rasterizer2D.Rasterizer2D_yClipEnd; + } + + var20 = var19 - var20; + if(var20 < 0) { + var22 = var21 - var22; + if(var22 < 0) { + int var23 = var19 + var21 * Rasterizer2D.Rasterizer2D_width; + double var24 = 1.6777216E7D / (double)var6; + int var26 = (int)Math.floor(Math.sin(var7) * var24 + 0.5D); + int var27 = (int)Math.floor(Math.cos(var7) * var24 + 0.5D); + int var28 = (var19 << 4) + 8 - var3; + int var29 = (var21 << 4) + 8 - var4; + int var30 = (var1 << 8) - (var29 * var26 >> 4); + int var31 = (var29 * var27 >> 4) + (var2 << 8); + int var32; + int var33; + int var34; + int var35; + int var36; + int var37; + int var38; + if(var27 == 0) { + if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = var30; + var36 = var31; + var37 = var20; + if(var30 >= 0 && var31 >= 0 && var30 - (this.subWidth << 12) < 0 && var31 - (this.subHeight << 12) < 0) { + for(; var37 < 0; ++var37) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + } + } + + ++var33; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = var30; + var36 = (var28 * var26 >> 4) + var31; + var37 = var20; + if(var30 >= 0 && var30 - (this.subWidth << 12) < 0) { + if((var32 = var36 - (this.subHeight << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 = var20 + var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var36 += var26; + ++var37; + } + } + + ++var33; + var30 -= var26; + } + } else { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = var30; + var36 = (var28 * var26 >> 4) + var31; + var37 = var20; + if(var30 >= 0 && var30 - (this.subWidth << 12) < 0) { + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 = var20 + var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var36 + 1 - (this.subHeight << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var36 += var26; + ++var37; + } + } + + ++var33; + var30 -= var26; + } + } + } else if(var27 < 0) { + if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = (var28 * var27 >> 4) + var30; + var36 = var31; + var37 = var20; + if(var31 >= 0 && var31 - (this.subHeight << 12) < 0) { + if((var32 = var35 - (this.subWidth << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var35 += var27; + ++var37; + } + } + + ++var33; + var31 += var27; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = (var28 * var27 >> 4) + var30; + var36 = (var28 * var26 >> 4) + var31; + var37 = var20; + if((var32 = var35 - (this.subWidth << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + if((var32 = var36 - (this.subHeight << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } else { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = (var28 * var27 >> 4) + var30; + var36 = (var28 * var26 >> 4) + var31; + var37 = var20; + if((var32 = var35 - (this.subWidth << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 + 1 - (this.subHeight << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } + } else if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = (var28 * var27 >> 4) + var30; + var36 = var31; + var37 = var20; + if(var31 >= 0 && var31 - (this.subHeight << 12) < 0) { + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 + 1 - (this.subWidth << 12) - var27) / var27) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var35 += var27; + ++var37; + } + } + + ++var33; + var31 += var27; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = (var28 * var27 >> 4) + var30; + var36 = (var28 * var26 >> 4) + var31; + var37 = var20; + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 + 1 - (this.subWidth << 12) - var27) / var27) > var37) { + var37 = var32; + } + + if((var32 = var36 - (this.subHeight << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } else { + for(var33 = var22; var33 < 0; var23 += Rasterizer2D.Rasterizer2D_width) { + var34 = var23; + var35 = (var28 * var27 >> 4) + var30; + var36 = (var28 * var26 >> 4) + var31; + var37 = var20; + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 + 1 - (this.subWidth << 12) - var27) / var27) > var37) { + var37 = var32; + } + + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 + 1 - (this.subHeight << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.pixels[(var35 >> 12) + (var36 >> 12) * this.subWidth]; + if(var38 != 0) { + Rasterizer2D.Rasterizer2D_pixels[var34++] = var38; + } else { + ++var34; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } + + } + } + } + } + + @ObfuscatedName("al") + @Export("__al_517") + public void __al_517(int var1, int var2, int var3, int var4) { + if(var3 <= this.width && var4 <= this.height) { + int var5 = var3 * this.yOffset / this.width + var1; + int var6 = (var3 * (this.yOffset + this.subWidth) + this.width - 1) / this.width + var1; + int var7 = var2 + var4 * this.xOffset / this.height; + int var8 = var2 + (this.height + (this.xOffset + this.subHeight) * var4 - 1) / this.height; + if(var5 < Rasterizer2D.Rasterizer2D_xClipStart) { + var5 = Rasterizer2D.Rasterizer2D_xClipStart; + } + + if(var6 > Rasterizer2D.Rasterizer2D_xClipEnd) { + var6 = Rasterizer2D.Rasterizer2D_xClipEnd; + } + + if(var7 < Rasterizer2D.Rasterizer2D_yClipStart) { + var7 = Rasterizer2D.Rasterizer2D_yClipStart; + } + + if(var8 > Rasterizer2D.Rasterizer2D_yClipEnd) { + var8 = Rasterizer2D.Rasterizer2D_yClipEnd; + } + + if(var5 < var6 && var7 < var8) { + int var9 = var5 + var7 * Rasterizer2D.Rasterizer2D_width; + int var10 = Rasterizer2D.Rasterizer2D_width - (var6 - var5); + if(var9 < Rasterizer2D.Rasterizer2D_pixels.length) { + for(int var11 = var7; var11 < var8; ++var11) { + for(int var12 = var5; var12 < var6; ++var12) { + int var13 = var12 - var1 << 4; + int var14 = var11 - var2 << 4; + int var15 = var13 * this.width / var3 - (this.yOffset << 4); + int var16 = (var13 + 16) * this.width / var3 - (this.yOffset << 4); + int var17 = var14 * this.height / var4 - (this.xOffset << 4); + int var18 = (var14 + 16) * this.height / var4 - (this.xOffset << 4); + int var19 = (var16 - var15) * (var18 - var17) >> 1; + if(var19 != 0) { + if(var15 < 0) { + var15 = 0; + } + + if(var16 >= this.subWidth << 4) { + var16 = this.subWidth << 4; + } + + if(var17 < 0) { + var17 = 0; + } + + if(var18 >= this.subHeight << 4) { + var18 = this.subHeight << 4; + } + + --var16; + --var18; + int var20 = 16 - (var15 & 15); + int var21 = (var16 & 15) + 1; + int var22 = 16 - (var17 & 15); + int var23 = (var18 & 15) + 1; + var15 >>= 4; + var16 >>= 4; + var17 >>= 4; + var18 >>= 4; + int var24 = 0; + int var25 = 0; + int var26 = 0; + int var27 = 0; + + int var28; + for(var28 = var17; var28 <= var18; ++var28) { + int var29 = 16; + if(var28 == var17) { + var29 = var22; + } + + if(var28 == var18) { + var29 = var23; + } + + for(int var30 = var15; var30 <= var16; ++var30) { + int var31 = this.pixels[var30 + var28 * this.subWidth]; + if(var31 != 0) { + int var32; + if(var30 == var15) { + var32 = var29 * var20; + } else if(var30 == var16) { + var32 = var29 * var21; + } else { + var32 = var29 << 4; + } + + var27 += var32; + var24 += var32 * (var31 >> 16 & 255); + var25 += var32 * (var31 >> 8 & 255); + var26 += (var31 & 255) * var32; + } + } + } + + if(var27 >= var19) { + var28 = var26 / var27 + (var24 / var27 << 16) + (var25 / var27 << 8); + if(var28 == 0) { + var28 = 1; + } + + Rasterizer2D.Rasterizer2D_pixels[var9] = var28; + } + + ++var9; + } + } + + var9 += var10; + } + + } + } + } else { + throw new IllegalArgumentException(); + } + } + + @ObfuscatedName("d") + @Export("Sprite_something") + static void Sprite_something(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + for(int var8 = -var5; var8 < 0; ++var8) { + int var9; + for(var9 = var3 + var4 - 3; var3 < var9; var0[var3++] = var1[var2++]) { + var0[var3++] = var1[var2++]; + var0[var3++] = var1[var2++]; + var0[var3++] = var1[var2++]; + } + + for(var9 += 3; var3 < var9; var0[var3++] = var1[var2++]) { + ; + } + + var3 += var6; + var2 += var7; + } + + } + + @ObfuscatedName("z") + @Export("Sprite_andAnotherOne") + static void Sprite_andAnotherOne(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -(var5 >> 2); + var5 = -(var5 & 3); + + for(int var10 = -var6; var10 < 0; ++var10) { + int var11; + for(var11 = var9; var11 < 0; ++var11) { + var2 = var1[var3++]; + if(var2 != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + + var2 = var1[var3++]; + if(var2 != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + + var2 = var1[var3++]; + if(var2 != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + + var2 = var1[var3++]; + if(var2 != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + } + + for(var11 = var5; var11 < 0; ++var11) { + var2 = var1[var3++]; + if(var2 != 0) { + var0[var4++] = var2; + } else { + ++var4; + } + } + + var4 += var7; + var3 += var8; + } + + } + + @ObfuscatedName("s") + @Export("Sprite_somethingElse") + static void Sprite_somethingElse(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + int var12 = var3; + + for(int var13 = -var8; var13 < 0; ++var13) { + int var14 = var11 * (var4 >> 16); + + for(int var15 = -var7; var15 < 0; ++var15) { + var2 = var1[(var3 >> 16) + var14]; + if(var2 != 0) { + var0[var5++] = var2; + } else { + ++var5; + } + + var3 += var9; + } + + var4 += var10; + var3 = var12; + var5 += var6; + } + + } + + @ObfuscatedName("y") + @Export("Sprite_anotherOne") + static void Sprite_anotherOne(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) { + int var11 = 256 - var9; + int var12 = (var10 & 16711935) * var11 & -16711936; + int var13 = (var10 & 65280) * var11 & 16711680; + var10 = (var12 | var13) >>> 8; + + for(int var14 = -var6; var14 < 0; ++var14) { + for(int var15 = -var5; var15 < 0; ++var15) { + var2 = var1[var3++]; + if(var2 != 0) { + var12 = var9 * (var2 & 16711935) & -16711936; + var13 = (var2 & 65280) * var9 & 16711680; + var0[var4++] = var10 + ((var12 | var13) >>> 8); + } else { + ++var4; + } + } + + var4 += var7; + var3 += var8; + } + + } + + @ObfuscatedName("b") + static void method6070(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + int var10 = 256 - var9; + + for(int var11 = -var6; var11 < 0; ++var11) { + for(int var12 = -var5; var12 < 0; ++var12) { + var2 = var1[var3++]; + if(var2 != 0) { + int var13 = var0[var4]; + var0[var4++] = ((var13 & 16711935) * var10 + var9 * (var2 & 16711935) & -16711936) + ((var2 & 65280) * var9 + var10 * (var13 & 65280) & 16711680) >> 8; + } else { + ++var4; + } + } + + var4 += var7; + var3 += var8; + } + + } + + @ObfuscatedName("p") + static void method6072(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12) { + int var13 = 256 - var12; + int var14 = var3; + + for(int var15 = -var8; var15 < 0; ++var15) { + int var16 = var11 * (var4 >> 16); + + for(int var17 = -var7; var17 < 0; ++var17) { + var2 = var1[(var3 >> 16) + var16]; + if(var2 != 0) { + int var18 = var0[var5]; + var0[var5++] = ((var2 & 65280) * var12 + var13 * (var18 & 65280) & 16711680) + ((var18 & 16711935) * var13 + var12 * (var2 & 16711935) & -16711936) >> 8; + } else { + ++var5; + } + + var3 += var9; + } + + var4 += var10; + var3 = var14; + var5 += var6; + } + + } + + @ObfuscatedName("ag") + static void method6074(int var0, int var1, int var2, int[] var3, int[] var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12) { + for(var8 = -var10; var8 < 0; ++var8) { + for(var6 = -var9; var6 < 0; ++var6) { + var0 = var4[var5++]; + if(var0 != 0) { + var1 = var3[var7]; + var2 = var0 + var1; + var0 = (var0 & 16711935) + (var1 & 16711935); + var1 = (var0 & 16777472) + (var2 - var0 & 65536); + var3[var7++] = var2 - var1 | var1 - (var1 >>> 8); + } else { + ++var7; + } + } + + var7 += var11; + var5 += var12; + } + + } + + @ObfuscatedName("aq") + static void method6075(int var0, int var1, int var2, int[] var3, int[] var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13) { + for(var8 = -var10; var8 < 0; ++var8) { + for(var6 = -var9; var6 < 0; ++var6) { + var0 = var4[var5++]; + if(var0 != 0) { + var1 = var13 * (var0 & 16711935); + var0 = (var1 & -16711936) + (var13 * var0 - var1 & 16711680) >>> 8; + var1 = var3[var7]; + var2 = var0 + var1; + var0 = (var0 & 16711935) + (var1 & 16711935); + var1 = (var0 & 16777472) + (var2 - var0 & 65536); + var3[var7++] = var2 - var1 | var1 - (var1 >>> 8); + } else { + ++var7; + } + } + + var7 += var11; + var5 += var12; + } + + } + + @ObfuscatedName("av") + static void method6144(int var0, int var1, int var2, int var3, int[] var4, int[] var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15) { + for(int var16 = var3; var8 < 0; ++var8) { + var7 = var15 * (var9 >> 16); + + for(var6 = -var12; var6 < 0; ++var6) { + var0 = var4[(var3 >> 16) + var7]; + if(var0 != 0) { + var1 = var5[var10]; + var2 = var0 + var1; + var0 = (var0 & 16711935) + (var1 & 16711935); + var1 = (var0 & 16777472) + (var2 - var0 & 65536); + var5[var10++] = var2 - var1 | var1 - (var1 >>> 8); + } else { + ++var10; + } + + var3 += var13; + } + + var9 += var14; + var3 = var16; + var10 += var11; + } + + } + + @ObfuscatedName("ar") + static void method6078(int var0, int var1, int var2, int var3, int[] var4, int[] var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16) { + for(int var17 = var3; var8 < 0; ++var8) { + var7 = var15 * (var9 >> 16); + + for(var6 = -var12; var6 < 0; ++var6) { + var0 = var4[(var3 >> 16) + var7]; + if(var0 != 0) { + var1 = (var0 & 16711935) * var16; + var0 = (var1 & -16711936) + (var0 * var16 - var1 & 16711680) >>> 8; + var1 = var5[var10]; + var2 = var0 + var1; + var0 = (var0 & 16711935) + (var1 & 16711935); + var1 = (var0 & 16777472) + (var2 - var0 & 65536); + var5[var10++] = var2 - var1 | var1 - (var1 >>> 8); + } else { + ++var10; + } + + var3 += var13; + } + + var9 += var14; + var3 = var17; + var10 += var11; + } + + } +} diff --git a/rs-client/src/main/java/SpriteIds.java b/rs-client/src/main/java/SpriteIds.java new file mode 100644 index 0000000000..e621c81af8 --- /dev/null +++ b/rs-client/src/main/java/SpriteIds.java @@ -0,0 +1,169 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lg") +@Implements("SpriteIds") +public class SpriteIds { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1673796151 + ) + @Export("__m") + public int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 159591367 + ) + @Export("__f") + public int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -104203005 + ) + @Export("mapScenes") + public int mapScenes; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1052769237 + ) + @Export("headIconsPk") + public int headIconsPk; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1744250043 + ) + @Export("headIconsPrayer") + public int headIconsPrayer; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 185111653 + ) + @Export("headIconsHint") + public int headIconsHint; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1217061337 + ) + @Export("mapMarkers") + public int mapMarkers; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 536911453 + ) + @Export("crosses") + public int crosses; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1114417319 + ) + @Export("mapDots") + public int mapDots; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -919662109 + ) + @Export("scrollBars") + public int scrollBars; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 2043130323 + ) + @Export("modIcons") + public int modIcons; + + public SpriteIds() { + this.__m = -1; + this.__f = -1; + this.mapScenes = -1; + this.headIconsPk = -1; + this.headIconsPrayer = -1; + this.headIconsHint = -1; + this.mapMarkers = -1; + this.crosses = -1; + this.mapDots = -1; + this.scrollBars = -1; + this.modIcons = -1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;I)V", + garbageValue = "1764356022" + ) + @Export("read") + public void read(AbstractIndexCache var1) { + byte[] var2 = var1.takeRecordFlat(class311.field3810.field3809); + Buffer var3 = new Buffer(var2); + + while(true) { + int var4 = var3.readUnsignedByte(); + if(var4 == 0) { + return; + } + + switch(var4) { + case 1: + var3.readMedium(); + break; + case 2: + this.__m = var3.__ap_310(); + this.__f = var3.__ap_310(); + this.mapScenes = var3.__ap_310(); + this.headIconsPk = var3.__ap_310(); + this.headIconsPrayer = var3.__ap_310(); + this.headIconsHint = var3.__ap_310(); + this.mapMarkers = var3.__ap_310(); + this.crosses = var3.__ap_310(); + this.mapDots = var3.__ap_310(); + this.scrollBars = var3.__ap_310(); + this.modIcons = var3.__ap_310(); + } + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lir;Lir;III)Lkk;", + garbageValue = "195396240" + ) + public static Font method5823(AbstractIndexCache var0, AbstractIndexCache var1, int var2, int var3) { + if(!SpriteMask.method4392(var0, var2, var3)) { + return null; + } else { + byte[] var5 = var1.takeRecord(var2, var3); + Font var4; + if(var5 == null) { + var4 = null; + } else { + Font var6 = new Font(var5, class328.indexedSpriteOffsetXs, class328.indexedSpriteOffsetYs, VarbitDefinition.indexedSpriteWidths, SecureRandomCallable.indexedSpriteHeights, class328.indexedSpritePalette, class328.spritePixels); + class328.indexedSpriteOffsetXs = null; + class328.indexedSpriteOffsetYs = null; + VarbitDefinition.indexedSpriteWidths = null; + SecureRandomCallable.indexedSpriteHeights = null; + class328.indexedSpritePalette = null; + class328.spritePixels = null; + var4 = var6; + } + + return var4; + } + } + + @ObfuscatedName("fe") + @ObfuscatedSignature( + signature = "(Lbz;B)V", + garbageValue = "58" + ) + static final void method5828(Actor var0) { + int var1 = var0.__bw - Client.cycle; + int var2 = var0.__bf * 128 + var0.size * 64; + int var3 = var0.__be * 128 + var0.size * 64; + var0.x += (var2 - var0.x) / var1; + var0.y += (var3 - var0.y) / var1; + var0.__cq = 0; + var0.orientation = var0.__cv; + } +} diff --git a/rs-client/src/main/java/SpriteMask.java b/rs-client/src/main/java/SpriteMask.java new file mode 100644 index 0000000000..856c8ea133 --- /dev/null +++ b/rs-client/src/main/java/SpriteMask.java @@ -0,0 +1,107 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hp") +@Implements("SpriteMask") +public class SpriteMask extends DualNode { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 574541221 + ) + @Export("width") + public final int width; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -193097093 + ) + @Export("height") + public final int height; + @ObfuscatedName("q") + @Export("xWidths") + public final int[] xWidths; + @ObfuscatedName("w") + @Export("xStarts") + public final int[] xStarts; + + SpriteMask(int var1, int var2, int[] var3, int[] var4, int var5) { + this.width = var1; + this.height = var2; + this.xWidths = var3; + this.xStarts = var4; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "781236044" + ) + @Export("contains") + public boolean contains(int var1, int var2) { + if(var2 >= 0 && var2 < this.xStarts.length) { + int var3 = this.xStarts[var2]; + if(var1 >= var3 && var1 <= var3 + this.xWidths[var2]) { + return true; + } + } + + return false; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1301156444" + ) + static void method4390() { + for(ObjectSound var0 = (ObjectSound)ObjectSound.objectSounds.last(); var0 != null; var0 = (ObjectSound)ObjectSound.objectSounds.previous()) { + if(var0.stream1 != null) { + TaskHandler.pcmStreamMixer.removeSubStream(var0.stream1); + var0.stream1 = null; + } + + if(var0.stream2 != null) { + TaskHandler.pcmStreamMixer.removeSubStream(var0.stream2); + var0.stream2 = null; + } + } + + ObjectSound.objectSounds.clear(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "529406067" + ) + static void method4389() { + ItemContainer.itemContainers = new NodeHashTable(32); + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "-113" + ) + static int method4391(int var0) { + Message var1 = (Message)Messages.Messages_hashTable.get((long)var0); + return var1 == null?-1:(var1.nextDual == Messages.Messages_queue.sentinel?-1:((Message)var1.nextDual).count); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Lir;IIB)Z", + garbageValue = "1" + ) + public static boolean method4392(AbstractIndexCache var0, int var1, int var2) { + byte[] var3 = var0.takeRecord(var1, var2); + if(var3 == null) { + return false; + } else { + DevicePcmPlayerProvider.decodeSprite(var3); + return true; + } + } +} diff --git a/rs-client/src/main/java/Strings.java b/rs-client/src/main/java/Strings.java new file mode 100644 index 0000000000..25f84bfa89 --- /dev/null +++ b/rs-client/src/main/java/Strings.java @@ -0,0 +1,65 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("id") +@Implements("Strings") +public class Strings { + @ObfuscatedName("bq") + @Export("__id_bq") + public static String __id_bq; + @ObfuscatedName("cp") + @Export("__id_cp") + public static String __id_cp; + @ObfuscatedName("jr") + @Export("__id_jr") + public static String __id_jr; + @ObfuscatedName("jv") + @Export("__id_jv") + public static String __id_jv; + @ObfuscatedName("ju") + @Export("__id_ju") + public static String __id_ju; + + static { + __id_bq = "Please visit the support page for assistance."; + __id_cp = "Please visit the support page for assistance."; + __id_jr = ""; + __id_jv = "Page has opened in a new window."; + __id_ju = "(Please check your popup blocker.)"; + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "([BI)[B", + garbageValue = "274331764" + ) + @Export("decompressBytes") + static final byte[] decompressBytes(byte[] var0) { + Buffer var1 = new Buffer(var0); + int var2 = var1.readUnsignedByte(); + int var3 = var1.readInt(); + if(var3 < 0 || AbstractIndexCache.__ir_s != 0 && var3 > AbstractIndexCache.__ir_s) { + throw new RuntimeException(); + } else if(var2 == 0) { + byte[] var4 = new byte[var3]; + var1.__al_305(var4, 0, var3); + return var4; + } else { + int var6 = var1.readInt(); + if(var6 < 0 || AbstractIndexCache.__ir_s != 0 && var6 > AbstractIndexCache.__ir_s) { + throw new RuntimeException(); + } else { + byte[] var5 = new byte[var6]; + if(var2 == 1) { + Bzip2Decompressor.Bzip2Decompressor_decompress(var5, var6, var0, var3, 9); + } else { + AbstractIndexCache.gzipDecompressor.decompress(var1, var5); + } + + return var5; + } + } + } +} diff --git a/rs-client/src/main/java/StructDefinition.java b/rs-client/src/main/java/StructDefinition.java new file mode 100644 index 0000000000..57bbe957ab --- /dev/null +++ b/rs-client/src/main/java/StructDefinition.java @@ -0,0 +1,292 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jq") +@Implements("StructDefinition") +public class StructDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__jq_m") + public static AbstractIndexCache __jq_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__jq_f") + public static EvictingDualNodeHashTable __jq_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Llh;" + ) + @Export("params") + IterableNodeHashTable params; + + static { + __jq_f = new EvictingDualNodeHashTable(64); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-16" + ) + @Export("init") + void init() { + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "853330780" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-2035893488" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 249) { + this.params = AbstractIndexCache.readStringIntParameters(var1, this.params); + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IIB)I", + garbageValue = "-30" + ) + @Export("getIntParam") + public int getIntParam(int var1, int var2) { + IterableNodeHashTable var4 = this.params; + int var3; + if(var4 == null) { + var3 = var2; + } else { + IntegerNode var5 = (IntegerNode)var4.get((long)var1); + if(var5 == null) { + var3 = var2; + } else { + var3 = var5.integer; + } + } + + return var3; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)Ljava/lang/String;", + garbageValue = "-343626362" + ) + @Export("getStringParam") + public String getStringParam(int var1, String var2) { + return Frames.method3238(this.params, var1, var2); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "2127224103" + ) + static int method4952(int var0, Script var1, boolean var2) { + int var4 = -1; + Widget var3; + if(var0 >= 2000) { + var0 -= 1000; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var3 = Huffman.getWidget(var4); + } else { + var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + } + + if(var0 == 1100) { + class179.Interpreter_intStackSize -= 2; + var3.scrollX = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + if(var3.scrollX > var3.scrollWidth - var3.width) { + var3.scrollX = var3.scrollWidth - var3.width; + } + + if(var3.scrollX < 0) { + var3.scrollX = 0; + } + + var3.scrollY = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + if(var3.scrollY > var3.scrollHeight - var3.height) { + var3.scrollY = var3.scrollHeight - var3.height; + } + + if(var3.scrollY < 0) { + var3.scrollY = 0; + } + + class22.method295(var3); + return 1; + } else if(var0 == 1101) { + var3.color = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1102) { + var3.fill = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + class22.method295(var3); + return 1; + } else if(var0 == 1103) { + var3.transparency = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1104) { + var3.lineWid = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1105) { + var3.spriteId2 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1106) { + var3.spriteAngle = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1107) { + var3.spriteTiling = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + class22.method295(var3); + return 1; + } else if(var0 == 1108) { + var3.modelType = 1; + var3.modelId = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1109) { + class179.Interpreter_intStackSize -= 6; + var3.modelOffsetX = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var3.modelOffsetY = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var3.modelAngleX = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + var3.modelAngleY = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + var3.modelAngleZ = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 4]; + var3.modelZoom = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 5]; + class22.method295(var3); + return 1; + } else { + int var8; + if(var0 == 1110) { + var8 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var8 != var3.sequenceId) { + var3.sequenceId = var8; + var3.modelFrame = 0; + var3.modelFrameCycle = 0; + class22.method295(var3); + } + + return 1; + } else if(var0 == 1111) { + var3.modelOrthog = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + class22.method295(var3); + return 1; + } else if(var0 == 1112) { + String var7 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + if(!var7.equals(var3.text)) { + var3.text = var7; + class22.method295(var3); + } + + return 1; + } else if(var0 == 1113) { + var3.fontId = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1114) { + class179.Interpreter_intStackSize -= 3; + var3.textXAlignment = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var3.textYAlignment = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var3.textLineHeight = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + class22.method295(var3); + return 1; + } else if(var0 == 1115) { + var3.textShadowed = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + class22.method295(var3); + return 1; + } else if(var0 == 1116) { + var3.outline = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1117) { + var3.spriteShadow = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1118) { + var3.spriteFlipV = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + class22.method295(var3); + return 1; + } else if(var0 == 1119) { + var3.spriteFlipH = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + class22.method295(var3); + return 1; + } else if(var0 == 1120) { + class179.Interpreter_intStackSize -= 2; + var3.scrollWidth = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var3.scrollHeight = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + class22.method295(var3); + if(var4 != -1 && var3.type == 0) { + class39.revalidateWidgetScroll(Widget.widgets[var4 >> 16], var3, false); + } + + return 1; + } else if(var0 == 1121) { + TilePaint.method3060(var3.id, var3.childIndex); + Client.__client_mo = var3; + class22.method295(var3); + return 1; + } else if(var0 == 1122) { + var3.spriteId = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1123) { + var3.color2 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1124) { + var3.__af = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class22.method295(var3); + return 1; + } else if(var0 == 1125) { + var8 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + RectangleMode var6 = (RectangleMode)ScriptFrame.findEnumerated(class311.method5822(), var8); + if(var6 != null) { + var3.rectangleMode = var6; + class22.method295(var3); + } + + return 1; + } else { + boolean var5; + if(var0 == 1126) { + var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + var3.__ba = var5; + return 1; + } else if(var0 == 1127) { + var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + var3.__bv = var5; + return 1; + } else { + return 2; + } + } + } + } +} diff --git a/rs-client/src/main/java/StudioGame.java b/rs-client/src/main/java/StudioGame.java new file mode 100644 index 0000000000..6f03e0a231 --- /dev/null +++ b/rs-client/src/main/java/StudioGame.java @@ -0,0 +1,93 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("is") +@Implements("StudioGame") +public enum StudioGame implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("__is_m") + __is_m("runescape", "RuneScape", 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("__is_f") + __is_f("stellardawn", "Stellar Dawn", 1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("__is_q") + __is_q("game3", "Game 3", 2), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("__is_w") + __is_w("game4", "Game 4", 3), + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("__is_o") + __is_o("game5", "Game 5", 4), + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("__is_u") + __is_u("oldscape", "RuneScape 2007", 5); + + @ObfuscatedName("g") + @Export("name") + public final String name; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1688917715 + ) + @Export("id") + final int id; + + StudioGame(String var3, String var4, int var5) { + this.name = var3; + this.id = var5; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + @Export("ordinal") + public int rsOrdinal() { + return this.id; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Lih;", + garbageValue = "-2058685786" + ) + public static UnderlayDefinition method4550(int var0) { + UnderlayDefinition var1 = (UnderlayDefinition)UnderlayDefinition.UnderlayDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = UnderlayDefinition.UnderlayDefinition_indexCache.takeRecord(1, var0); + var1 = new UnderlayDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2), var0); + } + + var1.init(); + UnderlayDefinition.UnderlayDefinition_cached.put(var1, (long)var0); + return var1; + } + } +} diff --git a/rs-client/src/main/java/Task.java b/rs-client/src/main/java/Task.java new file mode 100644 index 0000000000..0f71b4b450 --- /dev/null +++ b/rs-client/src/main/java/Task.java @@ -0,0 +1,38 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fm") +@Implements("Task") +public class Task { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfm;" + ) + @Export("next") + Task next; + @ObfuscatedName("o") + @Export("status") + public volatile int status; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1097728571 + ) + @Export("type") + int type; + @ObfuscatedName("g") + @Export("intArgument") + public int intArgument; + @ObfuscatedName("l") + @Export("objectArgument") + Object objectArgument; + @ObfuscatedName("e") + @Export("result") + public volatile Object result; + + Task() { + this.status = 0; + } +} diff --git a/rs-client/src/main/java/TaskHandler.java b/rs-client/src/main/java/TaskHandler.java new file mode 100644 index 0000000000..0ab109ab03 --- /dev/null +++ b/rs-client/src/main/java/TaskHandler.java @@ -0,0 +1,179 @@ +import java.io.DataInputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URL; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fz") +@Implements("TaskHandler") +public class TaskHandler implements Runnable { + @ObfuscatedName("qr") + @ObfuscatedSignature( + signature = "Lct;" + ) + @Export("pcmStreamMixer") + static PcmStreamMixer pcmStreamMixer; + @ObfuscatedName("m") + @Export("javaVendor") + public static String javaVendor; + @ObfuscatedName("f") + @Export("javaVersion") + public static String javaVersion; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lfm;" + ) + @Export("current") + Task current; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lfm;" + ) + @Export("task0") + Task task0; + @ObfuscatedName("o") + @Export("thread") + Thread thread; + @ObfuscatedName("u") + @Export("isClosed") + boolean isClosed; + + public TaskHandler() { + this.current = null; + this.task0 = null; + this.isClosed = false; + javaVendor = "Unknown"; + javaVersion = "1.6"; + + try { + javaVendor = System.getProperty("java.vendor"); + javaVersion = System.getProperty("java.version"); + } catch (Exception var2) { + ; + } + + this.isClosed = false; + this.thread = new Thread(this); + this.thread.setPriority(10); + this.thread.setDaemon(true); + this.thread.start(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-341374627" + ) + @Export("close") + public final void close() { + synchronized(this) { + this.isClosed = true; + this.notifyAll(); + } + + try { + this.thread.join(); + } catch (InterruptedException var3) { + ; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIILjava/lang/Object;I)Lfm;", + garbageValue = "558028939" + ) + @Export("newTask") + final Task newTask(int var1, int var2, int var3, Object var4) { + Task var5 = new Task(); + var5.type = var1; + var5.intArgument = var2; + var5.objectArgument = var4; + synchronized(this) { + if(this.task0 != null) { + this.task0.next = var5; + this.task0 = var5; + } else { + this.task0 = this.current = var5; + } + + this.notify(); + return var5; + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;II)Lfm;", + garbageValue = "-1376691915" + ) + @Export("newSocketTask") + public final Task newSocketTask(String var1, int var2) { + return this.newTask(1, var2, 0, var1); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Ljava/lang/Runnable;II)Lfm;", + garbageValue = "-909980487" + ) + @Export("newThreadTask") + public final Task newThreadTask(Runnable var1, int var2) { + return this.newTask(2, var2, 0, var1); + } + + @Export("run") + @ObfuscatedName("run") + public final void run() { + while(true) { + Task var1; + synchronized(this) { + while(true) { + if(this.isClosed) { + return; + } + + if(this.current != null) { + var1 = this.current; + this.current = this.current.next; + if(this.current == null) { + this.task0 = null; + } + break; + } + + try { + this.wait(); + } catch (InterruptedException var8) { + ; + } + } + } + + try { + int var5 = var1.type; + if(var5 == 1) { + var1.result = new Socket(InetAddress.getByName((String)var1.objectArgument), var1.intArgument); + } else if(var5 == 2) { + Thread var3 = new Thread((Runnable)var1.objectArgument); + var3.setDaemon(true); + var3.start(); + var3.setPriority(var1.intArgument); + var1.result = var3; + } else if(var5 == 4) { + var1.result = new DataInputStream(((URL)var1.objectArgument).openStream()); + } + + var1.status = 1; + } catch (ThreadDeath var6) { + throw var6; + } catch (Throwable var7) { + var1.status = 2; + } + } + } +} diff --git a/rs-client/src/main/java/Texture.java b/rs-client/src/main/java/Texture.java new file mode 100644 index 0000000000..ee59d8609c --- /dev/null +++ b/rs-client/src/main/java/Texture.java @@ -0,0 +1,268 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dh") +@Implements("Texture") +public class Texture extends Node { + @ObfuscatedName("a") + @Export("Texture_animatedPixels") + static int[] Texture_animatedPixels; + @ObfuscatedName("o") + @Export("int1") + int int1; + @ObfuscatedName("u") + @Export("__u") + boolean __u; + @ObfuscatedName("g") + @Export("records") + int[] records; + @ObfuscatedName("l") + @Export("__l") + int[] __l; + @ObfuscatedName("e") + @Export("__e") + int[] __e; + @ObfuscatedName("x") + @Export("__x") + int[] __x; + @ObfuscatedName("d") + @Export("animationDirection") + int animationDirection; + @ObfuscatedName("k") + @Export("animationSpeed") + int animationSpeed; + @ObfuscatedName("n") + @Export("pixels") + int[] pixels; + @ObfuscatedName("i") + @Export("isLoaded") + boolean isLoaded; + + @ObfuscatedSignature( + signature = "(Lgr;)V" + ) + Texture(Buffer var1) { + this.isLoaded = false; + this.int1 = var1.__ag_302(); + this.__u = var1.readUnsignedByte() == 1; + int var2 = var1.readUnsignedByte(); + if(var2 >= 1 && var2 <= 4) { + this.records = new int[var2]; + + int var3; + for(var3 = 0; var3 < var2; ++var3) { + this.records[var3] = var1.__ag_302(); + } + + if(var2 > 1) { + this.__l = new int[var2 - 1]; + + for(var3 = 0; var3 < var2 - 1; ++var3) { + this.__l[var3] = var1.readUnsignedByte(); + } + } + + if(var2 > 1) { + this.__e = new int[var2 - 1]; + + for(var3 = 0; var3 < var2 - 1; ++var3) { + this.__e[var3] = var1.readUnsignedByte(); + } + } + + this.__x = new int[var2]; + + for(var3 = 0; var3 < var2; ++var3) { + this.__x[var3] = var1.readInt(); + } + + this.animationDirection = var1.readUnsignedByte(); + this.animationSpeed = var1.readUnsignedByte(); + this.pixels = null; + } else { + throw new RuntimeException(); + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(DILir;)Z" + ) + @Export("__m_230") + boolean __m_230(double var1, int var3, AbstractIndexCache var4) { + int var5; + for(var5 = 0; var5 < this.records.length; ++var5) { + if(var4.getRecordFlat(this.records[var5]) == null) { + return false; + } + } + + var5 = var3 * var3; + this.pixels = new int[var5]; + + for(int var6 = 0; var6 < this.records.length; ++var6) { + IndexedSprite var7 = class83.method2028(var4, this.records[var6]); + var7.normalize(); + byte[] var8 = var7.pixels; + int[] var9 = var7.palette; + int var10 = this.__x[var6]; + if((var10 & -16777216) == 16777216) { + ; + } + + if((var10 & -16777216) == 33554432) { + ; + } + + int var11; + int var12; + int var13; + int var14; + if((var10 & -16777216) == 50331648) { + var11 = var10 & 16711935; + var12 = var10 >> 8 & 255; + + for(var13 = 0; var13 < var9.length; ++var13) { + var14 = var9[var13]; + if(var14 >> 8 == (var14 & 65535)) { + var14 &= 255; + var9[var13] = var11 * var14 >> 8 & 16711935 | var12 * var14 & 65280; + } + } + } + + for(var11 = 0; var11 < var9.length; ++var11) { + var9[var11] = Rasterizer3D.Rasterizer3D_brighten(var9[var11], var1); + } + + if(var6 == 0) { + var11 = 0; + } else { + var11 = this.__l[var6 - 1]; + } + + if(var11 == 0) { + if(var3 == var7.subWidth) { + for(var12 = 0; var12 < var5; ++var12) { + this.pixels[var12] = var9[var8[var12] & 255]; + } + } else if(var7.subWidth == 64 && var3 == 128) { + var12 = 0; + + for(var13 = 0; var13 < var3; ++var13) { + for(var14 = 0; var14 < var3; ++var14) { + this.pixels[var12++] = var9[var8[(var13 >> 1 << 6) + (var14 >> 1)] & 255]; + } + } + } else { + if(var7.subWidth != 128 || var3 != 64) { + throw new RuntimeException(); + } + + var12 = 0; + + for(var13 = 0; var13 < var3; ++var13) { + for(var14 = 0; var14 < var3; ++var14) { + this.pixels[var12++] = var9[var8[(var14 << 1) + (var13 << 1 << 7)] & 255]; + } + } + } + } + + if(var11 == 1) { + ; + } + + if(var11 == 2) { + ; + } + + if(var11 == 3) { + ; + } + } + + return true; + } + + @ObfuscatedName("f") + @Export("reset") + void reset() { + this.pixels = null; + } + + @ObfuscatedName("q") + @Export("Texture_animate") + void Texture_animate(int var1) { + if(this.pixels != null) { + short var2; + int var3; + int var4; + int var5; + int var6; + int var7; + int[] var10; + if(this.animationDirection == 1 || this.animationDirection == 3) { + if(Texture_animatedPixels == null || Texture_animatedPixels.length < this.pixels.length) { + Texture_animatedPixels = new int[this.pixels.length]; + } + + if(this.pixels.length == 4096) { + var2 = 64; + } else { + var2 = 128; + } + + var3 = this.pixels.length; + var4 = var2 * this.animationSpeed * var1; + var5 = var3 - 1; + if(this.animationDirection == 1) { + var4 = -var4; + } + + for(var6 = 0; var6 < var3; ++var6) { + var7 = var6 + var4 & var5; + Texture_animatedPixels[var6] = this.pixels[var7]; + } + + var10 = this.pixels; + this.pixels = Texture_animatedPixels; + Texture_animatedPixels = var10; + } + + if(this.animationDirection == 2 || this.animationDirection == 4) { + if(Texture_animatedPixels == null || Texture_animatedPixels.length < this.pixels.length) { + Texture_animatedPixels = new int[this.pixels.length]; + } + + if(this.pixels.length == 4096) { + var2 = 64; + } else { + var2 = 128; + } + + var3 = this.pixels.length; + var4 = this.animationSpeed * var1; + var5 = var2 - 1; + if(this.animationDirection == 2) { + var4 = -var4; + } + + for(var6 = 0; var6 < var3; var6 += var2) { + for(var7 = 0; var7 < var2; ++var7) { + int var8 = var6 + var7; + int var9 = var6 + (var7 + var4 & var5); + Texture_animatedPixels[var8] = this.pixels[var9]; + } + } + + var10 = this.pixels; + this.pixels = Texture_animatedPixels; + Texture_animatedPixels = var10; + } + + } + } +} diff --git a/rs-client/src/main/java/TextureLoader.java b/rs-client/src/main/java/TextureLoader.java new file mode 100644 index 0000000000..7f200191c0 --- /dev/null +++ b/rs-client/src/main/java/TextureLoader.java @@ -0,0 +1,35 @@ +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ei") +@Implements("TextureLoader") +public interface TextureLoader { + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)[I", + garbageValue = "-905309626" + ) + int[] load(int var1); + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-1641984961" + ) + int __w_213(int var1); + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "14" + ) + boolean __o_214(int var1); + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1427873761" + ) + boolean isLowDetail(int var1); +} diff --git a/rs-client/src/main/java/TextureProvider.java b/rs-client/src/main/java/TextureProvider.java new file mode 100644 index 0000000000..07bb12eef5 --- /dev/null +++ b/rs-client/src/main/java/TextureProvider.java @@ -0,0 +1,480 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dl") +@Implements("TextureProvider") +public class TextureProvider implements TextureLoader { + @ObfuscatedName("af") + @Export("client") + @ObfuscatedSignature( + signature = "Lclient;" + ) + static Client client; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "[Ldh;" + ) + @Export("textures") + Texture[] textures; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lje;" + ) + @Export("deque") + NodeDeque deque; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 762273989 + ) + @Export("capacity") + int capacity; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1130378699 + ) + @Export("remaining") + int remaining; + @ObfuscatedName("o") + @Export("brightness0") + double brightness0; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1124790219 + ) + @Export("textureSize") + int textureSize; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("indexCache") + AbstractIndexCache indexCache; + + @ObfuscatedSignature( + signature = "(Lir;Lir;IDI)V" + ) + public TextureProvider(AbstractIndexCache var1, AbstractIndexCache var2, int var3, double var4, int var6) { + this.deque = new NodeDeque(); + this.remaining = 0; + this.brightness0 = 1.0D; + this.textureSize = 128; + this.indexCache = var2; + this.capacity = var3; + this.remaining = this.capacity; + this.brightness0 = var4; + this.textureSize = var6; + int[] var7 = var1.__j_395(0); + int var8 = var7.length; + this.textures = new Texture[var1.__s_396(0)]; + + for(int var9 = 0; var9 < var8; ++var9) { + Buffer var10 = new Buffer(var1.takeRecord(0, var7[var9])); + this.textures[var7[var9]] = new Texture(var10); + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1996487053" + ) + @Export("__m_212") + public int __m_212() { + int var1 = 0; + int var2 = 0; + Texture[] var3 = this.textures; + + for(int var4 = 0; var4 < var3.length; ++var4) { + Texture var5 = var3[var4]; + if(var5 != null && var5.records != null) { + var1 += var5.records.length; + int[] var6 = var5.records; + + for(int var7 = 0; var7 < var6.length; ++var7) { + int var8 = var6[var7]; + if(this.indexCache.__u_393(var8)) { + ++var2; + } + } + } + } + + if(var1 == 0) { + return 0; + } else { + return var2 * 100 / var1; + } + } + + @ObfuscatedName("f") + @Export("setBrightness") + public void setBrightness(double var1) { + this.brightness0 = var1; + this.clear(); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)[I", + garbageValue = "-905309626" + ) + @Export("load") + public int[] load(int var1) { + Texture var2 = this.textures[var1]; + if(var2 != null) { + if(var2.pixels != null) { + this.deque.addLast(var2); + var2.isLoaded = true; + return var2.pixels; + } + + boolean var3 = var2.__m_230(this.brightness0, this.textureSize, this.indexCache); + if(var3) { + if(this.remaining == 0) { + Texture var4 = (Texture)this.deque.removeFirst(); + var4.reset(); + } else { + --this.remaining; + } + + this.deque.addLast(var2); + var2.isLoaded = true; + return var2.pixels; + } + } + + return null; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-1641984961" + ) + @Export("__w_213") + public int __w_213(int var1) { + return this.textures[var1] != null?this.textures[var1].int1:0; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "14" + ) + @Export("__o_214") + public boolean __o_214(int var1) { + return this.textures[var1].__u; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1427873761" + ) + @Export("isLowDetail") + public boolean isLowDetail(int var1) { + return this.textureSize == 64; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-692582552" + ) + @Export("clear") + public void clear() { + for(int var1 = 0; var1 < this.textures.length; ++var1) { + if(this.textures[var1] != null) { + this.textures[var1].reset(); + } + } + + this.deque = new NodeDeque(); + this.remaining = this.capacity; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1044108445" + ) + @Export("animate") + public void animate(int var1) { + for(int var2 = 0; var2 < this.textures.length; ++var2) { + Texture var3 = this.textures[var2]; + if(var3 != null && var3.animationDirection != 0 && var3.isLoaded) { + var3.Texture_animate(var1); + var3.isLoaded = false; + } + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;Ljava/lang/String;B)I", + garbageValue = "16" + ) + public static int method2777(Buffer var0, String var1) { + int var2 = var0.index; + byte[] var3 = class230.method4516(var1); + var0.writeSmartByteShort(var3.length); + var0.index += class303.huffman.__m_293(var3, 0, var3.length, var0.array, var0.index); + return var0.index - var2; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Ljava/lang/Object;ZB)[B", + garbageValue = "-8" + ) + @Export("byteArrayFromObject") + public static byte[] byteArrayFromObject(Object var0, boolean var1) { + if(var0 == null) { + return null; + } else if(var0 instanceof byte[]) { + byte[] var6 = (byte[])((byte[])var0); + if(var1) { + int var4 = var6.length; + byte[] var5 = new byte[var4]; + System.arraycopy(var6, 0, var5, 0, var4); + return var5; + } else { + return var6; + } + } else if(var0 instanceof AbstractByteArrayCopier) { + AbstractByteArrayCopier var2 = (AbstractByteArrayCopier)var0; + return var2.get(); + } else { + throw new IllegalArgumentException(); + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "([BIIB)Z", + garbageValue = "1" + ) + static final boolean method2774(byte[] var0, int var1, int var2) { + boolean var3 = true; + Buffer var4 = new Buffer(var0); + int var5 = -1; + + label69: + while(true) { + int var6 = var4.__at_308(); + if(var6 == 0) { + return var3; + } + + var5 += var6; + int var7 = 0; + boolean var8 = false; + + while(true) { + int var9; + while(!var8) { + var9 = var4.__ae_307(); + if(var9 == 0) { + continue label69; + } + + var7 += var9 - 1; + int var10 = var7 & 63; + int var11 = var7 >> 6 & 63; + int var12 = var4.readUnsignedByte() >> 2; + int var13 = var11 + var1; + int var14 = var10 + var2; + if(var13 > 0 && var14 > 0 && var13 < 103 && var14 < 103) { + ObjectDefinition var15 = class50.getObjectDefinition(var5); + if(var12 != 22 || !Client.isLowDetail || var15.int1 != 0 || var15.interactType == 1 || var15.boolean2) { + if(!var15.__g_422()) { + ++Client.__client_fk; + var3 = false; + } + + var8 = true; + } + } + } + + var9 = var4.__ae_307(); + if(var9 == 0) { + break; + } + + var4.readUnsignedByte(); + } + } + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-1177246760" + ) + static int method2752(int var0, Script var1, boolean var2) { + int var3; + int var4; + if(var0 == 4000) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 + var4; + return 1; + } else if(var0 == 4001) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 - var4; + return 1; + } else if(var0 == 4002) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4 * var3; + return 1; + } else if(var0 == 4003) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 / var4; + return 1; + } else if(var0 == 4004) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)(Math.random() * (double)var3); + return 1; + } else if(var0 == 4005) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)(Math.random() * (double)(var3 + 1)); + return 1; + } else if(var0 == 4006) { + class179.Interpreter_intStackSize -= 5; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + int var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + int var6 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + int var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 4]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 + (var7 - var5) * (var4 - var3) / (var6 - var5); + return 1; + } else if(var0 == 4007) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 + var3 * var4 / 100; + return 1; + } else if(var0 == 4008) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 | 1 << var4; + return 1; + } else if(var0 == 4009) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 & -1 - (1 << var4); + return 1; + } else if(var0 == 4010) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (var3 & 1 << var4) != 0?1:0; + return 1; + } else if(var0 == 4011) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 % var4; + return 1; + } else if(var0 == 4012) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + if(var3 == 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)Math.pow((double)var3, (double)var4); + } + + return 1; + } else if(var0 == 4013) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + if(var3 == 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + return 1; + } else { + switch(var4) { + case 0: + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Integer.MAX_VALUE; + break; + case 1: + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3; + break; + case 2: + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)Math.sqrt((double)var3); + break; + case 3: + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)Math.cbrt((double)var3); + break; + case 4: + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)Math.sqrt(Math.sqrt((double)var3)); + break; + default: + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)Math.pow((double)var3, 1.0D / (double)var4); + } + + return 1; + } + } else if(var0 == 4014) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 & var4; + return 1; + } else if(var0 == 4015) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3 | var4; + return 1; + } else if(var0 == 4018) { + class179.Interpreter_intStackSize -= 3; + long var9 = (long)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + long var11 = (long)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + long var13 = (long)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (int)(var13 * var9 / var11); + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("fj") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-853047987" + ) + static final void method2773() { + Client.packetWriter.close(); + FontName.method5641(); + class65.scene.clear(); + + for(int var0 = 0; var0 < 4; ++var0) { + Client.collisionMaps[var0].clear(); + } + + System.gc(); + AbstractSocket.method3488(2); + Client.__client_qy = -1; + Client.__client_qq = false; + SpriteMask.method4390(); + GameShell.updateGameState(10); + } +} diff --git a/rs-client/src/main/java/Tile.java b/rs-client/src/main/java/Tile.java new file mode 100644 index 0000000000..f4bff62ad3 --- /dev/null +++ b/rs-client/src/main/java/Tile.java @@ -0,0 +1,289 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dj") +@Implements("Tile") +public final class Tile extends Node { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1065165981 + ) + @Export("plane") + int plane; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 103024387 + ) + @Export("x") + int x; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -561562755 + ) + @Export("y") + int y; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1476296141 + ) + @Export("originalPlane") + int originalPlane; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Leb;" + ) + @Export("paint") + TilePaint paint; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Ldv;" + ) + @Export("model") + TileModel model; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lej;" + ) + @Export("boundaryObject") + BoundaryObject boundaryObject; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Leq;" + ) + @Export("wallDecoration") + WallDecoration wallDecoration; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Ldo;" + ) + @Export("floorDecoration") + FloorDecoration floorDecoration; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Ldr;" + ) + @Export("groundItemPile") + GroundItemPile groundItemPile; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -792635627 + ) + @Export("gameObjectsCount") + int gameObjectsCount; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "[Leh;" + ) + @Export("gameObjects") + GameObject[] gameObjects; + @ObfuscatedName("n") + @Export("gameObjectEdgeMasks") + int[] gameObjectEdgeMasks; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 1192947815 + ) + @Export("gameObjectsEdgeMask") + int gameObjectsEdgeMask; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -1078135311 + ) + @Export("minPlane") + int minPlane; + @ObfuscatedName("z") + @Export("drawPrimary") + boolean drawPrimary; + @ObfuscatedName("j") + @Export("drawSecondary") + boolean drawSecondary; + @ObfuscatedName("s") + @Export("drawGameObjects") + boolean drawGameObjects; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 769252193 + ) + @Export("drawGameObjectEdges") + int drawGameObjectEdges; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = 1724493981 + ) + @Export("__y") + int __y; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = -172066661 + ) + @Export("__h") + int __h; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 2030010491 + ) + @Export("__b") + int __b; + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Ldj;" + ) + @Export("linkedBelowTile") + Tile linkedBelowTile; + + Tile(int var1, int var2, int var3) { + this.gameObjects = new GameObject[5]; + this.gameObjectEdgeMasks = new int[5]; + this.gameObjectsEdgeMask = 0; + this.originalPlane = this.plane = var1; + this.x = var2; + this.y = var3; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1899580455" + ) + public static void method2867() { + UnderlayDefinition.UnderlayDefinition_cached.clear(); + } + + @ObfuscatedName("is") + @ObfuscatedSignature( + signature = "(Ljz;IIIB)V", + garbageValue = "117" + ) + @Export("addNpcToMenu") + static final void addNpcToMenu(NpcDefinition var0, int var1, int var2, int var3) { + if(Client.menuOptionsCount < 400) { + if(var0.transforms != null) { + var0 = var0.transform(); + } + + if(var0 != null) { + if(var0.isInteractable) { + if(!var0.isFollower || Client.followerIndex == var1) { + String var4 = var0.name; + int var7; + int var8; + if(var0.combatLevel != 0) { + var7 = var0.combatLevel; + var8 = Canvas.localPlayer.combatLevel; + int var9 = var8 - var7; + String var6; + if(var9 < -9) { + var6 = BufferedFile.colorStartTag(16711680); + } else if(var9 < -6) { + var6 = BufferedFile.colorStartTag(16723968); + } else if(var9 < -3) { + var6 = BufferedFile.colorStartTag(16740352); + } else if(var9 < 0) { + var6 = BufferedFile.colorStartTag(16756736); + } else if(var9 > 9) { + var6 = BufferedFile.colorStartTag(65280); + } else if(var9 > 6) { + var6 = BufferedFile.colorStartTag(4259584); + } else if(var9 > 3) { + var6 = BufferedFile.colorStartTag(8453888); + } else if(var9 > 0) { + var6 = BufferedFile.colorStartTag(12648192); + } else { + var6 = BufferedFile.colorStartTag(16776960); + } + + var4 = var4 + var6 + " " + " (" + "level-" + var0.combatLevel + ")"; + } + + if(var0.isFollower && Client.followerOpsLowPriority) { + Tiles.method1106("Examine", BufferedFile.colorStartTag(16776960) + var4, 1003, var1, var2, var3); + } + + if(Client.isItemSelected == 1) { + Tiles.method1106("Use", Client.selectedItemName + " " + "->" + " " + BufferedFile.colorStartTag(16776960) + var4, 7, var1, var2, var3); + } else if(Client.isSpellSelected) { + if((FloorDecoration.selectedSpellFlags & 2) == 2) { + Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + BufferedFile.colorStartTag(16776960) + var4, 8, var1, var2, var3); + } + } else { + int var10 = var0.isFollower && Client.followerOpsLowPriority?2000:0; + String[] var11 = var0.actions; + if(var11 != null) { + for(var7 = 4; var7 >= 0; --var7) { + if(var11[var7] != null && !var11[var7].equalsIgnoreCase("Attack")) { + var8 = 0; + if(var7 == 0) { + var8 = var10 + 9; + } + + if(var7 == 1) { + var8 = var10 + 10; + } + + if(var7 == 2) { + var8 = var10 + 11; + } + + if(var7 == 3) { + var8 = var10 + 12; + } + + if(var7 == 4) { + var8 = var10 + 13; + } + + Tiles.method1106(var11[var7], BufferedFile.colorStartTag(16776960) + var4, var8, var1, var2, var3); + } + } + } + + if(var11 != null) { + for(var7 = 4; var7 >= 0; --var7) { + if(var11[var7] != null && var11[var7].equalsIgnoreCase("Attack")) { + short var12 = 0; + if(AttackOption.AttackOption_hidden != Client.npcAttackOption) { + if(AttackOption.AttackOption_alwaysRightClick == Client.npcAttackOption || Client.npcAttackOption == AttackOption.AttackOption_dependsOnCombatLevels && var0.combatLevel > Canvas.localPlayer.combatLevel) { + var12 = 2000; + } + + var8 = 0; + if(var7 == 0) { + var8 = var12 + 9; + } + + if(var7 == 1) { + var8 = var12 + 10; + } + + if(var7 == 2) { + var8 = var12 + 11; + } + + if(var7 == 3) { + var8 = var12 + 12; + } + + if(var7 == 4) { + var8 = var12 + 13; + } + + Tiles.method1106(var11[var7], BufferedFile.colorStartTag(16776960) + var4, var8, var1, var2, var3); + } + } + } + } + + if(!var0.isFollower || !Client.followerOpsLowPriority) { + Tiles.method1106("Examine", BufferedFile.colorStartTag(16776960) + var4, 1003, var1, var2, var3); + } + } + + } + } + } + } + } +} diff --git a/rs-client/src/main/java/TileLocation.java b/rs-client/src/main/java/TileLocation.java new file mode 100644 index 0000000000..acb6f0c94a --- /dev/null +++ b/rs-client/src/main/java/TileLocation.java @@ -0,0 +1,102 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hu") +@Implements("TileLocation") +public class TileLocation { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 503621925 + ) + @Export("plane") + public int plane; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1225620013 + ) + @Export("x") + public int x; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 154740833 + ) + @Export("y") + public int y; + + @ObfuscatedSignature( + signature = "(Lhu;)V" + ) + public TileLocation(TileLocation var1) { + this.plane = var1.plane; + this.x = var1.x; + this.y = var1.y; + } + + public TileLocation(int var1, int var2, int var3) { + this.plane = var1; + this.x = var2; + this.y = var3; + } + + public TileLocation(int var1) { + if(var1 == -1) { + this.plane = -1; + } else { + this.plane = var1 >> 28 & 3; + this.x = var1 >> 14 & 16383; + this.y = var1 & 16383; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1645833361" + ) + @Export("packed") + public int packed() { + return this.plane << 28 | this.x << 14 | this.y; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lhu;B)Z", + garbageValue = "-1" + ) + @Export("equals0") + boolean equals0(TileLocation var1) { + return this.plane != var1.plane?false:(this.x != var1.x?false:this.y == var1.y); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Ljava/lang/String;", + garbageValue = "997364398" + ) + @Export("toString0") + String toString0(String var1) { + return this.plane + var1 + (this.x >> 6) + var1 + (this.y >> 6) + var1 + (this.x & 63) + var1 + (this.y & 63); + } + + @Export("__equals_382") + @ObfuscatedName("equals") + public boolean __equals_382(Object var1) { + return this == var1?true:(!(var1 instanceof TileLocation)?false:this.equals0((TileLocation)var1)); + } + + @Export("__hashCode_383") + @ObfuscatedName("hashCode") + public int __hashCode_383() { + return this.packed(); + } + + @Export("__toString_384") + @ObfuscatedName("toString") + public String __toString_384() { + return this.toString0(","); + } +} diff --git a/rs-client/src/main/java/TileModel.java b/rs-client/src/main/java/TileModel.java new file mode 100644 index 0000000000..5f6589ce02 --- /dev/null +++ b/rs-client/src/main/java/TileModel.java @@ -0,0 +1,315 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("dv") +@Implements("TileModel") +public final class TileModel { + @ObfuscatedName("z") + @Export("__dv_z") + static int[] __dv_z; + @ObfuscatedName("j") + @Export("__dv_j") + static int[] __dv_j; + @ObfuscatedName("s") + @Export("__dv_s") + static int[] __dv_s; + @ObfuscatedName("t") + @Export("__dv_t") + static int[] __dv_t; + @ObfuscatedName("y") + @Export("__dv_y") + static int[] __dv_y; + @ObfuscatedName("h") + @Export("__dv_h") + static final int[][] __dv_h; + @ObfuscatedName("b") + @Export("__dv_b") + static final int[][] __dv_b; + @ObfuscatedName("m") + @Export("vertexX") + int[] vertexX; + @ObfuscatedName("f") + @Export("vertexY") + int[] vertexY; + @ObfuscatedName("q") + @Export("vertexZ") + int[] vertexZ; + @ObfuscatedName("w") + @Export("triangleColorA") + int[] triangleColorA; + @ObfuscatedName("o") + @Export("triangleColorB") + int[] triangleColorB; + @ObfuscatedName("u") + @Export("triangleColorC") + int[] triangleColorC; + @ObfuscatedName("g") + @Export("faceX") + int[] faceX; + @ObfuscatedName("l") + @Export("faceY") + int[] faceY; + @ObfuscatedName("e") + @Export("faceZ") + int[] faceZ; + @ObfuscatedName("x") + @Export("triangleTextureId") + int[] triangleTextureId; + @ObfuscatedName("d") + @Export("isFlat") + boolean isFlat; + @ObfuscatedName("k") + @Export("shape") + int shape; + @ObfuscatedName("n") + @Export("rotation") + int rotation; + @ObfuscatedName("i") + @Export("underlayRgb") + int underlayRgb; + @ObfuscatedName("a") + @Export("overlayRgb") + int overlayRgb; + + static { + __dv_z = new int[6]; + __dv_j = new int[6]; + __dv_s = new int[6]; + __dv_t = new int[6]; + __dv_y = new int[6]; + __dv_h = new int[][]{{1, 3, 5, 7}, {1, 3, 5, 7}, {1, 3, 5, 7}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 2, 6}, {1, 3, 5, 7, 2, 8}, {1, 3, 5, 7, 2, 8}, {1, 3, 5, 7, 11, 12}, {1, 3, 5, 7, 11, 12}, {1, 3, 5, 7, 13, 14}}; + __dv_b = new int[][]{{0, 1, 2, 3, 0, 0, 1, 3}, {1, 1, 2, 3, 1, 0, 1, 3}, {0, 1, 2, 3, 1, 0, 1, 3}, {0, 0, 1, 2, 0, 0, 2, 4, 1, 0, 4, 3}, {0, 0, 1, 4, 0, 0, 4, 3, 1, 1, 2, 4}, {0, 0, 4, 3, 1, 0, 1, 2, 1, 0, 2, 4}, {0, 1, 2, 4, 1, 0, 1, 4, 1, 0, 4, 3}, {0, 4, 1, 2, 0, 4, 2, 5, 1, 0, 4, 5, 1, 0, 5, 3}, {0, 4, 1, 2, 0, 4, 2, 3, 0, 4, 3, 5, 1, 0, 4, 5}, {0, 0, 4, 5, 1, 4, 1, 2, 1, 4, 2, 3, 1, 4, 3, 5}, {0, 0, 1, 5, 0, 1, 4, 5, 0, 1, 2, 4, 1, 0, 5, 3, 1, 5, 4, 3, 1, 4, 2, 3}, {1, 0, 1, 5, 1, 1, 4, 5, 1, 1, 2, 4, 0, 0, 5, 3, 0, 5, 4, 3, 0, 4, 2, 3}, {1, 0, 5, 4, 1, 0, 1, 5, 0, 0, 4, 3, 0, 4, 5, 3, 0, 5, 2, 3, 0, 1, 2, 5}}; + } + + TileModel(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18, int var19) { + this.isFlat = true; + if(var7 != var6 || var8 != var6 || var9 != var6) { + this.isFlat = false; + } + + this.shape = var1; + this.rotation = var2; + this.underlayRgb = var18; + this.overlayRgb = var19; + short var20 = 128; + int var21 = var20 / 2; + int var22 = var20 / 4; + int var23 = var20 * 3 / 4; + int[] var24 = __dv_h[var1]; + int var25 = var24.length; + this.vertexX = new int[var25]; + this.vertexY = new int[var25]; + this.vertexZ = new int[var25]; + int[] var26 = new int[var25]; + int[] var27 = new int[var25]; + int var28 = var20 * var4; + int var29 = var5 * var20; + + int var31; + int var32; + int var33; + int var34; + int var35; + int var36; + for(int var30 = 0; var30 < var25; ++var30) { + var31 = var24[var30]; + if((var31 & 1) == 0 && var31 <= 8) { + var31 = (var31 - var2 - var2 - 1 & 7) + 1; + } + + if(var31 > 8 && var31 <= 12) { + var31 = (var31 - 9 - var2 & 3) + 9; + } + + if(var31 > 12 && var31 <= 16) { + var31 = (var31 - 13 - var2 & 3) + 13; + } + + if(var31 == 1) { + var32 = var28; + var33 = var29; + var34 = var6; + var35 = var10; + var36 = var14; + } else if(var31 == 2) { + var32 = var28 + var21; + var33 = var29; + var34 = var7 + var6 >> 1; + var35 = var11 + var10 >> 1; + var36 = var15 + var14 >> 1; + } else if(var31 == 3) { + var32 = var28 + var20; + var33 = var29; + var34 = var7; + var35 = var11; + var36 = var15; + } else if(var31 == 4) { + var32 = var28 + var20; + var33 = var29 + var21; + var34 = var8 + var7 >> 1; + var35 = var11 + var12 >> 1; + var36 = var15 + var16 >> 1; + } else if(var31 == 5) { + var32 = var28 + var20; + var33 = var29 + var20; + var34 = var8; + var35 = var12; + var36 = var16; + } else if(var31 == 6) { + var32 = var28 + var21; + var33 = var29 + var20; + var34 = var8 + var9 >> 1; + var35 = var13 + var12 >> 1; + var36 = var17 + var16 >> 1; + } else if(var31 == 7) { + var32 = var28; + var33 = var29 + var20; + var34 = var9; + var35 = var13; + var36 = var17; + } else if(var31 == 8) { + var32 = var28; + var33 = var29 + var21; + var34 = var9 + var6 >> 1; + var35 = var13 + var10 >> 1; + var36 = var17 + var14 >> 1; + } else if(var31 == 9) { + var32 = var28 + var21; + var33 = var29 + var22; + var34 = var7 + var6 >> 1; + var35 = var11 + var10 >> 1; + var36 = var15 + var14 >> 1; + } else if(var31 == 10) { + var32 = var28 + var23; + var33 = var29 + var21; + var34 = var8 + var7 >> 1; + var35 = var11 + var12 >> 1; + var36 = var15 + var16 >> 1; + } else if(var31 == 11) { + var32 = var28 + var21; + var33 = var29 + var23; + var34 = var8 + var9 >> 1; + var35 = var13 + var12 >> 1; + var36 = var17 + var16 >> 1; + } else if(var31 == 12) { + var32 = var28 + var22; + var33 = var29 + var21; + var34 = var9 + var6 >> 1; + var35 = var13 + var10 >> 1; + var36 = var17 + var14 >> 1; + } else if(var31 == 13) { + var32 = var28 + var22; + var33 = var29 + var22; + var34 = var6; + var35 = var10; + var36 = var14; + } else if(var31 == 14) { + var32 = var28 + var23; + var33 = var29 + var22; + var34 = var7; + var35 = var11; + var36 = var15; + } else if(var31 == 15) { + var32 = var28 + var23; + var33 = var29 + var23; + var34 = var8; + var35 = var12; + var36 = var16; + } else { + var32 = var28 + var22; + var33 = var29 + var23; + var34 = var9; + var35 = var13; + var36 = var17; + } + + this.vertexX[var30] = var32; + this.vertexY[var30] = var34; + this.vertexZ[var30] = var33; + var26[var30] = var35; + var27[var30] = var36; + } + + int[] var38 = __dv_b[var1]; + var31 = var38.length / 4; + this.faceX = new int[var31]; + this.faceY = new int[var31]; + this.faceZ = new int[var31]; + this.triangleColorA = new int[var31]; + this.triangleColorB = new int[var31]; + this.triangleColorC = new int[var31]; + if(var3 != -1) { + this.triangleTextureId = new int[var31]; + } + + var32 = 0; + + for(var33 = 0; var33 < var31; ++var33) { + var34 = var38[var32]; + var35 = var38[var32 + 1]; + var36 = var38[var32 + 2]; + int var37 = var38[var32 + 3]; + var32 += 4; + if(var35 < 4) { + var35 = var35 - var2 & 3; + } + + if(var36 < 4) { + var36 = var36 - var2 & 3; + } + + if(var37 < 4) { + var37 = var37 - var2 & 3; + } + + this.faceX[var33] = var35; + this.faceY[var33] = var36; + this.faceZ[var33] = var37; + if(var34 == 0) { + this.triangleColorA[var33] = var26[var35]; + this.triangleColorB[var33] = var26[var36]; + this.triangleColorC[var33] = var26[var37]; + if(this.triangleTextureId != null) { + this.triangleTextureId[var33] = -1; + } + } else { + this.triangleColorA[var33] = var27[var35]; + this.triangleColorB[var33] = var27[var36]; + this.triangleColorC[var33] = var27[var37]; + if(this.triangleTextureId != null) { + this.triangleTextureId[var33] = var3; + } + } + } + + var33 = var6; + var34 = var7; + if(var7 < var6) { + var33 = var7; + } + + if(var7 > var7) { + var34 = var7; + } + + if(var8 < var33) { + var33 = var8; + } + + if(var8 > var34) { + var34 = var8; + } + + if(var9 < var33) { + var33 = var9; + } + + if(var9 > var34) { + var34 = var9; + } + + var33 /= 14; + var34 /= 14; + } +} diff --git a/rs-client/src/main/java/TilePaint.java b/rs-client/src/main/java/TilePaint.java new file mode 100644 index 0000000000..0a2baa9bb2 --- /dev/null +++ b/rs-client/src/main/java/TilePaint.java @@ -0,0 +1,130 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("eb") +@Implements("TilePaint") +public final class TilePaint { + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "Lla;" + ) + @Export("__eb_ah") + static Bounds __eb_ah; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 181759449 + ) + @Export("swColor") + int swColor; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1875844515 + ) + @Export("seColor") + int seColor; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1668262341 + ) + @Export("neColor") + int neColor; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1057776035 + ) + @Export("nwColor") + int nwColor; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 463308567 + ) + @Export("texture") + int texture; + @ObfuscatedName("u") + @Export("isFlat") + boolean isFlat; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 2097947337 + ) + @Export("rgb") + int rgb; + + TilePaint(int var1, int var2, int var3, int var4, int var5, int var6, boolean var7) { + this.isFlat = true; + this.swColor = var1; + this.seColor = var2; + this.neColor = var3; + this.nwColor = var4; + this.texture = var5; + this.rgb = var6; + this.isFlat = var7; + } + + @ObfuscatedName("hl") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "0" + ) + static final void method3061(int var0, int var1) { + NodeDeque var2 = Client.groundItems[SoundSystem.plane][var0][var1]; + if(var2 == null) { + class65.scene.removeGroundItemPile(SoundSystem.plane, var0, var1); + } else { + long var3 = -99999999L; + GroundItem var5 = null; + + GroundItem var6; + for(var6 = (GroundItem)var2.last(); var6 != null; var6 = (GroundItem)var2.previous()) { + ItemDefinition var7 = Skills.getItemDefinition(var6.id); + long var8 = (long)var7.price; + if(var7.isStackable == 1) { + var8 *= (long)(var6.quantity + 1); + } + + if(var8 > var3) { + var3 = var8; + var5 = var6; + } + } + + if(var5 == null) { + class65.scene.removeGroundItemPile(SoundSystem.plane, var0, var1); + } else { + var2.addLast(var5); + GroundItem var12 = null; + GroundItem var11 = null; + + for(var6 = (GroundItem)var2.last(); var6 != null; var6 = (GroundItem)var2.previous()) { + if(var5.id != var6.id) { + if(var12 == null) { + var12 = var6; + } + + if(var12.id != var6.id && var11 == null) { + var11 = var6; + } + } + } + + long var9 = FontName.method5637(var0, var1, 3, false, 0); + class65.scene.newGroundItemPile(SoundSystem.plane, var0, var1, class32.getTileHeight(var0 * 128 + 64, var1 * 128 + 64, SoundSystem.plane), var5, var9, var12, var11); + } + } + } + + @ObfuscatedName("id") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-2025682764" + ) + static void method3060(int var0, int var1) { + PacketBufferNode var2 = Interpreter.method1915(ClientPacket.__gs_bg, Client.packetWriter.isaacCipher); + var2.packetBuffer.writeIntLE16(var0); + var2.packetBuffer.__bo_322(var1); + Client.packetWriter.__q_167(var2); + } +} diff --git a/rs-client/src/main/java/Tiles.java b/rs-client/src/main/java/Tiles.java new file mode 100644 index 0000000000..cd80b832f6 --- /dev/null +++ b/rs-client/src/main/java/Tiles.java @@ -0,0 +1,99 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bq") +@Implements("Tiles") +public final class Tiles { + @ObfuscatedName("m") + @Export("Tiles_heights") + static int[][][] Tiles_heights; + @ObfuscatedName("f") + @Export("Tiles_renderFlags") + static byte[][][] Tiles_renderFlags; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1454618167 + ) + @Export("Tiles_minPlane") + static int Tiles_minPlane; + @ObfuscatedName("w") + @Export("__bq_w") + static byte[][][] __bq_w; + @ObfuscatedName("l") + @Export("__bq_l") + static byte[][][] __bq_l; + @ObfuscatedName("a") + @Export("__bq_a") + static int[][][] __bq_a; + @ObfuscatedName("t") + @Export("__bq_t") + static final int[] __bq_t; + @ObfuscatedName("y") + @Export("__bq_y") + static final int[] __bq_y; + @ObfuscatedName("h") + @Export("__bq_h") + static final int[] __bq_h; + @ObfuscatedName("b") + @Export("__bq_b") + static final int[] __bq_b; + @ObfuscatedName("c") + @Export("__bq_c") + static final int[] __bq_c; + @ObfuscatedName("r") + @Export("__bq_r") + static final int[] __bq_r; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -2142579405 + ) + @Export("__bq_p") + static int __bq_p; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = 834543729 + ) + @Export("__bq_v") + static int __bq_v; + + static { + Tiles_heights = new int[4][105][105]; + Tiles_renderFlags = new byte[4][104][104]; + Tiles_minPlane = 99; + __bq_t = new int[]{1, 2, 4, 8}; + __bq_y = new int[]{16, 32, 64, 128}; + __bq_h = new int[]{1, 0, -1, 0}; + __bq_b = new int[]{0, -1, 0, 1}; + __bq_c = new int[]{1, -1, -1, 1}; + __bq_r = new int[]{-1, -1, 1, 1}; + __bq_p = (int)(Math.random() * 17.0D) - 8; + __bq_v = (int)(Math.random() * 33.0D) - 16; + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(IZII)V", + garbageValue = "1832579963" + ) + public static final void method1097(int var0, boolean var1, int var2) { + if(var0 >= 8000 && var0 <= 48000) { + class309.PcmPlayer_sampleRate = var0; + PcmPlayer.isStereo = var1; + Login.pcmPlayerCount = var2; + } else { + throw new IllegalArgumentException(); + } + } + + @ObfuscatedName("in") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;IIIII)V", + garbageValue = "-1525245246" + ) + public static final void method1106(String var0, String var1, int var2, int var3, int var4, int var5) { + class16.insertMenuItem(var0, var1, var2, var3, var4, var5, false); + } +} diff --git a/rs-client/src/main/java/Timer.java b/rs-client/src/main/java/Timer.java new file mode 100644 index 0000000000..31fecfa510 --- /dev/null +++ b/rs-client/src/main/java/Timer.java @@ -0,0 +1,192 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jo") +@Implements("Timer") +public class Timer { + @ObfuscatedName("m") + @ObfuscatedGetter( + longValue = 6181704275746246665L + ) + @Export("__m") + long __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + longValue = -8166664055136527097L + ) + @Export("__f") + long __f; + @ObfuscatedName("q") + @Export("__q") + public boolean __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + longValue = -6206176920376957899L + ) + @Export("__w") + long __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + longValue = -5820022560321695785L + ) + @Export("__o") + long __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + longValue = -7044840680232740733L + ) + @Export("__u") + long __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -500639955 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 2043109577 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 978183419 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 1684916659 + ) + @Export("__x") + int __x; + + public Timer() { + this.__m = -1L; + this.__f = -1L; + this.__q = false; + this.__w = 0L; + this.__o = 0L; + this.__u = 0L; + this.__g = 0; + this.__l = 0; + this.__e = 0; + this.__x = 0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2027048361" + ) + @Export("__m_453") + public void __m_453() { + this.__m = class203.currentTimeMs(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "3" + ) + @Export("__f_454") + public void __f_454() { + if(-1L != this.__m) { + this.__o = class203.currentTimeMs() - this.__m; + this.__m = -1L; + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-1162738177" + ) + @Export("__q_455") + public void __q_455(int var1) { + this.__f = class203.currentTimeMs(); + this.__g = var1; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1855026926" + ) + @Export("__w_456") + public void __w_456() { + if(this.__f != -1L) { + this.__w = class203.currentTimeMs() - this.__f; + this.__f = -1L; + } + + ++this.__e; + this.__q = true; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(S)V", + garbageValue = "-30171" + ) + @Export("__o_457") + public void __o_457() { + this.__q = false; + this.__l = 0; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-812012402" + ) + @Export("__u_458") + public void __u_458() { + this.__w_456(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "805398419" + ) + @Export("write") + public void write(Buffer var1) { + long var2 = this.__o; + var2 /= 10L; + if(var2 < 0L) { + var2 = 0L; + } else if(var2 > 65535L) { + var2 = 65535L; + } + + var1.writeShort((int)var2); + long var4 = this.__w; + var4 /= 10L; + if(var4 < 0L) { + var4 = 0L; + } else if(var4 > 65535L) { + var4 = 65535L; + } + + var1.writeShort((int)var4); + long var6 = this.__u; + var6 /= 10L; + if(var6 < 0L) { + var6 = 0L; + } else if(var6 > 65535L) { + var6 = 65535L; + } + + var1.writeShort((int)var6); + var1.writeShort(this.__g); + var1.writeShort(this.__l); + var1.writeShort(this.__e); + var1.writeShort(this.__x); + } +} diff --git a/rs-client/src/main/java/TotalQuantityComparator.java b/rs-client/src/main/java/TotalQuantityComparator.java new file mode 100644 index 0000000000..5043399310 --- /dev/null +++ b/rs-client/src/main/java/TotalQuantityComparator.java @@ -0,0 +1,213 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("e") +@Implements("TotalQuantityComparator") +final class TotalQuantityComparator implements Comparator { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ll;Ll;I)I", + garbageValue = "-573736433" + ) + @Export("__m_5") + int __m_5(GrandExchangeEvent var1, GrandExchangeEvent var2) { + return var1.grandExchangeOffer.totalQuantity < var2.grandExchangeOffer.totalQuantity?-1:(var2.grandExchangeOffer.totalQuantity == var1.grandExchangeOffer.totalQuantity?0:1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_5((GrandExchangeEvent)var1, (GrandExchangeEvent)var2); + } + + @Export("__equals_7") + @ObfuscatedName("equals") + public boolean __equals_7(Object var1) { + return super.equals(var1); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;IIIIIIB)V", + garbageValue = "46" + ) + @Export("loadTerrain") + static final void loadTerrain(Buffer var0, int var1, int var2, int var3, int var4, int var5, int var6) { + int var7; + if(var2 >= 0 && var2 < 104 && var3 >= 0 && var3 < 104) { + Tiles.Tiles_renderFlags[var1][var2][var3] = 0; + + while(true) { + var7 = var0.readUnsignedByte(); + if(var7 == 0) { + if(var1 == 0) { + int[] var8 = Tiles.Tiles_heights[0][var2]; + int var11 = var2 + var4 + 932731; + int var12 = var3 + var5 + 556238; + int var13 = Script.method2204(var11 + 45365, var12 + 91923, 4) - 128 + (Script.method2204(10294 + var11, 37821 + var12, 2) - 128 >> 1) + (Script.method2204(var11, var12, 1) - 128 >> 2); + var13 = (int)((double)var13 * 0.3D) + 35; + if(var13 < 10) { + var13 = 10; + } else if(var13 > 60) { + var13 = 60; + } + + var8[var3] = -var13 * 8; + } else { + Tiles.Tiles_heights[var1][var2][var3] = Tiles.Tiles_heights[var1 - 1][var2][var3] - 240; + } + break; + } + + if(var7 == 1) { + int var14 = var0.readUnsignedByte(); + if(var14 == 1) { + var14 = 0; + } + + if(var1 == 0) { + Tiles.Tiles_heights[0][var2][var3] = -var14 * 8; + } else { + Tiles.Tiles_heights[var1][var2][var3] = Tiles.Tiles_heights[var1 - 1][var2][var3] - var14 * 8; + } + break; + } + + if(var7 <= 49) { + Fonts.__kz_o[var1][var2][var3] = var0.readByte(); + class32.__ay_u[var1][var2][var3] = (byte)((var7 - 2) / 4); + class307.__kc_g[var1][var2][var3] = (byte)(var7 - 2 + var6 & 3); + } else if(var7 <= 81) { + Tiles.Tiles_renderFlags[var1][var2][var3] = (byte)(var7 - 49); + } else { + Tiles.__bq_w[var1][var2][var3] = (byte)(var7 - 81); + } + } + } else { + while(true) { + var7 = var0.readUnsignedByte(); + if(var7 == 0) { + break; + } + + if(var7 == 1) { + var0.readUnsignedByte(); + break; + } + + if(var7 <= 49) { + var0.readUnsignedByte(); + } + } + } + + } + + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "(ILhu;ZI)V", + garbageValue = "466862614" + ) + static void method96(int var0, TileLocation var1, boolean var2) { + WorldMapArea var3 = BufferedFile.worldMap().getMapArea(var0); + int var4 = Canvas.localPlayer.plane; + int var5 = (Canvas.localPlayer.x >> 7) + class50.baseX; + int var6 = (Canvas.localPlayer.y >> 7) + GraphicsObject.baseY; + TileLocation var7 = new TileLocation(var4, var5, var6); + BufferedFile.worldMap().__h_526(var3, var7, var1, var2); + } + + @ObfuscatedName("ik") + @ObfuscatedSignature( + signature = "(Lbr;IIII)V", + garbageValue = "835715563" + ) + @Export("addPlayerToMenu") + static final void addPlayerToMenu(Player var0, int var1, int var2, int var3) { + if(Canvas.localPlayer != var0) { + if(Client.menuOptionsCount < 400) { + String var4; + int var7; + if(var0.skillLevel == 0) { + String var5 = var0.actions[0] + var0.username + var0.actions[1]; + var7 = var0.combatLevel; + int var8 = Canvas.localPlayer.combatLevel; + int var9 = var8 - var7; + String var6; + if(var9 < -9) { + var6 = BufferedFile.colorStartTag(16711680); + } else if(var9 < -6) { + var6 = BufferedFile.colorStartTag(16723968); + } else if(var9 < -3) { + var6 = BufferedFile.colorStartTag(16740352); + } else if(var9 < 0) { + var6 = BufferedFile.colorStartTag(16756736); + } else if(var9 > 9) { + var6 = BufferedFile.colorStartTag(65280); + } else if(var9 > 6) { + var6 = BufferedFile.colorStartTag(4259584); + } else if(var9 > 3) { + var6 = BufferedFile.colorStartTag(8453888); + } else if(var9 > 0) { + var6 = BufferedFile.colorStartTag(12648192); + } else { + var6 = BufferedFile.colorStartTag(16776960); + } + + var4 = var5 + var6 + " " + " (" + "level-" + var0.combatLevel + ")" + var0.actions[2]; + } else { + var4 = var0.actions[0] + var0.username + var0.actions[1] + " " + " (" + "skill-" + var0.skillLevel + ")" + var0.actions[2]; + } + + int var10; + if(Client.isItemSelected == 1) { + Tiles.method1106("Use", Client.selectedItemName + " " + "->" + " " + BufferedFile.colorStartTag(16777215) + var4, 14, var1, var2, var3); + } else if(Client.isSpellSelected) { + if((FloorDecoration.selectedSpellFlags & 8) == 8) { + Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + BufferedFile.colorStartTag(16777215) + var4, 15, var1, var2, var3); + } + } else { + for(var10 = 7; var10 >= 0; --var10) { + if(Client.playerMenuActions[var10] != null) { + short var11 = 0; + if(Client.playerMenuActions[var10].equalsIgnoreCase("Attack")) { + if(AttackOption.AttackOption_hidden == Client.playerAttackOption) { + continue; + } + + if(AttackOption.AttackOption_alwaysRightClick == Client.playerAttackOption || AttackOption.AttackOption_dependsOnCombatLevels == Client.playerAttackOption && var0.combatLevel > Canvas.localPlayer.combatLevel) { + var11 = 2000; + } + + if(Canvas.localPlayer.team != 0 && var0.team != 0) { + if(var0.team == Canvas.localPlayer.team) { + var11 = 2000; + } else { + var11 = 0; + } + } + } else if(Client.playerOptionsPriorities[var10]) { + var11 = 2000; + } + + boolean var12 = false; + var7 = Client.playerMenuOpcodes[var10] + var11; + Tiles.method1106(Client.playerMenuActions[var10], BufferedFile.colorStartTag(16777215) + var4, var7, var1, var2, var3); + } + } + } + + for(var10 = 0; var10 < Client.menuOptionsCount; ++var10) { + if(Client.menuOpcodes[var10] == 23) { + Client.menuTargetNames[var10] = BufferedFile.colorStartTag(16777215) + var4; + break; + } + } + + } + } + } +} diff --git a/rs-client/src/main/java/TriBool.java b/rs-client/src/main/java/TriBool.java new file mode 100644 index 0000000000..dd0f2233b5 --- /dev/null +++ b/rs-client/src/main/java/TriBool.java @@ -0,0 +1,51 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kd") +@Implements("TriBool") +public class TriBool { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("TriBool_unknown") + public static final TriBool TriBool_unknown; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("TriBool_true") + public static final TriBool TriBool_true; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lkd;" + ) + @Export("TriBool_false") + public static final TriBool TriBool_false; + @ObfuscatedName("fz") + @ObfuscatedSignature( + signature = "Leo;" + ) + @Export("urlRequester") + static UrlRequester urlRequester; + + static { + TriBool_unknown = new TriBool(); + TriBool_true = new TriBool(); + TriBool_false = new TriBool(); + } + + @ObfuscatedName("go") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1009406649" + ) + static void method5560() { + if(Client.combatTargetPlayerIndex >= 0 && Client.players[Client.combatTargetPlayerIndex] != null) { + WorldMapCacheName.addPlayerToScene(Client.players[Client.combatTargetPlayerIndex], false); + } + + } +} diff --git a/rs-client/src/main/java/UnderlayDefinition.java b/rs-client/src/main/java/UnderlayDefinition.java new file mode 100644 index 0000000000..67346653c6 --- /dev/null +++ b/rs-client/src/main/java/UnderlayDefinition.java @@ -0,0 +1,186 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ih") +@Implements("UnderlayDefinition") +public class UnderlayDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("UnderlayDefinition_indexCache") + static AbstractIndexCache UnderlayDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("UnderlayDefinition_cached") + static EvictingDualNodeHashTable UnderlayDefinition_cached; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -635678213 + ) + @Export("rgb") + int rgb; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1465372343 + ) + @Export("hue") + public int hue; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 2031118785 + ) + @Export("saturation") + public int saturation; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1691813081 + ) + @Export("lightness") + public int lightness; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1484542081 + ) + @Export("hueMultiplier") + public int hueMultiplier; + + static { + UnderlayDefinition_cached = new EvictingDualNodeHashTable(64); + } + + UnderlayDefinition() { + this.rgb = 0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-782326269" + ) + @Export("init") + void init() { + this.setHsl(this.rgb); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-336010991" + ) + @Export("read") + void read(Buffer var1, int var2) { + while(true) { + int var3 = var1.readUnsignedByte(); + if(var3 == 0) { + return; + } + + this.readNext(var1, var3, var2); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;III)V", + garbageValue = "137131494" + ) + @Export("readNext") + void readNext(Buffer var1, int var2, int var3) { + if(var2 == 1) { + this.rgb = var1.readMedium(); + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-107" + ) + @Export("setHsl") + void setHsl(int var1) { + double var2 = (double)(var1 >> 16 & 255) / 256.0D; + double var4 = (double)(var1 >> 8 & 255) / 256.0D; + double var6 = (double)(var1 & 255) / 256.0D; + double var8 = var2; + if(var4 < var2) { + var8 = var4; + } + + if(var6 < var8) { + var8 = var6; + } + + double var10 = var2; + if(var4 > var2) { + var10 = var4; + } + + if(var6 > var10) { + var10 = var6; + } + + double var12 = 0.0D; + double var14 = 0.0D; + double var16 = (var10 + var8) / 2.0D; + if(var10 != var8) { + if(var16 < 0.5D) { + var14 = (var10 - var8) / (var10 + var8); + } + + if(var16 >= 0.5D) { + var14 = (var10 - var8) / (2.0D - var10 - var8); + } + + if(var2 == var10) { + var12 = (var4 - var6) / (var10 - var8); + } else if(var4 == var10) { + var12 = 2.0D + (var6 - var2) / (var10 - var8); + } else if(var10 == var6) { + var12 = (var2 - var4) / (var10 - var8) + 4.0D; + } + } + + var12 /= 6.0D; + this.saturation = (int)(256.0D * var14); + this.lightness = (int)(256.0D * var16); + if(this.saturation < 0) { + this.saturation = 0; + } else if(this.saturation > 255) { + this.saturation = 255; + } + + if(this.lightness < 0) { + this.lightness = 0; + } else if(this.lightness > 255) { + this.lightness = 255; + } + + if(var16 > 0.5D) { + this.hueMultiplier = (int)(var14 * (1.0D - var16) * 512.0D); + } else { + this.hueMultiplier = (int)(var16 * var14 * 512.0D); + } + + if(this.hueMultiplier < 1) { + this.hueMultiplier = 1; + } + + this.hue = (int)((double)this.hueMultiplier * var12); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Lip;", + garbageValue = "618327716" + ) + static class249[] method4839() { + return new class249[]{class249.field3277, class249.field3273, class249.field3274}; + } +} diff --git a/rs-client/src/main/java/UnitPriceComparator.java b/rs-client/src/main/java/UnitPriceComparator.java new file mode 100644 index 0000000000..8e047d794a --- /dev/null +++ b/rs-client/src/main/java/UnitPriceComparator.java @@ -0,0 +1,206 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("d") +@Implements("UnitPriceComparator") +final class UnitPriceComparator implements Comparator { + @ObfuscatedName("gz") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("compass") + static Sprite compass; + @ObfuscatedName("lr") + @ObfuscatedSignature( + signature = "Lcs;" + ) + @Export("tempMenuAction") + static MenuAction tempMenuAction; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ll;Ll;I)I", + garbageValue = "-120071238" + ) + @Export("__m_11") + int __m_11(GrandExchangeEvent var1, GrandExchangeEvent var2) { + return var1.grandExchangeOffer.unitPrice < var2.grandExchangeOffer.unitPrice?-1:(var2.grandExchangeOffer.unitPrice == var1.grandExchangeOffer.unitPrice?0:1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_11((GrandExchangeEvent)var1, (GrandExchangeEvent)var2); + } + + @Export("__equals_13") + @ObfuscatedName("equals") + public boolean __equals_13(Object var1) { + return super.equals(var1); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;B)V", + garbageValue = "23" + ) + public static void method135(AbstractIndexCache var0) { + VarbitDefinition.VarbitDefinition_indexCache = var0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "1500839037" + ) + public static int method125(int var0, int var1) { + return (var0 << 8) + var1; + } + + @ObfuscatedName("f") + public static int method134(long var0) { + return (int)(var0 >>> 0 & 127L); + } + + @ObfuscatedName("gz") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "2032203362" + ) + static final int method131() { + if(ReflectionCheck.clientPreferences.roofsHidden) { + return SoundSystem.plane; + } else { + int var0 = 3; + if(WorldMapIcon1.cameraPitch < 310) { + int var1; + int var2; + if(Client.oculusOrbState == 1) { + var1 = MouseHandler.oculusOrbFocalPointX >> 7; + var2 = ScriptEvent.oculusOrbFocalPointY >> 7; + } else { + var1 = Canvas.localPlayer.x >> 7; + var2 = Canvas.localPlayer.y >> 7; + } + + int var3 = WorldMapSection1.cameraX >> 7; + int var4 = class11.cameraZ >> 7; + if(var3 < 0 || var4 < 0 || var3 >= 104 || var4 >= 104) { + return SoundSystem.plane; + } + + if(var1 < 0 || var2 < 0 || var1 >= 104 || var2 >= 104) { + return SoundSystem.plane; + } + + if((Tiles.Tiles_renderFlags[SoundSystem.plane][var3][var4] & 4) != 0) { + var0 = SoundSystem.plane; + } + + int var5; + if(var1 > var3) { + var5 = var1 - var3; + } else { + var5 = var3 - var1; + } + + int var6; + if(var2 > var4) { + var6 = var2 - var4; + } else { + var6 = var4 - var2; + } + + int var7; + int var8; + if(var5 > var6) { + var7 = var6 * 65536 / var5; + var8 = 32768; + + while(var3 != var1) { + if(var3 < var1) { + ++var3; + } else if(var3 > var1) { + --var3; + } + + if((Tiles.Tiles_renderFlags[SoundSystem.plane][var3][var4] & 4) != 0) { + var0 = SoundSystem.plane; + } + + var8 += var7; + if(var8 >= 65536) { + var8 -= 65536; + if(var4 < var2) { + ++var4; + } else if(var4 > var2) { + --var4; + } + + if((Tiles.Tiles_renderFlags[SoundSystem.plane][var3][var4] & 4) != 0) { + var0 = SoundSystem.plane; + } + } + } + } else if(var6 > 0) { + var7 = var5 * 65536 / var6; + var8 = 32768; + + while(var4 != var2) { + if(var4 < var2) { + ++var4; + } else if(var4 > var2) { + --var4; + } + + if((Tiles.Tiles_renderFlags[SoundSystem.plane][var3][var4] & 4) != 0) { + var0 = SoundSystem.plane; + } + + var8 += var7; + if(var8 >= 65536) { + var8 -= 65536; + if(var3 < var1) { + ++var3; + } else if(var3 > var1) { + --var3; + } + + if((Tiles.Tiles_renderFlags[SoundSystem.plane][var3][var4] & 4) != 0) { + var0 = SoundSystem.plane; + } + } + } + } + } + + if(Canvas.localPlayer.x >= 0 && Canvas.localPlayer.y >= 0 && Canvas.localPlayer.x < 13312 && Canvas.localPlayer.y < 13312) { + if((Tiles.Tiles_renderFlags[SoundSystem.plane][Canvas.localPlayer.x >> 7][Canvas.localPlayer.y >> 7] & 4) != 0) { + var0 = SoundSystem.plane; + } + + return var0; + } else { + return SoundSystem.plane; + } + } + } + + @ObfuscatedName("gv") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-239357025" + ) + static final void method136(int var0, int var1) { + if(Client.hintArrowType == 2) { + WorldMapLabel.worldToScreen((Client.hintArrowX - class50.baseX << 7) + Client.hintArrowSubX, (Client.hintArrowY - GraphicsObject.baseY << 7) + Client.hintArrowSubY, Client.hintArrowHeight * 2); + if(Client.viewportTempX > -1 && Client.cycle % 20 < 10) { + Player.headIconHintSprites[0].__a_505(var0 + Client.viewportTempX - 12, Client.viewportTempY + var1 - 28); + } + + } + } +} diff --git a/rs-client/src/main/java/UrlRequest.java b/rs-client/src/main/java/UrlRequest.java new file mode 100644 index 0000000000..9244a34c4f --- /dev/null +++ b/rs-client/src/main/java/UrlRequest.java @@ -0,0 +1,58 @@ +import java.net.URL; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ey") +@Implements("UrlRequest") +public class UrlRequest { + @ObfuscatedName("bx") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("__ey_bx") + static IndexedSprite[] __ey_bx; + @ObfuscatedName("m") + @Export("url") + final URL url; + @ObfuscatedName("f") + @Export("isDone0") + volatile boolean isDone0; + @ObfuscatedName("q") + @Export("response0") + volatile byte[] response0; + + UrlRequest(URL var1) { + this.url = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1588021801" + ) + @Export("isDone") + public boolean isDone() { + return this.isDone0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)[B", + garbageValue = "-25" + ) + @Export("getResponse") + public byte[] getResponse() { + return this.response0; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(CI)Z", + garbageValue = "-476632347" + ) + public static boolean method3271(char var0) { + return var0 >= 'A' && var0 <= 'Z' || var0 >= 'a' && var0 <= 'z'; + } +} diff --git a/rs-client/src/main/java/UrlRequester.java b/rs-client/src/main/java/UrlRequester.java new file mode 100644 index 0000000000..0c8feaf05e --- /dev/null +++ b/rs-client/src/main/java/UrlRequester.java @@ -0,0 +1,295 @@ +import java.io.DataInputStream; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.util.LinkedList; +import java.util.Queue; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("eo") +@Implements("UrlRequester") +public class UrlRequester implements Runnable { + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -883931753 + ) + @Export("__eo_u") + static int __eo_u; + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "Lla;" + ) + @Export("__eo_ak") + static Bounds __eo_ak; + @ObfuscatedName("m") + @Export("thread") + final Thread thread; + @ObfuscatedName("f") + @Export("isClosed") + volatile boolean isClosed; + @ObfuscatedName("q") + @Export("requests") + Queue requests; + + public UrlRequester() { + this.requests = new LinkedList(); + this.thread = new Thread(this); + this.thread.setPriority(1); + this.thread.start(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/net/URL;I)Ley;", + garbageValue = "1097505066" + ) + @Export("request") + public UrlRequest request(URL var1) { + UrlRequest var2 = new UrlRequest(var1); + synchronized(this) { + this.requests.add(var2); + this.notify(); + return var2; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(S)V", + garbageValue = "32583" + ) + @Export("close") + public void close() { + this.isClosed = true; + + try { + synchronized(this) { + this.notify(); + } + + this.thread.join(); + } catch (InterruptedException var4) { + ; + } + + } + + @Export("run") + @ObfuscatedName("run") + public void run() { + while(!this.isClosed) { + try { + UrlRequest var1; + synchronized(this) { + var1 = (UrlRequest)this.requests.poll(); + if(var1 == null) { + try { + this.wait(); + } catch (InterruptedException var13) { + ; + } + continue; + } + } + + DataInputStream var2 = null; + URLConnection var3 = null; + + try { + var3 = var1.url.openConnection(); + var3.setConnectTimeout(5000); + var3.setReadTimeout(5000); + var3.setUseCaches(false); + var3.setRequestProperty("Connection", "close"); + int var7 = var3.getContentLength(); + if(var7 >= 0) { + byte[] var5 = new byte[var7]; + var2 = new DataInputStream(var3.getInputStream()); + var2.readFully(var5); + var1.response0 = var5; + } + + var1.isDone0 = true; + } catch (IOException var14) { + var1.isDone0 = true; + } finally { + if(var2 != null) { + var2.close(); + } + + if(var3 != null && var3 instanceof HttpURLConnection) { + ((HttpURLConnection)var3).disconnect(); + } + + } + } catch (Exception var17) { + NpcDefinition.sendStackTrace((String)null, var17); + } + } + + } + + @ObfuscatedName("gi") + @ObfuscatedSignature( + signature = "(IIIIB)V", + garbageValue = "-9" + ) + static final void method3258(int var0, int var1, int var2, int var3) { + Client.overheadTextCount = 0; + boolean var4 = false; + int var5 = -1; + int var6 = -1; + int var7 = Players.Players_count; + int[] var8 = Players.Players_indices; + + int var9; + for(var9 = 0; var9 < var7 + Client.npcCount; ++var9) { + Object var10; + if(var9 < var7) { + var10 = Client.players[var8[var9]]; + if(var8[var9] == Client.combatTargetPlayerIndex) { + var4 = true; + var5 = var9; + continue; + } + + if(var10 == Canvas.localPlayer) { + var6 = var9; + continue; + } + } else { + var10 = Client.npcs[Client.npcIndices[var9 - var7]]; + } + + class39.drawActor2d((Actor)var10, var9, var0, var1, var2, var3); + } + + if(Client.renderSelf && var6 != -1) { + class39.drawActor2d(Canvas.localPlayer, var6, var0, var1, var2, var3); + } + + if(var4) { + class39.drawActor2d(Client.players[Client.combatTargetPlayerIndex], var5, var0, var1, var2, var3); + } + + for(var9 = 0; var9 < Client.overheadTextCount; ++var9) { + int var19 = Client.overheadTextXs[var9]; + int var11 = Client.overheadTextYs[var9]; + int var12 = Client.overheadTextXOffsets[var9]; + int var13 = Client.overheadTextAscents[var9]; + boolean var14 = true; + + while(var14) { + var14 = false; + + for(int var15 = 0; var15 < var9; ++var15) { + if(var11 + 2 > Client.overheadTextYs[var15] - Client.overheadTextAscents[var15] && var11 - var13 < Client.overheadTextYs[var15] + 2 && var19 - var12 < Client.overheadTextXOffsets[var15] + Client.overheadTextXs[var15] && var19 + var12 > Client.overheadTextXs[var15] - Client.overheadTextXOffsets[var15] && Client.overheadTextYs[var15] - Client.overheadTextAscents[var15] < var11) { + var11 = Client.overheadTextYs[var15] - Client.overheadTextAscents[var15]; + var14 = true; + } + } + } + + Client.viewportTempX = Client.overheadTextXs[var9]; + Client.viewportTempY = Client.overheadTextYs[var9] = var11; + String var20 = Client.overheadText[var9]; + if(Client.chatEffects == 0) { + int var16 = 16776960; + if(Client.overheadTextColors[var9] < 6) { + var16 = Client.__client_pv[Client.overheadTextColors[var9]]; + } + + if(Client.overheadTextColors[var9] == 6) { + var16 = Client.viewportDrawCount % 20 < 10?16711680:16776960; + } + + if(Client.overheadTextColors[var9] == 7) { + var16 = Client.viewportDrawCount % 20 < 10?255:'\uffff'; + } + + if(Client.overheadTextColors[var9] == 8) { + var16 = Client.viewportDrawCount % 20 < 10?'뀀':8454016; + } + + int var17; + if(Client.overheadTextColors[var9] == 9) { + var17 = 150 - Client.overheadTextCyclesRemaining[var9]; + if(var17 < 50) { + var16 = var17 * 1280 + 16711680; + } else if(var17 < 100) { + var16 = 16776960 - (var17 - 50) * 327680; + } else if(var17 < 150) { + var16 = (var17 - 100) * 5 + 65280; + } + } + + if(Client.overheadTextColors[var9] == 10) { + var17 = 150 - Client.overheadTextCyclesRemaining[var9]; + if(var17 < 50) { + var16 = var17 * 5 + 16711680; + } else if(var17 < 100) { + var16 = 16711935 - (var17 - 50) * 327680; + } else if(var17 < 150) { + var16 = (var17 - 100) * 327680 + 255 - (var17 - 100) * 5; + } + } + + if(Client.overheadTextColors[var9] == 11) { + var17 = 150 - Client.overheadTextCyclesRemaining[var9]; + if(var17 < 50) { + var16 = 16777215 - var17 * 327685; + } else if(var17 < 100) { + var16 = (var17 - 50) * 327685 + 65280; + } else if(var17 < 150) { + var16 = 16777215 - (var17 - 100) * 327680; + } + } + + if(Client.overheadTextEffects[var9] == 0) { + class2.fontBold12.drawCentered(var20, var0 + Client.viewportTempX, Client.viewportTempY + var1, var16, 0); + } + + if(Client.overheadTextEffects[var9] == 1) { + class2.fontBold12.drawCenteredWave(var20, var0 + Client.viewportTempX, Client.viewportTempY + var1, var16, 0, Client.viewportDrawCount); + } + + if(Client.overheadTextEffects[var9] == 2) { + class2.fontBold12.drawCenteredWave2(var20, var0 + Client.viewportTempX, Client.viewportTempY + var1, var16, 0, Client.viewportDrawCount); + } + + if(Client.overheadTextEffects[var9] == 3) { + class2.fontBold12.drawCenteredShake(var20, var0 + Client.viewportTempX, Client.viewportTempY + var1, var16, 0, Client.viewportDrawCount, 150 - Client.overheadTextCyclesRemaining[var9]); + } + + if(Client.overheadTextEffects[var9] == 4) { + var17 = (150 - Client.overheadTextCyclesRemaining[var9]) * (class2.fontBold12.stringWidth(var20) + 100) / 150; + Rasterizer2D.Rasterizer2D_expandClip(var0 + Client.viewportTempX - 50, var1, var0 + Client.viewportTempX + 50, var3 + var1); + class2.fontBold12.draw(var20, var0 + Client.viewportTempX + 50 - var17, Client.viewportTempY + var1, var16, 0); + Rasterizer2D.Rasterizer2D_setClip(var0, var1, var0 + var2, var3 + var1); + } + + if(Client.overheadTextEffects[var9] == 5) { + var17 = 150 - Client.overheadTextCyclesRemaining[var9]; + int var18 = 0; + if(var17 < 25) { + var18 = var17 - 25; + } else if(var17 > 125) { + var18 = var17 - 125; + } + + Rasterizer2D.Rasterizer2D_expandClip(var0, Client.viewportTempY + var1 - class2.fontBold12.ascent - 1, var0 + var2, Client.viewportTempY + var1 + 5); + class2.fontBold12.drawCentered(var20, var0 + Client.viewportTempX, var18 + Client.viewportTempY + var1, var16, 0); + Rasterizer2D.Rasterizer2D_setClip(var0, var1, var0 + var2, var3 + var1); + } + } else { + class2.fontBold12.drawCentered(var20, var0 + Client.viewportTempX, Client.viewportTempY + var1, 16776960, 0); + } + } + + } +} diff --git a/rs-client/src/main/java/User.java b/rs-client/src/main/java/User.java new file mode 100644 index 0000000000..4a1913ceb9 --- /dev/null +++ b/rs-client/src/main/java/User.java @@ -0,0 +1,82 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("js") +@Implements("User") +public class User implements Comparable { + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lkp;" + ) + @Export("username0") + Username username0; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lkp;" + ) + @Export("previousUsername") + Username previousUsername; + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(I)Lkp;", + garbageValue = "1922393088" + ) + @Export("username") + public Username username() { + return this.username0; + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(B)Ljava/lang/String;", + garbageValue = "-60" + ) + @Export("name") + public String name() { + return this.username0 == null?"":this.username0.getName(); + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "1204003359" + ) + @Export("previousName") + public String previousName() { + return this.previousUsername == null?"":this.previousUsername.getName(); + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(Lkp;Lkp;I)V", + garbageValue = "1156866388" + ) + @Export("set") + void set(Username var1, Username var2) { + if(var1 == null) { + throw new NullPointerException(); + } else { + this.username0 = var1; + this.previousUsername = var2; + } + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(Ljs;I)I", + garbageValue = "1627362569" + ) + @Export("compareTo0") + public int compareTo0(User var1) { + return this.username0.compareTo0(var1.username0); + } + + @Export("compareTo") + @ObfuscatedName("compareTo") + public int compareTo(Object var1) { + return this.compareTo0((User)var1); + } +} diff --git a/rs-client/src/main/java/UserComparator1.java b/rs-client/src/main/java/UserComparator1.java new file mode 100644 index 0000000000..f7cbf2af65 --- /dev/null +++ b/rs-client/src/main/java/UserComparator1.java @@ -0,0 +1,39 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ly") +@Implements("UserComparator1") +public class UserComparator1 implements Comparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator1(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljs;Ljs;B)I", + garbageValue = "68" + ) + @Export("__m_476") + int __m_476(User var1, User var2) { + return this.__m?var1.compareTo0(var2):var2.compareTo0(var1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_476((User)var1, (User)var2); + } + + @Export("__equals_478") + @ObfuscatedName("equals") + public boolean __equals_478(Object var1) { + return super.equals(var1); + } +} diff --git a/rs-client/src/main/java/UserComparator10.java b/rs-client/src/main/java/UserComparator10.java new file mode 100644 index 0000000000..332af67291 --- /dev/null +++ b/rs-client/src/main/java/UserComparator10.java @@ -0,0 +1,57 @@ +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("eg") +@Implements("UserComparator10") +public class UserComparator10 extends AbstractUserComparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator10(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;B)I", + garbageValue = "-15" + ) + @Export("__m_268") + int __m_268(Buddy var1, Buddy var2) { + return Client.worldId == var1.world0 && var2.world0 == Client.worldId?(this.__m?var1.int2 - var2.int2:var2.int2 - var1.int2):this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_268((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("hn") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "653874364" + ) + static final void method3352(boolean var0) { + class13.method163(); + ++Client.packetWriter.__d; + if(Client.packetWriter.__d >= 50 || var0) { + Client.packetWriter.__d = 0; + if(!Client.__client_fh && Client.packetWriter.getSocket() != null) { + PacketBufferNode var1 = Interpreter.method1915(ClientPacket.__gs_c, Client.packetWriter.isaacCipher); + Client.packetWriter.__q_167(var1); + + try { + Client.packetWriter.__f_166(); + } catch (IOException var3) { + Client.__client_fh = true; + } + } + + } + } +} diff --git a/rs-client/src/main/java/UserComparator2.java b/rs-client/src/main/java/UserComparator2.java new file mode 100644 index 0000000000..dd5f73e97d --- /dev/null +++ b/rs-client/src/main/java/UserComparator2.java @@ -0,0 +1,39 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("li") +@Implements("UserComparator2") +public class UserComparator2 implements Comparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator2(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljs;Ljs;I)I", + garbageValue = "-2069683911" + ) + @Export("__m_479") + int __m_479(User var1, User var2) { + return this.__m?var1.username().compareTo0(var2.username()):var2.username().compareTo0(var1.username()); + } + + @Export("__equals_481") + @ObfuscatedName("equals") + public boolean __equals_481(Object var1) { + return super.equals(var1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_479((User)var1, (User)var2); + } +} diff --git a/rs-client/src/main/java/UserComparator3.java b/rs-client/src/main/java/UserComparator3.java new file mode 100644 index 0000000000..a965353599 --- /dev/null +++ b/rs-client/src/main/java/UserComparator3.java @@ -0,0 +1,54 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fq") +@Implements("UserComparator3") +public class UserComparator3 extends AbstractUserComparator { + @ObfuscatedName("dk") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache6") + static IndexCache indexCache6; + @ObfuscatedName("fl") + @ObfuscatedSignature( + signature = "Lfm;" + ) + @Export("socketTask") + static Task socketTask; + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator3(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;I)I", + garbageValue = "-1157645406" + ) + @Export("__m_274") + int __m_274(Buddy var1, Buddy var2) { + return var2.world0 != var1.world0?(this.__m?var1.world0 - var2.world0:var2.world0 - var1.world0):this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_274((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "699084605" + ) + public static void method3379() { + SpotAnimationDefinition.SpotAnimationDefinition_cached.clear(); + SpotAnimationDefinition.SpotAnimationDefinition_cachedModels.clear(); + } +} diff --git a/rs-client/src/main/java/UserComparator4.java b/rs-client/src/main/java/UserComparator4.java new file mode 100644 index 0000000000..7384424adb --- /dev/null +++ b/rs-client/src/main/java/UserComparator4.java @@ -0,0 +1,95 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ev") +@Implements("UserComparator4") +public class UserComparator4 implements Comparator { + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -112939189 + ) + @Export("WorldMapElement_count") + public static int WorldMapElement_count; + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator4(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;I)I", + garbageValue = "950234237" + ) + @Export("__m_261") + int __m_261(Buddy var1, Buddy var2) { + return this.__m?var1.int2 - var2.int2:var2.int2 - var1.int2; + } + + @Export("__equals_263") + @ObfuscatedName("equals") + public boolean __equals_263(Object var1) { + return super.equals(var1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_261((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;I)Z", + garbageValue = "725116015" + ) + public static boolean method3336(CharSequence var0) { + return class214.method4144(var0, 10, true); + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-2050984400" + ) + static int method3335(int var0, Script var1, boolean var2) { + if(var0 == 5306) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = SpotAnimationDefinition.method4822(); + return 1; + } else { + int var3; + if(var0 == 5307) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var3 == 1 || var3 == 2) { + GroundItem.method2095(var3); + } + + return 1; + } else if(var0 == 5308) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ReflectionCheck.clientPreferences.windowMode; + return 1; + } else if(var0 != 5309) { + if(var0 == 5310) { + --class179.Interpreter_intStackSize; + return 1; + } else { + return 2; + } + } else { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var3 == 1 || var3 == 2) { + ReflectionCheck.clientPreferences.windowMode = var3; + WorldMapSection0.method247(); + } + + return 1; + } + } + } +} diff --git a/rs-client/src/main/java/UserComparator5.java b/rs-client/src/main/java/UserComparator5.java new file mode 100644 index 0000000000..5a90abe58e --- /dev/null +++ b/rs-client/src/main/java/UserComparator5.java @@ -0,0 +1,66 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ep") +@Implements("UserComparator5") +public class UserComparator5 extends AbstractUserComparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator5(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;B)I", + garbageValue = "-22" + ) + @Export("__m_272") + int __m_272(Buddy var1, Buddy var2) { + if(var1.world0 != 0) { + if(var2.world0 == 0) { + return this.__m?-1:1; + } + } else if(var2.world0 != 0) { + return this.__m?1:-1; + } + + return this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_272((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("jk") + @ObfuscatedSignature( + signature = "(IIIILln;Lhp;I)V", + garbageValue = "1263559944" + ) + @Export("worldToMinimap") + static final void worldToMinimap(int var0, int var1, int var2, int var3, Sprite var4, SpriteMask var5) { + int var6 = var3 * var3 + var2 * var2; + if(var6 > 4225 && var6 < 90000) { + int var7 = Client.minimapOrientation & 2047; + int var8 = Rasterizer3D.Rasterizer3D_sine[var7]; + int var9 = Rasterizer3D.Rasterizer3D_cosine[var7]; + int var10 = var3 * var8 + var9 * var2 >> 16; + int var11 = var3 * var9 - var8 * var2 >> 16; + double var12 = Math.atan2((double)var10, (double)var11); + int var14 = var5.width / 2 - 25; + int var15 = (int)(Math.sin(var12) * (double)var14); + int var16 = (int)(Math.cos(var12) * (double)var14); + byte var17 = 20; + FaceNormal.__el_gm.__ah_514(var15 + (var0 + var5.width / 2 - var17 / 2), var5.height / 2 + var1 - var17 / 2 - var16 - 10, var17, var17, 15, 15, var12, 256); + } else { + NetFileRequest.method4554(var0, var1, var2, var3, var4, var5); + } + + } +} diff --git a/rs-client/src/main/java/UserComparator6.java b/rs-client/src/main/java/UserComparator6.java new file mode 100644 index 0000000000..7f362451fc --- /dev/null +++ b/rs-client/src/main/java/UserComparator6.java @@ -0,0 +1,75 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fg") +@Implements("UserComparator6") +public class UserComparator6 extends AbstractUserComparator { + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lfa;" + ) + @Export("clock") + static Clock clock; + @ObfuscatedName("jh") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("__fg_jh") + static Widget __fg_jh; + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator6(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;I)I", + garbageValue = "750521759" + ) + @Export("__m_276") + int __m_276(Buddy var1, Buddy var2) { + return var1.world0 != 0 && var2.world0 != 0?(this.__m?var1.username().compareTo0(var2.username()):var2.username().compareTo0(var1.username())):this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_276((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "-1968376475" + ) + static final void method3390(int var0, int var1, int var2, int var3) { + for(int var4 = var1; var4 <= var3 + var1; ++var4) { + for(int var5 = var0; var5 <= var0 + var2; ++var5) { + if(var5 >= 0 && var5 < 104 && var4 >= 0 && var4 < 104) { + Tiles.__bq_l[0][var5][var4] = 127; + if(var0 == var5 && var5 > 0) { + Tiles.Tiles_heights[0][var5][var4] = Tiles.Tiles_heights[0][var5 - 1][var4]; + } + + if(var5 == var0 + var2 && var5 < 103) { + Tiles.Tiles_heights[0][var5][var4] = Tiles.Tiles_heights[0][var5 + 1][var4]; + } + + if(var4 == var1 && var4 > 0) { + Tiles.Tiles_heights[0][var5][var4] = Tiles.Tiles_heights[0][var5][var4 - 1]; + } + + if(var3 + var1 == var4 && var4 < 103) { + Tiles.Tiles_heights[0][var5][var4] = Tiles.Tiles_heights[0][var5][var4 + 1]; + } + } + } + } + + } +} diff --git a/rs-client/src/main/java/UserComparator7.java b/rs-client/src/main/java/UserComparator7.java new file mode 100644 index 0000000000..fb9a9a7e5f --- /dev/null +++ b/rs-client/src/main/java/UserComparator7.java @@ -0,0 +1,167 @@ +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; +import net.runelite.rs.Reflection; + +@ObfuscatedName("ez") +@Implements("UserComparator7") +public class UserComparator7 extends AbstractUserComparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator7(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;I)I", + garbageValue = "-9252550" + ) + @Export("__m_270") + int __m_270(Buddy var1, Buddy var2) { + return var1.world0 != 0 && var2.world0 != 0?(this.__m?var1.int2 - var2.int2:var2.int2 - var1.int2):this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_270((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-88211227" + ) + public static void method3360(Buffer var0, int var1) { + ReflectionCheck var2 = new ReflectionCheck(); + var2.size = var0.readUnsignedByte(); + var2.id = var0.readInt(); + var2.operations = new int[var2.size]; + var2.creationErrors = new int[var2.size]; + var2.fields = new Field[var2.size]; + var2.intReplaceValues = new int[var2.size]; + var2.methods = new Method[var2.size]; + var2.arguments = new byte[var2.size][][]; + + for(int var3 = 0; var3 < var2.size; ++var3) { + try { + int var4 = var0.readUnsignedByte(); + String var5; + String var6; + int var7; + if(var4 != 0 && var4 != 1 && var4 != 2) { + if(var4 == 3 || var4 == 4) { + var5 = var0.readStringCp1252NullTerminated(); + var6 = var0.readStringCp1252NullTerminated(); + var7 = var0.readUnsignedByte(); + String[] var8 = new String[var7]; + + for(int var9 = 0; var9 < var7; ++var9) { + var8[var9] = var0.readStringCp1252NullTerminated(); + } + + String var20 = var0.readStringCp1252NullTerminated(); + byte[][] var10 = new byte[var7][]; + int var12; + if(var4 == 3) { + for(int var11 = 0; var11 < var7; ++var11) { + var12 = var0.readInt(); + var10[var11] = new byte[var12]; + var0.__al_305(var10[var11], 0, var12); + } + } + + var2.operations[var3] = var4; + Class[] var21 = new Class[var7]; + + for(var12 = 0; var12 < var7; ++var12) { + var21[var12] = VarcInt.loadClassFromDescriptor(var8[var12]); + } + + Class var22 = VarcInt.loadClassFromDescriptor(var20); + if(VarcInt.loadClassFromDescriptor(var5).getClassLoader() == null) { + throw new SecurityException(); + } + + Method[] var13 = VarcInt.loadClassFromDescriptor(var5).getDeclaredMethods(); + Method[] var14 = var13; + + for(int var15 = 0; var15 < var14.length; ++var15) { + Method var16 = var14[var15]; + if(Reflection.getMethodName(var16).equals(var6)) { + Class[] var17 = Reflection.getParameterTypes(var16); + if(var21.length == var17.length) { + boolean var18 = true; + + for(int var19 = 0; var19 < var21.length; ++var19) { + if(var21[var19] != var17[var19]) { + var18 = false; + break; + } + } + + if(var18 && var22 == var16.getReturnType()) { + var2.methods[var3] = var16; + } + } + } + } + + var2.arguments[var3] = var10; + } + } else { + var5 = var0.readStringCp1252NullTerminated(); + var6 = var0.readStringCp1252NullTerminated(); + var7 = 0; + if(var4 == 1) { + var7 = var0.readInt(); + } + + var2.operations[var3] = var4; + var2.intReplaceValues[var3] = var7; + if(VarcInt.loadClassFromDescriptor(var5).getClassLoader() == null) { + throw new SecurityException(); + } + + var2.fields[var3] = Reflection.findField(VarcInt.loadClassFromDescriptor(var5), var6); + } + } catch (ClassNotFoundException var24) { + var2.creationErrors[var3] = -1; + } catch (SecurityException var25) { + var2.creationErrors[var3] = -2; + } catch (NullPointerException var26) { + var2.creationErrors[var3] = -3; + } catch (Exception var27) { + var2.creationErrors[var3] = -4; + } catch (Throwable var28) { + var2.creationErrors[var3] = -5; + } + } + + class322.reflectionChecks.addFirst(var2); + } + + @ObfuscatedName("ho") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "2084569794" + ) + static final boolean method3364(int var0) { + if(var0 < 0) { + return false; + } else { + int var1 = Client.menuOpcodes[var0]; + if(var1 >= 2000) { + var1 -= 2000; + } + + return var1 == 1007; + } + } +} diff --git a/rs-client/src/main/java/UserComparator8.java b/rs-client/src/main/java/UserComparator8.java new file mode 100644 index 0000000000..439854532e --- /dev/null +++ b/rs-client/src/main/java/UserComparator8.java @@ -0,0 +1,50 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("es") +@Implements("UserComparator8") +public class UserComparator8 extends AbstractUserComparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator8(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;B)I", + garbageValue = "0" + ) + @Export("__m_266") + int __m_266(Buddy var1, Buddy var2) { + if(Client.worldId == var1.world0) { + if(var2.world0 != Client.worldId) { + return this.__m?-1:1; + } + } else if(var2.world0 == Client.worldId) { + return this.__m?1:-1; + } + + return this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_266((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("ke") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "1" + ) + static final void method3349() { + Client.__client_nh = Client.cycleCntr; + VertexNormal.__dq_pe = true; + } +} diff --git a/rs-client/src/main/java/UserComparator9.java b/rs-client/src/main/java/UserComparator9.java new file mode 100644 index 0000000000..561e9e45aa --- /dev/null +++ b/rs-client/src/main/java/UserComparator9.java @@ -0,0 +1,93 @@ +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ea") +@Implements("UserComparator9") +public class UserComparator9 extends AbstractUserComparator { + @ObfuscatedName("m") + @Export("__m") + final boolean __m; + + public UserComparator9(boolean var1) { + this.__m = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;I)I", + garbageValue = "1966780392" + ) + @Export("__m_264") + int __m_264(Buddy var1, Buddy var2) { + return Client.worldId == var1.world0 && var2.world0 == Client.worldId?(this.__m?var1.username().compareTo0(var2.username()):var2.username().compareTo0(var1.username())):this.__x_461(var1, var2); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_264((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(ZB)V", + garbageValue = "-1" + ) + public static void method3343(boolean var0) { + if(NetCache.NetCache_socket != null) { + try { + Buffer var1 = new Buffer(4); + var1.writeByte(var0?2:3); + var1.writeMedium(0); + NetCache.NetCache_socket.write(var1.array, 0, 4); + } catch (IOException var4) { + try { + NetCache.NetCache_socket.close(); + } catch (Exception var3) { + ; + } + + ++NetCache.NetCache_ioExceptions; + NetCache.NetCache_socket = null; + } + + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)[Lln;", + garbageValue = "-1724028611" + ) + public static Sprite[] method3344() { + Sprite[] var0 = new Sprite[class328.indexedSpriteCount]; + + for(int var1 = 0; var1 < class328.indexedSpriteCount; ++var1) { + Sprite var2 = var0[var1] = new Sprite(); + var2.width = class328.indexedSpriteWidth; + var2.height = class328.indexedSpriteHeight; + var2.yOffset = class328.indexedSpriteOffsetXs[var1]; + var2.xOffset = class328.indexedSpriteOffsetYs[var1]; + var2.subWidth = VarbitDefinition.indexedSpriteWidths[var1]; + var2.subHeight = SecureRandomCallable.indexedSpriteHeights[var1]; + int var3 = var2.subHeight * var2.subWidth; + byte[] var4 = class328.spritePixels[var1]; + var2.pixels = new int[var3]; + + for(int var5 = 0; var5 < var3; ++var5) { + var2.pixels[var5] = class328.indexedSpritePalette[var4[var5] & 255]; + } + } + + class328.indexedSpriteOffsetXs = null; + class328.indexedSpriteOffsetYs = null; + VarbitDefinition.indexedSpriteWidths = null; + SecureRandomCallable.indexedSpriteHeights = null; + class328.indexedSpritePalette = null; + class328.spritePixels = null; + return var0; + } +} diff --git a/rs-client/src/main/java/UserList.java b/rs-client/src/main/java/UserList.java new file mode 100644 index 0000000000..85c03c5fcf --- /dev/null +++ b/rs-client/src/main/java/UserList.java @@ -0,0 +1,333 @@ +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("km") +@Implements("UserList") +public abstract class UserList { + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -2119868987 + ) + @Export("capacity") + final int capacity; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -280101247 + ) + @Export("size0") + int size0; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "[Ljs;" + ) + @Export("array") + User[] array; + @ObfuscatedName("g") + @Export("usernamesMap") + HashMap usernamesMap; + @ObfuscatedName("l") + @Export("previousUsernamesMap") + HashMap previousUsernamesMap; + @ObfuscatedName("e") + @Export("comparator") + Comparator comparator; + + UserList(int var1) { + this.size0 = 0; + this.comparator = null; + this.capacity = var1; + this.array = this.newTypedArray(var1); + this.usernamesMap = new HashMap(var1 / 8); + this.previousUsernamesMap = new HashMap(var1 / 8); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljs;", + garbageValue = "-2063112195" + ) + @Export("newInstance") + abstract User newInstance(); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)[Ljs;", + garbageValue = "861814350" + ) + @Export("newTypedArray") + abstract User[] newTypedArray(int var1); + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1821856453" + ) + @Export("clear") + public void clear() { + this.size0 = 0; + Arrays.fill(this.array, (Object)null); + this.usernamesMap.clear(); + this.previousUsernamesMap.clear(); + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1458980777" + ) + @Export("size") + public int size() { + return this.size0; + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "482333248" + ) + @Export("isFull") + public boolean isFull() { + return this.capacity == this.size0; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(Lkp;I)Z", + garbageValue = "933434965" + ) + @Export("contains") + public boolean contains(Username var1) { + return var1.hasCleanName() && (this.usernamesMap.containsKey(var1) || this.previousUsernamesMap.containsKey(var1)); + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(Lkp;I)Ljs;", + garbageValue = "-291023874" + ) + @Export("getByUsername") + public User getByUsername(Username var1) { + User var2 = this.getByCurrentUsername(var1); + return var2 != null?var2:this.getByPreviousUsername(var1); + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(Lkp;I)Ljs;", + garbageValue = "-1364698032" + ) + @Export("getByCurrentUsername") + User getByCurrentUsername(Username var1) { + return !var1.hasCleanName()?null:(User)this.usernamesMap.get(var1); + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(Lkp;I)Ljs;", + garbageValue = "-1976876334" + ) + @Export("getByPreviousUsername") + User getByPreviousUsername(Username var1) { + return !var1.hasCleanName()?null:(User)this.previousUsernamesMap.get(var1); + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(Lkp;S)Z", + garbageValue = "7857" + ) + @Export("removeByUsername") + public final boolean removeByUsername(Username var1) { + User var2 = this.getByCurrentUsername(var1); + if(var2 == null) { + return false; + } else { + this.remove(var2); + return true; + } + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(Ljs;I)V", + garbageValue = "-1991960360" + ) + @Export("remove") + final void remove(User var1) { + int var2 = this.indexOf(var1); + if(var2 != -1) { + this.arrayRemove(var2); + this.mapRemove(var1); + } + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(Lkp;I)Ljs;", + garbageValue = "-1137431921" + ) + @Export("addLastNoPreviousUsername") + User addLastNoPreviousUsername(Username var1) { + return this.addLast(var1, (Username)null); + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(Lkp;Lkp;I)Ljs;", + garbageValue = "1445676158" + ) + @Export("addLast") + User addLast(Username var1, Username var2) { + if(this.getByCurrentUsername(var1) != null) { + throw new IllegalStateException(); + } else { + User var3 = this.newInstance(); + var3.set(var1, var2); + this.arrayAddLast(var3); + this.mapPut(var3); + return var3; + } + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(II)Ljs;", + garbageValue = "-1676228472" + ) + @Export("get") + public final User get(int var1) { + if(var1 >= 0 && var1 < this.size0) { + return this.array[var1]; + } else { + throw new ArrayIndexOutOfBoundsException(var1); + } + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-337545643" + ) + @Export("sort") + public final void sort() { + if(this.comparator == null) { + Arrays.sort(this.array, 0, this.size0); + } else { + Arrays.sort(this.array, 0, this.size0, this.comparator); + } + + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(Ljs;Lkp;Lkp;B)V", + garbageValue = "35" + ) + @Export("changeName") + final void changeName(User var1, Username var2, Username var3) { + this.mapRemove(var1); + var1.set(var2, var3); + this.mapPut(var1); + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(Ljs;I)I", + garbageValue = "-1908653684" + ) + @Export("indexOf") + final int indexOf(User var1) { + for(int var2 = 0; var2 < this.size0; ++var2) { + if(this.array[var2] == var1) { + return var2; + } + } + + return -1; + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(Ljs;S)V", + garbageValue = "-20791" + ) + @Export("mapRemove") + final void mapRemove(User var1) { + if(var1.previousUsername != null) { + this.previousUsernamesMap.remove(var1.previousUsername); + } + + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(Ljs;I)V", + garbageValue = "1398315954" + ) + @Export("arrayAddLast") + final void arrayAddLast(User var1) { + this.array[++this.size0 - 1] = var1; + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(Ljs;B)V", + garbageValue = "103" + ) + @Export("mapPut") + final void mapPut(User var1) { + this.usernamesMap.put(var1.username0, var1); + if(var1.previousUsername != null) { + User var2 = (User)this.previousUsernamesMap.put(var1.previousUsername, var1); + if(var2 != null && var2 != var1) { + var2.previousUsername = null; + } + } + + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-616972929" + ) + @Export("arrayRemove") + final void arrayRemove(int var1) { + --this.size0; + if(var1 < this.size0) { + System.arraycopy(this.array, var1 + 1, this.array, var1, this.size0 - var1); + } + + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1875022477" + ) + @Export("removeComparator") + public final void removeComparator() { + this.comparator = null; + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(Ljava/util/Comparator;B)V", + garbageValue = "-128" + ) + @Export("addComparator") + public final void addComparator(Comparator var1) { + if(this.comparator == null) { + this.comparator = var1; + } else if(this.comparator instanceof AbstractUserComparator) { + ((AbstractUserComparator)this.comparator).__e_460(var1); + } + + } +} diff --git a/rs-client/src/main/java/Username.java b/rs-client/src/main/java/Username.java new file mode 100644 index 0000000000..190036bd6c --- /dev/null +++ b/rs-client/src/main/java/Username.java @@ -0,0 +1,92 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kp") +@Implements("Username") +public class Username implements Comparable { + @ObfuscatedName("q") + @Export("Interpreter_intLocals") + static int[] Interpreter_intLocals; + @ObfuscatedName("m") + @Export("name0") + String name0; + @ObfuscatedName("f") + @Export("cleanName") + String cleanName; + + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Llx;)V" + ) + public Username(String var1, LoginType var2) { + this.name0 = var1; + this.cleanName = Message.method1229(var1, var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)Ljava/lang/String;", + garbageValue = "1065850055" + ) + @Export("getName") + public String getName() { + return this.name0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1468109942" + ) + @Export("hasCleanName") + public boolean hasCleanName() { + return this.cleanName != null; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lkp;B)I", + garbageValue = "8" + ) + @Export("compareTo0") + public int compareTo0(Username var1) { + return this.cleanName == null?(var1.cleanName == null?0:1):(var1.cleanName == null?-1:this.cleanName.compareTo(var1.cleanName)); + } + + @Export("__equals_466") + @ObfuscatedName("equals") + public boolean __equals_466(Object var1) { + if(var1 instanceof Username) { + Username var2 = (Username)var1; + if (this.cleanName == null) + { + return var2.cleanName == null; + } + else + { + return var2.cleanName != null && (this.__hashCode_467() == var2.__hashCode_467() && this.cleanName.equals(var2.cleanName)); + } + } else { + return false; + } + } + + @Export("__hashCode_467") + @ObfuscatedName("hashCode") + public int __hashCode_467() { + return this.cleanName == null?0:this.cleanName.hashCode(); + } + + @Export("__toString_468") + @ObfuscatedName("toString") + public String __toString_468() { + return this.getName(); + } + + @Export("compareTo") + @ObfuscatedName("compareTo") + public int compareTo(Object var1) { + return this.compareTo0((Username)var1); + } +} diff --git a/rs-client/src/main/java/Usernamed.java b/rs-client/src/main/java/Usernamed.java new file mode 100644 index 0000000000..b20a64d2c4 --- /dev/null +++ b/rs-client/src/main/java/Usernamed.java @@ -0,0 +1,16 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ky") +@Implements("Usernamed") +public interface Usernamed { + @ObfuscatedName("kr") + @ObfuscatedSignature( + signature = "(B)Lkp;", + garbageValue = "-87" + ) + @Export("username") + Username username(); +} diff --git a/rs-client/src/main/java/VarbitDefinition.java b/rs-client/src/main/java/VarbitDefinition.java new file mode 100644 index 0000000000..3734f09ca3 --- /dev/null +++ b/rs-client/src/main/java/VarbitDefinition.java @@ -0,0 +1,97 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ia") +@Implements("VarbitDefinition") +public class VarbitDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("VarbitDefinition_indexCache") + static AbstractIndexCache VarbitDefinition_indexCache; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("VarbitDefinition_cached") + public static EvictingDualNodeHashTable VarbitDefinition_cached; + @ObfuscatedName("u") + @Export("indexedSpriteWidths") + static int[] indexedSpriteWidths; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1552575189 + ) + @Export("varp") + public int varp; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -870948181 + ) + @Export("lowBit") + public int lowBit; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1710935305 + ) + @Export("highBit") + public int highBit; + + static { + VarbitDefinition_cached = new EvictingDualNodeHashTable(64); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-1888757206" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;IB)V", + garbageValue = "-76" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.varp = var1.__ag_302(); + this.lowBit = var1.readUnsignedByte(); + this.highBit = var1.readUnsignedByte(); + } + + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "1635045878" + ) + static final boolean method4910(int var0, int var1) { + ObjectDefinition var2 = class50.getObjectDefinition(var0); + if(var1 == 11) { + var1 = 10; + } + + if(var1 >= 5 && var1 <= 8) { + var1 = 4; + } + + return var2.__u_421(var1); + } +} diff --git a/rs-client/src/main/java/VarcInt.java b/rs-client/src/main/java/VarcInt.java new file mode 100644 index 0000000000..aa107f00f7 --- /dev/null +++ b/rs-client/src/main/java/VarcInt.java @@ -0,0 +1,82 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; +import net.runelite.rs.Reflection; + +@ObfuscatedName("iw") +@Implements("VarcInt") +public class VarcInt extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__iw_m") + static AbstractIndexCache __iw_m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__iw_f") + static EvictingDualNodeHashTable __iw_f; + @ObfuscatedName("q") + @Export("persist") + public boolean persist; + + static { + __iw_f = new EvictingDualNodeHashTable(64); + } + + VarcInt() { + this.persist = false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1023420886" + ) + @Export("__q_411") + void __q_411(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.__w_412(var1, var2); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-202810982" + ) + @Export("__w_412") + void __w_412(Buffer var1, int var2) { + if(var2 == 2) { + this.persist = true; + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Ljava/lang/Class;", + garbageValue = "1680587190" + ) + @Export("loadClassFromDescriptor") + static Class loadClassFromDescriptor(String var0) throws ClassNotFoundException { + return var0.equals("B")?Byte.TYPE:(var0.equals("I")?Integer.TYPE:(var0.equals("S")?Short.TYPE:(var0.equals("J")?Long.TYPE:(var0.equals("Z")?Boolean.TYPE:(var0.equals("F")?Float.TYPE:(var0.equals("D")?Double.TYPE:(var0.equals("C")?Character.TYPE:(var0.equals("void")?Void.TYPE:Reflection.findClass(var0))))))))); + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(CI)Z", + garbageValue = "1367119425" + ) + public static boolean method4807(char var0) { + return var0 >= '0' && var0 <= '9' || var0 >= 'A' && var0 <= 'Z' || var0 >= 'a' && var0 <= 'z'; + } +} diff --git a/rs-client/src/main/java/Varcs.java b/rs-client/src/main/java/Varcs.java new file mode 100644 index 0000000000..c9a3e7e62e --- /dev/null +++ b/rs-client/src/main/java/Varcs.java @@ -0,0 +1,433 @@ +import java.io.EOFException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ch") +@Implements("Varcs") +public class Varcs { + @ObfuscatedName("q") + @Export("intsPersistence") + boolean[] intsPersistence; + @ObfuscatedName("w") + @Export("map") + Map map; + @ObfuscatedName("o") + @Export("strings") + String[] strings; + @ObfuscatedName("u") + @Export("unwrittenChanges") + boolean unwrittenChanges; + @ObfuscatedName("g") + @ObfuscatedGetter( + longValue = 4836824701467349417L + ) + @Export("lastWriteTimeMs") + long lastWriteTimeMs; + + Varcs() { + this.unwrittenChanges = false; + int var1 = ObjectSound.indexCache2.__s_396(19); + this.map = new HashMap(); + this.intsPersistence = new boolean[var1]; + + int var2; + for(var2 = 0; var2 < var1; ++var2) { + VarcInt var3 = AbstractByteArrayCopier.method4021(var2); + this.intsPersistence[var2] = var3.persist; + } + + var2 = 0; + if(ObjectSound.indexCache2.__df_408(15)) { + var2 = ObjectSound.indexCache2.__s_396(15); + } + + this.strings = new String[var2]; + this.read(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "920518911" + ) + @Export("setInt") + void setInt(int var1, int var2) { + this.map.put(Integer.valueOf(var1), Integer.valueOf(var2)); + if(this.intsPersistence[var1]) { + this.unwrittenChanges = true; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "6" + ) + @Export("getInt") + int getInt(int var1) { + Object var2 = this.map.get(Integer.valueOf(var1)); + return var2 instanceof Integer?((Integer)var2).intValue():-1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)V", + garbageValue = "12847051" + ) + @Export("setString") + void setString(int var1, String var2) { + this.map.put(Integer.valueOf(var1), var2); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)Ljava/lang/String;", + garbageValue = "897961099" + ) + @Export("getString") + String getString(int var1) { + Object var2 = this.map.get(Integer.valueOf(var1)); + return var2 instanceof String?(String)var2:""; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;B)V", + garbageValue = "15" + ) + @Export("setStringOld") + void setStringOld(int var1, String var2) { + this.strings[var1] = var2; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IB)Ljava/lang/String;", + garbageValue = "0" + ) + @Export("getStringOld") + String getStringOld(int var1) { + return this.strings[var1]; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1668901140" + ) + @Export("clearTransient") + void clearTransient() { + int var1; + for(var1 = 0; var1 < this.intsPersistence.length; ++var1) { + if(!this.intsPersistence[var1]) { + this.map.remove(Integer.valueOf(var1)); + } + } + + for(var1 = 0; var1 < this.strings.length; ++var1) { + this.strings[var1] = null; + } + + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(ZB)Ldk;", + garbageValue = "8" + ) + @Export("getPreferencesFile") + AccessFile getPreferencesFile(boolean var1) { + return LoginPacket.getPreferencesFile("2", class22.studioGame.name, var1); + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "370223063" + ) + @Export("write") + void write() { + AccessFile var1 = this.getPreferencesFile(true); + + try { + int var2 = 3; + int var3 = 0; + Iterator var4 = this.map.entrySet().iterator(); + + while(var4.hasNext()) { + Entry var5 = (Entry)var4.next(); + int var6 = ((Integer)var5.getKey()).intValue(); + if(this.intsPersistence[var6]) { + Object var7 = var5.getValue(); + var2 += 3; + if(var7 instanceof Integer) { + var2 += 4; + } else if(var7 instanceof String) { + var2 += WorldMapRegion.method550((String)var7); + } + + ++var3; + } + } + + Buffer var32 = new Buffer(var2); + var32.writeByte(2); + var32.writeShort(var3); + Iterator var33 = this.map.entrySet().iterator(); + + label185: + while(true) { + Entry var20; + int var21; + do { + if(!var33.hasNext()) { + var1.write(var32.array, 0, var32.index); + break label185; + } + + var20 = (Entry)var33.next(); + var21 = ((Integer)var20.getKey()).intValue(); + } while(!this.intsPersistence[var21]); + + var32.writeShort(var21); + Object var8 = var20.getValue(); + Class var10 = var8.getClass(); + class3[] var11 = class3.method34(); + int var12 = 0; + + class3 var9; + while(true) { + if(var12 >= var11.length) { + var9 = null; + break; + } + + class3 var13 = var11[var12]; + if(var10 == var13.field18) { + var9 = var13; + break; + } + + ++var12; + } + + var32.writeByte(var9.field17); + Class var34 = var8.getClass(); + class3[] var15 = class3.method34(); + int var16 = 0; + + class3 var14; + while(true) { + if(var16 >= var15.length) { + var14 = null; + break; + } + + class3 var17 = var15[var16]; + if(var34 == var17.field18) { + var14 = var17; + break; + } + + ++var16; + } + + if(var14 == null) { + throw new IllegalArgumentException(); + } + + class0 var22 = var14.field19; + var22.vmethod44(var8, var32); + } + } catch (Exception var30) { + ; + } finally { + try { + var1.close(); + } catch (Exception var29) { + ; + } + + } + + this.unwrittenChanges = false; + this.lastWriteTimeMs = class203.currentTimeMs(); + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1824591047" + ) + @Export("read") + void read() { + AccessFile var1 = this.getPreferencesFile(false); + + label215: { + try { + byte[] var2 = new byte[(int)var1.length()]; + + int var4; + for(int var3 = 0; var3 < var2.length; var3 += var4) { + var4 = var1.read(var2, var3, var2.length - var3); + if(var4 == -1) { + throw new EOFException(); + } + } + + Buffer var14 = new Buffer(var2); + if(var14.array.length - var14.index >= 1) { + int var15 = var14.readUnsignedByte(); + if(var15 < 0 || var15 > 2) { + return; + } + + int var7; + int var8; + int var9; + int var16; + if(var15 >= 2) { + var16 = var14.__ag_302(); + var7 = 0; + + while(true) { + if(var7 >= var16) { + break label215; + } + + var8 = var14.__ag_302(); + var9 = var14.readUnsignedByte(); + class3 var10 = (class3)ScriptFrame.findEnumerated(class3.method34(), var9); + Object var11 = var10.method31(var14); + if(this.intsPersistence[var8]) { + this.map.put(Integer.valueOf(var8), var11); + } + + ++var7; + } + } else { + var16 = var14.__ag_302(); + + for(var7 = 0; var7 < var16; ++var7) { + var8 = var14.__ag_302(); + var9 = var14.readInt(); + if(this.intsPersistence[var8]) { + this.map.put(Integer.valueOf(var8), Integer.valueOf(var9)); + } + } + + var7 = var14.__ag_302(); + var8 = 0; + + while(true) { + if(var8 >= var7) { + break label215; + } + + var14.__ag_302(); + var14.readStringCp1252NullTerminated(); + ++var8; + } + } + } + } catch (Exception var25) { + break label215; + } finally { + try { + var1.close(); + } catch (Exception var24) { + ; + } + + } + + return; + } + + this.unwrittenChanges = false; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "26563322" + ) + @Export("tryWrite") + void tryWrite() { + if(this.unwrittenChanges && this.lastWriteTimeMs < class203.currentTimeMs() - 60000L) { + this.write(); + } + + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1171297883" + ) + @Export("hasUnwrittenChanges") + boolean hasUnwrittenChanges() { + return this.unwrittenChanges; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;I)V", + garbageValue = "321265868" + ) + public static void method2160(AbstractIndexCache var0) { + OverlayDefinition.__jf_m = var0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "([BIIII[Lfy;I)V", + garbageValue = "1119202993" + ) + static final void method2166(byte[] var0, int var1, int var2, int var3, int var4, CollisionMap[] var5) { + int var7; + int var8; + for(int var6 = 0; var6 < 4; ++var6) { + for(var7 = 0; var7 < 64; ++var7) { + for(var8 = 0; var8 < 64; ++var8) { + if(var7 + var1 > 0 && var7 + var1 < 103 && var8 + var2 > 0 && var8 + var2 < 103) { + var5[var6].flags[var7 + var1][var8 + var2] &= -16777217; + } + } + } + } + + Buffer var10 = new Buffer(var0); + + for(var7 = 0; var7 < 4; ++var7) { + for(var8 = 0; var8 < 64; ++var8) { + for(int var9 = 0; var9 < 64; ++var9) { + TotalQuantityComparator.loadTerrain(var10, var7, var8 + var1, var9 + var2, var3, var4, 0); + } + } + } + + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Lho;IIII)V", + garbageValue = "1592367053" + ) + static final void method2168(Widget var0, int var1, int var2, int var3) { + if(var0.__cc == null) { + throw new RuntimeException(); + } else { + var0.__cc[var1] = var2; + var0.__ci[var1] = var3; + } + } +} diff --git a/rs-client/src/main/java/VarpDefinition.java b/rs-client/src/main/java/VarpDefinition.java new file mode 100644 index 0000000000..f313cd4d68 --- /dev/null +++ b/rs-client/src/main/java/VarpDefinition.java @@ -0,0 +1,72 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ix") +@Implements("VarpDefinition") +public class VarpDefinition extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__ix_m") + public static AbstractIndexCache __ix_m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 510774535 + ) + @Export("__ix_f") + public static int __ix_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("VarpDefinition_cached") + public static EvictingDualNodeHashTable VarpDefinition_cached; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1792568421 + ) + @Export("type") + public int type; + + static { + VarpDefinition_cached = new EvictingDualNodeHashTable(64); + } + + VarpDefinition() { + this.type = 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "-41" + ) + @Export("read") + void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-1859920822" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 5) { + this.type = var1.__ag_302(); + } + + } +} diff --git a/rs-client/src/main/java/Varps.java b/rs-client/src/main/java/Varps.java new file mode 100644 index 0000000000..44e172eeb8 --- /dev/null +++ b/rs-client/src/main/java/Varps.java @@ -0,0 +1,61 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hv") +@Implements("Varps") +public class Varps { + @ObfuscatedName("m") + @Export("Varps_masks") + static int[] Varps_masks; + @ObfuscatedName("f") + @Export("Varps_temp") + public static int[] Varps_temp; + @ObfuscatedName("q") + @Export("Varps_main") + public static int[] Varps_main; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 120772859 + ) + @Export("__hv_h") + static int __hv_h; + + static { + Varps_masks = new int[32]; + int var0 = 2; + + for(int var1 = 0; var1 < 32; ++var1) { + Varps_masks[var1] = var0 - 1; + var0 += var0; + } + + Varps_temp = new int[4000]; + Varps_main = new int[4000]; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;I)V", + garbageValue = "2111080001" + ) + public static void method4393(AbstractIndexCache var0) { + UnderlayDefinition.UnderlayDefinition_indexCache = var0; + } + + @ObfuscatedName("ki") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-1714608824" + ) + static void method4400(Buffer var0) { + if(Client.__client_ev != null) { + var0.__s_297(Client.__client_ev, 0, Client.__client_ev.length); + } else { + byte[] var1 = AttackOption.method2032(); + var0.__s_297(var1, 0, var1.length); + } + } +} diff --git a/rs-client/src/main/java/VertexNormal.java b/rs-client/src/main/java/VertexNormal.java new file mode 100644 index 0000000000..96659bd75e --- /dev/null +++ b/rs-client/src/main/java/VertexNormal.java @@ -0,0 +1,81 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dq") +@Implements("VertexNormal") +public class VertexNormal { + @ObfuscatedName("pe") + @Export("__dq_pe") + static boolean __dq_pe; + @ObfuscatedName("rq") + @ObfuscatedGetter( + intValue = 1351620693 + ) + @Export("__dq_rq") + static int __dq_rq; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1414310131 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1493845293 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1575149515 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -487323631 + ) + @Export("__w") + int __w; + + VertexNormal() { + } + + @ObfuscatedSignature( + signature = "(Ldq;)V" + ) + VertexNormal(VertexNormal var1) { + this.__m = var1.__m; + this.__f = var1.__f; + this.__q = var1.__q; + this.__w = var1.__w; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "([BB)V", + garbageValue = "-86" + ) + static synchronized void method2984(byte[] var0) { + if(var0.length == 100 && ByteArrayPool.ByteArrayPool_smallCount < 1000) { + ByteArrayPool.ByteArrayPool_small[++ByteArrayPool.ByteArrayPool_smallCount - 1] = var0; + } else if(var0.length == 5000 && ByteArrayPool.ByteArrayPool_mediumCount < 250) { + ByteArrayPool.ByteArrayPool_medium[++ByteArrayPool.ByteArrayPool_mediumCount - 1] = var0; + } else if(var0.length == 30000 && ByteArrayPool.ByteArrayPool_largeCount < 50) { + ByteArrayPool.ByteArrayPool_large[++ByteArrayPool.ByteArrayPool_largeCount - 1] = var0; + } else { + if(class179.__fe_e != null) { + for(int var1 = 0; var1 < ByteArrayPool.__gi_g.length; ++var1) { + if(var0.length == ByteArrayPool.__gi_g[var1] && WorldMapSection2.__ah_l[var1] < class179.__fe_e[var1].length) { + class179.__fe_e[var1][WorldMapSection2.__ah_l[var1]++] = var0; + return; + } + } + } + + } + } +} diff --git a/rs-client/src/main/java/ViewportMouse.java b/rs-client/src/main/java/ViewportMouse.java new file mode 100644 index 0000000000..5bd207bddf --- /dev/null +++ b/rs-client/src/main/java/ViewportMouse.java @@ -0,0 +1,154 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("dm") +@Implements("ViewportMouse") +public class ViewportMouse { + @ObfuscatedName("m") + @Export("ViewportMouse_isInViewport") + public static boolean ViewportMouse_isInViewport; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1891197573 + ) + @Export("ViewportMouse_x") + public static int ViewportMouse_x; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1535565231 + ) + @Export("ViewportMouse_y") + public static int ViewportMouse_y; + @ObfuscatedName("w") + @Export("ViewportMouse_false0") + public static boolean ViewportMouse_false0; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1135175963 + ) + @Export("__dm_u") + static int __dm_u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 262104267 + ) + @Export("__dm_g") + static int __dm_g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -2071972829 + ) + @Export("__dm_l") + static int __dm_l; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -852671813 + ) + @Export("__dm_k") + static int __dm_k; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = -2140977119 + ) + @Export("ViewportMouse_entityCount") + public static int ViewportMouse_entityCount; + @ObfuscatedName("a") + @Export("ViewportMouse_entityTags") + public static long[] ViewportMouse_entityTags; + + static { + ViewportMouse_isInViewport = false; + ViewportMouse_x = 0; + ViewportMouse_y = 0; + ViewportMouse_false0 = false; + ViewportMouse_entityCount = 0; + ViewportMouse_entityTags = new long[1000]; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Lic;", + garbageValue = "17" + ) + @Export("getWorldMapElement") + public static WorldMapElement getWorldMapElement(int var0) { + return var0 >= 0 && var0 < Widget.WorldMapElement_cached.length && Widget.WorldMapElement_cached[var0] != null?Widget.WorldMapElement_cached[var0]:new WorldMapElement(var0); + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "2128573585" + ) + static int method2983(int var0, Script var1, boolean var2) { + Widget var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + if(var0 == 2500) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.x; + return 1; + } else if(var0 == 2501) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.y; + return 1; + } else if(var0 == 2502) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.width; + return 1; + } else if(var0 == 2503) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.height; + return 1; + } else if(var0 == 2504) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.isHidden?1:0; + return 1; + } else if(var0 == 2505) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.parentId; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("jg") + @ObfuscatedSignature( + signature = "(Lho;I)Z", + garbageValue = "-1501258333" + ) + static final boolean method2957(Widget var0) { + int var1 = var0.contentType; + if(var1 == 205) { + Client.__client_fd = 250; + return true; + } else { + int var2; + int var3; + if(var1 >= 300 && var1 <= 313) { + var2 = (var1 - 300) / 2; + var3 = var1 & 1; + Client.__client_ru.__f_386(var2, var3 == 1); + } + + if(var1 >= 314 && var1 <= 323) { + var2 = (var1 - 314) / 2; + var3 = var1 & 1; + Client.__client_ru.__q_387(var2, var3 == 1); + } + + if(var1 == 324) { + Client.__client_ru.__w_388(false); + } + + if(var1 == 325) { + Client.__client_ru.__w_388(true); + } + + if(var1 == 326) { + PacketBufferNode var4 = Interpreter.method1915(ClientPacket.__gs_n, Client.packetWriter.isaacCipher); + Client.__client_ru.__o_389(var4.packetBuffer); + Client.packetWriter.__q_167(var4); + return true; + } else { + return false; + } + } + } +} diff --git a/rs-client/src/main/java/WallDecoration.java b/rs-client/src/main/java/WallDecoration.java new file mode 100644 index 0000000000..3220722c25 --- /dev/null +++ b/rs-client/src/main/java/WallDecoration.java @@ -0,0 +1,106 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("eq") +@Implements("WallDecoration") +public final class WallDecoration { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1781638945 + ) + @Export("tileHeight") + int tileHeight; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1411967127 + ) + @Export("x") + int x; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -629971645 + ) + @Export("y") + int y; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -183359389 + ) + @Export("orientation") + int orientation; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -303827911 + ) + @Export("int7") + int int7; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 1927462659 + ) + @Export("xOffset") + int xOffset; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1531207607 + ) + @Export("yOffset") + int yOffset; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("entity1") + public Entity entity1; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lex;" + ) + @Export("entity2") + public Entity entity2; + @ObfuscatedName("x") + @ObfuscatedGetter( + longValue = 3167575053900974839L + ) + @Export("tag") + public long tag; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -1164153171 + ) + @Export("flags") + int flags; + + WallDecoration() { + this.tag = 0L; + this.flags = 0; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BII)I", + garbageValue = "1120739015" + ) + public static int method3257(byte[] var0, int var1) { + int var3 = -1; + + for(int var4 = 0; var4 < var1; ++var4) { + var3 = var3 >>> 8 ^ Buffer.__gr_q[(var3 ^ var0[var4]) & 255]; + } + + var3 = ~var3; + return var3; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-881894911" + ) + public static int method3256(int var0) { + return var0 > 0?1:(var0 < 0?-1:0); + } +} diff --git a/rs-client/src/main/java/Widget.java b/rs-client/src/main/java/Widget.java new file mode 100644 index 0000000000..0fa2775b3e --- /dev/null +++ b/rs-client/src/main/java/Widget.java @@ -0,0 +1,1594 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ho") +@Implements("Widget") +public class Widget extends Node { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "[Lic;" + ) + @Export("WorldMapElement_cached") + public static WorldMapElement[] WorldMapElement_cached; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "[[Lho;" + ) + @Export("widgets") + public static Widget[][] widgets; + @ObfuscatedName("l") + @Export("loadedWidgetGroups") + public static boolean[] loadedWidgetGroups; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("Widget_indexCache") + public static AbstractIndexCache Widget_indexCache; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__ho_d") + public static AbstractIndexCache __ho_d; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("widgetSpriteCache") + static EvictingDualNodeHashTable widgetSpriteCache; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("Widget_cachedModels") + static EvictingDualNodeHashTable Widget_cachedModels; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("Widget_cachedFonts") + static EvictingDualNodeHashTable Widget_cachedFonts; + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("__ho_z") + static EvictingDualNodeHashTable __ho_z; + @ObfuscatedName("j") + @Export("__ho_j") + public static boolean __ho_j; + @ObfuscatedName("s") + @Export("isIf3") + public boolean isIf3; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = -941148335 + ) + @Export("id") + public int id; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = -648033351 + ) + @Export("childIndex") + public int childIndex; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = 1521310729 + ) + @Export("type") + public int type; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 1412102151 + ) + @Export("buttonType") + public int buttonType; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = -581762425 + ) + @Export("contentType") + public int contentType; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = 523318277 + ) + @Export("xAlignment") + public int xAlignment; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = 1300531185 + ) + @Export("yAlignment") + public int yAlignment; + @ObfuscatedName("v") + @ObfuscatedGetter( + intValue = 1628640897 + ) + @Export("widthAlignment") + public int widthAlignment; + @ObfuscatedName("ag") + @ObfuscatedGetter( + intValue = -709256449 + ) + @Export("heightAlignment") + public int heightAlignment; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = -872904863 + ) + @Export("rawX") + public int rawX; + @ObfuscatedName("aj") + @ObfuscatedGetter( + intValue = -1814696937 + ) + @Export("rawY") + public int rawY; + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = -2001402777 + ) + @Export("rawWidth") + public int rawWidth; + @ObfuscatedName("ar") + @ObfuscatedGetter( + intValue = 1202342839 + ) + @Export("rawHeight") + public int rawHeight; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = 1271321381 + ) + @Export("x") + public int x; + @ObfuscatedName("ay") + @ObfuscatedGetter( + intValue = 1492291497 + ) + @Export("y") + public int y; + @ObfuscatedName("ah") + @ObfuscatedGetter( + intValue = 1716081883 + ) + @Export("width") + public int width; + @ObfuscatedName("ak") + @ObfuscatedGetter( + intValue = 1656646737 + ) + @Export("height") + public int height; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = 206556853 + ) + @Export("__aw") + public int __aw; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = -1047989223 + ) + @Export("__al") + public int __al; + @ObfuscatedName("ab") + @ObfuscatedGetter( + intValue = -617209253 + ) + @Export("parentId") + public int parentId; + @ObfuscatedName("ae") + @Export("isHidden") + public boolean isHidden; + @ObfuscatedName("at") + @ObfuscatedGetter( + intValue = 2090399935 + ) + @Export("scrollX") + public int scrollX; + @ObfuscatedName("ad") + @ObfuscatedGetter( + intValue = -537618643 + ) + @Export("scrollY") + public int scrollY; + @ObfuscatedName("ap") + @ObfuscatedGetter( + intValue = -623790443 + ) + @Export("scrollWidth") + public int scrollWidth; + @ObfuscatedName("as") + @ObfuscatedGetter( + intValue = -867175629 + ) + @Export("scrollHeight") + public int scrollHeight; + @ObfuscatedName("am") + @ObfuscatedGetter( + intValue = -2022638615 + ) + @Export("color") + public int color; + @ObfuscatedName("an") + @ObfuscatedGetter( + intValue = -365781561 + ) + @Export("color2") + public int color2; + @ObfuscatedName("az") + @ObfuscatedGetter( + intValue = -1831692129 + ) + @Export("mouseOverColor") + public int mouseOverColor; + @ObfuscatedName("au") + @ObfuscatedGetter( + intValue = 1236161275 + ) + @Export("mouseOverColor2") + public int mouseOverColor2; + @ObfuscatedName("ao") + @Export("fill") + public boolean fill; + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "Llj;" + ) + @Export("rectangleMode") + public RectangleMode rectangleMode; + @ObfuscatedName("ax") + @ObfuscatedGetter( + intValue = -638557371 + ) + @Export("transparency") + public int transparency; + @ObfuscatedName("af") + @ObfuscatedGetter( + intValue = -1853255291 + ) + @Export("__af") + public int __af; + @ObfuscatedName("ai") + @ObfuscatedGetter( + intValue = -110526699 + ) + @Export("lineWid") + public int lineWid; + @ObfuscatedName("ba") + @Export("__ba") + public boolean __ba; + @ObfuscatedName("bb") + @ObfuscatedGetter( + intValue = -1074168553 + ) + @Export("spriteId2") + public int spriteId2; + @ObfuscatedName("bs") + @ObfuscatedGetter( + intValue = 1573420153 + ) + @Export("spriteId") + public int spriteId; + @ObfuscatedName("bq") + @ObfuscatedGetter( + intValue = -1361791123 + ) + @Export("spriteAngle") + public int spriteAngle; + @ObfuscatedName("bn") + @Export("spriteTiling") + public boolean spriteTiling; + @ObfuscatedName("bk") + @ObfuscatedGetter( + intValue = -594884327 + ) + @Export("outline") + public int outline; + @ObfuscatedName("bd") + @ObfuscatedGetter( + intValue = 215797483 + ) + @Export("spriteShadow") + public int spriteShadow; + @ObfuscatedName("bc") + @Export("spriteFlipV") + public boolean spriteFlipV; + @ObfuscatedName("bo") + @Export("spriteFlipH") + public boolean spriteFlipH; + @ObfuscatedName("bx") + @ObfuscatedGetter( + intValue = 630750753 + ) + @Export("modelType") + public int modelType; + @ObfuscatedName("by") + @ObfuscatedGetter( + intValue = -2013625215 + ) + @Export("modelId") + public int modelId; + @ObfuscatedName("bu") + @ObfuscatedGetter( + intValue = 138222099 + ) + @Export("modelType2") + int modelType2; + @ObfuscatedName("bm") + @ObfuscatedGetter( + intValue = -201557389 + ) + @Export("modelId2") + int modelId2; + @ObfuscatedName("bl") + @ObfuscatedGetter( + intValue = -1423753745 + ) + @Export("sequenceId") + public int sequenceId; + @ObfuscatedName("br") + @ObfuscatedGetter( + intValue = -856053301 + ) + @Export("sequenceId2") + public int sequenceId2; + @ObfuscatedName("bj") + @ObfuscatedGetter( + intValue = -459670781 + ) + @Export("modelOffsetX") + public int modelOffsetX; + @ObfuscatedName("bi") + @ObfuscatedGetter( + intValue = -2018053063 + ) + @Export("modelOffsetY") + public int modelOffsetY; + @ObfuscatedName("bz") + @ObfuscatedGetter( + intValue = 2044722063 + ) + @Export("modelAngleX") + public int modelAngleX; + @ObfuscatedName("bg") + @ObfuscatedGetter( + intValue = -1253859481 + ) + @Export("modelAngleY") + public int modelAngleY; + @ObfuscatedName("bt") + @ObfuscatedGetter( + intValue = -692411223 + ) + @Export("modelAngleZ") + public int modelAngleZ; + @ObfuscatedName("bp") + @ObfuscatedGetter( + intValue = -2133338643 + ) + @Export("modelZoom") + public int modelZoom; + @ObfuscatedName("bf") + @ObfuscatedGetter( + intValue = -1692331135 + ) + @Export("__bf") + public int __bf; + @ObfuscatedName("bh") + @ObfuscatedGetter( + intValue = 727421593 + ) + @Export("__bh") + public int __bh; + @ObfuscatedName("be") + @Export("modelOrthog") + public boolean modelOrthog; + @ObfuscatedName("bv") + @Export("__bv") + public boolean __bv; + @ObfuscatedName("bw") + @ObfuscatedGetter( + intValue = -1658511475 + ) + @Export("itemQuantityMode") + public int itemQuantityMode; + @ObfuscatedName("cr") + @ObfuscatedGetter( + intValue = 1435746863 + ) + @Export("fontId") + public int fontId; + @ObfuscatedName("cv") + @Export("text") + public String text; + @ObfuscatedName("ce") + @Export("text2") + public String text2; + @ObfuscatedName("cy") + @ObfuscatedGetter( + intValue = 1401272343 + ) + @Export("textLineHeight") + public int textLineHeight; + @ObfuscatedName("cs") + @ObfuscatedGetter( + intValue = 1527989635 + ) + @Export("textXAlignment") + public int textXAlignment; + @ObfuscatedName("cm") + @ObfuscatedGetter( + intValue = 1271997981 + ) + @Export("textYAlignment") + public int textYAlignment; + @ObfuscatedName("cj") + @Export("textShadowed") + public boolean textShadowed; + @ObfuscatedName("cu") + @ObfuscatedGetter( + intValue = -23173063 + ) + @Export("paddingX") + public int paddingX; + @ObfuscatedName("cb") + @ObfuscatedGetter( + intValue = 720760323 + ) + @Export("paddingY") + public int paddingY; + @ObfuscatedName("ck") + @Export("inventoryXOffsets") + public int[] inventoryXOffsets; + @ObfuscatedName("cn") + @Export("inventoryYOffsets") + public int[] inventoryYOffsets; + @ObfuscatedName("cq") + @Export("inventorySprites") + public int[] inventorySprites; + @ObfuscatedName("ch") + @Export("itemActions") + public String[] itemActions; + @ObfuscatedName("cw") + @ObfuscatedGetter( + intValue = 1856618959 + ) + @Export("clickMask") + public int clickMask; + @ObfuscatedName("cg") + @Export("__cg") + public boolean __cg; + @ObfuscatedName("cf") + @Export("__cf") + public byte[][] __cf; + @ObfuscatedName("cp") + @Export("__cp") + public byte[][] __cp; + @ObfuscatedName("cc") + @Export("__cc") + public int[] __cc; + @ObfuscatedName("ci") + @Export("__ci") + public int[] __ci; + @ObfuscatedName("de") + @Export("dataText") + public String dataText; + @ObfuscatedName("dx") + @Export("actions") + public String[] actions; + @ObfuscatedName("dt") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("parent") + public Widget parent; + @ObfuscatedName("dn") + @ObfuscatedGetter( + intValue = 2092800189 + ) + @Export("dragZoneSize") + public int dragZoneSize; + @ObfuscatedName("df") + @ObfuscatedGetter( + intValue = -1021798347 + ) + @Export("dragThreshold") + public int dragThreshold; + @ObfuscatedName("da") + @Export("isScrollBar") + public boolean isScrollBar; + @ObfuscatedName("dp") + @Export("spellActionName") + public String spellActionName; + @ObfuscatedName("ds") + @Export("hasListener") + public boolean hasListener; + @ObfuscatedName("di") + @Export("onLoad") + public Object[] onLoad; + @ObfuscatedName("dc") + @Export("onClick") + public Object[] onClick; + @ObfuscatedName("dg") + @Export("onClickRepeat") + public Object[] onClickRepeat; + @ObfuscatedName("db") + @Export("onRelease") + public Object[] onRelease; + @ObfuscatedName("dd") + @Export("onHold") + public Object[] onHold; + @ObfuscatedName("dy") + @Export("onMouseOver") + public Object[] onMouseOver; + @ObfuscatedName("dk") + @Export("onMouseRepeat") + public Object[] onMouseRepeat; + @ObfuscatedName("dl") + @Export("onMouseLeave") + public Object[] onMouseLeave; + @ObfuscatedName("dr") + @Export("onDrag") + public Object[] onDrag; + @ObfuscatedName("dw") + @Export("onDragComplete") + public Object[] onDragComplete; + @ObfuscatedName("dv") + @Export("onTargetEnter") + public Object[] onTargetEnter; + @ObfuscatedName("do") + @Export("onTargetLeave") + public Object[] onTargetLeave; + @ObfuscatedName("dh") + @Export("onVarTransmit") + public Object[] onVarTransmit; + @ObfuscatedName("dz") + @Export("varTransmitTriggers") + public int[] varTransmitTriggers; + @ObfuscatedName("dj") + @Export("onInvTransmit") + public Object[] onInvTransmit; + @ObfuscatedName("du") + @Export("invTransmitTriggers") + public int[] invTransmitTriggers; + @ObfuscatedName("dm") + @Export("onStatTransmit") + public Object[] onStatTransmit; + @ObfuscatedName("dq") + @Export("statTransmitTriggers") + public int[] statTransmitTriggers; + @ObfuscatedName("et") + @Export("onTimer") + public Object[] onTimer; + @ObfuscatedName("eb") + @Export("onOp") + public Object[] onOp; + @ObfuscatedName("ek") + @Export("onScroll") + public Object[] onScroll; + @ObfuscatedName("em") + @Export("__em") + public Object[] __em; + @ObfuscatedName("ed") + @Export("onKeyListener") + public Object[] onKeyListener; + @ObfuscatedName("ex") + @Export("__ex") + public Object[] __ex; + @ObfuscatedName("ej") + @Export("__ej") + public Object[] __ej; + @ObfuscatedName("el") + @Export("__el") + public Object[] __el; + @ObfuscatedName("en") + @Export("onDialogAbortListener") + public Object[] onDialogAbortListener; + @ObfuscatedName("ei") + @Export("__ei") + public Object[] __ei; + @ObfuscatedName("ee") + @Export("__ee") + public Object[] __ee; + @ObfuscatedName("eq") + @Export("__eq") + public Object[] __eq; + @ObfuscatedName("eh") + @Export("__eh") + public Object[] __eh; + @ObfuscatedName("eo") + @Export("cs1Instructions") + public int[][] cs1Instructions; + @ObfuscatedName("ey") + @Export("cs1Comparisons") + public int[] cs1Comparisons; + @ObfuscatedName("er") + @Export("cs1ComparisonValues") + public int[] cs1ComparisonValues; + @ObfuscatedName("ew") + @ObfuscatedGetter( + intValue = -1390352887 + ) + @Export("mouseOverRedirect") + public int mouseOverRedirect; + @ObfuscatedName("eu") + @Export("spellName") + public String spellName; + @ObfuscatedName("ec") + @Export("buttonText") + public String buttonText; + @ObfuscatedName("ef") + @Export("itemIds") + public int[] itemIds; + @ObfuscatedName("ev") + @Export("itemQuantities") + public int[] itemQuantities; + @ObfuscatedName("ea") + @ObfuscatedGetter( + intValue = 1248629915 + ) + @Export("itemId") + public int itemId; + @ObfuscatedName("es") + @ObfuscatedGetter( + intValue = 340244859 + ) + @Export("itemQuantity") + public int itemQuantity; + @ObfuscatedName("eg") + @ObfuscatedGetter( + intValue = -431656963 + ) + @Export("modelFrame") + public int modelFrame; + @ObfuscatedName("ez") + @ObfuscatedGetter( + intValue = -95117407 + ) + @Export("modelFrameCycle") + public int modelFrameCycle; + @ObfuscatedName("ep") + @ObfuscatedSignature( + signature = "[Lho;" + ) + @Export("children") + public Widget[] children; + @ObfuscatedName("fq") + @Export("__fq") + public boolean __fq; + @ObfuscatedName("fw") + @Export("__fw") + public boolean __fw; + @ObfuscatedName("fg") + @ObfuscatedGetter( + intValue = -1520351537 + ) + @Export("__fg") + public int __fg; + @ObfuscatedName("fc") + @ObfuscatedGetter( + intValue = 209458049 + ) + @Export("__fc") + public int __fc; + @ObfuscatedName("fl") + @ObfuscatedGetter( + intValue = -672198209 + ) + @Export("__fl") + public int __fl; + @ObfuscatedName("fj") + @ObfuscatedGetter( + intValue = 876695207 + ) + @Export("__fj") + public int __fj; + @ObfuscatedName("fp") + @ObfuscatedGetter( + intValue = 365867737 + ) + @Export("rootIndex") + public int rootIndex; + @ObfuscatedName("fd") + @ObfuscatedGetter( + intValue = -1995006949 + ) + @Export("cycle") + public int cycle; + @ObfuscatedName("fh") + @Export("__fh") + public int[] __fh; + @ObfuscatedName("fx") + @Export("noClickThrough") + public boolean noClickThrough; + @ObfuscatedName("fm") + @Export("noScrollThrough") + public boolean noScrollThrough; + @ObfuscatedName("fz") + @Export("__fz") + public boolean __fz; + + static { + widgetSpriteCache = new EvictingDualNodeHashTable(200); + Widget_cachedModels = new EvictingDualNodeHashTable(50); + Widget_cachedFonts = new EvictingDualNodeHashTable(20); + __ho_z = new EvictingDualNodeHashTable(8); + __ho_j = false; + } + + public Widget() { + this.isIf3 = false; + this.id = -1; + this.childIndex = -1; + this.buttonType = 0; + this.contentType = 0; + this.xAlignment = 0; + this.yAlignment = 0; + this.widthAlignment = 0; + this.heightAlignment = 0; + this.rawX = 0; + this.rawY = 0; + this.rawWidth = 0; + this.rawHeight = 0; + this.x = 0; + this.y = 0; + this.width = 0; + this.height = 0; + this.__aw = 1; + this.__al = 1; + this.parentId = -1; + this.isHidden = false; + this.scrollX = 0; + this.scrollY = 0; + this.scrollWidth = 0; + this.scrollHeight = 0; + this.color = 0; + this.color2 = 0; + this.mouseOverColor = 0; + this.mouseOverColor2 = 0; + this.fill = false; + this.rectangleMode = RectangleMode.__lj_m; + this.transparency = 0; + this.__af = 0; + this.lineWid = 1; + this.__ba = false; + this.spriteId2 = -1; + this.spriteId = -1; + this.spriteAngle = 0; + this.spriteTiling = false; + this.outline = 0; + this.spriteShadow = 0; + this.modelType = 1; + this.modelId = -1; + this.modelType2 = 1; + this.modelId2 = -1; + this.sequenceId = -1; + this.sequenceId2 = -1; + this.modelOffsetX = 0; + this.modelOffsetY = 0; + this.modelAngleX = 0; + this.modelAngleY = 0; + this.modelAngleZ = 0; + this.modelZoom = 100; + this.__bf = 0; + this.__bh = 0; + this.modelOrthog = false; + this.__bv = false; + this.itemQuantityMode = 2; + this.fontId = -1; + this.text = ""; + this.text2 = ""; + this.textLineHeight = 0; + this.textXAlignment = 0; + this.textYAlignment = 0; + this.textShadowed = false; + this.paddingX = 0; + this.paddingY = 0; + this.clickMask = 0; + this.__cg = false; + this.dataText = ""; + this.parent = null; + this.dragZoneSize = 0; + this.dragThreshold = 0; + this.isScrollBar = false; + this.spellActionName = ""; + this.hasListener = false; + this.mouseOverRedirect = -1; + this.spellName = ""; + this.buttonText = "Ok"; + this.itemId = -1; + this.itemQuantity = 0; + this.modelFrame = 0; + this.modelFrameCycle = 0; + this.__fq = false; + this.__fw = false; + this.__fg = -1; + this.__fc = 0; + this.__fl = 0; + this.__fj = 0; + this.rootIndex = -1; + this.cycle = -1; + this.noClickThrough = false; + this.noScrollThrough = false; + this.__fz = false; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "688173225" + ) + @Export("decodeLegacy") + void decodeLegacy(Buffer var1) { + this.isIf3 = false; + this.type = var1.readUnsignedByte(); + this.buttonType = var1.readUnsignedByte(); + this.contentType = var1.__ag_302(); + this.rawX = var1.__aq_303(); + this.rawY = var1.__aq_303(); + this.rawWidth = var1.__ag_302(); + this.rawHeight = var1.__ag_302(); + this.transparency = var1.readUnsignedByte(); + this.parentId = var1.__ag_302(); + if(this.parentId == 65535) { + this.parentId = -1; + } else { + this.parentId += this.id & -65536; + } + + this.mouseOverRedirect = var1.__ag_302(); + if(this.mouseOverRedirect == 65535) { + this.mouseOverRedirect = -1; + } + + int var2 = var1.readUnsignedByte(); + int var3; + if(var2 > 0) { + this.cs1Comparisons = new int[var2]; + this.cs1ComparisonValues = new int[var2]; + + for(var3 = 0; var3 < var2; ++var3) { + this.cs1Comparisons[var3] = var1.readUnsignedByte(); + this.cs1ComparisonValues[var3] = var1.__ag_302(); + } + } + + var3 = var1.readUnsignedByte(); + int var4; + int var5; + int var6; + if(var3 > 0) { + this.cs1Instructions = new int[var3][]; + + for(var4 = 0; var4 < var3; ++var4) { + var5 = var1.__ag_302(); + this.cs1Instructions[var4] = new int[var5]; + + for(var6 = 0; var6 < var5; ++var6) { + this.cs1Instructions[var4][var6] = var1.__ag_302(); + if(this.cs1Instructions[var4][var6] == 65535) { + this.cs1Instructions[var4][var6] = -1; + } + } + } + } + + if(this.type == 0) { + this.scrollHeight = var1.__ag_302(); + this.isHidden = var1.readUnsignedByte() == 1; + } + + if(this.type == 1) { + var1.__ag_302(); + var1.readUnsignedByte(); + } + + if(this.type == 2) { + this.itemIds = new int[this.rawHeight * this.rawWidth]; + this.itemQuantities = new int[this.rawWidth * this.rawHeight]; + var4 = var1.readUnsignedByte(); + if(var4 == 1) { + this.clickMask |= 268435456; + } + + var5 = var1.readUnsignedByte(); + if(var5 == 1) { + this.clickMask |= 1073741824; + } + + var6 = var1.readUnsignedByte(); + if(var6 == 1) { + this.clickMask |= Integer.MIN_VALUE; + } + + int var7 = var1.readUnsignedByte(); + if(var7 == 1) { + this.clickMask |= 536870912; + } + + this.paddingX = var1.readUnsignedByte(); + this.paddingY = var1.readUnsignedByte(); + this.inventoryXOffsets = new int[20]; + this.inventoryYOffsets = new int[20]; + this.inventorySprites = new int[20]; + + int var8; + for(var8 = 0; var8 < 20; ++var8) { + int var9 = var1.readUnsignedByte(); + if(var9 == 1) { + this.inventoryXOffsets[var8] = var1.__aq_303(); + this.inventoryYOffsets[var8] = var1.__aq_303(); + this.inventorySprites[var8] = var1.readInt(); + } else { + this.inventorySprites[var8] = -1; + } + } + + this.itemActions = new String[5]; + + for(var8 = 0; var8 < 5; ++var8) { + String var11 = var1.readStringCp1252NullTerminated(); + if(var11.length() > 0) { + this.itemActions[var8] = var11; + this.clickMask |= 1 << var8 + 23; + } + } + } + + if(this.type == 3) { + this.fill = var1.readUnsignedByte() == 1; + } + + if(this.type == 4 || this.type == 1) { + this.textXAlignment = var1.readUnsignedByte(); + this.textYAlignment = var1.readUnsignedByte(); + this.textLineHeight = var1.readUnsignedByte(); + this.fontId = var1.__ag_302(); + if(this.fontId == 65535) { + this.fontId = -1; + } + + this.textShadowed = var1.readUnsignedByte() == 1; + } + + if(this.type == 4) { + this.text = var1.readStringCp1252NullTerminated(); + this.text2 = var1.readStringCp1252NullTerminated(); + } + + if(this.type == 1 || this.type == 3 || this.type == 4) { + this.color = var1.readInt(); + } + + if(this.type == 3 || this.type == 4) { + this.color2 = var1.readInt(); + this.mouseOverColor = var1.readInt(); + this.mouseOverColor2 = var1.readInt(); + } + + if(this.type == 5) { + this.spriteId2 = var1.readInt(); + this.spriteId = var1.readInt(); + } + + if(this.type == 6) { + this.modelType = 1; + this.modelId = var1.__ag_302(); + if(this.modelId == 65535) { + this.modelId = -1; + } + + this.modelType2 = 1; + this.modelId2 = var1.__ag_302(); + if(this.modelId2 == 65535) { + this.modelId2 = -1; + } + + this.sequenceId = var1.__ag_302(); + if(this.sequenceId == 65535) { + this.sequenceId = -1; + } + + this.sequenceId2 = var1.__ag_302(); + if(this.sequenceId2 == 65535) { + this.sequenceId2 = -1; + } + + this.modelZoom = var1.__ag_302(); + this.modelAngleX = var1.__ag_302(); + this.modelAngleY = var1.__ag_302(); + } + + if(this.type == 7) { + this.itemIds = new int[this.rawHeight * this.rawWidth]; + this.itemQuantities = new int[this.rawWidth * this.rawHeight]; + this.textXAlignment = var1.readUnsignedByte(); + this.fontId = var1.__ag_302(); + if(this.fontId == 65535) { + this.fontId = -1; + } + + this.textShadowed = var1.readUnsignedByte() == 1; + this.color = var1.readInt(); + this.paddingX = var1.__aq_303(); + this.paddingY = var1.__aq_303(); + var4 = var1.readUnsignedByte(); + if(var4 == 1) { + this.clickMask |= 1073741824; + } + + this.itemActions = new String[5]; + + for(var5 = 0; var5 < 5; ++var5) { + String var10 = var1.readStringCp1252NullTerminated(); + if(var10.length() > 0) { + this.itemActions[var5] = var10; + this.clickMask |= 1 << var5 + 23; + } + } + } + + if(this.type == 8) { + this.text = var1.readStringCp1252NullTerminated(); + } + + if(this.buttonType == 2 || this.type == 2) { + this.spellActionName = var1.readStringCp1252NullTerminated(); + this.spellName = var1.readStringCp1252NullTerminated(); + var4 = var1.__ag_302() & 63; + this.clickMask |= var4 << 11; + } + + if(this.buttonType == 1 || this.buttonType == 4 || this.buttonType == 5 || this.buttonType == 6) { + this.buttonText = var1.readStringCp1252NullTerminated(); + if(this.buttonText.length() == 0) { + if(this.buttonType == 1) { + this.buttonText = "Ok"; + } + + if(this.buttonType == 4) { + this.buttonText = "Select"; + } + + if(this.buttonType == 5) { + this.buttonText = "Select"; + } + + if(this.buttonType == 6) { + this.buttonText = "Continue"; + } + } + } + + if(this.buttonType == 1 || this.buttonType == 4 || this.buttonType == 5) { + this.clickMask |= 4194304; + } + + if(this.buttonType == 6) { + this.clickMask |= 1; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "-1967445442" + ) + @Export("decode") + void decode(Buffer var1) { + var1.readUnsignedByte(); + this.isIf3 = true; + this.type = var1.readUnsignedByte(); + this.contentType = var1.__ag_302(); + this.rawX = var1.__aq_303(); + this.rawY = var1.__aq_303(); + this.rawWidth = var1.__ag_302(); + if(this.type == 9) { + this.rawHeight = var1.__aq_303(); + } else { + this.rawHeight = var1.__ag_302(); + } + + this.widthAlignment = var1.readByte(); + this.heightAlignment = var1.readByte(); + this.xAlignment = var1.readByte(); + this.yAlignment = var1.readByte(); + this.parentId = var1.__ag_302(); + if(this.parentId == 65535) { + this.parentId = -1; + } else { + this.parentId += this.id & -65536; + } + + this.isHidden = var1.readUnsignedByte() == 1; + if(this.type == 0) { + this.scrollWidth = var1.__ag_302(); + this.scrollHeight = var1.__ag_302(); + this.noClickThrough = var1.readUnsignedByte() == 1; + } + + if(this.type == 5) { + this.spriteId2 = var1.readInt(); + this.spriteAngle = var1.__ag_302(); + this.spriteTiling = var1.readUnsignedByte() == 1; + this.transparency = var1.readUnsignedByte(); + this.outline = var1.readUnsignedByte(); + this.spriteShadow = var1.readInt(); + this.spriteFlipV = var1.readUnsignedByte() == 1; + this.spriteFlipH = var1.readUnsignedByte() == 1; + } + + if(this.type == 6) { + this.modelType = 1; + this.modelId = var1.__ag_302(); + if(this.modelId == 65535) { + this.modelId = -1; + } + + this.modelOffsetX = var1.__aq_303(); + this.modelOffsetY = var1.__aq_303(); + this.modelAngleX = var1.__ag_302(); + this.modelAngleY = var1.__ag_302(); + this.modelAngleZ = var1.__ag_302(); + this.modelZoom = var1.__ag_302(); + this.sequenceId = var1.__ag_302(); + if(this.sequenceId == 65535) { + this.sequenceId = -1; + } + + this.modelOrthog = var1.readUnsignedByte() == 1; + var1.__ag_302(); + if(this.widthAlignment != 0) { + this.__bf = var1.__ag_302(); + } + + if(this.heightAlignment != 0) { + var1.__ag_302(); + } + } + + if(this.type == 4) { + this.fontId = var1.__ag_302(); + if(this.fontId == 65535) { + this.fontId = -1; + } + + this.text = var1.readStringCp1252NullTerminated(); + this.textLineHeight = var1.readUnsignedByte(); + this.textXAlignment = var1.readUnsignedByte(); + this.textYAlignment = var1.readUnsignedByte(); + this.textShadowed = var1.readUnsignedByte() == 1; + this.color = var1.readInt(); + } + + if(this.type == 3) { + this.color = var1.readInt(); + this.fill = var1.readUnsignedByte() == 1; + this.transparency = var1.readUnsignedByte(); + } + + if(this.type == 9) { + this.lineWid = var1.readUnsignedByte(); + this.color = var1.readInt(); + this.__ba = var1.readUnsignedByte() == 1; + } + + this.clickMask = var1.readMedium(); + this.dataText = var1.readStringCp1252NullTerminated(); + int var2 = var1.readUnsignedByte(); + if(var2 > 0) { + this.actions = new String[var2]; + + for(int var3 = 0; var3 < var2; ++var3) { + this.actions[var3] = var1.readStringCp1252NullTerminated(); + } + } + + this.dragZoneSize = var1.readUnsignedByte(); + this.dragThreshold = var1.readUnsignedByte(); + this.isScrollBar = var1.readUnsignedByte() == 1; + this.spellActionName = var1.readStringCp1252NullTerminated(); + this.onLoad = this.readListener(var1); + this.onMouseOver = this.readListener(var1); + this.onMouseLeave = this.readListener(var1); + this.onTargetLeave = this.readListener(var1); + this.onTargetEnter = this.readListener(var1); + this.onVarTransmit = this.readListener(var1); + this.onInvTransmit = this.readListener(var1); + this.onStatTransmit = this.readListener(var1); + this.onTimer = this.readListener(var1); + this.onOp = this.readListener(var1); + this.onMouseRepeat = this.readListener(var1); + this.onClick = this.readListener(var1); + this.onClickRepeat = this.readListener(var1); + this.onRelease = this.readListener(var1); + this.onHold = this.readListener(var1); + this.onDrag = this.readListener(var1); + this.onDragComplete = this.readListener(var1); + this.onScroll = this.readListener(var1); + this.varTransmitTriggers = this.readListenerTriggers(var1); + this.invTransmitTriggers = this.readListenerTriggers(var1); + this.statTransmitTriggers = this.readListenerTriggers(var1); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Lgr;I)[Ljava/lang/Object;", + garbageValue = "1906438788" + ) + @Export("readListener") + Object[] readListener(Buffer var1) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return null; + } else { + Object[] var3 = new Object[var2]; + + for(int var4 = 0; var4 < var2; ++var4) { + int var5 = var1.readUnsignedByte(); + if(var5 == 0) { + var3[var4] = new Integer(var1.readInt()); + } else if(var5 == 1) { + var3[var4] = var1.readStringCp1252NullTerminated(); + } + } + + this.hasListener = true; + return var3; + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Lgr;B)[I", + garbageValue = "1" + ) + @Export("readListenerTriggers") + int[] readListenerTriggers(Buffer var1) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return null; + } else { + int[] var3 = new int[var2]; + + for(int var4 = 0; var4 < var2; ++var4) { + var3[var4] = var1.readInt(); + } + + return var3; + } + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1403134294" + ) + @Export("swapItems") + public void swapItems(int var1, int var2) { + int var3 = this.itemIds[var2]; + this.itemIds[var2] = this.itemIds[var1]; + this.itemIds[var1] = var3; + var3 = this.itemQuantities[var2]; + this.itemQuantities[var2] = this.itemQuantities[var1]; + this.itemQuantities[var1] = var3; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(ZI)Lln;", + garbageValue = "1271984781" + ) + @Export("getSprite") + public Sprite getSprite(boolean var1) { + __ho_j = false; + int var2; + if(var1) { + var2 = this.spriteId; + } else { + var2 = this.spriteId2; + } + + if(var2 == -1) { + return null; + } else { + long var3 = ((this.spriteFlipV?1L:0L) << 38) + (long)var2 + ((long)this.outline << 36) + ((this.spriteFlipH?1L:0L) << 39) + ((long)this.spriteShadow << 40); + Sprite var5 = (Sprite) widgetSpriteCache.get(var3); + if(var5 != null) { + return var5; + } else { + var5 = class322.readSprite(__ho_d, var2, 0); + if(var5 == null) { + __ho_j = true; + return null; + } else { + if(this.spriteFlipV) { + var5.__g_501(); + } + + if(this.spriteFlipH) { + var5.__u_500(); + } + + if(this.outline > 0) { + var5.__o_499(this.outline); + } + + if(this.outline >= 1) { + var5.__l_502(1); + } + + if(this.outline >= 2) { + var5.__l_502(16777215); + } + + if(this.spriteShadow != 0) { + var5.__e_503(this.spriteShadow); + } + + widgetSpriteCache.put(var5, var3); + return var5; + } + } + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(B)Lkk;", + garbageValue = "-2" + ) + @Export("getFont") + public Font getFont() { + __ho_j = false; + if(this.fontId == -1) { + return null; + } else { + Font var1 = (Font)Widget_cachedFonts.get((long)this.fontId); + if(var1 != null) { + return var1; + } else { + var1 = SpriteIds.method5823(__ho_d, class27.__aq_k, this.fontId, 0); + if(var1 != null) { + Widget_cachedFonts.put(var1, (long)this.fontId); + } else { + __ho_j = true; + } + + return var1; + } + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(II)Lln;", + garbageValue = "285832400" + ) + @Export("getInventorySprite") + public Sprite getInventorySprite(int var1) { + __ho_j = false; + if(var1 >= 0 && var1 < this.inventorySprites.length) { + int var2 = this.inventorySprites[var1]; + if(var2 == -1) { + return null; + } else { + Sprite var3 = (Sprite) widgetSpriteCache.get((long)var2); + if(var3 != null) { + return var3; + } else { + var3 = class322.readSprite(__ho_d, var2, 0); + if(var3 != null) { + widgetSpriteCache.put(var3, (long)var2); + } else { + __ho_j = true; + } + + return var3; + } + } + } else { + return null; + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(Ljh;IZLhi;I)Ldu;", + garbageValue = "1082545676" + ) + @Export("getModel") + public Model getModel(SequenceDefinition var1, int var2, boolean var3, PlayerAppearance var4) { + __ho_j = false; + int var5; + int var6; + if(var3) { + var5 = this.modelType2; + var6 = this.modelId2; + } else { + var5 = this.modelType; + var6 = this.modelId; + } + + if(var5 == 0) { + return null; + } else if(var5 == 1 && var6 == -1) { + return null; + } else { + Model var7 = (Model)Widget_cachedModels.get((long)(var6 + (var5 << 16))); + if(var7 == null) { + ModelData var8; + if(var5 == 1) { + var8 = ModelData.method2788(BufferedSource.__fh_x, var6, 0); + if(var8 == null) { + __ho_j = true; + return null; + } + + var7 = var8.toModel(64, 768, -50, -10, -50); + } + + if(var5 == 2) { + var8 = ObjectDefinition.getNpcDefinition(var6).getModelData(); + if(var8 == null) { + __ho_j = true; + return null; + } + + var7 = var8.toModel(64, 768, -50, -10, -50); + } + + if(var5 == 3) { + if(var4 == null) { + return null; + } + + var8 = var4.getModelData(); + if(var8 == null) { + __ho_j = true; + return null; + } + + var7 = var8.toModel(64, 768, -50, -10, -50); + } + + if(var5 == 4) { + ItemDefinition var9 = Skills.getItemDefinition(var6); + var8 = var9.__l_429(10); + if(var8 == null) { + __ho_j = true; + return null; + } + + var7 = var8.toModel(var9.ambient + 64, var9.contrast * 5 + 768, -50, -10, -50); + } + + Widget_cachedModels.put(var7, (long)(var6 + (var5 << 16))); + } + + if(var1 != null) { + var7 = var1.animateWidget(var7, var2); + } + + return var7; + } + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(ZB)Lhp;", + garbageValue = "4" + ) + @Export("getSpriteMask") + public SpriteMask getSpriteMask(boolean var1) { + if(this.spriteId == -1) { + var1 = false; + } + + int var2 = var1?this.spriteId:this.spriteId2; + if(var2 == -1) { + return null; + } else { + long var3 = ((long)this.spriteShadow << 40) + ((this.spriteFlipH?1L:0L) << 39) + ((this.spriteFlipV?1L:0L) << 38) + ((long)this.outline << 36) + (long)var2; + SpriteMask var5 = (SpriteMask)__ho_z.get(var3); + if(var5 != null) { + return var5; + } else { + Sprite var6 = this.getSprite(var1); + if(var6 == null) { + return null; + } else { + Sprite var7 = var6.copyNormalized(); + int[] var8 = new int[var7.subHeight]; + int[] var9 = new int[var7.subHeight]; + + for(int var10 = 0; var10 < var7.subHeight; ++var10) { + int var11 = 0; + int var12 = var7.subWidth; + + int var13; + for(var13 = 0; var13 < var7.subWidth; ++var13) { + if(var7.pixels[var13 + var10 * var7.subWidth] == 0) { + var11 = var13; + break; + } + } + + for(var13 = var7.subWidth - 1; var13 >= var11; --var13) { + if(var7.pixels[var13 + var10 * var7.subWidth] == 0) { + var12 = var13 + 1; + break; + } + } + + var8[var10] = var11; + var9[var10] = var12 - var11; + } + + var5 = new SpriteMask(var7.subWidth, var7.subHeight, var9, var8, var2); + __ho_z.put(var5, var3); + return var5; + } + } + } + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;B)V", + garbageValue = "-30" + ) + @Export("setAction") + public void setAction(int var1, String var2) { + if(this.actions == null || this.actions.length <= var1) { + String[] var3 = new String[var1 + 1]; + if(this.actions != null) { + for(int var4 = 0; var4 < this.actions.length; ++var4) { + var3[var4] = this.actions[var4]; + } + } + + this.actions = var3; + } + + this.actions[var1] = var2; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I[BLff;I)V", + garbageValue = "-1287305716" + ) + static void method4499(int var0, byte[] var1, IndexStore var2) { + IndexStoreAction var3 = new IndexStoreAction(); + var3.type = 0; + var3.key = (long)var0; + var3.data = var1; + var3.indexStore = var2; + NodeDeque var4 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { + IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.addFirst(var3); + } + + Object var9 = IndexStoreActionHandler.IndexStoreActionHandler_lock; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_lock) { + if(IndexStoreActionHandler.__iv_q == 0) { + Frames.IndexStoreActionHandler_thread = new Thread(new IndexStoreActionHandler()); + Frames.IndexStoreActionHandler_thread.setDaemon(true); + Frames.IndexStoreActionHandler_thread.start(); + Frames.IndexStoreActionHandler_thread.setPriority(5); + } + + IndexStoreActionHandler.__iv_q = 600; + } + } +} diff --git a/rs-client/src/main/java/WidgetGroupParent.java b/rs-client/src/main/java/WidgetGroupParent.java new file mode 100644 index 0000000000..0039676529 --- /dev/null +++ b/rs-client/src/main/java/WidgetGroupParent.java @@ -0,0 +1,113 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bx") +@Implements("WidgetGroupParent") +public class WidgetGroupParent extends Node { + @ObfuscatedName("px") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("sceneMinimapSprite") + static Sprite sceneMinimapSprite; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -992379173 + ) + @Export("__bx_o") + static int __bx_o; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -707461797 + ) + @Export("group") + int group; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1712037041 + ) + @Export("type") + int type; + @ObfuscatedName("q") + @Export("keep") + boolean keep; + + WidgetGroupParent() { + this.keep = false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIB)Lcg;", + garbageValue = "1" + ) + static Script method1175(int var0, int var1) { + Script var2 = (Script)Script.Script_cached.get((long)(var0 << 16)); + if(var2 != null) { + return var2; + } else { + String var3 = String.valueOf(var0); + int var4 = Formatting.indexCache12.getArchiveId(var3); + if(var4 == -1) { + return null; + } else { + byte[] var5 = Formatting.indexCache12.takeRecordFlat(var4); + if(var5 != null) { + if(var5.length <= 1) { + return null; + } + + var2 = Occluder.newScript(var5); + if(var2 != null) { + Script.Script_cached.put(var2, (long)(var0 << 16)); + return var2; + } + } + + return null; + } + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "([BIII)Ljava/lang/String;", + garbageValue = "619422509" + ) + @Export("decodeStringCp1252") + public static String decodeStringCp1252(byte[] var0, int var1, int var2) { + char[] var3 = new char[var2]; + int var4 = 0; + + for(int var5 = 0; var5 < var2; ++var5) { + int var6 = var0[var5 + var1] & 255; + if(var6 != 0) { + if(var6 >= 128 && var6 < 160) { + char var7 = class304.cp1252AsciiExtension[var6 - 128]; + if(var7 == 0) { + var7 = '?'; + } + + var6 = var7; + } + + var3[var4++] = (char)var6; + } + } + + return new String(var3, 0, var4); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "32" + ) + static int method1174(int var0) { + ChatChannel var1 = (ChatChannel)Messages.Messages_channels.get(Integer.valueOf(var0)); + return var1 == null?0:var1.size(); + } +} diff --git a/rs-client/src/main/java/World.java b/rs-client/src/main/java/World.java new file mode 100644 index 0000000000..9035ee1dac --- /dev/null +++ b/rs-client/src/main/java/World.java @@ -0,0 +1,146 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bt") +@Implements("World") +public class World { + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 233222155 + ) + @Export("worldsCount") + static int worldsCount; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1143875805 + ) + @Export("__bt_g") + static int __bt_g; + @ObfuscatedName("l") + @Export("__bt_l") + static int[] __bt_l; + @ObfuscatedName("e") + @Export("__bt_e") + static int[] __bt_e; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -144265493 + ) + @Export("id") + int id; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = 956991319 + ) + @Export("properties") + int properties; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 1863464125 + ) + @Export("population") + int population; + @ObfuscatedName("i") + @Export("host") + String host; + @ObfuscatedName("a") + @Export("activity") + String activity; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 1942858323 + ) + @Export("location") + int location; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 1147427427 + ) + @Export("index") + int index; + + static { + worldsCount = 0; + __bt_g = 0; + __bt_l = new int[]{1, 1, 1, 1}; + __bt_e = new int[]{0, 1, 2, 3}; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1059414592" + ) + @Export("__e_144") + boolean __e_144() { + return (1 & this.properties) != 0; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "0" + ) + @Export("__x_145") + boolean __x_145() { + return (2 & this.properties) != 0; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-354931924" + ) + @Export("__d_146") + boolean __d_146() { + return (4 & this.properties) != 0; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1662622660" + ) + @Export("__a_147") + boolean __a_147() { + return (8 & this.properties) != 0; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "-1" + ) + @Export("__z_148") + boolean __z_148() { + return (536870912 & this.properties) != 0; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "2033779841" + ) + @Export("__j_149") + boolean __j_149() { + return (33554432 & this.properties) != 0; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "1569234522" + ) + public static int method1759(int var0) { + --var0; + var0 |= var0 >>> 1; + var0 |= var0 >>> 2; + var0 |= var0 >>> 4; + var0 |= var0 >>> 8; + var0 |= var0 >>> 16; + return var0 + 1; + } +} diff --git a/rs-client/src/main/java/WorldComparator.java b/rs-client/src/main/java/WorldComparator.java new file mode 100644 index 0000000000..e1c685e25d --- /dev/null +++ b/rs-client/src/main/java/WorldComparator.java @@ -0,0 +1,207 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("u") +@Implements("WorldComparator") +final class WorldComparator implements Comparator { + @ObfuscatedName("n") + @Export("__u_n") + public static boolean __u_n; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ll;Ll;I)I", + garbageValue = "707844889" + ) + @Export("__m_0") + int __m_0(GrandExchangeEvent var1, GrandExchangeEvent var2) { + return var1.world < var2.world?-1:(var2.world == var1.world?0:1); + } + + @Export("compare") + @ObfuscatedName("compare") + public int compare(Object var1, Object var2) { + return this.__m_0((GrandExchangeEvent)var1, (GrandExchangeEvent)var2); + } + + @Export("__equals_2") + @ObfuscatedName("equals") + public boolean __equals_2(Object var1) { + return super.equals(var1); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1032556606" + ) + public static boolean method58(int var0) { + return (var0 >> 21 & 1) != 0; + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "108" + ) + static int method68(int var0, Script var1, boolean var2) { + if(var0 == 3200) { + class179.Interpreter_intStackSize -= 3; + Ignored.queueSoundEffect(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize], Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1], Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]); + return 1; + } else if(var0 == 3201) { + AbstractUserComparator.method5437(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + return 1; + } else if(var0 == 3202) { + class179.Interpreter_intStackSize -= 2; + HealthBar.method1994(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize], Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("he") + @ObfuscatedSignature( + signature = "(Lhx;B)V", + garbageValue = "96" + ) + static final void method67(PacketBuffer var0) { + for(int var1 = 0; var1 < Client.__client_fw; ++var1) { + int var2 = Client.__client_fg[var1]; + Npc var3 = Client.npcs[var2]; + int var4 = var0.readUnsignedByte(); + if((var4 & 1) != 0) { + var3.targetIndex = var0.__by_324(); + if(var3.targetIndex == 65535) { + var3.targetIndex = -1; + } + } + + int var5; + int var6; + int var7; + int var8; + if((var4 & 64) != 0) { + var5 = var0.__bm_326(); + var6 = var0.__bm_326(); + var7 = var3.x - (var5 - class50.baseX - class50.baseX) * 64; + var8 = var3.y - (var6 - GraphicsObject.baseY - GraphicsObject.baseY) * 64; + if(var7 != 0 || var8 != 0) { + var3.__bc = (int)(Math.atan2((double)var7, (double)var8) * 325.949D) & 2047; + } + } + + if((var4 & 32) != 0) { + var5 = var0.__ag_302(); + if(var5 == 65535) { + var5 = -1; + } + + var6 = var0.__bq_318(); + if(var5 == var3.sequence && var5 != -1) { + var7 = WorldMapAreaData.getSequenceDefinition(var5).__t; + if(var7 == 1) { + var3.sequenceFrame = 0; + var3.sequenceFrameCycle = 0; + var3.sequenceDelay = var6; + var3.__bj = 0; + } + + if(var7 == 2) { + var3.__bj = 0; + } + } else if(var5 == -1 || var3.sequence == -1 || WorldMapAreaData.getSequenceDefinition(var5).__n >= WorldMapAreaData.getSequenceDefinition(var3.sequence).__n) { + var3.sequence = var5; + var3.sequenceFrame = 0; + var3.sequenceFrameCycle = 0; + var3.sequenceDelay = var6; + var3.__bj = 0; + var3.__ch = var3.pathLength; + } + } + + if((var4 & 4) != 0) { + var3.definition = ObjectDefinition.getNpcDefinition(var0.__ag_302()); + var3.size = var3.definition.size; + var3.__cj = var3.definition.__av; + var3.walkSequence = var3.definition.walkSequence; + var3.walkTurnSequence = var3.definition.walkTurnSequence; + var3.walkTurnLeftSequence = var3.definition.walkTurnLeftSequence; + var3.walkTurnRightSequence = var3.definition.walkTurnRightSequence; + var3.idleSequence = var3.definition.idleSequence; + var3.turnLeftSequence = var3.definition.turnLeftSequence; + var3.turnRightSequence = var3.definition.turnRightSequence; + } + + if((var4 & 16) != 0) { + var5 = var0.readUnsignedByteNegate(); + int var9; + int var10; + int var11; + if(var5 > 0) { + for(var6 = 0; var6 < var5; ++var6) { + var8 = -1; + var9 = -1; + var10 = -1; + var7 = var0.__ae_307(); + if(var7 == 32767) { + var7 = var0.__ae_307(); + var9 = var0.__ae_307(); + var8 = var0.__ae_307(); + var10 = var0.__ae_307(); + } else if(var7 != 32766) { + var9 = var0.__ae_307(); + } else { + var7 = -1; + } + + var11 = var0.__ae_307(); + var3.addHitSplat(var7, var9, var8, var10, Client.cycle, var11); + } + } + + var6 = var0.__bb_317(); + if(var6 > 0) { + for(var7 = 0; var7 < var6; ++var7) { + var8 = var0.__ae_307(); + var9 = var0.__ae_307(); + if(var9 != 32767) { + var10 = var0.__ae_307(); + var11 = var0.readUnsignedByte(); + int var12 = var9 > 0?var0.__bq_318():var11; + var3.addHealthBar(var8, Client.cycle, var9, var10, var11, var12); + } else { + var3.removeHealthBar(var8); + } + } + } + } + + if((var4 & 8) != 0) { + var3.spotAnimation = var0.__by_324(); + var5 = var0.__bp_331(); + var3.heightOffset = var5 >> 16; + var3.__bt = (var5 & 65535) + Client.cycle; + var3.spotAnimationFrame = 0; + var3.spotAnimationFrameCycle = 0; + if(var3.__bt > Client.cycle) { + var3.spotAnimationFrame = -1; + } + + if(var3.spotAnimation == 65535) { + var3.spotAnimation = -1; + } + } + + if((var4 & 2) != 0) { + var3.overheadText = var0.readStringCp1252NullTerminated(); + var3.overheadTextCyclesRemaining = 100; + } + } + + } +} diff --git a/rs-client/src/main/java/WorldMap.java b/rs-client/src/main/java/WorldMap.java new file mode 100644 index 0000000000..8cff71c5bb --- /dev/null +++ b/rs-client/src/main/java/WorldMap.java @@ -0,0 +1,1439 @@ +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("lz") +@Implements("WorldMap") +public class WorldMap { + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("fontNameVerdana11") + static final FontName fontNameVerdana11; + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("fontNameVerdana13") + static final FontName fontNameVerdana13; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lkx;" + ) + @Export("fontNameVerdana15") + static final FontName fontNameVerdana15; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__g") + AbstractIndexCache __g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__l") + AbstractIndexCache __l; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__e") + AbstractIndexCache __e; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lkk;" + ) + @Export("font") + Font font; + @ObfuscatedName("i") + @Export("fonts") + HashMap fonts; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("mapSceneSprites") + IndexedSprite[] mapSceneSprites; + @ObfuscatedName("z") + @Export("mapAreas") + HashMap mapAreas; + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Lag;" + ) + @Export("mainMapArea") + WorldMapArea mainMapArea; + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "Lag;" + ) + @Export("currentMapArea0") + WorldMapArea currentMapArea0; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lag;" + ) + @Export("__t") + WorldMapArea __t; + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "Lal;" + ) + @Export("worldMapManager") + WorldMapManager worldMapManager; + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "Lls;" + ) + @Export("cacheLoader") + WorldMapIndexCacheLoader cacheLoader; + @ObfuscatedName("b") + @ObfuscatedGetter( + intValue = 1711576969 + ) + @Export("worldMapX") + int worldMapX; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = 1318118645 + ) + @Export("worldMapY") + int worldMapY; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = -89657613 + ) + @Export("worldMapTargetX") + int worldMapTargetX; + @ObfuscatedName("p") + @ObfuscatedGetter( + intValue = -56022357 + ) + @Export("worldMapTargetY") + int worldMapTargetY; + @ObfuscatedName("v") + @Export("zoom") + float zoom; + @ObfuscatedName("ag") + @Export("zoomTarget") + float zoomTarget; + @ObfuscatedName("aq") + @ObfuscatedGetter( + intValue = -1469654441 + ) + @Export("__aq") + int __aq; + @ObfuscatedName("aj") + @ObfuscatedGetter( + intValue = -1140942239 + ) + @Export("__aj") + int __aj; + @ObfuscatedName("av") + @ObfuscatedGetter( + intValue = -1301477687 + ) + @Export("__av") + int __av; + @ObfuscatedName("ar") + @ObfuscatedGetter( + intValue = -298919797 + ) + @Export("__ar") + int __ar; + @ObfuscatedName("ac") + @ObfuscatedGetter( + intValue = -1653084915 + ) + @Export("__ac") + int __ac; + @ObfuscatedName("ay") + @ObfuscatedGetter( + intValue = 1664740569 + ) + @Export("__ay") + int __ay; + @ObfuscatedName("ah") + @Export("perpetualFlash0") + boolean perpetualFlash0; + @ObfuscatedName("ak") + @Export("flashingElements") + HashSet flashingElements; + @ObfuscatedName("aw") + @ObfuscatedGetter( + intValue = -1683910031 + ) + @Export("__aw") + int __aw; + @ObfuscatedName("al") + @ObfuscatedGetter( + intValue = 2064651113 + ) + @Export("__al") + int __al; + @ObfuscatedName("ab") + @ObfuscatedGetter( + intValue = -1979665983 + ) + @Export("__ab") + int __ab; + @ObfuscatedName("ae") + @ObfuscatedGetter( + intValue = 547126547 + ) + @Export("__ae") + int __ae; + @ObfuscatedName("at") + @ObfuscatedGetter( + intValue = -815748997 + ) + @Export("__at") + int __at; + @ObfuscatedName("ad") + @ObfuscatedGetter( + intValue = -988933407 + ) + @Export("__ad") + int __ad; + @ObfuscatedName("ap") + @ObfuscatedGetter( + longValue = -4747643242047040283L + ) + @Export("__ap") + long __ap; + @ObfuscatedName("as") + @ObfuscatedGetter( + intValue = -969094439 + ) + @Export("__as") + int __as; + @ObfuscatedName("am") + @ObfuscatedGetter( + intValue = -869889187 + ) + @Export("__am") + int __am; + @ObfuscatedName("an") + @Export("__an") + boolean __an; + @ObfuscatedName("ao") + @Export("enabledElements") + HashSet enabledElements; + @ObfuscatedName("aa") + @Export("enabledCategories") + HashSet enabledCategories; + @ObfuscatedName("ax") + @Export("__ax") + HashSet __ax; + @ObfuscatedName("af") + @Export("__af") + HashSet __af; + @ObfuscatedName("ai") + @Export("elementsDisabled") + boolean elementsDisabled; + @ObfuscatedName("ba") + @ObfuscatedGetter( + intValue = -237734529 + ) + @Export("__ba") + int __ba; + @ObfuscatedName("bs") + @Export("__bs") + final int[] __bs; + @ObfuscatedName("bq") + @Export("__bq") + List __bq; + @ObfuscatedName("bn") + @Export("iconIterator") + Iterator iconIterator; + @ObfuscatedName("bk") + @Export("__bk") + HashSet __bk; + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "Lhu;" + ) + @Export("mouseCoord") + TileLocation mouseCoord; + @ObfuscatedName("bc") + @Export("__bc") + public boolean __bc; + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("sprite") + Sprite sprite; + @ObfuscatedName("bx") + @ObfuscatedGetter( + intValue = 2031417343 + ) + @Export("__bx") + int __bx; + @ObfuscatedName("by") + @ObfuscatedGetter( + intValue = 754899959 + ) + @Export("__by") + int __by; + @ObfuscatedName("bu") + @ObfuscatedGetter( + intValue = 2064728623 + ) + @Export("__bu") + int __bu; + @ObfuscatedName("bm") + @ObfuscatedGetter( + intValue = -1774424249 + ) + @Export("__bm") + int __bm; + + static { + fontNameVerdana11 = FontName.FontName_verdana11; + fontNameVerdana13 = FontName.FontName_verdana13; + fontNameVerdana15 = FontName.FontName_verdana15; + } + + public WorldMap() { + this.worldMapTargetX = -1; + this.worldMapTargetY = -1; + this.__aq = -1; + this.__aj = -1; + this.__av = -1; + this.__ar = -1; + this.__ac = 3; + this.__ay = 50; + this.perpetualFlash0 = false; + this.flashingElements = null; + this.__aw = -1; + this.__al = -1; + this.__ab = -1; + this.__ae = -1; + this.__at = -1; + this.__ad = -1; + this.__an = true; + this.enabledElements = new HashSet(); + this.enabledCategories = new HashSet(); + this.__ax = new HashSet(); + this.__af = new HashSet(); + this.elementsDisabled = false; + this.__ba = 0; + this.__bs = new int[]{1008, 1009, 1010, 1011, 1012}; + this.__bk = new HashSet(); + this.mouseCoord = null; + this.__bc = false; + this.__by = -1; + this.__bu = -1; + this.__bm = -1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Lir;Lir;Lkk;Ljava/util/HashMap;[Llq;I)V", + garbageValue = "1887817097" + ) + @Export("init") + public void init(AbstractIndexCache var1, AbstractIndexCache var2, AbstractIndexCache var3, Font var4, HashMap var5, IndexedSprite[] var6) { + this.mapSceneSprites = var6; + this.__g = var1; + this.__l = var2; + this.__e = var3; + this.font = var4; + this.fonts = new HashMap(); + this.fonts.put(WorldMapLabelSize.WorldMapLabelSize_small, var5.get(fontNameVerdana11)); + this.fonts.put(WorldMapLabelSize.WorldMapLabelSize_medium, var5.get(fontNameVerdana13)); + this.fonts.put(WorldMapLabelSize.WorldMapLabelSize_large, var5.get(fontNameVerdana15)); + this.cacheLoader = new WorldMapIndexCacheLoader(var1); + int var7 = this.__g.getArchiveId(WorldMapCacheName.WorldMapCacheName_details.name); + int[] var8 = this.__g.__j_395(var7); + this.mapAreas = new HashMap(var8.length); + + for(int var9 = 0; var9 < var8.length; ++var9) { + Buffer var10 = new Buffer(this.__g.takeRecord(var7, var8[var9])); + WorldMapArea var11 = new WorldMapArea(); + var11.read(var10, var8[var9]); + this.mapAreas.put(var11.archiveName(), var11); + if(var11.isMain()) { + this.mainMapArea = var11; + } + } + + this.setCurrentMapArea(this.mainMapArea); + this.__t = null; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1144390092" + ) + @Export("__f_518") + public void __f_518() { + WorldMapRegion.__av_o.demote(5); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIZIIIIB)V", + garbageValue = "-35" + ) + @Export("onCycle") + public void onCycle(int var1, int var2, boolean var3, int var4, int var5, int var6, int var7) { + if(this.cacheLoader.isLoaded()) { + this.smoothZoom(); + this.__g_521(); + if(var3) { + int var8 = (int)Math.ceil((double)((float)var6 / this.zoom)); + int var9 = (int)Math.ceil((double)((float)var7 / this.zoom)); + List var10 = this.worldMapManager.__u_74(this.worldMapX - var8 / 2 - 1, this.worldMapY - var9 / 2 - 1, var8 / 2 + this.worldMapX + 1, var9 / 2 + this.worldMapY + 1, var4, var5, var6, var7, var1, var2); + HashSet var11 = new HashSet(); + + Iterator var12; + AbstractWorldMapIcon var13; + ScriptEvent var14; + WorldMapEvent var15; + for(var12 = var10.iterator(); var12.hasNext(); AbstractIndexCache.runScript(var14)) { + var13 = (AbstractWorldMapIcon)var12.next(); + var11.add(var13); + var14 = new ScriptEvent(); + var15 = new WorldMapEvent(var13.__m_15(), var13.coord1, var13.coord2); + var14.setArgs(new Object[]{var15, Integer.valueOf(var1), Integer.valueOf(var2)}); + if(this.__bk.contains(var13)) { + var14.setType(17); + } else { + var14.setType(15); + } + } + + var12 = this.__bk.iterator(); + + while(var12.hasNext()) { + var13 = (AbstractWorldMapIcon)var12.next(); + if(!var11.contains(var13)) { + var14 = new ScriptEvent(); + var15 = new WorldMapEvent(var13.__m_15(), var13.coord1, var13.coord2); + var14.setArgs(new Object[]{var15, Integer.valueOf(var1), Integer.valueOf(var2)}); + var14.setType(16); + AbstractIndexCache.runScript(var14); + } + } + + this.__bk = var11; + } + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIZZS)V", + garbageValue = "18431" + ) + @Export("__w_519") + public void __w_519(int var1, int var2, boolean var3, boolean var4) { + long var5 = class203.currentTimeMs(); + this.__o_520(var1, var2, var4, var5); + if(!this.__x_524() && (var4 || var3)) { + if(var4) { + this.__at = var1; + this.__ad = var2; + this.__ab = this.worldMapX; + this.__ae = this.worldMapY; + } + + if(this.__ab != -1) { + int var7 = var1 - this.__at; + int var8 = var2 - this.__ad; + this.setWorldMapPosition(this.__ab - (int)((float)var7 / this.zoomTarget), (int)((float)var8 / this.zoomTarget) + this.__ae, false); + } + } else { + this.__e_523(); + } + + if(var4) { + this.__ap = var5; + this.__as = var1; + this.__am = var2; + } + + } + + @ObfuscatedName("o") + @Export("__o_520") + void __o_520(int var1, int var2, boolean var3, long var4) { + if(this.currentMapArea0 != null) { + int var6 = (int)((float)this.worldMapX + ((float)(var1 - this.__av) - (float)this.__ap_537() * this.zoom / 2.0F) / this.zoom); + int var7 = (int)((float)this.worldMapY - ((float)(var2 - this.__ar) - (float)this.__as_538() * this.zoom / 2.0F) / this.zoom); + this.mouseCoord = this.currentMapArea0.coord(var6 + this.currentMapArea0.minX() * 64, var7 + this.currentMapArea0.minY() * 64); + if(this.mouseCoord != null && var3) { + int var9; + int var10; + if(FriendSystem.method1868() && KeyHandler.KeyHandler_pressedKeys[82] && KeyHandler.KeyHandler_pressedKeys[81]) { + int var13 = this.mouseCoord.x; + var9 = this.mouseCoord.y; + var10 = this.mouseCoord.plane; + PacketBufferNode var11 = Interpreter.method1915(ClientPacket.__gs_bx, Client.packetWriter.isaacCipher); + var11.packetBuffer.writeIntME(0); + var11.packetBuffer.writeShortLE(var9); + var11.packetBuffer.__ai_315(var10); + var11.packetBuffer.writeShort(var13); + Client.packetWriter.__q_167(var11); + } else { + boolean var8 = true; + if(this.__an) { + var9 = var1 - this.__as; + var10 = var2 - this.__am; + if(var4 - this.__ap > 500L || var9 < -25 || var9 > 25 || var10 < -25 || var10 > 25) { + var8 = false; + } + } + + if(var8) { + PacketBufferNode var12 = Interpreter.method1915(ClientPacket.__gs_az, Client.packetWriter.isaacCipher); + var12.packetBuffer.writeIntME(this.mouseCoord.packed()); + Client.packetWriter.__q_167(var12); + this.__ap = 0L; + } + } + } + } else { + this.mouseCoord = null; + } + + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-328885193" + ) + @Export("smoothZoom") + void smoothZoom() { + if(ClientParameter.field3645 != null) { + this.zoom = this.zoomTarget; + } else { + if(this.zoom < this.zoomTarget) { + this.zoom = Math.min(this.zoomTarget, this.zoom / 30.0F + this.zoom); + } + + if(this.zoom > this.zoomTarget) { + this.zoom = Math.max(this.zoomTarget, this.zoom - this.zoom / 30.0F); + } + + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2075446341" + ) + @Export("__g_521") + void __g_521() { + if(this.__x_524()) { + int var1 = this.worldMapTargetX - this.worldMapX; + int var2 = this.worldMapTargetY - this.worldMapY; + if(var1 != 0) { + var1 /= Math.min(8, Math.abs(var1)); + } + + if(var2 != 0) { + var2 /= Math.min(8, Math.abs(var2)); + } + + this.setWorldMapPosition(var1 + this.worldMapX, var2 + this.worldMapY, true); + if(this.worldMapTargetX == this.worldMapX && this.worldMapTargetY == this.worldMapY) { + this.worldMapTargetX = -1; + this.worldMapTargetY = -1; + } + + } + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(IIZI)V", + garbageValue = "-943230538" + ) + @Export("setWorldMapPosition") + final void setWorldMapPosition(int var1, int var2, boolean var3) { + this.worldMapX = var1; + this.worldMapY = var2; + class203.currentTimeMs(); + if(var3) { + this.__e_523(); + } + + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "35" + ) + @Export("__e_523") + final void __e_523() { + this.__ad = -1; + this.__at = -1; + this.__ae = -1; + this.__ab = -1; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "1444745621" + ) + @Export("__x_524") + boolean __x_524() { + return this.worldMapTargetX != -1 && this.worldMapTargetY != -1; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(IIII)Lag;", + garbageValue = "1738506455" + ) + @Export("mapAreaAtCoord") + public WorldMapArea mapAreaAtCoord(int var1, int var2, int var3) { + Iterator var4 = this.mapAreas.values().iterator(); + + WorldMapArea var5; + do { + if(!var4.hasNext()) { + return null; + } + + var5 = (WorldMapArea)var4.next(); + } while(!var5.containsCoord(var1, var2, var3)); + + return var5; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(IIIZI)V", + garbageValue = "469045892" + ) + @Export("__a_525") + public void __a_525(int var1, int var2, int var3, boolean var4) { + WorldMapArea var5 = this.mapAreaAtCoord(var1, var2, var3); + if(var5 == null) { + if(!var4) { + return; + } + + var5 = this.mainMapArea; + } + + boolean var6 = false; + if(var5 != this.__t || var4) { + this.__t = var5; + this.setCurrentMapArea(var5); + var6 = true; + } + + if(var6 || var4) { + this.jump(var1, var2, var3); + } + + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1318491821" + ) + @Export("setCurrentMapAreaId") + public void setCurrentMapAreaId(int var1) { + WorldMapArea var2 = this.getMapArea(var1); + if(var2 != null) { + this.setCurrentMapArea(var2); + } + + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-501094512" + ) + @Export("currentMapAreaId") + public int currentMapAreaId() { + return this.currentMapArea0 == null?-1:this.currentMapArea0.id(); + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(I)Lag;", + garbageValue = "-810288511" + ) + @Export("getCurrentMapArea") + public WorldMapArea getCurrentMapArea() { + return this.currentMapArea0; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(Lag;B)V", + garbageValue = "-44" + ) + @Export("setCurrentMapArea") + void setCurrentMapArea(WorldMapArea var1) { + if(this.currentMapArea0 == null || var1 != this.currentMapArea0) { + this.initializeWorldMap(var1); + this.jump(-1, -1, -1); + } + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(Lag;I)V", + garbageValue = "-1072205896" + ) + @Export("initializeWorldMap") + void initializeWorldMap(WorldMapArea var1) { + this.currentMapArea0 = var1; + this.worldMapManager = new WorldMapManager(this.mapSceneSprites, this.fonts, this.__l, this.__e); + this.cacheLoader.reset(this.currentMapArea0.archiveName()); + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(Lag;Lhu;Lhu;ZI)V", + garbageValue = "-1430939646" + ) + @Export("__h_526") + public void __h_526(WorldMapArea var1, TileLocation var2, TileLocation var3, boolean var4) { + if(var1 != null) { + if(this.currentMapArea0 == null || var1 != this.currentMapArea0) { + this.initializeWorldMap(var1); + } + + if(!var4 && this.currentMapArea0.containsCoord(var2.plane, var2.x, var2.y)) { + this.jump(var2.plane, var2.x, var2.y); + } else { + this.jump(var3.plane, var3.x, var3.y); + } + + } + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "1094346962" + ) + @Export("jump") + void jump(int var1, int var2, int var3) { + if(this.currentMapArea0 != null) { + int[] var4 = this.currentMapArea0.position(var1, var2, var3); + if(var4 == null) { + var4 = this.currentMapArea0.position(this.currentMapArea0.originPlane(), this.currentMapArea0.originX(), this.currentMapArea0.originY()); + } + + this.setWorldMapPosition(var4[0] - this.currentMapArea0.minX() * 64, var4[1] - this.currentMapArea0.minY() * 64, true); + this.worldMapTargetX = -1; + this.worldMapTargetY = -1; + this.zoom = this.__av_529(this.currentMapArea0.zoom()); + this.zoomTarget = this.zoom; + this.__bq = null; + this.iconIterator = null; + this.worldMapManager.clearIcons(); + } + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(IIIIII)V", + garbageValue = "-288419793" + ) + @Export("draw") + public void draw(int var1, int var2, int var3, int var4, int var5) { + int[] var6 = new int[4]; + Rasterizer2D.Rasterizer2D_getClipArray(var6); + Rasterizer2D.Rasterizer2D_setClip(var1, var2, var3 + var1, var2 + var4); + Rasterizer2D.Rasterizer2D_fillRectangle(var1, var2, var3, var4, -16777216); + int var7 = this.cacheLoader.percentLoaded(); + if(var7 < 100) { + this.drawLoading(var1, var2, var3, var4, var7); + } else { + if(!this.worldMapManager.isLoaded()) { + this.worldMapManager.load(this.__g, this.currentMapArea0.archiveName(), Client.isMembersWorld); + if(!this.worldMapManager.isLoaded()) { + return; + } + } + + if(this.flashingElements != null) { + ++this.__al; + if(this.__al % this.__ay == 0) { + this.__al = 0; + ++this.__aw; + } + + if(this.__aw >= this.__ac && !this.perpetualFlash0) { + this.flashingElements = null; + } + } + + int var8 = (int)Math.ceil((double)((float)var3 / this.zoom)); + int var9 = (int)Math.ceil((double)((float)var4 / this.zoom)); + this.worldMapManager.__q_72(this.worldMapX - var8 / 2, this.worldMapY - var9 / 2, var8 / 2 + this.worldMapX, var9 / 2 + this.worldMapY, var1, var2, var3 + var1, var2 + var4); + if(!this.elementsDisabled) { + boolean var10 = false; + if(var5 - this.__ba > 100) { + this.__ba = var5; + var10 = true; + } + + this.worldMapManager.__w_73(this.worldMapX - var8 / 2, this.worldMapY - var9 / 2, var8 / 2 + this.worldMapX, var9 / 2 + this.worldMapY, var1, var2, var3 + var1, var2 + var4, this.__af, this.flashingElements, this.__al, this.__ay, var10); + } + + this.__v_528(var1, var2, var3, var4, var8, var9); + if(FriendSystem.method1868() && this.__bc && this.mouseCoord != null) { + this.font.draw("Coord: " + this.mouseCoord, Rasterizer2D.Rasterizer2D_xClipStart + 10, Rasterizer2D.Rasterizer2D_yClipStart + 20, 16776960, -1); + } + + this.__aq = var8; + this.__aj = var9; + this.__av = var1; + this.__ar = var2; + Rasterizer2D.Rasterizer2D_setClipArray(var6); + } + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(IIIIIII)Z", + garbageValue = "-1561237851" + ) + @Export("__p_527") + boolean __p_527(int var1, int var2, int var3, int var4, int var5, int var6) { + return this.sprite == null?true:(this.sprite.subWidth == var1 && this.sprite.subHeight == var2?(this.worldMapManager.__z != this.__bx?true:(this.__bm != Client.__client_ss?true:(var3 <= 0 && var4 <= 0?var3 + var1 < var5 || var2 + var4 < var6:true))):true); + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(IIIIIII)V", + garbageValue = "-2090965249" + ) + @Export("__v_528") + void __v_528(int var1, int var2, int var3, int var4, int var5, int var6) { + if(ClientParameter.field3645 != null) { + int var7 = 512 / (this.worldMapManager.__z * 2); + int var8 = var3 + 512; + int var9 = var4 + 512; + float var10 = 1.0F; + var8 = (int)((float)var8 / var10); + var9 = (int)((float)var9 / var10); + int var11 = this.__ae_534() - var5 / 2 - var7; + int var12 = this.__at_535() - var6 / 2 - var7; + int var13 = var1 - (var7 + var11 - this.__by) * this.worldMapManager.__z; + int var14 = var2 - this.worldMapManager.__z * (var7 - (var12 - this.__bu)); + if(this.__p_527(var8, var9, var13, var14, var3, var4)) { + if(this.sprite != null && this.sprite.subWidth == var8 && this.sprite.subHeight == var9) { + Arrays.fill(this.sprite.pixels, 0); + } else { + this.sprite = new Sprite(var8, var9); + } + + this.__by = this.__ae_534() - var5 / 2 - var7; + this.__bu = this.__at_535() - var6 / 2 - var7; + this.__bx = this.worldMapManager.__z; + ClientParameter.field3645.method4720(this.__by, this.__bu, this.sprite, (float)this.__bx / var10); + this.__bm = Client.__client_ss; + var13 = var1 - (var11 + var7 - this.__by) * this.worldMapManager.__z; + var14 = var2 - this.worldMapManager.__z * (var7 - (var12 - this.__bu)); + } + + Rasterizer2D.Rasterizer2D_moreAlpha(var1, var2, var3, var4, 0, 128); + if(1.0F == var10) { + this.sprite.__v_510(var13, var14, 192); + } else { + this.sprite.__aj_511(var13, var14, (int)(var10 * (float)var8), (int)((float)var9 * var10), 192); + } + } + + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(IIIIB)V", + garbageValue = "-84" + ) + @Export("drawOverview") + public void drawOverview(int var1, int var2, int var3, int var4) { + if(this.cacheLoader.isLoaded()) { + if(!this.worldMapManager.isLoaded()) { + this.worldMapManager.load(this.__g, this.currentMapArea0.archiveName(), Client.isMembersWorld); + if(!this.worldMapManager.isLoaded()) { + return; + } + } + + this.worldMapManager.drawOverview(var1, var2, var3, var4, this.flashingElements, this.__al, this.__ay); + } + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "328502073" + ) + @Export("setZoomLevel") + public void setZoomLevel(int var1) { + this.zoomTarget = this.__av_529(var1); + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(IIIIIB)V", + garbageValue = "126" + ) + @Export("drawLoading") + void drawLoading(int var1, int var2, int var3, int var4, int var5) { + byte var6 = 20; + int var7 = var3 / 2 + var1; + int var8 = var4 / 2 + var2 - 18 - var6; + Rasterizer2D.Rasterizer2D_fillRectangle(var1, var2, var3, var4, -16777216); + Rasterizer2D.Rasterizer2D_drawRectangle(var7 - 152, var8, 304, 34, -65536); + Rasterizer2D.Rasterizer2D_fillRectangle(var7 - 150, var8 + 2, var5 * 3, 30, -65536); + this.font.drawCentered("Loading...", var7, var8 + var6, -1, -1); + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(IB)F", + garbageValue = "56" + ) + @Export("__av_529") + float __av_529(int var1) { + return var1 == 25?1.0F:(var1 == 37?1.5F:(var1 == 50?2.0F:(var1 == 75?3.0F:(var1 == 100?4.0F:8.0F)))); + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-80" + ) + @Export("getZoomLevel") + public int getZoomLevel() { + return (double)this.zoomTarget == 1.0D?25:((double)this.zoomTarget == 1.5D?37:(2.0D == (double)this.zoomTarget?50:(3.0D == (double)this.zoomTarget?75:(4.0D == (double)this.zoomTarget?100:200)))); + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-50" + ) + @Export("loadCache") + public void loadCache() { + this.cacheLoader.load(); + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(S)Z", + garbageValue = "3411" + ) + @Export("isCacheLoaded") + public boolean isCacheLoaded() { + return this.cacheLoader.isLoaded(); + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(II)Lag;", + garbageValue = "-1453627706" + ) + @Export("getMapArea") + public WorldMapArea getMapArea(int var1) { + Iterator var2 = this.mapAreas.values().iterator(); + + WorldMapArea var3; + do { + if(!var2.hasNext()) { + return null; + } + + var3 = (WorldMapArea)var2.next(); + } while(var3.id() != var1); + + return var3; + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1820000123" + ) + @Export("setWorldMapPositionTarget") + public void setWorldMapPositionTarget(int var1, int var2) { + if(this.currentMapArea0 != null && this.currentMapArea0.containsPosition(var1, var2)) { + this.worldMapTargetX = var1 - this.currentMapArea0.minX() * 64; + this.worldMapTargetY = var2 - this.currentMapArea0.minY() * 64; + } + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-2147142500" + ) + @Export("__aw_531") + public void __aw_531(int var1, int var2) { + if(this.currentMapArea0 != null) { + this.setWorldMapPosition(var1 - this.currentMapArea0.minX() * 64, var2 - this.currentMapArea0.minY() * 64, true); + this.worldMapTargetX = -1; + this.worldMapTargetY = -1; + } + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(IIIB)V", + garbageValue = "-40" + ) + @Export("__al_532") + public void __al_532(int var1, int var2, int var3) { + if(this.currentMapArea0 != null) { + int[] var4 = this.currentMapArea0.position(var1, var2, var3); + if(var4 != null) { + this.setWorldMapPositionTarget(var4[0], var4[1]); + } + + } + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "1808854561" + ) + @Export("__ab_533") + public void __ab_533(int var1, int var2, int var3) { + if(this.currentMapArea0 != null) { + int[] var4 = this.currentMapArea0.position(var1, var2, var3); + if(var4 != null) { + this.__aw_531(var4[0], var4[1]); + } + + } + } + + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-659556919" + ) + @Export("__ae_534") + public int __ae_534() { + return this.currentMapArea0 == null?-1:this.worldMapX + this.currentMapArea0.minX() * 64; + } + + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1893257871" + ) + @Export("__at_535") + public int __at_535() { + return this.currentMapArea0 == null?-1:this.worldMapY + this.currentMapArea0.minY() * 64; + } + + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "(I)Lhu;", + garbageValue = "-2005824064" + ) + @Export("__ad_536") + public TileLocation __ad_536() { + return this.currentMapArea0 == null?null:this.currentMapArea0.coord(this.__ae_534(), this.__at_535()); + } + + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "442119278" + ) + @Export("__ap_537") + public int __ap_537() { + return this.__aq; + } + + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-2065910749" + ) + @Export("__as_538") + public int __as_538() { + return this.__aj; + } + + @ObfuscatedName("am") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2017050927" + ) + @Export("__am_539") + public void __am_539(int var1) { + if(var1 >= 1) { + this.__ac = var1; + } + + } + + @ObfuscatedName("an") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1568631080" + ) + @Export("__an_540") + public void __an_540() { + this.__ac = 3; + } + + @ObfuscatedName("az") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "107295139" + ) + @Export("__az_541") + public void __az_541(int var1) { + if(var1 >= 1) { + this.__ay = var1; + } + + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2023118274" + ) + @Export("__au_542") + public void __au_542() { + this.__ay = 50; + } + + @ObfuscatedName("ao") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "1025207933" + ) + @Export("perpetualFlash") + public void perpetualFlash(boolean var1) { + this.perpetualFlash0 = var1; + } + + @ObfuscatedName("aa") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "509924675" + ) + @Export("flashElement") + public void flashElement(int var1) { + this.flashingElements = new HashSet(); + this.flashingElements.add(Integer.valueOf(var1)); + this.__aw = 0; + this.__al = 0; + } + + @ObfuscatedName("ax") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "-21" + ) + @Export("flashCategory") + public void flashCategory(int var1) { + this.flashingElements = new HashSet(); + this.__aw = 0; + this.__al = 0; + + for(int var2 = 0; var2 < UserComparator4.WorldMapElement_count; ++var2) { + if(ViewportMouse.getWorldMapElement(var2) != null && ViewportMouse.getWorldMapElement(var2).category == var1) { + this.flashingElements.add(Integer.valueOf(ViewportMouse.getWorldMapElement(var2).__o)); + } + } + + } + + @ObfuscatedName("af") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1011326291" + ) + @Export("stopCurrentFlashes") + public void stopCurrentFlashes() { + this.flashingElements = null; + } + + @ObfuscatedName("ai") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "179561693" + ) + @Export("setElementsEnabled") + public void setElementsEnabled(boolean var1) { + this.elementsDisabled = !var1; + } + + @ObfuscatedName("ba") + @ObfuscatedSignature( + signature = "(IZI)V", + garbageValue = "-853551606" + ) + @Export("disableElement") + public void disableElement(int var1, boolean var2) { + if(!var2) { + this.enabledElements.add(Integer.valueOf(var1)); + } else { + this.enabledElements.remove(Integer.valueOf(var1)); + } + + this.__bk_543(); + } + + @ObfuscatedName("bb") + @ObfuscatedSignature( + signature = "(IZI)V", + garbageValue = "128396492" + ) + @Export("disableCategory") + public void disableCategory(int var1, boolean var2) { + if(!var2) { + this.enabledCategories.add(Integer.valueOf(var1)); + } else { + this.enabledCategories.remove(Integer.valueOf(var1)); + } + + for(int var3 = 0; var3 < UserComparator4.WorldMapElement_count; ++var3) { + if(ViewportMouse.getWorldMapElement(var3) != null && ViewportMouse.getWorldMapElement(var3).category == var1) { + int var4 = ViewportMouse.getWorldMapElement(var3).__o; + if(!var2) { + this.__ax.add(Integer.valueOf(var4)); + } else { + this.__ax.remove(Integer.valueOf(var4)); + } + } + } + + this.__bk_543(); + } + + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "107" + ) + @Export("getElementsEnabled") + public boolean getElementsEnabled() { + return !this.elementsDisabled; + } + + @ObfuscatedName("bq") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "1" + ) + @Export("isElementDisabled") + public boolean isElementDisabled(int var1) { + return !this.enabledElements.contains(Integer.valueOf(var1)); + } + + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-758200752" + ) + @Export("isCategoryDisabled") + public boolean isCategoryDisabled(int var1) { + return !this.enabledCategories.contains(Integer.valueOf(var1)); + } + + @ObfuscatedName("bk") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "758731634" + ) + @Export("__bk_543") + void __bk_543() { + this.__af.clear(); + this.__af.addAll(this.enabledElements); + this.__af.addAll(this.__ax); + } + + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "(IIIIIIB)V", + garbageValue = "-73" + ) + @Export("__bd_544") + public void __bd_544(int var1, int var2, int var3, int var4, int var5, int var6) { + if(this.cacheLoader.isLoaded()) { + int var7 = (int)Math.ceil((double)((float)var3 / this.zoom)); + int var8 = (int)Math.ceil((double)((float)var4 / this.zoom)); + List var9 = this.worldMapManager.__u_74(this.worldMapX - var7 / 2 - 1, this.worldMapY - var8 / 2 - 1, var7 / 2 + this.worldMapX + 1, var8 / 2 + this.worldMapY + 1, var1, var2, var3, var4, var5, var6); + if(!var9.isEmpty()) { + Iterator var10 = var9.iterator(); + + boolean var13; + do { + if(!var10.hasNext()) { + return; + } + + AbstractWorldMapIcon var11 = (AbstractWorldMapIcon)var10.next(); + WorldMapElement var12 = ViewportMouse.getWorldMapElement(var11.__m_15()); + var13 = false; + + for(int var14 = this.__bs.length - 1; var14 >= 0; --var14) { + if(var12.strings[var14] != null) { + Tiles.method1106(var12.strings[var14], var12.string1, this.__bs[var14], var11.__m_15(), var11.coord1.packed(), var11.coord2.packed()); + var13 = true; + } + } + } while(!var13); + + } + } + } + + @ObfuscatedName("bc") + @ObfuscatedSignature( + signature = "(ILhu;I)Lhu;", + garbageValue = "333454230" + ) + @Export("__bc_545") + public TileLocation __bc_545(int var1, TileLocation var2) { + if(!this.cacheLoader.isLoaded()) { + return null; + } else if(!this.worldMapManager.isLoaded()) { + return null; + } else if(!this.currentMapArea0.containsPosition(var2.x, var2.y)) { + return null; + } else { + HashMap var3 = this.worldMapManager.buildIcons(); + List var4 = (List)var3.get(Integer.valueOf(var1)); + if(var4 != null && !var4.isEmpty()) { + AbstractWorldMapIcon var5 = null; + int var6 = -1; + Iterator var7 = var4.iterator(); + + while(true) { + AbstractWorldMapIcon var8; + int var11; + do { + if(!var7.hasNext()) { + return var5.coord2; + } + + var8 = (AbstractWorldMapIcon)var7.next(); + int var9 = var8.coord2.x - var2.x; + int var10 = var8.coord2.y - var2.y; + var11 = var10 * var10 + var9 * var9; + if(var11 == 0) { + return var8.coord2; + } + } while(var11 >= var6 && var5 != null); + + var5 = var8; + var6 = var11; + } + } else { + return null; + } + } + } + + @ObfuscatedName("bo") + @ObfuscatedSignature( + signature = "(IILhu;Lhu;B)V", + garbageValue = "94" + ) + @Export("menuAction") + public void menuAction(int var1, int var2, TileLocation var3, TileLocation var4) { + ScriptEvent var5 = new ScriptEvent(); + WorldMapEvent var6 = new WorldMapEvent(var2, var3, var4); + var5.setArgs(new Object[]{var6}); + switch(var1) { + case 1008: + var5.setType(10); + break; + case 1009: + var5.setType(11); + break; + case 1010: + var5.setType(12); + break; + case 1011: + var5.setType(13); + break; + case 1012: + var5.setType(14); + } + + AbstractIndexCache.runScript(var5); + } + + @ObfuscatedName("bx") + @ObfuscatedSignature( + signature = "(I)Lak;", + garbageValue = "593642556" + ) + @Export("iconStart") + public AbstractWorldMapIcon iconStart() { + if(!this.cacheLoader.isLoaded()) { + return null; + } else if(!this.worldMapManager.isLoaded()) { + return null; + } else { + HashMap var1 = this.worldMapManager.buildIcons(); + this.__bq = new LinkedList(); + Iterator var2 = var1.values().iterator(); + + while(var2.hasNext()) { + List var3 = (List)var2.next(); + this.__bq.addAll(var3); + } + + this.iconIterator = this.__bq.iterator(); + return this.iconNext(); + } + } + + @ObfuscatedName("by") + @ObfuscatedSignature( + signature = "(B)Lak;", + garbageValue = "24" + ) + @Export("iconNext") + public AbstractWorldMapIcon iconNext() { + if(this.iconIterator == null) { + return null; + } else { + AbstractWorldMapIcon var1; + do { + if(!this.iconIterator.hasNext()) { + return null; + } + + var1 = (AbstractWorldMapIcon)this.iconIterator.next(); + } while(var1.__m_15() == -1); + + return var1; + } + } +} diff --git a/rs-client/src/main/java/WorldMapArea.java b/rs-client/src/main/java/WorldMapArea.java new file mode 100644 index 0000000000..afbfcdb8e0 --- /dev/null +++ b/rs-client/src/main/java/WorldMapArea.java @@ -0,0 +1,444 @@ +import java.util.Iterator; +import java.util.LinkedList; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ag") +@Implements("WorldMapArea") +public class WorldMapArea { + @ObfuscatedName("rc") + @ObfuscatedSignature( + signature = "Lbh;" + ) + @Export("friendSystem") + public static FriendSystem friendSystem; + @ObfuscatedName("eq") + @ObfuscatedGetter( + intValue = -256520591 + ) + @Export("port2") + static int port2; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1232579503 + ) + @Export("id0") + int id0; + @ObfuscatedName("f") + @Export("archiveName0") + String archiveName0; + @ObfuscatedName("q") + @Export("name0") + String name0; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 986239133 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 196514055 + ) + @Export("zoom0") + int zoom0; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lhu;" + ) + @Export("origin0") + TileLocation origin0; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1238532539 + ) + @Export("minX0") + int minX0; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 225384859 + ) + @Export("maxX0") + int maxX0; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 963380367 + ) + @Export("minY0") + int minY0; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 1025105175 + ) + @Export("maxY0") + int maxY0; + @ObfuscatedName("d") + @Export("isMain0") + boolean isMain0; + @ObfuscatedName("k") + @Export("sections") + LinkedList sections; + + public WorldMapArea() { + this.id0 = -1; + this.__w = -1; + this.zoom0 = -1; + this.origin0 = null; + this.minX0 = Integer.MAX_VALUE; + this.maxX0 = 0; + this.minY0 = Integer.MAX_VALUE; + this.maxY0 = 0; + this.isMain0 = false; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "1854512327" + ) + @Export("read") + public void read(Buffer var1, int var2) { + this.id0 = var2; + this.archiveName0 = var1.readStringCp1252NullTerminated(); + this.name0 = var1.readStringCp1252NullTerminated(); + this.origin0 = new TileLocation(var1.readInt()); + this.__w = var1.readInt(); + var1.readUnsignedByte(); + this.isMain0 = var1.readUnsignedByte() == 1; + this.zoom0 = var1.readUnsignedByte(); + int var3 = var1.readUnsignedByte(); + this.sections = new LinkedList(); + + for(int var4 = 0; var4 < var3; ++var4) { + this.sections.add(this.readWorldMapSection(var1)); + } + + this.setBounds(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;S)Lab;", + garbageValue = "-13154" + ) + @Export("readWorldMapSection") + WorldMapSection readWorldMapSection(Buffer var1) { + int var2 = var1.readUnsignedByte(); + WorldMapSectionType[] var3 = new WorldMapSectionType[]{WorldMapSectionType.__h_f, WorldMapSectionType.__h_w, WorldMapSectionType.__h_m, WorldMapSectionType.__h_q}; + WorldMapSectionType var4 = (WorldMapSectionType)ScriptFrame.findEnumerated(var3, var2); + Object var5 = null; + switch(var4.type) { + case 0: + var5 = new WorldMapSection2(); + break; + case 1: + var5 = new WorldMapSection3(); + break; + case 2: + var5 = new WorldMapSection1(); + break; + case 3: + var5 = new WorldMapSection0(); + break; + default: + throw new IllegalStateException(""); + } + + ((WorldMapSection)var5).read(var1); + return (WorldMapSection)var5; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIII)Z", + garbageValue = "1843012457" + ) + @Export("containsCoord") + public boolean containsCoord(int var1, int var2, int var3) { + Iterator var4 = this.sections.iterator(); + + WorldMapSection var5; + do { + if(!var4.hasNext()) { + return false; + } + + var5 = (WorldMapSection)var4.next(); + } while(!var5.containsCoord(var1, var2, var3)); + + return true; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(III)Z", + garbageValue = "-693447297" + ) + @Export("containsPosition") + public boolean containsPosition(int var1, int var2) { + int var3 = var1 / 64; + int var4 = var2 / 64; + if(var3 >= this.minX0 && var3 <= this.maxX0) { + if(var4 >= this.minY0 && var4 <= this.maxY0) { + Iterator var5 = this.sections.iterator(); + + WorldMapSection var6; + do { + if(!var5.hasNext()) { + return false; + } + + var6 = (WorldMapSection)var5.next(); + } while(!var6.containsPosition(var1, var2)); + + return true; + } else { + return false; + } + } else { + return false; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IIII)[I", + garbageValue = "745399916" + ) + @Export("position") + public int[] position(int var1, int var2, int var3) { + Iterator var4 = this.sections.iterator(); + + WorldMapSection var5; + do { + if(!var4.hasNext()) { + return null; + } + + var5 = (WorldMapSection)var4.next(); + } while(!var5.containsCoord(var1, var2, var3)); + + return var5.position(var1, var2, var3); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(III)Lhu;", + garbageValue = "1509069978" + ) + @Export("coord") + public TileLocation coord(int var1, int var2) { + Iterator var3 = this.sections.iterator(); + + WorldMapSection var4; + do { + if(!var3.hasNext()) { + return null; + } + + var4 = (WorldMapSection)var3.next(); + } while(!var4.containsPosition(var1, var2)); + + return var4.coord(var1, var2); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-17" + ) + @Export("setBounds") + void setBounds() { + Iterator var1 = this.sections.iterator(); + + while(var1.hasNext()) { + WorldMapSection var2 = (WorldMapSection)var1.next(); + var2.expandBounds(this); + } + + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-628294476" + ) + @Export("id") + public int id() { + return this.id0; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "-39" + ) + @Export("isMain") + public boolean isMain() { + return this.isMain0; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(B)Ljava/lang/String;", + garbageValue = "-65" + ) + @Export("archiveName") + public String archiveName() { + return this.archiveName0; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(B)Ljava/lang/String;", + garbageValue = "-66" + ) + @Export("name") + public String name() { + return this.name0; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1657905623" + ) + @Export("__a_39") + int __a_39() { + return this.__w; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-641284417" + ) + @Export("zoom") + public int zoom() { + return this.zoom0; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-18" + ) + @Export("minX") + public int minX() { + return this.minX0; + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "0" + ) + @Export("maxX") + public int maxX() { + return this.maxX0; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "272992390" + ) + @Export("minY") + public int minY() { + return this.minY0; + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1621710159" + ) + @Export("maxY") + public int maxY() { + return this.maxY0; + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "5" + ) + @Export("originX") + public int originX() { + return this.origin0.x; + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1875921633" + ) + @Export("originPlane") + public int originPlane() { + return this.origin0.plane; + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-135283879" + ) + @Export("originY") + public int originY() { + return this.origin0.y; + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(I)Lhu;", + garbageValue = "-1411761003" + ) + @Export("origin") + public TileLocation origin() { + return new TileLocation(this.origin0); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-1490951132" + ) + static int method427(int var0, int var1) { + if(var0 == -2) { + return 12345678; + } else if(var0 == -1) { + if(var1 < 0) { + var1 = 0; + } else if(var1 > 127) { + var1 = 127; + } + + var1 = 127 - var1; + return var1; + } else { + var1 = (var0 & 127) * var1 / 128; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & 65408) + var1; + } + } + + @ObfuscatedName("kc") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-26" + ) + static void method428() { + if(Client.oculusOrbState == 1) { + Client.__client_ij = true; + } + + } +} diff --git a/rs-client/src/main/java/WorldMapAreaData.java b/rs-client/src/main/java/WorldMapAreaData.java new file mode 100644 index 0000000000..fbec90b7d0 --- /dev/null +++ b/rs-client/src/main/java/WorldMapAreaData.java @@ -0,0 +1,297 @@ +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ae") +@Implements("WorldMapAreaData") +public class WorldMapAreaData extends WorldMapArea { + @ObfuscatedName("n") + @Export("surfaceOffsetY") + HashSet __n; + @ObfuscatedName("i") + @Export("__i") + HashSet __i; + @ObfuscatedName("a") + @Export("__a") + List __a; + + @ObfuscatedName("ce") + @ObfuscatedSignature( + signature = "(Lgr;Lgr;IZI)V", + garbageValue = "-1999841505" + ) + @Export("__ce_76") + void __ce_76(Buffer var1, Buffer var2, int var3, boolean var4) { + this.read(var1, var3); + int var5 = var2.__ag_302(); + this.__n = new HashSet(var5); + + int var6; + for(var6 = 0; var6 < var5; ++var6) { + class15 var7 = new class15(); + + try { + var7.method173(var2); + } catch (IllegalStateException var12) { + continue; + } + + this.__n.add(var7); + } + + var6 = var2.__ag_302(); + this.__i = new HashSet(var6); + + for(int var10 = 0; var10 < var6; ++var10) { + class39 var8 = new class39(); + + try { + var8.method714(var2); + } catch (IllegalStateException var11) { + continue; + } + + this.__i.add(var8); + } + + this.__cy_77(var2, var4); + } + + @ObfuscatedName("cy") + @ObfuscatedSignature( + signature = "(Lgr;ZB)V", + garbageValue = "48" + ) + @Export("__cy_77") + void __cy_77(Buffer var1, boolean var2) { + this.__a = new LinkedList(); + int var3 = var1.__ag_302(); + + for(int var4 = 0; var4 < var3; ++var4) { + int var5 = var1.__ap_310(); + TileLocation var6 = new TileLocation(var1.readInt()); + boolean var7 = var1.readUnsignedByte() == 1; + if(var2 || !var7) { + this.__a.add(new WorldMapIcon1((TileLocation)null, var6, var5, (WorldMapLabel)null)); + } + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Ljh;", + garbageValue = "1432369110" + ) + @Export("getSequenceDefinition") + public static SequenceDefinition getSequenceDefinition(int var0) { + SequenceDefinition var1 = (SequenceDefinition)SequenceDefinition.SequenceDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = SequenceDefinition.SequenceDefinition_indexCache.takeRecord(12, var0); + var1 = new SequenceDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + var1.init(); + SequenceDefinition.SequenceDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1767097678" + ) + public static boolean method711(int var0) { + return var0 >= class231.field2810.field2820 && var0 <= class231.field2822.field2820; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "15" + ) + public static boolean method708(int var0) { + return (var0 >> 30 & 1) != 0; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-714719812" + ) + static int method710(int var0, Script var1, boolean var2) { + boolean var3 = true; + Widget var4; + if(var0 >= 2000) { + var0 -= 1000; + var4 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + var3 = false; + } else { + var4 = var2?WorldMapIcon1.__t_i:class12.__n_n; + } + + int var11; + if(var0 == 1300) { + var11 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] - 1; + if(var11 >= 0 && var11 <= 9) { + var4.setAction(var11, Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]); + return 1; + } else { + --Interpreter.Interpreter_stringStackSize; + return 1; + } + } else { + int var6; + if(var0 == 1301) { + class179.Interpreter_intStackSize -= 2; + var11 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var6 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var4.parent = class204.getWidgetChild(var11, var6); + return 1; + } else if(var0 == 1302) { + var4.isScrollBar = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 1303) { + var4.dragZoneSize = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + return 1; + } else if(var0 == 1304) { + var4.dragThreshold = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + return 1; + } else if(var0 == 1305) { + var4.dataText = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + return 1; + } else if(var0 == 1306) { + var4.spellActionName = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + return 1; + } else if(var0 == 1307) { + var4.actions = null; + return 1; + } else if(var0 == 1308) { + var4.__fz = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else { + int var7; + byte[] var9; + if(var0 != 1350) { + byte var5; + if(var0 == 1351) { + class179.Interpreter_intStackSize -= 2; + var5 = 10; + var9 = new byte[]{(byte)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]}; + byte[] var10 = new byte[]{(byte)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]}; + BufferedSink.method3595(var4, var5, var9, var10); + return 1; + } else if(var0 == 1352) { + class179.Interpreter_intStackSize -= 3; + var11 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] - 1; + var6 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + if(var11 >= 0 && var11 <= 9) { + Varcs.method2168(var4, var11, var6, var7); + return 1; + } else { + throw new RuntimeException(); + } + } else if(var0 == 1353) { + var5 = 10; + var6 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Varcs.method2168(var4, var5, var6, var7); + return 1; + } else if(var0 == 1354) { + --class179.Interpreter_intStackSize; + var11 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] - 1; + if(var11 >= 0 && var11 <= 9) { + WorldMapSection3.method345(var4, var11); + return 1; + } else { + throw new RuntimeException(); + } + } else if(var0 == 1355) { + var5 = 10; + WorldMapSection3.method345(var4, var5); + return 1; + } else { + return 2; + } + } else { + byte[] var8 = null; + var9 = null; + if(var3) { + class179.Interpreter_intStackSize -= 10; + + for(var7 = 0; var7 < 10 && Interpreter.Interpreter_intStack[var7 + class179.Interpreter_intStackSize] >= 0; var7 += 2) { + ; + } + + if(var7 > 0) { + var8 = new byte[var7 / 2]; + var9 = new byte[var7 / 2]; + + for(var7 -= 2; var7 >= 0; var7 -= 2) { + var8[var7 / 2] = (byte)Interpreter.Interpreter_intStack[var7 + class179.Interpreter_intStackSize]; + var9[var7 / 2] = (byte)Interpreter.Interpreter_intStack[var7 + class179.Interpreter_intStackSize + 1]; + } + } + } else { + class179.Interpreter_intStackSize -= 2; + var8 = new byte[]{(byte)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]}; + var9 = new byte[]{(byte)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]}; + } + + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] - 1; + if(var7 >= 0 && var7 <= 9) { + BufferedSink.method3595(var4, var7, var8, var9); + return 1; + } else { + throw new RuntimeException(); + } + } + } + } + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(IIII)I", + garbageValue = "1705746695" + ) + static final int method712(int var0, int var1, int var2) { + if(var2 > 179) { + var1 /= 2; + } + + if(var2 > 192) { + var1 /= 2; + } + + if(var2 > 217) { + var1 /= 2; + } + + if(var2 > 243) { + var1 /= 2; + } + + int var3 = (var1 / 32 << 7) + (var0 / 4 << 10) + var2 / 2; + return var3; + } + + @ObfuscatedName("jb") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "-1746120861" + ) + static void method705(boolean var0) { + Client.tapToDrop = var0; + } +} diff --git a/rs-client/src/main/java/WorldMapCacheName.java b/rs-client/src/main/java/WorldMapCacheName.java new file mode 100644 index 0000000000..8a0dfcdb3d --- /dev/null +++ b/rs-client/src/main/java/WorldMapCacheName.java @@ -0,0 +1,189 @@ +import java.awt.Desktop; +import java.awt.Desktop.Action; +import java.net.URI; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("aw") +@Implements("WorldMapCacheName") +public class WorldMapCacheName { + @ObfuscatedName("qu") + @ObfuscatedSignature( + signature = "Lco;" + ) + @Export("pcmPlayer0") + static PcmPlayer pcmPlayer0; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Law;" + ) + @Export("WorldMapCacheName_details") + public static final WorldMapCacheName WorldMapCacheName_details; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Law;" + ) + @Export("WorldMapCacheName_compositeMap") + public static final WorldMapCacheName WorldMapCacheName_compositeMap; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Law;" + ) + @Export("WorldMapCacheName_compositeTexture") + public static final WorldMapCacheName WorldMapCacheName_compositeTexture; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Law;" + ) + @Export("WorldMapCacheName_area") + static final WorldMapCacheName WorldMapCacheName_area; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Law;" + ) + @Export("WorldMapCacheName_labels") + public static final WorldMapCacheName WorldMapCacheName_labels; + @ObfuscatedName("u") + @Export("name") + public final String name; + + static { + WorldMapCacheName_details = new WorldMapCacheName("details"); + WorldMapCacheName_compositeMap = new WorldMapCacheName("compositemap"); + WorldMapCacheName_compositeTexture = new WorldMapCacheName("compositetexture"); + WorldMapCacheName_area = new WorldMapCacheName("area"); + WorldMapCacheName_labels = new WorldMapCacheName("labels"); + } + + WorldMapCacheName(String var1) { + this.name = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([I[II)V", + garbageValue = "-1459849000" + ) + public static void method633(int[] var0, int[] var1) { + if(var0 != null && var1 != null) { + ByteArrayPool.__gi_g = var0; + WorldMapSection2.__ah_l = new int[var0.length]; + class179.__fe_e = new byte[var0.length][][]; + + for(int var2 = 0; var2 < ByteArrayPool.__gi_g.length; ++var2) { + class179.__fe_e[var2] = new byte[var1[var2]][]; + } + + } else { + ByteArrayPool.__gi_g = null; + WorldMapSection2.__ah_l = null; + class179.__fe_e = null; + } + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;ZZI)V", + garbageValue = "1532180466" + ) + public static void method635(String var0, boolean var1, boolean var2) { + if(var1) { + if(Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Action.BROWSE)) { + try { + Desktop.getDesktop().browse(new URI(var0)); + return; + } catch (Exception var4) { + ; + } + } + + if(class50.__af_f.startsWith("win")) { + ReflectionCheck.method5920(var0, 0); + } else if(class50.__af_f.startsWith("mac")) { + FaceNormal.method3237(var0, 1, "openjs"); + } else { + ReflectionCheck.method5920(var0, 2); + } + } else { + ReflectionCheck.method5920(var0, 3); + } + + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "199373952" + ) + public static int method634(int var0) { + int var1 = 0; + if(var0 < 0 || var0 >= 65536) { + var0 >>>= 16; + var1 += 16; + } + + if(var0 >= 256) { + var0 >>>= 8; + var1 += 8; + } + + if(var0 >= 16) { + var0 >>>= 4; + var1 += 4; + } + + if(var0 >= 4) { + var0 >>>= 2; + var1 += 2; + } + + if(var0 >= 1) { + var0 >>>= 1; + ++var1; + } + + return var0 + var1; + } + + @ObfuscatedName("gk") + @ObfuscatedSignature( + signature = "(Lbr;ZI)V", + garbageValue = "519207109" + ) + @Export("addPlayerToScene") + static void addPlayerToScene(Player var0, boolean var1) { + if(var0 != null && var0.isVisible() && !var0.isHidden) { + var0.isUnanimated = false; + if((Client.isLowDetail && Players.Players_count > 50 || Players.Players_count > 200) && var1 && var0.movementSequence == var0.idleSequence) { + var0.isUnanimated = true; + } + + int var2 = var0.x >> 7; + int var3 = var0.y >> 7; + if(var2 >= 0 && var2 < 104 && var3 >= 0 && var3 < 104) { + long var4 = FontName.method5637(0, 0, 0, false, var0.index); + if(var0.model0 != null && Client.cycle >= var0.animationCycleStart && Client.cycle < var0.animationCycleEnd) { + var0.isUnanimated = false; + var0.tileHeight = class32.getTileHeight(var0.x, var0.y, SoundSystem.plane); + var0.playerCycle = Client.cycle; + class65.scene.__z_240(SoundSystem.plane, var0.x, var0.y, var0.tileHeight, 60, var0, var0.__ac, var4, var0.__z, var0.__j, var0.__s, var0.__t); + } else { + if((var0.x & 127) == 64 && (var0.y & 127) == 64) { + if(Client.tileLastDrawnActor[var2][var3] == Client.viewportDrawCount) { + return; + } + + Client.tileLastDrawnActor[var2][var3] = Client.viewportDrawCount; + } + + var0.tileHeight = class32.getTileHeight(var0.x, var0.y, SoundSystem.plane); + var0.playerCycle = Client.cycle; + class65.scene.__a_239(SoundSystem.plane, var0.x, var0.y, var0.tileHeight, 60, var0, var0.__ac, var4, var0.__ay); + } + } + } + + } +} diff --git a/rs-client/src/main/java/WorldMapElement.java b/rs-client/src/main/java/WorldMapElement.java new file mode 100644 index 0000000000..906ec39875 --- /dev/null +++ b/rs-client/src/main/java/WorldMapElement.java @@ -0,0 +1,331 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ic") +@Implements("WorldMapElement") +public class WorldMapElement extends DualNode { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__ic_m") + public static AbstractIndexCache __ic_m; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ler;" + ) + @Export("WorldMapElement_cachedSprites") + static EvictingDualNodeHashTable WorldMapElement_cachedSprites; + @ObfuscatedName("fs") + @ObfuscatedSignature( + signature = "Lkz;" + ) + @Export("fonts") + static Fonts fonts; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1579051565 + ) + @Export("__o") + public final int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 2012857993 + ) + @Export("sprite1") + public int sprite1; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -322924875 + ) + @Export("sprite2") + int sprite2; + @ObfuscatedName("l") + @Export("__l") + public String __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -231067 + ) + @Export("__e") + public int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 1184517129 + ) + @Export("textSize") + public int textSize; + @ObfuscatedName("k") + @Export("strings") + public String[] strings; + @ObfuscatedName("n") + @Export("string1") + public String string1; + @ObfuscatedName("i") + @Export("__i") + int[] __i; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = 1336803515 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -1825795359 + ) + @Export("__z") + int __z; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = -1007121521 + ) + @Export("__j") + int __j; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = -1209054101 + ) + @Export("__s") + int __s; + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lju;" + ) + public class266 field3287; + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "Lip;" + ) + public class249 field3301; + @ObfuscatedName("h") + @Export("__h") + int[] __h; + @ObfuscatedName("b") + @Export("__b") + byte[] __b; + @ObfuscatedName("c") + @ObfuscatedGetter( + intValue = -653112729 + ) + @Export("category") + public int category; + + static { + WorldMapElement_cachedSprites = new EvictingDualNodeHashTable(256); + } + + public WorldMapElement(int var1) { + this.sprite1 = -1; + this.sprite2 = -1; + this.textSize = 0; + this.strings = new String[5]; + this.__a = Integer.MAX_VALUE; + this.__z = Integer.MAX_VALUE; + this.__j = Integer.MIN_VALUE; + this.__s = Integer.MIN_VALUE; + this.field3287 = class266.field3527; + this.field3301 = class249.field3273; + this.category = -1; + this.__o = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "81" + ) + @Export("read") + public void read(Buffer var1) { + while(true) { + int var2 = var1.readUnsignedByte(); + if(var2 == 0) { + return; + } + + this.readNext(var1, var2); + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;II)V", + garbageValue = "-1197630144" + ) + @Export("readNext") + void readNext(Buffer var1, int var2) { + if(var2 == 1) { + this.sprite1 = var1.__ap_310(); + } else if(var2 == 2) { + this.sprite2 = var1.__ap_310(); + } else if(var2 == 3) { + this.__l = var1.readStringCp1252NullTerminated(); + } else if(var2 == 4) { + this.__e = var1.readMedium(); + } else if(var2 == 5) { + var1.readMedium(); + } else if(var2 == 6) { + this.textSize = var1.readUnsignedByte(); + } else { + int var3; + if(var2 == 7) { + var3 = var1.readUnsignedByte(); + if((var3 & 1) == 0) { + ; + } + + if((var3 & 2) == 2) { + ; + } + } else if(var2 == 8) { + var1.readUnsignedByte(); + } else if(var2 >= 10 && var2 <= 14) { + this.strings[var2 - 10] = var1.readStringCp1252NullTerminated(); + } else if(var2 == 15) { + var3 = var1.readUnsignedByte(); + this.__i = new int[var3 * 2]; + + int var4; + for(var4 = 0; var4 < var3 * 2; ++var4) { + this.__i[var4] = var1.__aq_303(); + } + + var1.readInt(); + var4 = var1.readUnsignedByte(); + this.__h = new int[var4]; + + int var5; + for(var5 = 0; var5 < this.__h.length; ++var5) { + this.__h[var5] = var1.readInt(); + } + + this.__b = new byte[var3]; + + for(var5 = 0; var5 < var3; ++var5) { + this.__b[var5] = var1.readByte(); + } + } else if(var2 != 16) { + if(var2 == 17) { + this.string1 = var1.readStringCp1252NullTerminated(); + } else if(var2 == 18) { + var1.__ap_310(); + } else if(var2 == 19) { + this.category = var1.__ag_302(); + } else if(var2 == 21) { + var1.readInt(); + } else if(var2 == 22) { + var1.readInt(); + } else if(var2 == 23) { + var1.readUnsignedByte(); + var1.readUnsignedByte(); + var1.readUnsignedByte(); + } else if(var2 == 24) { + var1.__aq_303(); + var1.__aq_303(); + } else if(var2 == 25) { + var1.__ap_310(); + } else if(var2 == 28) { + var1.readUnsignedByte(); + } else if(var2 == 29) { + class266[] var6 = new class266[]{class266.field3527, class266.field3526, class266.field3529}; + this.field3287 = (class266)ScriptFrame.findEnumerated(var6, var1.readUnsignedByte()); + } else if(var2 == 30) { + this.field3301 = (class249)ScriptFrame.findEnumerated(UnderlayDefinition.method4839(), var1.readUnsignedByte()); + } + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1799485224" + ) + @Export("__w_409") + public void __w_409() { + if(this.__i != null) { + for(int var1 = 0; var1 < this.__i.length; var1 += 2) { + if(this.__i[var1] < this.__a) { + this.__a = this.__i[var1]; + } else if(this.__i[var1] > this.__j) { + this.__j = this.__i[var1]; + } + + if(this.__i[var1 + 1] < this.__z) { + this.__z = this.__i[var1 + 1]; + } else if(this.__i[var1 + 1] > this.__s) { + this.__s = this.__i[var1 + 1]; + } + } + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(ZI)Lln;", + garbageValue = "628564789" + ) + @Export("getSprite") + public Sprite getSprite(boolean var1) { + int var2 = this.sprite1; + return this.getSprite0(var2); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IB)Lln;", + garbageValue = "-34" + ) + @Export("getSprite0") + Sprite getSprite0(int var1) { + if(var1 < 0) { + return null; + } else { + Sprite var2 = (Sprite)WorldMapElement_cachedSprites.get((long)var1); + if(var2 != null) { + return var2; + } else { + var2 = class322.readSprite(__ic_m, var1, 0); + if(var2 != null) { + WorldMapElement_cachedSprites.put(var2, (long)var1); + } + + return var2; + } + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "821701099" + ) + @Export("__g_410") + public int __g_410() { + return this.__o; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Lko;", + garbageValue = "-31" + ) + public static class310 method4783(int var0) { + class310[] var1 = new class310[]{class310.field3805, class310.field3807, class310.field3806}; + class310[] var2 = var1; + + for(int var3 = 0; var3 < var2.length; ++var3) { + class310 var4 = var2[var3]; + if(var0 == var4.field3804) { + return var4; + } + } + + return null; + } +} diff --git a/rs-client/src/main/java/WorldMapEvent.java b/rs-client/src/main/java/WorldMapEvent.java new file mode 100644 index 0000000000..e264324840 --- /dev/null +++ b/rs-client/src/main/java/WorldMapEvent.java @@ -0,0 +1,269 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ap") +@Implements("WorldMapEvent") +public class WorldMapEvent { + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("__ap_w") + static IndexedSprite[] __ap_w; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 264384233 + ) + @Export("mapElement") + public int mapElement; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lhu;" + ) + @Export("coord1") + public TileLocation coord1; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lhu;" + ) + @Export("coord2") + public TileLocation coord2; + + @ObfuscatedSignature( + signature = "(ILhu;Lhu;)V" + ) + public WorldMapEvent(int var1, TileLocation var2, TileLocation var3) { + this.mapElement = var1; + this.coord1 = var2; + this.coord2 = var3; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-782761258" + ) + public static int method780(int var0) { + return UnitPriceComparator.method134(ViewportMouse.ViewportMouse_entityTags[var0]); + } + + @ObfuscatedName("iy") + @ObfuscatedSignature( + signature = "(IIIIB)V", + garbageValue = "2" + ) + static final void method781(int var0, int var1, int var2, int var3) { + if(Client.isItemSelected == 0 && !Client.isSpellSelected) { + Tiles.method1106("Walk here", "", 23, 0, var0 - var2, var1 - var3); + } + + long var4 = -1L; + long var6 = -1L; + int var8 = 0; + + while(true) { + int var10 = ViewportMouse.ViewportMouse_entityCount; + if(var8 >= var10) { + if(-1L != var4) { + var8 = UnitPriceComparator.method134(var4); + int var9 = (int)(var4 >>> 7 & 127L); + Player var11 = Client.players[Client.combatTargetPlayerIndex]; + TotalQuantityComparator.addPlayerToMenu(var11, Client.combatTargetPlayerIndex, var8, var9); + } + + return; + } + + long var26 = ViewportMouse.ViewportMouse_entityTags[var8]; + if(var6 != var26) { + label338: { + var6 = var26; + int var15 = method780(var8); + long var18 = ViewportMouse.ViewportMouse_entityTags[var8]; + int var17 = (int)(var18 >>> 7 & 127L); + var17 = var17; + int var28 = GrandExchangeEvent.method80(var8); + int var19 = ClientPreferences.method1808(var8); + if(var28 == 2 && class65.scene.getObjectFlags(SoundSystem.plane, var15, var17, var26) >= 0) { + ObjectDefinition var20 = class50.getObjectDefinition(var19); + if(var20.transforms != null) { + var20 = var20.transform(); + } + + if(var20 == null) { + break label338; + } + + if(Client.isItemSelected == 1) { + Tiles.method1106("Use", Client.selectedItemName + " " + "->" + " " + BufferedFile.colorStartTag(65535) + var20.name, 1, var19, var15, var17); + } else if(Client.isSpellSelected) { + if((FloorDecoration.selectedSpellFlags & 4) == 4) { + Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + BufferedFile.colorStartTag(65535) + var20.name, 2, var19, var15, var17); + } + } else { + String[] var29 = var20.actions; + if(var29 != null) { + for(int var30 = 4; var30 >= 0; --var30) { + if(var29[var30] != null) { + short var23 = 0; + if(var30 == 0) { + var23 = 3; + } + + if(var30 == 1) { + var23 = 4; + } + + if(var30 == 2) { + var23 = 5; + } + + if(var30 == 3) { + var23 = 6; + } + + if(var30 == 4) { + var23 = 1001; + } + + Tiles.method1106(var29[var30], BufferedFile.colorStartTag(65535) + var20.name, var23, var19, var15, var17); + } + } + } + + Tiles.method1106("Examine", BufferedFile.colorStartTag(65535) + var20.name, 1002, var20.id, var15, var17); + } + } + + int var21; + Npc var22; + Player var24; + int[] var36; + int var38; + if(var28 == 1) { + Npc var33 = Client.npcs[var19]; + if(var33 == null) { + break label338; + } + + if(var33.definition.size == 1 && (var33.x & 127) == 64 && (var33.y & 127) == 64) { + for(var21 = 0; var21 < Client.npcCount; ++var21) { + var22 = Client.npcs[Client.npcIndices[var21]]; + if(var22 != null && var33 != var22 && var22.definition.size == 1 && var22.x == var33.x && var22.y == var33.y) { + Tile.addNpcToMenu(var22.definition, Client.npcIndices[var21], var15, var17); + } + } + + var21 = Players.Players_count; + var36 = Players.Players_indices; + + for(var38 = 0; var38 < var21; ++var38) { + var24 = Client.players[var36[var38]]; + if(var24 != null && var24.x == var33.x && var24.y == var33.y) { + TotalQuantityComparator.addPlayerToMenu(var24, var36[var38], var15, var17); + } + } + } + + Tile.addNpcToMenu(var33.definition, var19, var15, var17); + } + + if(var28 == 0) { + Player var34 = Client.players[var19]; + if(var34 == null) { + break label338; + } + + if((var34.x & 127) == 64 && (var34.y & 127) == 64) { + for(var21 = 0; var21 < Client.npcCount; ++var21) { + var22 = Client.npcs[Client.npcIndices[var21]]; + if(var22 != null && var22.definition.size == 1 && var34.x == var22.x && var34.y == var22.y) { + Tile.addNpcToMenu(var22.definition, Client.npcIndices[var21], var15, var17); + } + } + + var21 = Players.Players_count; + var36 = Players.Players_indices; + + for(var38 = 0; var38 < var21; ++var38) { + var24 = Client.players[var36[var38]]; + if(var24 != null && var24 != var34 && var24.x == var34.x && var24.y == var34.y) { + TotalQuantityComparator.addPlayerToMenu(var24, var36[var38], var15, var17); + } + } + } + + if(var19 != Client.combatTargetPlayerIndex) { + TotalQuantityComparator.addPlayerToMenu(var34, var19, var15, var17); + } else { + var4 = var26; + } + } + + if(var28 == 3) { + NodeDeque var35 = Client.groundItems[SoundSystem.plane][var15][var17]; + if(var35 != null) { + for(GroundItem var39 = (GroundItem)var35.first(); var39 != null; var39 = (GroundItem)var35.next()) { + ItemDefinition var37 = Skills.getItemDefinition(var39.id); + if(Client.isItemSelected == 1) { + Tiles.method1106("Use", Client.selectedItemName + " " + "->" + " " + BufferedFile.colorStartTag(16748608) + var37.name, 16, var39.id, var15, var17); + } else if(Client.isSpellSelected) { + if((FloorDecoration.selectedSpellFlags & 1) == 1) { + Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + BufferedFile.colorStartTag(16748608) + var37.name, 17, var39.id, var15, var17); + } + } else { + String[] var31 = var37.groundActions; + + for(int var32 = 4; var32 >= 0; --var32) { + if(var31 != null && var31[var32] != null) { + byte var25 = 0; + if(var32 == 0) { + var25 = 18; + } + + if(var32 == 1) { + var25 = 19; + } + + if(var32 == 2) { + var25 = 20; + } + + if(var32 == 3) { + var25 = 21; + } + + if(var32 == 4) { + var25 = 22; + } + + Tiles.method1106(var31[var32], BufferedFile.colorStartTag(16748608) + var37.name, var25, var39.id, var15, var17); + } else if(var32 == 2) { + Tiles.method1106("Take", BufferedFile.colorStartTag(16748608) + var37.name, 20, var39.id, var15, var17); + } + } + + Tiles.method1106("Examine", BufferedFile.colorStartTag(16748608) + var37.name, 1004, var39.id, var15, var17); + } + } + } + } + } + } + + ++var8; + } + } + + @ObfuscatedName("jw") + @ObfuscatedSignature( + signature = "(B)Z", + garbageValue = "43" + ) + static boolean method779() { + return Client.tapToDrop || KeyHandler.KeyHandler_pressedKeys[81]; + } +} diff --git a/rs-client/src/main/java/WorldMapIcon1.java b/rs-client/src/main/java/WorldMapIcon1.java new file mode 100644 index 0000000000..6d3253c553 --- /dev/null +++ b/rs-client/src/main/java/WorldMapIcon1.java @@ -0,0 +1,219 @@ +import java.security.SecureRandom; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("t") +@Implements("WorldMapIcon1") +public class WorldMapIcon1 extends AbstractWorldMapIcon { + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("__t_i") + static Widget __t_i; + @ObfuscatedName("db") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache3") + static IndexCache indexCache3; + @ObfuscatedName("ec") + @Export("secureRandom") + static SecureRandom secureRandom; + @ObfuscatedName("hq") + @ObfuscatedGetter( + intValue = 490189491 + ) + @Export("cameraPitch") + static int cameraPitch; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -1722323621 + ) + @Export("__m") + final int __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Laj;" + ) + @Export("label0") + final WorldMapLabel label0; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 364253793 + ) + @Export("__q") + final int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -362031241 + ) + @Export("__w") + final int __w; + + @ObfuscatedSignature( + signature = "(Lhu;Lhu;ILaj;)V" + ) + WorldMapIcon1(TileLocation var1, TileLocation var2, int var3, WorldMapLabel var4) { + super(var1, var2); + this.__m = var3; + this.label0 = var4; + WorldMapElement var5 = ViewportMouse.getWorldMapElement(this.__m_15()); + Sprite var6 = var5.getSprite(false); + if(var6 != null) { + this.__q = var6.subWidth; + this.__w = var6.subHeight; + } else { + this.__q = 0; + this.__w = 0; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1990181988" + ) + @Export("__m_15") + public int __m_15() { + return this.__m; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Laj;", + garbageValue = "1159446036" + ) + @Export("__f_16") + WorldMapLabel __f_16() { + return this.label0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "75" + ) + @Export("__q_17") + int __q_17() { + return this.__q; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1558233611" + ) + @Export("__w_18") + int __w_18() { + return this.__w; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;Ljava/lang/String;I)V", + garbageValue = "-460290173" + ) + static void method219(int var0, String var1, String var2) { + GrandExchangeEvents.addChatMessage(var0, var1, var2, (String)null); + } + + @ObfuscatedName("fz") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-252304353" + ) + static final void method212() { + for(int var0 = 0; var0 < Client.soundEffectCount; ++var0) { + --Client.queuedSoundEffectDelays[var0]; + if(Client.queuedSoundEffectDelays[var0] >= -10) { + SoundEffect var9 = Client.soundEffects[var0]; + if(var9 == null) { + Object var10000 = null; + var9 = SoundEffect.readSoundEffect(class25.indexCache4, Client.soundEffectIds[var0], 0); + if(var9 == null) { + continue; + } + + Client.queuedSoundEffectDelays[var0] += var9.__q_174(); + Client.soundEffects[var0] = var9; + } + + if(Client.queuedSoundEffectDelays[var0] < 0) { + int var2; + if(Client.soundLocations[var0] != 0) { + int var3 = (Client.soundLocations[var0] & 255) * 128; + int var4 = Client.soundLocations[var0] >> 16 & 255; + int var5 = var4 * 128 + 64 - Canvas.localPlayer.x; + if(var5 < 0) { + var5 = -var5; + } + + int var6 = Client.soundLocations[var0] >> 8 & 255; + int var7 = var6 * 128 + 64 - Canvas.localPlayer.y; + if(var7 < 0) { + var7 = -var7; + } + + int var8 = var5 + var7 - 128; + if(var8 > var3) { + Client.queuedSoundEffectDelays[var0] = -100; + continue; + } + + if(var8 < 0) { + var8 = 0; + } + + var2 = (var3 - var8) * Client.__client_qc / var3; + } else { + var2 = Client.__client_qp; + } + + if(var2 > 0) { + RawSound var10 = var9.toRawSound().resample(MilliClock.decimator); + RawPcmStream var11 = RawPcmStream.method2497(var10, 100, var2); + var11.__x_181(Client.unknownSoundValues1[var0] - 1); + TaskHandler.pcmStreamMixer.addSubStream(var11); + } + + Client.queuedSoundEffectDelays[var0] = -100; + } + } else { + --Client.soundEffectCount; + + for(int var1 = var0; var1 < Client.soundEffectCount; ++var1) { + Client.soundEffectIds[var1] = Client.soundEffectIds[var1 + 1]; + Client.soundEffects[var1] = Client.soundEffects[var1 + 1]; + Client.unknownSoundValues1[var1] = Client.unknownSoundValues1[var1 + 1]; + Client.queuedSoundEffectDelays[var1] = Client.queuedSoundEffectDelays[var1 + 1]; + Client.soundLocations[var1] = Client.soundLocations[var1 + 1]; + } + + --var0; + } + } + + if(Client.__client_qq) { + boolean var12; + if(class214.__hf_o != 0) { + var12 = true; + } else { + var12 = class214.midiPcmStream.isReady(); + } + + if(!var12) { + if(Client.__client_qf != 0 && Client.__client_qy != -1) { + Login.method2076(UserComparator3.indexCache6, Client.__client_qy, 0, Client.__client_qf, false); + } + + Client.__client_qq = false; + } + } + + } +} diff --git a/rs-client/src/main/java/WorldMapIcon2.java b/rs-client/src/main/java/WorldMapIcon2.java new file mode 100644 index 0000000000..46ab9b277f --- /dev/null +++ b/rs-client/src/main/java/WorldMapIcon2.java @@ -0,0 +1,198 @@ +import java.io.File; +import java.io.RandomAccessFile; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("r") +@Implements("WorldMapIcon2") +public class WorldMapIcon2 extends AbstractWorldMapIcon { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -985436813 + ) + @Export("__m") + final int __m; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lav;" + ) + @Export("__f") + final WorldMapRegion __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -25914375 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Laj;" + ) + @Export("label0") + WorldMapLabel label0; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 927871683 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1431936619 + ) + @Export("__u") + int __u; + + @ObfuscatedSignature( + signature = "(Lhu;Lhu;ILav;)V" + ) + WorldMapIcon2(TileLocation var1, TileLocation var2, int var3, WorldMapRegion var4) { + super(var1, var2); + this.__m = var3; + this.__f = var4; + this.__z_27(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1990181988" + ) + public int __m_15() { + return this.__q; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)Laj;", + garbageValue = "1159446036" + ) + WorldMapLabel __f_16() { + return this.label0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "75" + ) + int __q_17() { + return this.__o; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1558233611" + ) + int __w_18() { + return this.__u; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-806344204" + ) + @Export("__z_27") + void __z_27() { + this.__q = class50.getObjectDefinition(this.__m).transform().mapIconId; + this.label0 = this.__f.__ab_56(ViewportMouse.getWorldMapElement(this.__q)); + WorldMapElement var1 = ViewportMouse.getWorldMapElement(this.__m_15()); + Sprite var2 = var1.getSprite(false); + if(var2 != null) { + this.__o = var2.subWidth; + this.__u = var2.subHeight; + } else { + this.__o = 0; + this.__u = 0; + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Lgl;", + garbageValue = "1026409510" + ) + static LoginPacket[] method300() { + return new LoginPacket[]{LoginPacket.__gl_q, LoginPacket.__gl_w, LoginPacket.__gl_m, LoginPacket.__gl_o, LoginPacket.__gl_f}; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Ljava/io/File;", + garbageValue = "16723968" + ) + public static File method315(String var0) { + if(!class171.__fo_m) { + throw new RuntimeException(""); + } else { + File var1 = (File)class171.__fo_q.get(var0); + if(var1 != null) { + return var1; + } else { + File var2 = new File(class171.__fo_f, var0); + RandomAccessFile var3 = null; + + try { + File var4 = new File(var2.getParent()); + if(!var4.exists()) { + throw new RuntimeException(""); + } else { + var3 = new RandomAccessFile(var2, "rw"); + int var5 = var3.read(); + var3.seek(0L); + var3.write(var5); + var3.seek(0L); + var3.close(); + class171.__fo_q.put(var0, var2); + return var2; + } + } catch (Exception var8) { + try { + if(var3 != null) { + var3.close(); + var3 = null; + } + } catch (Exception var7) { + ; + } + + throw new RuntimeException(); + } + } + } + } + + @ObfuscatedName("hw") + @ObfuscatedSignature( + signature = "(Lbr;IIBB)V", + garbageValue = "1" + ) + static final void method316(Player var0, int var1, int var2, byte var3) { + int var4 = var0.pathX[0]; + int var5 = var0.pathY[0]; + int var6 = var0.transformedSize(); + if(var4 >= var6 && var4 < 104 - var6 && var5 >= var6 && var5 < 104 - var6) { + if(var1 >= var6 && var1 < 104 - var6 && var2 >= var6 && var2 < 104 - var6) { + int var9 = var0.transformedSize(); + Client.field895.field2120 = var1; + Client.field895.field2121 = var2; + Client.field895.field2122 = 1; + Client.field895.field2123 = 1; + class65 var10 = Client.field895; + int var11 = NetSocket.method3571(var4, var5, var9, var10, Client.collisionMaps[var0.plane], true, Client.__client_tp, Client.__client_th); + if(var11 >= 1) { + for(int var12 = 0; var12 < var11 - 1; ++var12) { + var0.__a_131(Client.__client_tp[var12], Client.__client_th[var12], var3); + } + + } + } + } + } +} diff --git a/rs-client/src/main/java/WorldMapIndexCacheLoader.java b/rs-client/src/main/java/WorldMapIndexCacheLoader.java new file mode 100644 index 0000000000..5333cd9d1b --- /dev/null +++ b/rs-client/src/main/java/WorldMapIndexCacheLoader.java @@ -0,0 +1,109 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ls") +@Implements("WorldMapIndexCacheLoader") +public class WorldMapIndexCacheLoader { + @ObfuscatedName("o") + @Export("cacheName") + String cacheName; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("indexCache") + AbstractIndexCache indexCache; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 624113115 + ) + @Export("percentLoaded0") + int percentLoaded0; + @ObfuscatedName("l") + @Export("isLoaded0") + boolean isLoaded0; + + @ObfuscatedSignature( + signature = "(Lir;)V" + ) + WorldMapIndexCacheLoader(AbstractIndexCache var1) { + this.percentLoaded0 = 0; + this.isLoaded0 = false; + this.indexCache = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)V", + garbageValue = "-1867776989" + ) + @Export("reset") + void reset(String var1) { + if(var1 != null && !var1.isEmpty()) { + if(var1 != this.cacheName) { + this.cacheName = var1; + this.percentLoaded0 = 0; + this.isLoaded0 = false; + this.load(); + } + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "2019633217" + ) + @Export("load") + int load() { + if(this.percentLoaded0 < 33) { + if(!this.indexCache.tryLoadRecordByNames(WorldMapCacheName.WorldMapCacheName_compositeMap.name, this.cacheName)) { + return this.percentLoaded0; + } + + this.percentLoaded0 = 33; + } + + if(this.percentLoaded0 == 33) { + if(this.indexCache.__ag_401(WorldMapCacheName.WorldMapCacheName_compositeTexture.name, this.cacheName) && !this.indexCache.tryLoadRecordByNames(WorldMapCacheName.WorldMapCacheName_compositeTexture.name, this.cacheName)) { + return this.percentLoaded0; + } + + this.percentLoaded0 = 66; + } + + if(this.percentLoaded0 == 66) { + if(!this.indexCache.tryLoadRecordByNames(this.cacheName, WorldMapCacheName.WorldMapCacheName_labels.name)) { + return this.percentLoaded0; + } + + this.percentLoaded0 = 100; + this.isLoaded0 = true; + } + + return this.percentLoaded0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(S)Z", + garbageValue = "-16324" + ) + @Export("isLoaded") + boolean isLoaded() { + return this.isLoaded0; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1342963007" + ) + @Export("percentLoaded") + int percentLoaded() { + return this.percentLoaded0; + } +} diff --git a/rs-client/src/main/java/WorldMapLabel.java b/rs-client/src/main/java/WorldMapLabel.java new file mode 100644 index 0000000000..f73b839a03 --- /dev/null +++ b/rs-client/src/main/java/WorldMapLabel.java @@ -0,0 +1,266 @@ +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InvalidClassException; +import java.io.ObjectInputStream; +import java.io.OptionalDataException; +import java.io.StreamCorruptedException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; +import net.runelite.rs.Reflection; + +@ObfuscatedName("aj") +@Implements("WorldMapLabel") +public class WorldMapLabel { + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1536028937 + ) + @Export("__aj_e") + public static int __aj_e; + @ObfuscatedName("m") + @Export("text") + String text; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -471061617 + ) + @Export("width") + int width; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -85027761 + ) + @Export("height") + int height; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Ls;" + ) + @Export("size") + WorldMapLabelSize size; + + @ObfuscatedSignature( + signature = "(Ljava/lang/String;IILs;)V" + ) + WorldMapLabel(String var1, int var2, int var3, WorldMapLabelSize var4) { + this.text = var1; + this.width = var2; + this.height = var3; + this.size = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lhx;I)V", + garbageValue = "-1747135919" + ) + public static void method443(PacketBuffer var0) { + ReflectionCheck var1 = (ReflectionCheck)class322.reflectionChecks.last(); + if(var1 != null) { + int var2 = var0.index; + var0.writeInt(var1.id); + + for(int var3 = 0; var3 < var1.size; ++var3) { + if(var1.creationErrors[var3] != 0) { + var0.writeByte(var1.creationErrors[var3]); + } else { + try { + int var4 = var1.operations[var3]; + Field var5; + int var6; + if(var4 == 0) { + var5 = var1.fields[var3]; + var6 = Reflection.getInt(var5, (Object)null); + var0.writeByte(0); + var0.writeInt(var6); + } else if(var4 == 1) { + var5 = var1.fields[var3]; + Reflection.setInt(var5, (Object)null, var1.intReplaceValues[var3]); + var0.writeByte(0); + } else if(var4 == 2) { + var5 = var1.fields[var3]; + var6 = var5.getModifiers(); + var0.writeByte(0); + var0.writeInt(var6); + } + + Method var25; + if(var4 != 3) { + if(var4 == 4) { + var25 = var1.methods[var3]; + var6 = var25.getModifiers(); + var0.writeByte(0); + var0.writeInt(var6); + } + } else { + var25 = var1.methods[var3]; + byte[][] var10 = var1.arguments[var3]; + Object[] var7 = new Object[var10.length]; + + for(int var8 = 0; var8 < var10.length; ++var8) { + ObjectInputStream var9 = new ObjectInputStream(new ByteArrayInputStream(var10[var8])); + var7[var8] = var9.readObject(); + } + + Object var11 = Reflection.invoke(var25, (Object)null, var7); + if(var11 == null) { + var0.writeByte(0); + } else if(var11 instanceof Number) { + var0.writeByte(1); + var0.writeLong(((Number)var11).longValue()); + } else if(var11 instanceof String) { + var0.writeByte(2); + var0.writeStringCp1252NullTerminated((String)var11); + } else { + var0.writeByte(4); + } + } + } catch (ClassNotFoundException var13) { + var0.writeByte(-10); + } catch (InvalidClassException var14) { + var0.writeByte(-11); + } catch (StreamCorruptedException var15) { + var0.writeByte(-12); + } catch (OptionalDataException var16) { + var0.writeByte(-13); + } catch (IllegalAccessException var17) { + var0.writeByte(-14); + } catch (IllegalArgumentException var18) { + var0.writeByte(-15); + } catch (InvocationTargetException var19) { + var0.writeByte(-16); + } catch (SecurityException var20) { + var0.writeByte(-17); + } catch (IOException var21) { + var0.writeByte(-18); + } catch (NullPointerException var22) { + var0.writeByte(-19); + } catch (Exception var23) { + var0.writeByte(-20); + } catch (Throwable var24) { + var0.writeByte(-21); + } + } + } + + var0.__aa_312(var2); + var1.remove(); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "823291412" + ) + static int method442(int var0, int var1) { + ItemContainer var2 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); + return var2 == null?0:(var1 >= 0 && var1 < var2.quantities.length?var2.quantities[var1]:0); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)[Llq;", + garbageValue = "-1374541046" + ) + public static IndexedSprite[] method444() { + IndexedSprite[] var0 = new IndexedSprite[class328.indexedSpriteCount]; + + for(int var1 = 0; var1 < class328.indexedSpriteCount; ++var1) { + IndexedSprite var2 = var0[var1] = new IndexedSprite(); + var2.width = class328.indexedSpriteWidth; + var2.height = class328.indexedSpriteHeight; + var2.xOffset = class328.indexedSpriteOffsetXs[var1]; + var2.yOffset = class328.indexedSpriteOffsetYs[var1]; + var2.subWidth = VarbitDefinition.indexedSpriteWidths[var1]; + var2.subHeight = SecureRandomCallable.indexedSpriteHeights[var1]; + var2.palette = class328.indexedSpritePalette; + var2.pixels = class328.spritePixels[var1]; + } + + class328.indexedSpriteOffsetXs = null; + class328.indexedSpriteOffsetYs = null; + VarbitDefinition.indexedSpriteWidths = null; + SecureRandomCallable.indexedSpriteHeights = null; + class328.indexedSpritePalette = null; + class328.spritePixels = null; + return var0; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lbt;Lbt;IZI)I", + garbageValue = "1459100828" + ) + @Export("compareWorlds") + static int compareWorlds(World var0, World var1, int var2, boolean var3) { + if(var2 == 1) { + int var4 = var0.population; + int var5 = var1.population; + if(!var3) { + if(var4 == -1) { + var4 = 2001; + } + + if(var5 == -1) { + var5 = 2001; + } + } + + return var4 - var5; + } else { + return var2 == 2?var0.location - var1.location:(var2 == 3?(var0.activity.equals("-")?(var1.activity.equals("-")?0:(var3?-1:1)):(var1.activity.equals("-")?(var3?1:-1):var0.activity.compareTo(var1.activity))):(var2 == 4?(var0.__a_147()?(var1.__a_147()?0:1):(var1.__a_147()?-1:0)):(var2 == 5?(var0.__x_145()?(var1.__x_145()?0:1):(var1.__x_145()?-1:0)):(var2 == 6?(var0.__d_146()?(var1.__d_146()?0:1):(var1.__d_146()?-1:0)):(var2 == 7?(var0.__e_144()?(var1.__e_144()?0:1):(var1.__e_144()?-1:0)):var0.id - var1.id))))); + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "60" + ) + public static void method440() { + NpcDefinition.NpcDefinition_cached.clear(); + NpcDefinition.NpcDefinition_cachedModels.clear(); + } + + @ObfuscatedName("gx") + @ObfuscatedSignature( + signature = "(IIII)V", + garbageValue = "-1610474394" + ) + @Export("worldToScreen") + static final void worldToScreen(int var0, int var1, int var2) { + if(var0 >= 128 && var1 >= 128 && var0 <= 13056 && var1 <= 13056) { + int var3 = class32.getTileHeight(var0, var1, SoundSystem.plane) - var2; + var0 -= WorldMapSection1.cameraX; + var3 -= GrandExchangeEvents.cameraY; + var1 -= class11.cameraZ; + int var4 = Rasterizer3D.Rasterizer3D_sine[WorldMapIcon1.cameraPitch]; + int var5 = Rasterizer3D.Rasterizer3D_cosine[WorldMapIcon1.cameraPitch]; + int var6 = Rasterizer3D.Rasterizer3D_sine[MusicPatchNode.cameraYaw]; + int var7 = Rasterizer3D.Rasterizer3D_cosine[MusicPatchNode.cameraYaw]; + int var8 = var0 * var7 + var6 * var1 >> 16; + var1 = var7 * var1 - var0 * var6 >> 16; + var0 = var8; + var8 = var3 * var5 - var4 * var1 >> 16; + var1 = var5 * var1 + var3 * var4 >> 16; + if(var1 >= 50) { + Client.viewportTempX = var0 * Client.viewportZoom / var1 + Client.viewportWidth / 2; + Client.viewportTempY = var8 * Client.viewportZoom / var1 + Client.viewportHeight / 2; + } else { + Client.viewportTempX = -1; + Client.viewportTempY = -1; + } + + } else { + Client.viewportTempX = -1; + Client.viewportTempY = -1; + } + } +} diff --git a/rs-client/src/main/java/WorldMapLabelSize.java b/rs-client/src/main/java/WorldMapLabelSize.java new file mode 100644 index 0000000000..43ffdb668a --- /dev/null +++ b/rs-client/src/main/java/WorldMapLabelSize.java @@ -0,0 +1,135 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("s") +@Implements("WorldMapLabelSize") +public class WorldMapLabelSize { + @ObfuscatedName("st") + @ObfuscatedSignature( + signature = "Llb;" + ) + @Export("platformInfo") + static PlatformInfo platformInfo; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Ls;" + ) + @Export("WorldMapLabelSize_small") + public static final WorldMapLabelSize WorldMapLabelSize_small; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Ls;" + ) + @Export("WorldMapLabelSize_medium") + public static final WorldMapLabelSize WorldMapLabelSize_medium; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Ls;" + ) + @Export("WorldMapLabelSize_large") + public static final WorldMapLabelSize WorldMapLabelSize_large; + @ObfuscatedName("dq") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("__s_dq") + static IndexCache __s_dq; + @ObfuscatedName("fi") + @ObfuscatedGetter( + intValue = 1577759565 + ) + @Export("__s_fi") + static int __s_fi; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 1252293513 + ) + @Export("__w") + final int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 707828941 + ) + @Export("__o") + final int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -422937451 + ) + @Export("__u") + final int __u; + + static { + WorldMapLabelSize_small = new WorldMapLabelSize(0, 0, 4); + WorldMapLabelSize_medium = new WorldMapLabelSize(2, 1, 2); + WorldMapLabelSize_large = new WorldMapLabelSize(1, 2, 0); + } + + WorldMapLabelSize(int var1, int var2, int var3) { + this.__w = var1; + this.__o = var2; + this.__u = var3; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(FI)Z", + garbageValue = "2107231705" + ) + @Export("__f_14") + boolean __f_14(float var1) { + return var1 >= (float)this.__u; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Ls;", + garbageValue = "1579674051" + ) + static WorldMapLabelSize[] method192() { + return new WorldMapLabelSize[]{WorldMapLabelSize_small, WorldMapLabelSize_medium, WorldMapLabelSize_large}; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IB)Ls;", + garbageValue = "-67" + ) + static WorldMapLabelSize method195(int var0) { + WorldMapLabelSize[] var1 = method192(); + + for(int var2 = 0; var2 < var1.length; ++var2) { + WorldMapLabelSize var3 = var1[var2]; + if(var0 == var3.__o) { + return var3; + } + } + + return null; + } + + @ObfuscatedName("jj") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-187598326" + ) + static final void method198() { + PacketBufferNode var0 = Interpreter.method1915(ClientPacket.__gs_h, Client.packetWriter.isaacCipher); + Client.packetWriter.__q_167(var0); + + for(WidgetGroupParent var1 = (WidgetGroupParent)Client.widgetGroupParents.first(); var1 != null; var1 = (WidgetGroupParent)Client.widgetGroupParents.next()) { + if(var1.type == 0 || var1.type == 3) { + MenuAction.closeWidgetGroup(var1, true); + } + } + + if(Client.__client_mo != null) { + class22.method295(Client.__client_mo); + Client.__client_mo = null; + } + + } +} diff --git a/rs-client/src/main/java/WorldMapManager.java b/rs-client/src/main/java/WorldMapManager.java new file mode 100644 index 0000000000..ea2c6a1ec9 --- /dev/null +++ b/rs-client/src/main/java/WorldMapManager.java @@ -0,0 +1,529 @@ +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("al") +@Implements("WorldMapManager") +public final class WorldMapManager { + @ObfuscatedName("m") + @Export("isLoaded0") + boolean isLoaded0; + @ObfuscatedName("f") + @Export("loadStarted") + boolean loadStarted; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lae;" + ) + @Export("mapAreaData") + WorldMapAreaData mapAreaData; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lln;" + ) + @Export("overviewSprite") + Sprite overviewSprite; + @ObfuscatedName("o") + @Export("icons") + HashMap icons; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "[[Lav;" + ) + @Export("regions") + WorldMapRegion[][] regions; + @ObfuscatedName("g") + @Export("__g") + HashMap __g; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("mapSceneSprites") + IndexedSprite[] mapSceneSprites; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__e") + final AbstractIndexCache __e; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__x") + final AbstractIndexCache __x; + @ObfuscatedName("d") + @Export("fonts") + final HashMap fonts; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -1459928419 + ) + @Export("surfaceOffsetX") + int surfaceOffsetX; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 1364441271 + ) + @Export("surfaceOffsetY") + int surfaceOffsetY; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 1729323633 + ) + @Export("__i") + int __i; + @ObfuscatedName("a") + @ObfuscatedGetter( + intValue = -395718741 + ) + @Export("__a") + int __a; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = 1085359673 + ) + @Export("__z") + public int __z; + + @ObfuscatedSignature( + signature = "([Llq;Ljava/util/HashMap;Lir;Lir;)V" + ) + public WorldMapManager(IndexedSprite[] var1, HashMap var2, AbstractIndexCache var3, AbstractIndexCache var4) { + this.isLoaded0 = false; + this.loadStarted = false; + this.__g = new HashMap(); + this.__z = 0; + this.mapSceneSprites = var1; + this.fonts = var2; + this.__e = var3; + this.__x = var4; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Ljava/lang/String;ZB)V", + garbageValue = "32" + ) + @Export("load") + public void load(AbstractIndexCache var1, String var2, boolean var3) { + if(!this.loadStarted) { + this.isLoaded0 = false; + this.loadStarted = true; + System.nanoTime(); + int var4 = var1.getArchiveId(WorldMapCacheName.WorldMapCacheName_details.name); + int var5 = var1.getRecordId(var4, var2); + Buffer var6 = new Buffer(var1.takeRecordByNames(WorldMapCacheName.WorldMapCacheName_details.name, var2)); + Buffer var7 = new Buffer(var1.takeRecordByNames(WorldMapCacheName.WorldMapCacheName_compositeMap.name, var2)); + System.nanoTime(); + System.nanoTime(); + this.mapAreaData = new WorldMapAreaData(); + + try { + this.mapAreaData.__ce_76(var6, var7, var5, var3); + } catch (IllegalStateException var19) { + return; + } + + this.mapAreaData.originX(); + this.mapAreaData.originPlane(); + this.mapAreaData.originY(); + this.surfaceOffsetX = this.mapAreaData.minX() * 64; + this.surfaceOffsetY = this.mapAreaData.minY() * 64; + this.__i = (this.mapAreaData.maxX() - this.mapAreaData.minX() + 1) * 64; + this.__a = (this.mapAreaData.maxY() - this.mapAreaData.minY() + 1) * 64; + int var16 = this.mapAreaData.maxX() - this.mapAreaData.minX() + 1; + int var9 = this.mapAreaData.maxY() - this.mapAreaData.minY() + 1; + System.nanoTime(); + System.nanoTime(); + SoundSystem.method2456(); + this.regions = new WorldMapRegion[var16][var9]; + Iterator var10 = this.mapAreaData.__n.iterator(); + + while(var10.hasNext()) { + class15 var11 = (class15)var10.next(); + int var12 = var11.field149; + int var13 = var11.field146; + int var14 = var12 - this.mapAreaData.minX(); + int var15 = var13 - this.mapAreaData.minY(); + this.regions[var14][var15] = new WorldMapRegion(var12, var13, this.mapAreaData.__a_39(), this.fonts); + this.regions[var14][var15].method447(var11, this.mapAreaData.__a); + } + + for(int var17 = 0; var17 < var16; ++var17) { + for(int var18 = 0; var18 < var9; ++var18) { + if(this.regions[var17][var18] == null) { + this.regions[var17][var18] = new WorldMapRegion(this.mapAreaData.minX() + var17, this.mapAreaData.minY() + var18, this.mapAreaData.__a_39(), this.fonts); + this.regions[var17][var18].__u_41(this.mapAreaData.__i, this.mapAreaData.__a); + } + } + } + + System.nanoTime(); + System.nanoTime(); + if(var1.__ag_401(WorldMapCacheName.WorldMapCacheName_compositeTexture.name, var2)) { + byte[] var20 = var1.takeRecordByNames(WorldMapCacheName.WorldMapCacheName_compositeTexture.name, var2); + this.overviewSprite = class27.method438(var20); + } + + System.nanoTime(); + var1.__y_398(); + var1.__b_400(); + this.isLoaded0 = true; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "20" + ) + @Export("clearIcons") + public final void clearIcons() { + this.icons = null; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIIIIIIII)V", + garbageValue = "1619301748" + ) + @Export("__q_72") + public final void __q_72(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int[] var9 = Rasterizer2D.Rasterizer2D_pixels; + int var10 = Rasterizer2D.Rasterizer2D_width; + int var11 = Rasterizer2D.Rasterizer2D_height; + int[] var12 = new int[4]; + Rasterizer2D.Rasterizer2D_getClipArray(var12); + class22 var13 = this.method643(var1, var2, var3, var4); + float var14 = this.getPixelsPerTile(var7 - var5, var3 - var1); + int var15 = (int)Math.ceil((double)var14); + this.__z = var15; + if(!this.__g.containsKey(Integer.valueOf(var15))) { + class40 var16 = new class40(var15); + var16.method763(); + this.__g.put(Integer.valueOf(var15), var16); + } + + int var23 = var13.field166 + var13.field169 - 1; + int var17 = var13.field167 + var13.field164 - 1; + + int var18; + int var19; + for(var18 = var13.field166; var18 <= var23; ++var18) { + for(var19 = var13.field167; var19 <= var17; ++var19) { + this.regions[var18][var19].method455(var15, (class40)this.__g.get(Integer.valueOf(var15)), this.mapSceneSprites, this.__e, this.__x); + } + } + + Rasterizer2D.Rasterizer2D_replace(var9, var10, var11); + Rasterizer2D.Rasterizer2D_setClipArray(var12); + var18 = (int)(64.0F * var14); + var19 = this.surfaceOffsetX + var1; + int var20 = var2 + this.surfaceOffsetY; + + for(int var21 = var13.field166; var21 < var13.field166 + var13.field169; ++var21) { + for(int var22 = var13.field167; var22 < var13.field167 + var13.field164; ++var22) { + this.regions[var21][var22].__w_40(var5 + var18 * (this.regions[var21][var22].x * 64 - var19) / 64, var8 - var18 * (this.regions[var21][var22].y * 64 - var20 + 64) / 64, var18); + } + } + + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIIIIIIILjava/util/HashSet;Ljava/util/HashSet;IIZB)V", + garbageValue = "-71" + ) + @Export("__w_73") + public final void __w_73(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, HashSet var9, HashSet var10, int var11, int var12, boolean var13) { + class22 var14 = this.method643(var1, var2, var3, var4); + float var15 = this.getPixelsPerTile(var7 - var5, var3 - var1); + int var16 = (int)(var15 * 64.0F); + int var17 = this.surfaceOffsetX + var1; + int var18 = var2 + this.surfaceOffsetY; + + int var19; + int var20; + for(var19 = var14.field166; var19 < var14.field169 + var14.field166; ++var19) { + for(var20 = var14.field167; var20 < var14.field164 + var14.field167; ++var20) { + if(var13) { + this.regions[var19][var20].__e_42(); + } + + this.regions[var19][var20].__j_46(var5 + var16 * (this.regions[var19][var20].x * 64 - var17) / 64, var8 - var16 * (this.regions[var19][var20].y * 64 - var18 + 64) / 64, var16, var9); + } + } + + if(var10 != null && var11 > 0) { + for(var19 = var14.field166; var19 < var14.field169 + var14.field166; ++var19) { + for(var20 = var14.field167; var20 < var14.field167 + var14.field164; ++var20) { + this.regions[var19][var20].__s_47(var10, var11, var12); + } + } + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IIIILjava/util/HashSet;III)V", + garbageValue = "-2144548575" + ) + @Export("drawOverview") + public void drawOverview(int var1, int var2, int var3, int var4, HashSet var5, int var6, int var7) { + if(this.overviewSprite != null) { + this.overviewSprite.__j_506(var1, var2, var3, var4); + if(var6 > 0 && var6 % var7 < var7 / 2) { + if(this.icons == null) { + this.buildIcons0(); + } + + Iterator var8 = var5.iterator(); + + while(true) { + List var10; + do { + if(!var8.hasNext()) { + return; + } + + int var9 = ((Integer)var8.next()).intValue(); + var10 = (List)this.icons.get(Integer.valueOf(var9)); + } while(var10 == null); + + Iterator var11 = var10.iterator(); + + while(var11.hasNext()) { + AbstractWorldMapIcon var12 = (AbstractWorldMapIcon)var11.next(); + int var13 = var3 * (var12.coord2.x - this.surfaceOffsetX) / this.__i; + int var14 = var4 - (var12.coord2.y - this.surfaceOffsetY) * var4 / this.__a; + Rasterizer2D.Rasterizer2D_drawCircleAlpha(var13 + var1, var14 + var2, 2, 16776960, 256); + } + } + } + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IIIIIIIIIII)Ljava/util/List;", + garbageValue = "1185703832" + ) + @Export("__u_74") + public List __u_74(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) { + LinkedList var11 = new LinkedList(); + if(!this.isLoaded0) { + return var11; + } else { + class22 var12 = this.method643(var1, var2, var3, var4); + float var13 = this.getPixelsPerTile(var7, var3 - var1); + int var14 = (int)(var13 * 64.0F); + int var15 = this.surfaceOffsetX + var1; + int var16 = var2 + this.surfaceOffsetY; + + for(int var17 = var12.field166; var17 < var12.field166 + var12.field169; ++var17) { + for(int var18 = var12.field167; var18 < var12.field164 + var12.field167; ++var18) { + List var19 = this.regions[var17][var18].__ae_57(var5 + var14 * (this.regions[var17][var18].x * 64 - var15) / 64, var8 + var6 - var14 * (this.regions[var17][var18].y * 64 - var16 + 64) / 64, var14, var9, var10); + if(!var19.isEmpty()) { + var11.addAll(var19); + } + } + } + + return var11; + } + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(IIIII)Lc;", + garbageValue = "-1455088394" + ) + class22 method643(int var1, int var2, int var3, int var4) { + class22 var5 = new class22(this); + int var6 = this.surfaceOffsetX + var1; + int var7 = var2 + this.surfaceOffsetY; + int var8 = var3 + this.surfaceOffsetX; + int var9 = var4 + this.surfaceOffsetY; + int var10 = var6 / 64; + int var11 = var7 / 64; + int var12 = var8 / 64; + int var13 = var9 / 64; + var5.field169 = var12 - var10 + 1; + var5.field164 = var13 - var11 + 1; + var5.field166 = var10 - this.mapAreaData.minX(); + var5.field167 = var11 - this.mapAreaData.minY(); + if(var5.field166 < 0) { + var5.field169 += var5.field166; + var5.field166 = 0; + } + + if(var5.field166 > this.regions.length - var5.field169) { + var5.field169 = this.regions.length - var5.field166; + } + + if(var5.field167 < 0) { + var5.field164 += var5.field167; + var5.field167 = 0; + } + + if(var5.field167 > this.regions[0].length - var5.field164) { + var5.field164 = this.regions[0].length - var5.field167; + } + + var5.field169 = Math.min(var5.field169, this.regions.length); + var5.field164 = Math.min(var5.field164, this.regions[0].length); + return var5; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "483037662" + ) + @Export("isLoaded") + public boolean isLoaded() { + return this.isLoaded0; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)Ljava/util/HashMap;", + garbageValue = "464090770" + ) + @Export("buildIcons") + public HashMap buildIcons() { + this.buildIcons0(); + return this.icons; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "14" + ) + @Export("buildIcons0") + void buildIcons0() { + if(this.icons == null) { + this.icons = new HashMap(); + } + + this.icons.clear(); + + for(int var1 = 0; var1 < this.regions.length; ++var1) { + for(int var2 = 0; var2 < this.regions[var1].length; ++var2) { + List var3 = this.regions[var1][var2].icons(); + Iterator var4 = var3.iterator(); + + while(var4.hasNext()) { + AbstractWorldMapIcon var5 = (AbstractWorldMapIcon)var4.next(); + if(var5.__h_67()) { + int var6 = var5.__m_15(); + if(!this.icons.containsKey(Integer.valueOf(var6))) { + LinkedList var7 = new LinkedList(); + var7.add(var5); + this.icons.put(Integer.valueOf(var6), var7); + } else { + List var8 = (List)this.icons.get(Integer.valueOf(var6)); + var8.add(var5); + } + } + } + } + } + + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(III)F", + garbageValue = "1249403507" + ) + @Export("getPixelsPerTile") + float getPixelsPerTile(int var1, int var2) { + float var3 = (float)var1 / (float)var2; + if(var3 > 8.0F) { + return 8.0F; + } else if(var3 < 1.0F) { + return 1.0F; + } else { + int var4 = Math.round(var3); + return Math.abs((float)var4 - var3) < 0.05F?(float)var4:var3; + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "514181856" + ) + @Export("itemContainerSetItem") + static void itemContainerSetItem(int var0, int var1, int var2, int var3) { + ItemContainer var4 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); + if(var4 == null) { + var4 = new ItemContainer(); + ItemContainer.itemContainers.put(var4, (long)var0); + } + + if(var4.ids.length <= var1) { + int[] var5 = new int[var1 + 1]; + int[] var6 = new int[var1 + 1]; + + int var7; + for(var7 = 0; var7 < var4.ids.length; ++var7) { + var5[var7] = var4.ids[var7]; + var6[var7] = var4.quantities[var7]; + } + + for(var7 = var4.ids.length; var7 < var1; ++var7) { + var5[var7] = -1; + var6[var7] = 0; + } + + var4.ids = var5; + var4.quantities = var6; + } + + var4.ids[var1] = var2; + var4.quantities[var1] = var3; + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1743251873" + ) + public static void method673() { + ObjectDefinition.ObjectDefinition_cached.clear(); + ObjectDefinition.__jr_o.clear(); + ObjectDefinition.__jr_u.clear(); + ObjectDefinition.ObjectDefinition_cachedModels.clear(); + } + + @ObfuscatedName("ij") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-1344882321" + ) + static boolean method672(int var0) { + return var0 == 57 || var0 == 58 || var0 == 1007 || var0 == 25 || var0 == 30; + } + + @ObfuscatedName("ks") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1341489301" + ) + static final void method668() { + Client.__client_na = Client.cycleCntr; + } +} diff --git a/rs-client/src/main/java/WorldMapRegion.java b/rs-client/src/main/java/WorldMapRegion.java new file mode 100644 index 0000000000..817482722f --- /dev/null +++ b/rs-client/src/main/java/WorldMapRegion.java @@ -0,0 +1,1153 @@ +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("av") +@Implements("WorldMapRegion") +public class WorldMapRegion { + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lec;" + ) + @Export("__av_o") + public static DemotingHashTable __av_o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1061363609 + ) + @Export("x") + int x; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 2099407363 + ) + @Export("y") + int y; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lz;" + ) + class15 field239; + @ObfuscatedName("e") + @Export("__e") + LinkedList __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -120515153 + ) + @Export("__x") + int __x; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 415972873 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @Export("iconsList") + List iconsList; + @ObfuscatedName("n") + @Export("iconsMap") + HashMap iconsMap; + @ObfuscatedName("i") + @Export("fonts") + final HashMap fonts; + + static { + __av_o = new DemotingHashTable(37748736, 256); + } + + WorldMapRegion(int var1, int var2, int var3, HashMap var4) { + this.x = var1; + this.y = var2; + this.__e = new LinkedList(); + this.iconsList = new LinkedList(); + this.iconsMap = new HashMap(); + this.__x = var3 | -16777216; + this.fonts = var4; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIIB)V", + garbageValue = "-87" + ) + @Export("__w_40") + void __w_40(int var1, int var2, int var3) { + Sprite var4 = class13.method164(this.x, this.y, this.__d); + if(var4 != null) { + if(var3 == this.__d * 64) { + var4.drawAt(var1, var2); + } else { + var4.__al_517(var1, var2, var3, var3); + } + + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lz;Ljava/util/List;I)V", + garbageValue = "1704588050" + ) + void method447(class15 var1, List var2) { + this.iconsMap.clear(); + this.field239 = var1; + this.__x_43(var2); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Ljava/util/HashSet;Ljava/util/List;B)V", + garbageValue = "-47" + ) + @Export("__u_41") + void __u_41(HashSet var1, List var2) { + this.iconsMap.clear(); + Iterator var3 = var1.iterator(); + + while(var3.hasNext()) { + class39 var4 = (class39)var3.next(); + if(var4.method256() == this.x && var4.method264() == this.y) { + this.__e.add(var4); + } + } + + this.__x_43(var2); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(IIIILb;B)V", + garbageValue = "115" + ) + void method449(int var1, int var2, int var3, int var4, class21 var5) { + this.iconsMap.clear(); + + for(int var6 = var1; var6 < var3 + var1; ++var6) { + label75: + for(int var7 = var2; var7 < var2 + var4; ++var7) { + for(int var8 = 0; var8 < var5.field156; ++var8) { + class25[] var9 = var5.field144[var8][var6][var7]; + if(var9 != null && var9.length != 0) { + class25[] var10 = var9; + + for(int var11 = 0; var11 < var10.length; ++var11) { + ObjectDefinition var13; + boolean var14; + label66: { + class25 var12 = var10[var11]; + var13 = class50.getObjectDefinition(var12.field199); + if(var13.transforms != null) { + int[] var15 = var13.transforms; + + for(int var16 = 0; var16 < var15.length; ++var16) { + int var17 = var15[var16]; + ObjectDefinition var18 = class50.getObjectDefinition(var17); + if(var18.mapIconId != -1) { + var14 = true; + break label66; + } + } + } else if(var13.mapIconId != -1) { + var14 = true; + break label66; + } + + var14 = false; + } + + if(var14) { + this.method479(var13, var8, var6, var7, var5); + continue label75; + } + } + } + } + } + } + + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(Ljr;IIILb;I)V", + garbageValue = "-896662600" + ) + void method479(ObjectDefinition var1, int var2, int var3, int var4, class21 var5) { + TileLocation var6 = new TileLocation(var2, var3 + this.x * 64, this.y * 64 + var4); + TileLocation var7 = null; + if(this.field239 != null) { + var7 = new TileLocation(this.field239.field148 + var2, var3 + this.field239.field149 * 64, var4 + this.field239.field146 * 64); + } else { + class39 var8 = (class39)var5; + var7 = new TileLocation(var2 + var8.field148, var3 + var8.field149 * 64 + var8.method717() * 8, var4 + var8.field146 * 64 + var8.method718() * 8); + } + + Object var10; + if(var1.transforms != null) { + var10 = new WorldMapIcon2(var7, var6, var1.id, this); + } else { + WorldMapElement var9 = ViewportMouse.getWorldMapElement(var1.mapIconId); + var10 = new WorldMapIcon1(var7, var6, var9.__o, this.__ab_56(var9)); + } + + this.iconsMap.put(new TileLocation(0, var3, var4), var10); + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "5" + ) + @Export("__e_42") + void __e_42() { + Iterator var1 = this.iconsMap.values().iterator(); + + while(var1.hasNext()) { + AbstractWorldMapIcon var2 = (AbstractWorldMapIcon)var1.next(); + if(var2 instanceof WorldMapIcon2) { + ((WorldMapIcon2)var2).__z_27(); + } + } + + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Ljava/util/List;I)V", + garbageValue = "128876606" + ) + @Export("__x_43") + void __x_43(List var1) { + Iterator var2 = var1.iterator(); + + while(var2.hasNext()) { + WorldMapIcon1 var3 = (WorldMapIcon1)var2.next(); + if(var3.coord2.x >> 6 == this.x && var3.coord2.y >> 6 == this.y) { + WorldMapIcon1 var4 = new WorldMapIcon1(var3.coord2, var3.coord2, var3.__m, this.__al_55(var3.__m)); + this.iconsList.add(var4); + } + } + + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1543354181" + ) + @Export("__d_44") + void __d_44() { + if(this.field239 != null) { + this.field239.method282(); + } else { + Iterator var1 = this.__e.iterator(); + + while(var1.hasNext()) { + class39 var2 = (class39)var1.next(); + var2.method282(); + } + } + + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(Lir;B)Z", + garbageValue = "2" + ) + @Export("__a_45") + boolean __a_45(AbstractIndexCache var1) { + if(this.field239 != null) { + this.field239.method263(var1); + if(this.field239.method271()) { + this.method449(0, 0, 64, 64, this.field239); + return true; + } else { + return false; + } + } else { + boolean var2 = true; + + Iterator var3; + class39 var4; + for(var3 = this.__e.iterator(); var3.hasNext(); var2 &= var4.method271()) { + var4 = (class39)var3.next(); + var4.method263(var1); + } + + if(var2) { + var3 = this.__e.iterator(); + + while(var3.hasNext()) { + var4 = (class39)var3.next(); + this.method449(var4.method719() * 8, var4.method720() * 8, 8, 8, var4); + } + } + + return var2; + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(ILad;[Llq;Lir;Lir;I)V", + garbageValue = "518389076" + ) + void method455(int var1, class40 var2, IndexedSprite[] var3, AbstractIndexCache var4, AbstractIndexCache var5) { + this.__d = var1; + if(this.field239 != null || !this.__e.isEmpty()) { + if(class13.method164(this.x, this.y, var1) == null) { + boolean var6 = true; + var6 &= this.__a_45(var4); + int var8; + if(this.field239 != null) { + var8 = this.field239.field150; + } else { + var8 = ((class21)this.__e.getFirst()).field150; + } + + var6 &= var5.tryLoadArchive(var8); + if(var6) { + byte[] var7 = var5.takeRecordFlat(var8); + class27 var9 = SecureRandomCallable.method1145(var7); + Sprite var10 = new Sprite(this.__d * 64, this.__d * 64); + var10.setRaster(); + if(this.field239 != null) { + this.method546(var2, var3, var9); + } else { + this.method459(var2, var3, var9); + } + + int var11 = this.x; + int var12 = this.y; + int var13 = this.__d; + __av_o.put(var10, MouseHandler.method1083(var11, var12, var13), var10.pixels.length * 4); + this.__d_44(); + } + } + } + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(IIILjava/util/HashSet;I)V", + garbageValue = "893970699" + ) + @Export("__j_46") + void __j_46(int var1, int var2, int var3, HashSet var4) { + if(var4 == null) { + var4 = new HashSet(); + } + + this.__aq_48(var1, var2, var4, var3); + this.__ah_54(var1, var2, var4, var3); + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(Ljava/util/HashSet;IIB)V", + garbageValue = "-70" + ) + @Export("__s_47") + void __s_47(HashSet var1, int var2, int var3) { + Iterator var4 = this.iconsMap.values().iterator(); + + while(var4.hasNext()) { + AbstractWorldMapIcon var5 = (AbstractWorldMapIcon)var4.next(); + if(var5.__h_67()) { + int var6 = var5.__m_15(); + if(var1.contains(Integer.valueOf(var6))) { + WorldMapElement var7 = ViewportMouse.getWorldMapElement(var6); + this.__av_50(var7, var5.__e, var5.__x, var2, var3); + } + } + } + + this.__aj_49(var1, var2, var3); + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(Lad;[Llq;Laq;B)V", + garbageValue = "-1" + ) + void method546(class40 var1, IndexedSprite[] var2, class27 var3) { + int var4; + int var5; + for(var4 = 0; var4 < 64; ++var4) { + for(var5 = 0; var5 < 64; ++var5) { + this.method461(var4, var5, this.field239, var1, var3); + this.method462(var4, var5, this.field239, var1); + } + } + + for(var4 = 0; var4 < 64; ++var4) { + for(var5 = 0; var5 < 64; ++var5) { + this.method460(var4, var5, this.field239, var1, var2); + } + } + + } + + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "(Lad;[Llq;Laq;I)V", + garbageValue = "752069098" + ) + void method459(class40 var1, IndexedSprite[] var2, class27 var3) { + Iterator var4 = this.__e.iterator(); + + class39 var5; + int var6; + int var7; + while(var4.hasNext()) { + var5 = (class39)var4.next(); + + for(var6 = var5.method719() * 8; var6 < var5.method719() * 8 + 8; ++var6) { + for(var7 = var5.method720() * 8; var7 < var5.method720() * 8 + 8; ++var7) { + this.method461(var6, var7, var5, var1, var3); + this.method462(var6, var7, var5, var1); + } + } + } + + var4 = this.__e.iterator(); + + while(var4.hasNext()) { + var5 = (class39)var4.next(); + + for(var6 = var5.method719() * 8; var6 < var5.method719() * 8 + 8; ++var6) { + for(var7 = var5.method720() * 8; var7 < var5.method720() * 8 + 8; ++var7) { + this.method460(var6, var7, var5, var1, var2); + } + } + } + + } + + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "(IILb;Lad;[Llq;I)V", + garbageValue = "1304772019" + ) + void method460(int var1, int var2, class21 var3, class40 var4, IndexedSprite[] var5) { + this.method465(var1, var2, var3); + this.method464(var1, var2, var3, var5); + } + + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "(IILb;Lad;Laq;I)V", + garbageValue = "1006396037" + ) + void method461(int var1, int var2, class21 var3, class40 var4, class27 var5) { + int var6 = var3.field151[0][var1][var2] - 1; + int var7 = var3.field145[0][var1][var2] - 1; + if(var6 == -1 && var7 == -1) { + Rasterizer2D.Rasterizer2D_fillRectangle(this.__d * var1, this.__d * (63 - var2), this.__d, this.__d, this.__x); + } + + int var8 = 16711935; + int var9; + if(var7 != -1) { + int var10 = this.__x; + OverlayDefinition var12 = (OverlayDefinition)OverlayDefinition.__jf_f.get((long)var7); + OverlayDefinition var11; + if(var12 != null) { + var11 = var12; + } else { + byte[] var13 = OverlayDefinition.__jf_m.takeRecord(4, var7); + var12 = new OverlayDefinition(); + if(var13 != null) { + var12.read(new Buffer(var13), var7); + } + + var12.init(); + OverlayDefinition.__jf_f.put(var12, (long)var7); + var11 = var12; + } + + if(var11 == null) { + var9 = var10; + } else if(var11.rgb2 >= 0) { + var9 = var11.rgb2 | -16777216; + } else if(var11.texture >= 0) { + int var21 = WorldMapArea.method427(Rasterizer3D.Rasterizer3D_textureLoader.__w_213(var11.texture), 96); + var9 = Rasterizer3D.Rasterizer3D_colorPalette[var21] | -16777216; + } else if(var11.rgb == 16711935) { + var9 = var10; + } else { + int var14 = var11.hue; + int var15 = var11.saturation; + int var16 = var11.lightness; + if(var16 > 179) { + var15 /= 2; + } + + if(var16 > 192) { + var15 /= 2; + } + + if(var16 > 217) { + var15 /= 2; + } + + if(var16 > 243) { + var15 /= 2; + } + + int var17 = (var15 / 32 << 7) + var16 / 2 + (var14 / 4 << 10); + byte var19 = 96; + int var18; + if(var17 == -2) { + var18 = 12345678; + } else { + int var22; + if(var17 == -1) { + if(var19 < 0) { + var19 = 0; + } else if(var19 > 127) { + var19 = 127; + } + + var22 = 127 - var19; + var18 = var22; + } else { + var22 = var19 * (var17 & 127) / 128; + if(var22 < 2) { + var22 = 2; + } else if(var22 > 126) { + var22 = 126; + } + + var18 = var22 + (var17 & 65408); + } + } + + var9 = Rasterizer3D.Rasterizer3D_colorPalette[var18] | -16777216; + } + + var8 = var9; + } + + if(var7 > -1 && var3.field154[0][var1][var2] == 0) { + Rasterizer2D.Rasterizer2D_fillRectangle(this.__d * var1, this.__d * (63 - var2), this.__d, this.__d, var8); + } else { + var9 = this.method541(var1, var2, var3, var5); + if(var7 == -1) { + Rasterizer2D.Rasterizer2D_fillRectangle(this.__d * var1, this.__d * (63 - var2), this.__d, this.__d, var9); + } else { + var4.method743(this.__d * var1, this.__d * (63 - var2), var9, var8, this.__d, this.__d, var3.field154[0][var1][var2], var3.field155[0][var1][var2]); + } + } + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(IILb;Lad;B)V", + garbageValue = "9" + ) + void method462(int var1, int var2, class21 var3, class40 var4) { + for(int var5 = 1; var5 < var3.field156; ++var5) { + int var6 = var3.field145[var5][var1][var2] - 1; + if(var6 > -1) { + int var8 = this.__x; + OverlayDefinition var10 = (OverlayDefinition)OverlayDefinition.__jf_f.get((long)var6); + OverlayDefinition var9; + if(var10 != null) { + var9 = var10; + } else { + byte[] var11 = OverlayDefinition.__jf_m.takeRecord(4, var6); + var10 = new OverlayDefinition(); + if(var11 != null) { + var10.read(new Buffer(var11), var6); + } + + var10.init(); + OverlayDefinition.__jf_f.put(var10, (long)var6); + var9 = var10; + } + + int var7; + if(var9 == null) { + var7 = var8; + } else if(var9.rgb2 >= 0) { + var7 = var9.rgb2 | -16777216; + } else if(var9.texture >= 0) { + int var20 = WorldMapArea.method427(Rasterizer3D.Rasterizer3D_textureLoader.__w_213(var9.texture), 96); + var7 = Rasterizer3D.Rasterizer3D_colorPalette[var20] | -16777216; + } else if(var9.rgb == 16711935) { + var7 = var8; + } else { + int var12 = var9.hue; + int var13 = var9.saturation; + int var14 = var9.lightness; + if(var14 > 179) { + var13 /= 2; + } + + if(var14 > 192) { + var13 /= 2; + } + + if(var14 > 217) { + var13 /= 2; + } + + if(var14 > 243) { + var13 /= 2; + } + + int var15 = (var13 / 32 << 7) + var14 / 2 + (var12 / 4 << 10); + byte var17 = 96; + int var16; + if(var15 == -2) { + var16 = 12345678; + } else { + int var21; + if(var15 == -1) { + if(var17 < 0) { + var17 = 0; + } else if(var17 > 127) { + var17 = 127; + } + + var21 = 127 - var17; + var16 = var21; + } else { + var21 = var17 * (var15 & 127) / 128; + if(var21 < 2) { + var21 = 2; + } else if(var21 > 126) { + var21 = 126; + } + + var16 = var21 + (var15 & 65408); + } + } + + var7 = Rasterizer3D.Rasterizer3D_colorPalette[var16] | -16777216; + } + + if(var3.field154[var5][var1][var2] == 0) { + Rasterizer2D.Rasterizer2D_fillRectangle(this.__d * var1, this.__d * (63 - var2), this.__d, this.__d, var7); + } else { + var4.method743(this.__d * var1, this.__d * (63 - var2), 0, var7, this.__d, this.__d, var3.field154[var5][var1][var2], var3.field155[var5][var1][var2]); + } + } + } + + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(IILb;Laq;I)I", + garbageValue = "1908333009" + ) + int method541(int var1, int var2, class21 var3, class27 var4) { + return var3.field151[0][var1][var2] == 0?this.__x:var4.method430(var1, var2); + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(IILb;[Llq;S)V", + garbageValue = "-26219" + ) + void method464(int var1, int var2, class21 var3, IndexedSprite[] var4) { + for(int var5 = 0; var5 < var3.field156; ++var5) { + class25[] var6 = var3.field144[var5][var1][var2]; + if(var6 != null && var6.length != 0) { + class25[] var7 = var6; + + for(int var8 = 0; var8 < var7.length; ++var8) { + class25 var9 = var7[var8]; + if(WorldMapAreaData.method711(var9.field198) || class1.method19(var9.field198)) { + ObjectDefinition var10 = class50.getObjectDefinition(var9.field199); + if(var10.mapSceneId != -1) { + if(var10.mapSceneId != 46 && var10.mapSceneId != 52) { + var4[var10.mapSceneId].__o_497(this.__d * var1, this.__d * (63 - var2), this.__d * 2, this.__d * 2); + } else { + var4[var10.mapSceneId].__o_497(this.__d * var1, this.__d * (63 - var2), this.__d * 2 + 1, this.__d * 2 + 1); + } + } + } + } + } + } + + } + + @ObfuscatedName("ag") + @ObfuscatedSignature( + signature = "(IILb;B)V", + garbageValue = "-31" + ) + void method465(int var1, int var2, class21 var3) { + for(int var4 = 0; var4 < var3.field156; ++var4) { + class25[] var5 = var3.field144[var4][var1][var2]; + if(var5 != null && var5.length != 0) { + class25[] var6 = var5; + + for(int var7 = 0; var7 < var6.length; ++var7) { + class25 var8 = var6[var7]; + int var10 = var8.field198; + boolean var9 = var10 >= class231.field2805.field2820 && var10 <= class231.field2804.field2820 || var10 == class231.field2806.field2820; + if(var9) { + ObjectDefinition var11 = class50.getObjectDefinition(var8.field199); + int var12 = var11.int1 != 0?-3407872:-3355444; + if(var8.field198 == class231.field2805.field2820) { + this.__ad_58(var1, var2, var8.field202, var12); + } + + if(var8.field198 == class231.field2813.field2820) { + this.__ad_58(var1, var2, var8.field202, -3355444); + this.__ad_58(var1, var2, var8.field202 + 1, var12); + } + + if(var8.field198 == class231.field2804.field2820) { + if(var8.field202 == 0) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(this.__d * var1, this.__d * (63 - var2), 1, var12); + } + + if(var8.field202 == 1) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(this.__d * var1 + this.__d - 1, this.__d * (63 - var2), 1, var12); + } + + if(var8.field202 == 2) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(this.__d * var1 + this.__d - 1, this.__d * (63 - var2) + this.__d - 1, 1, var12); + } + + if(var8.field202 == 3) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(this.__d * var1, this.__d * (63 - var2) + this.__d - 1, 1, var12); + } + } + + if(var8.field198 == class231.field2806.field2820) { + int var13 = var8.field202 % 2; + int var14; + if(var13 == 0) { + for(var14 = 0; var14 < this.__d; ++var14) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var14 + this.__d * var1, (64 - var2) * this.__d - 1 - var14, 1, var12); + } + } else { + for(var14 = 0; var14 < this.__d; ++var14) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var14 + this.__d * var1, var14 + this.__d * (63 - var2), 1, var12); + } + } + } + } + } + } + } + + } + + @ObfuscatedName("aq") + @ObfuscatedSignature( + signature = "(IILjava/util/HashSet;IB)V", + garbageValue = "0" + ) + @Export("__aq_48") + void __aq_48(int var1, int var2, HashSet var3, int var4) { + float var5 = (float)var4 / 64.0F; + float var6 = var5 / 2.0F; + Iterator var7 = this.iconsMap.entrySet().iterator(); + + while(var7.hasNext()) { + Entry var8 = (Entry)var7.next(); + TileLocation var9 = (TileLocation)var8.getKey(); + int var10 = (int)((float)var1 + var5 * (float)var9.x - var6); + int var11 = (int)((float)(var2 + var4) - var5 * (float)var9.y - var6); + AbstractWorldMapIcon var12 = (AbstractWorldMapIcon)var8.getValue(); + if(var12 != null && var12.__h_67()) { + var12.__e = var10; + var12.__x = var11; + WorldMapElement var13 = ViewportMouse.getWorldMapElement(var12.__m_15()); + if(!var3.contains(Integer.valueOf(var13.__g_410()))) { + this.__ar_51(var12, var10, var11, var5); + } + } + } + + } + + @ObfuscatedName("aj") + @ObfuscatedSignature( + signature = "(Ljava/util/HashSet;III)V", + garbageValue = "781854370" + ) + @Export("__aj_49") + void __aj_49(HashSet var1, int var2, int var3) { + Iterator var4 = this.iconsList.iterator(); + + while(var4.hasNext()) { + AbstractWorldMapIcon var5 = (AbstractWorldMapIcon)var4.next(); + if(var5.__h_67()) { + WorldMapElement var6 = ViewportMouse.getWorldMapElement(var5.__m_15()); + if(var6 != null && var1.contains(Integer.valueOf(var6.__g_410()))) { + this.__av_50(var6, var5.__e, var5.__x, var2, var3); + } + } + } + + } + + @ObfuscatedName("av") + @ObfuscatedSignature( + signature = "(Lic;IIIIB)V", + garbageValue = "92" + ) + @Export("__av_50") + void __av_50(WorldMapElement var1, int var2, int var3, int var4, int var5) { + Sprite var6 = var1.getSprite(false); + if(var6 != null) { + var6.__a_505(var2 - var6.subWidth / 2, var3 - var6.subHeight / 2); + if(var4 % var5 < var5 / 2) { + Rasterizer2D.Rasterizer2D_drawCircleAlpha(var2, var3, 15, 16776960, 128); + Rasterizer2D.Rasterizer2D_drawCircleAlpha(var2, var3, 7, 16777215, 256); + } + + } + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(Lak;IIFI)V", + garbageValue = "-1283733783" + ) + @Export("__ar_51") + void __ar_51(AbstractWorldMapIcon var1, int var2, int var3, float var4) { + WorldMapElement var5 = ViewportMouse.getWorldMapElement(var1.__m_15()); + this.__ac_52(var5, var2, var3); + this.__ay_53(var1, var5, var2, var3, var4); + } + + @ObfuscatedName("ac") + @ObfuscatedSignature( + signature = "(Lic;III)V", + garbageValue = "423173487" + ) + @Export("__ac_52") + void __ac_52(WorldMapElement var1, int var2, int var3) { + Sprite var4 = var1.getSprite(false); + if(var4 != null) { + int var5 = this.method473(var4, var1.field3287); + int var6 = this.method474(var4, var1.field3301); + var4.__a_505(var5 + var2, var3 + var6); + } + + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(Lak;Lic;IIFI)V", + garbageValue = "-1237576843" + ) + @Export("__ay_53") + void __ay_53(AbstractWorldMapIcon var1, WorldMapElement var2, int var3, int var4, float var5) { + WorldMapLabel var6 = var1.__f_16(); + if(var6 != null) { + if(var6.size.__f_14(var5)) { + Font var7 = (Font)this.fonts.get(var6.size); + var7.drawLines(var6.text, var3 - var6.width / 2, var4, var6.width, var6.height, -16777216 | var2.__e, 0, 1, 0, var7.ascent / 2); + } + } + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(IILjava/util/HashSet;IB)V", + garbageValue = "-17" + ) + @Export("__ah_54") + void __ah_54(int var1, int var2, HashSet var3, int var4) { + float var5 = (float)var4 / 64.0F; + Iterator var6 = this.iconsList.iterator(); + + while(var6.hasNext()) { + AbstractWorldMapIcon var7 = (AbstractWorldMapIcon)var6.next(); + if(var7.__h_67()) { + int var8 = var7.coord2.x % 64; + int var9 = var7.coord2.y % 64; + var7.__e = (int)((float)var8 * var5 + (float)var1); + var7.__x = (int)(var5 * (float)(63 - var9) + (float)var2); + if(!var3.contains(Integer.valueOf(var7.__m_15()))) { + this.__ar_51(var7, var7.__e, var7.__x, var5); + } + } + } + + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(Lln;Lju;I)I", + garbageValue = "1945325707" + ) + int method473(Sprite var1, class266 var2) { + switch(var2.field3528) { + case 0: + return -var1.subWidth / 2; + case 2: + return 0; + default: + return -var1.subWidth; + } + } + + @ObfuscatedName("aw") + @ObfuscatedSignature( + signature = "(Lln;Lip;I)I", + garbageValue = "1788772278" + ) + int method474(Sprite var1, class249 var2) { + switch(var2.field3275) { + case 0: + return 0; + case 1: + return -var1.subHeight / 2; + default: + return -var1.subHeight; + } + } + + @ObfuscatedName("al") + @ObfuscatedSignature( + signature = "(II)Laj;", + garbageValue = "598030754" + ) + @Export("__al_55") + WorldMapLabel __al_55(int var1) { + WorldMapElement var2 = ViewportMouse.getWorldMapElement(var1); + return this.__ab_56(var2); + } + + @ObfuscatedName("ab") + @ObfuscatedSignature( + signature = "(Lic;B)Laj;", + garbageValue = "59" + ) + @Export("__ab_56") + WorldMapLabel __ab_56(WorldMapElement var1) { + if(var1.__l != null && this.fonts != null && this.fonts.get(WorldMapLabelSize.WorldMapLabelSize_small) != null) { + WorldMapLabelSize var2 = WorldMapLabelSize.method195(var1.textSize); + if(var2 == null) { + return null; + } else { + Font var3 = (Font)this.fonts.get(var2); + if(var3 == null) { + return null; + } else { + int var4 = var3.lineCount(var1.__l, 1000000); + String[] var5 = new String[var4]; + var3.breakLines(var1.__l, (int[])null, var5); + int var6 = var5.length * var3.ascent / 2; + int var7 = 0; + String[] var8 = var5; + + for(int var9 = 0; var9 < var8.length; ++var9) { + String var10 = var8[var9]; + int var11 = var3.stringWidth(var10); + if(var11 > var7) { + var7 = var11; + } + } + + return new WorldMapLabel(var1.__l, var7, var6, var2); + } + } + } else { + return null; + } + } + + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(IIIIII)Ljava/util/List;", + garbageValue = "-1237576843" + ) + @Export("__ae_57") + List __ae_57(int var1, int var2, int var3, int var4, int var5) { + LinkedList var6 = new LinkedList(); + if(var4 >= var1 && var5 >= var2) { + if(var4 < var3 + var1 && var5 < var3 + var2) { + Iterator var7 = this.iconsMap.values().iterator(); + + AbstractWorldMapIcon var8; + while(var7.hasNext()) { + var8 = (AbstractWorldMapIcon)var7.next(); + if(var8.__h_67() && var8.__y_66(var4, var5)) { + var6.add(var8); + } + } + + var7 = this.iconsList.iterator(); + + while(var7.hasNext()) { + var8 = (AbstractWorldMapIcon)var7.next(); + if(var8.__h_67() && var8.__y_66(var4, var5)) { + var6.add(var8); + } + } + + return var6; + } else { + return var6; + } + } else { + return var6; + } + } + + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "(I)Ljava/util/List;", + garbageValue = "722163590" + ) + @Export("icons") + List icons() { + LinkedList var1 = new LinkedList(); + var1.addAll(this.iconsList); + var1.addAll(this.iconsMap.values()); + return var1; + } + + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "-1516512827" + ) + @Export("__ad_58") + void __ad_58(int var1, int var2, int var3, int var4) { + var3 %= 4; + if(var3 == 0) { + Rasterizer2D.Rasterizer2D_drawVerticalLine(this.__d * var1, this.__d * (63 - var2), this.__d, var4); + } + + if(var3 == 1) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(this.__d * var1, this.__d * (63 - var2), this.__d, var4); + } + + if(var3 == 2) { + Rasterizer2D.Rasterizer2D_drawVerticalLine(this.__d * var1 + this.__d - 1, this.__d * (63 - var2), this.__d, var4); + } + + if(var3 == 3) { + Rasterizer2D.Rasterizer2D_drawHorizontalLine(this.__d * var1, this.__d * (63 - var2) + this.__d - 1, this.__d, var4); + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "-1836178572" + ) + public static int method568(int var0) { + return var0 >> 17 & 7; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)I", + garbageValue = "1877870965" + ) + public static int method550(String var0) { + return var0.length() + 1; + } + + @ObfuscatedName("fb") + @ObfuscatedSignature( + signature = "(Lho;IIS)V", + garbageValue = "597" + ) + static final void method567(Widget var0, int var1, int var2) { + if(Client.minimapState == 0 || Client.minimapState == 3) { + if(!Client.isMenuOpen && (MouseHandler.MouseHandler_lastButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_lastButton == 4)) { + SpriteMask var3 = var0.getSpriteMask(true); + if(var3 == null) { + return; + } + + int var4 = MouseHandler.MouseHandler_lastPressedX - var1; + int var5 = MouseHandler.MouseHandler_lastPressedY - var2; + if(var3.contains(var4, var5)) { + var4 -= var3.width / 2; + var5 -= var3.height / 2; + int var6 = Client.minimapOrientation & 2047; + int var7 = Rasterizer3D.Rasterizer3D_sine[var6]; + int var8 = Rasterizer3D.Rasterizer3D_cosine[var6]; + int var9 = var4 * var8 + var7 * var5 >> 11; + int var10 = var5 * var8 - var4 * var7 >> 11; + int var11 = var9 + Canvas.localPlayer.x >> 7; + int var12 = Canvas.localPlayer.y - var10 >> 7; + PacketBufferNode var13 = Interpreter.method1915(ClientPacket.__gs_ba, Client.packetWriter.isaacCipher); + var13.packetBuffer.writeByte(18); + var13.packetBuffer.__bo_322(var12 + GraphicsObject.baseY); + var13.packetBuffer.__bo_322(var11 + class50.baseX); + var13.packetBuffer.__af_314(KeyHandler.KeyHandler_pressedKeys[82]?(KeyHandler.KeyHandler_pressedKeys[81]?2:1):0); + var13.packetBuffer.writeByte(var4); + var13.packetBuffer.writeByte(var5); + var13.packetBuffer.writeShort(Client.minimapOrientation); + var13.packetBuffer.writeByte(57); + var13.packetBuffer.writeByte(0); + var13.packetBuffer.writeByte(0); + var13.packetBuffer.writeByte(89); + var13.packetBuffer.writeShort(Canvas.localPlayer.x); + var13.packetBuffer.writeShort(Canvas.localPlayer.y); + var13.packetBuffer.writeByte(63); + Client.packetWriter.__q_167(var13); + Client.destinationX = var11; + Client.destinationY = var12; + } + } + + } + } + + @ObfuscatedName("ix") + @ObfuscatedSignature( + signature = "([Lho;IIIZS)V", + garbageValue = "3640" + ) + @Export("notRevalidateWidgetScroll") + static void notRevalidateWidgetScroll(Widget[] var0, int var1, int var2, int var3, boolean var4) { + for(int var5 = 0; var5 < var0.length; ++var5) { + Widget var6 = var0[var5]; + if(var6 != null && var6.parentId == var1) { + WorldMapSection3.alignWidgetSize(var6, var2, var3, var4); + OverlayDefinition.alignWidgetPosition(var6, var2, var3); + if(var6.scrollX > var6.scrollWidth - var6.width) { + var6.scrollX = var6.scrollWidth - var6.width; + } + + if(var6.scrollX < 0) { + var6.scrollX = 0; + } + + if(var6.scrollY > var6.scrollHeight - var6.height) { + var6.scrollY = var6.scrollHeight - var6.height; + } + + if(var6.scrollY < 0) { + var6.scrollY = 0; + } + + if(var6.type == 0) { + class39.revalidateWidgetScroll(var0, var6, var4); + } + } + } + + } +} diff --git a/rs-client/src/main/java/WorldMapSection.java b/rs-client/src/main/java/WorldMapSection.java new file mode 100644 index 0000000000..8765e6c253 --- /dev/null +++ b/rs-client/src/main/java/WorldMapSection.java @@ -0,0 +1,56 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ab") +@Implements("WorldMapSection") +public interface WorldMapSection { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lag;I)V", + garbageValue = "1384899025" + ) + @Export("expandBounds") + void expandBounds(WorldMapArea var1); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIB)Z", + garbageValue = "93" + ) + @Export("containsCoord") + boolean containsCoord(int var1, int var2, int var3); + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIB)Z", + garbageValue = "4" + ) + @Export("containsPosition") + boolean containsPosition(int var1, int var2); + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIII)[I", + garbageValue = "1545934424" + ) + @Export("position") + int[] position(int var1, int var2, int var3); + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)Lhu;", + garbageValue = "-1916486802" + ) + @Export("coord") + TileLocation coord(int var1, int var2); + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "-113" + ) + @Export("read") + void read(Buffer var1); +} diff --git a/rs-client/src/main/java/WorldMapSection0.java b/rs-client/src/main/java/WorldMapSection0.java new file mode 100644 index 0000000000..1d42429f3e --- /dev/null +++ b/rs-client/src/main/java/WorldMapSection0.java @@ -0,0 +1,294 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("y") +@Implements("WorldMapSection0") +public class WorldMapSection0 implements WorldMapSection { + @ObfuscatedName("sn") + @ObfuscatedGetter( + intValue = -1946112139 + ) + @Export("__y_sn") + static int __y_sn; + @ObfuscatedName("p") + @Export("__y_p") + static int[] __y_p; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -2011838881 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1299225715 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 82600709 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -477370575 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -671345527 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 529427495 + ) + @Export("__u") + int __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -150870205 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 1009718107 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1022177315 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -1397517463 + ) + @Export("__x") + int __x; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -799353317 + ) + @Export("__d") + int __d; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -1388959491 + ) + @Export("__k") + int __k; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = -1657956317 + ) + @Export("surfaceOffsetY") + int __n; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 1345061881 + ) + @Export("__i") + int __i; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lag;I)V", + garbageValue = "1384899025" + ) + public void expandBounds(WorldMapArea var1) { + if(var1.minX0 > this.__o) { + var1.minX0 = this.__o; + } + + if(var1.maxX0 < this.__o) { + var1.maxX0 = this.__o; + } + + if(var1.minY0 > this.__u) { + var1.minY0 = this.__u; + } + + if(var1.maxY0 < this.__u) { + var1.maxY0 = this.__u; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIB)Z", + garbageValue = "93" + ) + public boolean containsCoord(int var1, int var2, int var3) { + return var1 >= this.__m && var1 < this.__m + this.__f?var2 >= (this.__q << 6) + (this.__g << 3) && var2 <= (this.__q << 6) + (this.__e << 3) + 7 && var3 >= (this.__w << 6) + (this.__l << 3) && var3 <= (this.__w << 6) + (this.__x << 3) + 7:false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIB)Z", + garbageValue = "4" + ) + public boolean containsPosition(int var1, int var2) { + return var1 >= (this.__o << 6) + (this.__d << 3) && var1 <= (this.__o << 6) + (this.__n << 3) + 7 && var2 >= (this.__u << 6) + (this.__k << 3) && var2 <= (this.__u << 6) + (this.__i << 3) + 7; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIII)[I", + garbageValue = "1545934424" + ) + public int[] position(int var1, int var2, int var3) { + if(!this.containsCoord(var1, var2, var3)) { + return null; + } else { + int[] var4 = new int[]{this.__o * 64 - this.__q * 64 + var2 + (this.__d * 8 - this.__g * 8), var3 + (this.__u * 64 - this.__w * 64) + (this.__k * 8 - this.__l * 8)}; + return var4; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)Lhu;", + garbageValue = "-1916486802" + ) + public TileLocation coord(int var1, int var2) { + if(!this.containsPosition(var1, var2)) { + return null; + } else { + int var3 = this.__q * 64 - this.__o * 64 + (this.__g * 8 - this.__d * 8) + var1; + int var4 = this.__w * 64 - this.__u * 64 + var2 + (this.__l * 8 - this.__k * 8); + return new TileLocation(this.__m, var3, var4); + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "-113" + ) + public void read(Buffer var1) { + this.__m = var1.readUnsignedByte(); + this.__f = var1.readUnsignedByte(); + this.__q = var1.__ag_302(); + this.__g = var1.readUnsignedByte(); + this.__e = var1.readUnsignedByte(); + this.__w = var1.__ag_302(); + this.__l = var1.readUnsignedByte(); + this.__x = var1.readUnsignedByte(); + this.__o = var1.__ag_302(); + this.__d = var1.readUnsignedByte(); + this.__n = var1.readUnsignedByte(); + this.__u = var1.__ag_302(); + this.__k = var1.readUnsignedByte(); + this.__i = var1.readUnsignedByte(); + this.__g_25(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1967186894" + ) + @Export("__g_25") + void __g_25() { + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2102591569" + ) + static void method247() { + AccessFile var0 = null; + + try { + var0 = LoginPacket.getPreferencesFile("", class22.studioGame.name, true); + Buffer var1 = ReflectionCheck.clientPreferences.toBuffer(); + var0.write(var1.array, 0, var1.index); + } catch (Exception var3) { + ; + } + + try { + if(var0 != null) { + var0.closeSync(true); + } + } catch (Exception var2) { + ; + } + + } + + @ObfuscatedName("hz") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "1886145284" + ) + static final void method245(int var0) { + if(var0 >= 0) { + int var1 = Client.menuArguments1[var0]; + int var2 = Client.menuArguments2[var0]; + int var3 = Client.menuOpcodes[var0]; + int var4 = Client.menuArguments0[var0]; + String var5 = Client.menuActions[var0]; + String var6 = Client.menuTargetNames[var0]; + Actor.menuAction(var1, var2, var3, var4, var5, var6, MouseHandler.MouseHandler_lastPressedX, MouseHandler.MouseHandler_lastPressedY); + } + } + + @ObfuscatedName("io") + @ObfuscatedSignature( + signature = "(Lho;IIIIIII)V", + garbageValue = "-1723792771" + ) + static final void method246(Widget var0, int var1, int var2, int var3, int var4, int var5, int var6) { + if(Client.__client_hh) { + Client.__client_hd = 32; + } else { + Client.__client_hd = 0; + } + + Client.__client_hh = false; + int var7; + if(MouseHandler.MouseHandler_currentButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_currentButton == 4) { + if(var5 >= var1 && var5 < var1 + 16 && var6 >= var2 && var6 < var2 + 16) { + var0.scrollY -= 4; + class22.method295(var0); + } else if(var5 >= var1 && var5 < var1 + 16 && var6 >= var3 + var2 - 16 && var6 < var3 + var2) { + var0.scrollY += 4; + class22.method295(var0); + } else if(var5 >= var1 - Client.__client_hd && var5 < Client.__client_hd + var1 + 16 && var6 >= var2 + 16 && var6 < var3 + var2 - 16) { + var7 = var3 * (var3 - 32) / var4; + if(var7 < 8) { + var7 = 8; + } + + int var8 = var6 - var2 - 16 - var7 / 2; + int var9 = var3 - 32 - var7; + var0.scrollY = var8 * (var4 - var3) / var9; + class22.method295(var0); + Client.__client_hh = true; + } + } + + if(Client.mouseWheelRotation != 0) { + var7 = var0.width; + if(var5 >= var1 - var7 && var6 >= var2 && var5 < var1 + 16 && var6 <= var3 + var2) { + var0.scrollY += Client.mouseWheelRotation * 45; + class22.method295(var0); + } + } + + } +} diff --git a/rs-client/src/main/java/WorldMapSection1.java b/rs-client/src/main/java/WorldMapSection1.java new file mode 100644 index 0000000000..6cab7970dc --- /dev/null +++ b/rs-client/src/main/java/WorldMapSection1.java @@ -0,0 +1,330 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("as") +@Implements("WorldMapSection1") +public class WorldMapSection1 implements WorldMapSection { + @ObfuscatedName("c") + @Export("userHomeDirectory") + public static String userHomeDirectory; + @ObfuscatedName("du") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache15") + static IndexCache indexCache15; + @ObfuscatedName("ey") + @ObfuscatedGetter( + intValue = -1516124929 + ) + @Export("__as_ey") + static int __as_ey; + @ObfuscatedName("ha") + @ObfuscatedGetter( + intValue = 1052834531 + ) + @Export("cameraX") + static int cameraX; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -1971304641 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1483447179 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1875803617 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 284566685 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1513010233 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1383826035 + ) + @Export("__u") + int __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1526007343 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -890169045 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -1797724181 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 325777555 + ) + @Export("__x") + int __x; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lag;I)V", + garbageValue = "1384899025" + ) + public void expandBounds(WorldMapArea var1) { + if(var1.minX0 > this.__o) { + var1.minX0 = this.__o; + } + + if(var1.maxX0 < this.__o) { + var1.maxX0 = this.__o; + } + + if(var1.minY0 > this.__u) { + var1.minY0 = this.__u; + } + + if(var1.maxY0 < this.__u) { + var1.maxY0 = this.__u; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIB)Z", + garbageValue = "93" + ) + public boolean containsCoord(int var1, int var2, int var3) { + return var1 >= this.__m && var1 < this.__m + this.__f?var2 >= (this.__q << 6) + (this.__g << 3) && var2 <= (this.__q << 6) + (this.__g << 3) + 7 && var3 >= (this.__w << 6) + (this.__l << 3) && var3 <= (this.__w << 6) + (this.__l << 3) + 7:false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIB)Z", + garbageValue = "4" + ) + public boolean containsPosition(int var1, int var2) { + return var1 >= (this.__o << 6) + (this.__e << 3) && var1 <= (this.__o << 6) + (this.__e << 3) + 7 && var2 >= (this.__u << 6) + (this.__x << 3) && var2 <= (this.__u << 6) + (this.__x << 3) + 7; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIII)[I", + garbageValue = "1545934424" + ) + public int[] position(int var1, int var2, int var3) { + if(!this.containsCoord(var1, var2, var3)) { + return null; + } else { + int[] var4 = new int[]{this.__o * 64 - this.__q * 64 + var2 + (this.__e * 8 - this.__g * 8), var3 + (this.__u * 64 - this.__w * 64) + (this.__x * 8 - this.__l * 8)}; + return var4; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)Lhu;", + garbageValue = "-1916486802" + ) + public TileLocation coord(int var1, int var2) { + if(!this.containsPosition(var1, var2)) { + return null; + } else { + int var3 = this.__q * 64 - this.__o * 64 + (this.__g * 8 - this.__e * 8) + var1; + int var4 = this.__w * 64 - this.__u * 64 + var2 + (this.__l * 8 - this.__x * 8); + return new TileLocation(this.__m, var3, var4); + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "-113" + ) + public void read(Buffer var1) { + this.__m = var1.readUnsignedByte(); + this.__f = var1.readUnsignedByte(); + this.__q = var1.__ag_302(); + this.__g = var1.readUnsignedByte(); + this.__w = var1.__ag_302(); + this.__l = var1.readUnsignedByte(); + this.__o = var1.__ag_302(); + this.__e = var1.readUnsignedByte(); + this.__u = var1.__ag_302(); + this.__x = var1.readUnsignedByte(); + this.__g_84(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2026323437" + ) + @Export("__g_84") + void __g_84() { + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Lim;", + garbageValue = "-205156540" + ) + @Export("getKitDefinition") + public static KitDefinition getKitDefinition(int var0) { + KitDefinition var1 = (KitDefinition)KitDefinition.KitDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = KitDefinition.KitDefinition_indexCache.takeRecord(3, var0); + var1 = new KitDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + KitDefinition.KitDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("fc") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2142100332" + ) + static void method808() { + Client.mouseLastLastPressedTimeMillis = 1L; + Projectile.mouseRecorder.index = 0; + class230.__hy_az = true; + Client.__client_cw = true; + Client.__client_pp = -1L; + class68.method1694(); + Client.packetWriter.__m_165(); + Client.packetWriter.packetBuffer.index = 0; + Client.packetWriter.serverPacket0 = null; + Client.packetWriter.__k = null; + Client.packetWriter.__n = null; + Client.packetWriter.__i = null; + Client.packetWriter.serverPacket0Length = 0; + Client.packetWriter.__x = 0; + Client.rebootTimer = 0; + Client.__client_fd = 0; + Client.hintArrowType = 0; + Client.menuOptionsCount = 0; + Client.isMenuOpen = false; + MouseHandler.MouseHandler_idleCycles = 0; + GroundItem.method2094(); + Client.isItemSelected = 0; + Client.isSpellSelected = false; + Client.soundEffectCount = 0; + Client.minimapOrientation = 0; + Client.oculusOrbState = 0; + ClientParameter.field3645 = null; + Client.minimapState = 0; + Client.__client_ph = -1; + Client.destinationX = 0; + Client.destinationY = 0; + Client.playerAttackOption = AttackOption.AttackOption_hidden; + Client.npcAttackOption = AttackOption.AttackOption_hidden; + Client.npcCount = 0; + Players.Players_count = 0; + + int var0; + for(var0 = 0; var0 < 2048; ++var0) { + Players.__cq_o[var0] = null; + Players.__cq_w[var0] = 1; + } + + for(var0 = 0; var0 < 2048; ++var0) { + Client.players[var0] = null; + } + + for(var0 = 0; var0 < 32768; ++var0) { + Client.npcs[var0] = null; + } + + Client.combatTargetPlayerIndex = -1; + Client.projectiles.clear(); + Client.graphicsObjects.clear(); + + for(var0 = 0; var0 < 4; ++var0) { + for(int var1 = 0; var1 < 104; ++var1) { + for(int var2 = 0; var2 < 104; ++var2) { + Client.groundItems[var0][var1][var2] = null; + } + } + } + + Client.__client_kh = new NodeDeque(); + WorldMapArea.friendSystem.clear(); + + for(var0 = 0; var0 < VarpDefinition.__ix_f; ++var0) { + VarpDefinition var3 = SecureRandomCallable.method1140(var0); + if(var3 != null) { + Varps.Varps_temp[var0] = 0; + Varps.Varps_main[var0] = 0; + } + } + + class196.varcs.clearTransient(); + Client.followerIndex = -1; + if(Client.rootWidgetGroup != -1) { + AbstractByteArrayCopier.method4023(Client.rootWidgetGroup); + } + + for(WidgetGroupParent var4 = (WidgetGroupParent)Client.widgetGroupParents.first(); var4 != null; var4 = (WidgetGroupParent)Client.widgetGroupParents.next()) { + MenuAction.closeWidgetGroup(var4, true); + } + + Client.rootWidgetGroup = -1; + Client.widgetGroupParents = new NodeHashTable(8); + Client.__client_mo = null; + Client.menuOptionsCount = 0; + Client.isMenuOpen = false; + Client.__client_ru.__m_385((int[])null, new int[]{0, 0, 0, 0, 0}, false, -1); + + for(var0 = 0; var0 < 8; ++var0) { + Client.playerMenuActions[var0] = null; + Client.playerOptionsPriorities[var0] = false; + } + + SpriteMask.method4389(); + Client.isLoading = true; + + for(var0 = 0; var0 < 100; ++var0) { + Client.__client_od[var0] = true; + } + + AbstractByteArrayCopier.method4024(); + PacketWriter.clanChat = null; + + for(var0 = 0; var0 < 8; ++var0) { + Client.grandExchangeOffers[var0] = new GrandExchangeOffer(); + } + + FloorDecoration.grandExchangeEvents = null; + } +} diff --git a/rs-client/src/main/java/WorldMapSection2.java b/rs-client/src/main/java/WorldMapSection2.java new file mode 100644 index 0000000000..759a22446e --- /dev/null +++ b/rs-client/src/main/java/WorldMapSection2.java @@ -0,0 +1,317 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ah") +@Implements("WorldMapSection2") +public class WorldMapSection2 implements WorldMapSection { + @ObfuscatedName("l") + @Export("__ah_l") + static int[] __ah_l; + @ObfuscatedName("j") + @Export("cacheDirectoryLocations") + public static String[] cacheDirectoryLocations; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -1561552223 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -245382089 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1024859679 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 40495485 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 982234927 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1272330125 + ) + @Export("__u") + int __u; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lag;I)V", + garbageValue = "1384899025" + ) + public void expandBounds(WorldMapArea var1) { + if(var1.minX0 > this.__o) { + var1.minX0 = this.__o; + } + + if(var1.maxX0 < this.__o) { + var1.maxX0 = this.__o; + } + + if(var1.minY0 > this.__u) { + var1.minY0 = this.__u; + } + + if(var1.maxY0 < this.__u) { + var1.maxY0 = this.__u; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIB)Z", + garbageValue = "93" + ) + public boolean containsCoord(int var1, int var2, int var3) { + return var1 >= this.__m && var1 < this.__m + this.__f?var2 >> 6 == this.__q && var3 >> 6 == this.__w:false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIB)Z", + garbageValue = "4" + ) + public boolean containsPosition(int var1, int var2) { + return var1 >> 6 == this.__o && var2 >> 6 == this.__u; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIII)[I", + garbageValue = "1545934424" + ) + public int[] position(int var1, int var2, int var3) { + if(!this.containsCoord(var1, var2, var3)) { + return null; + } else { + int[] var4 = new int[]{this.__o * 64 - this.__q * 64 + var2, var3 + (this.__u * 64 - this.__w * 64)}; + return var4; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)Lhu;", + garbageValue = "-1916486802" + ) + public TileLocation coord(int var1, int var2) { + if(!this.containsPosition(var1, var2)) { + return null; + } else { + int var3 = this.__q * 64 - this.__o * 64 + var1; + int var4 = this.__w * 64 - this.__u * 64 + var2; + return new TileLocation(this.__m, var3, var4); + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "-113" + ) + public void read(Buffer var1) { + this.__m = var1.readUnsignedByte(); + this.__f = var1.readUnsignedByte(); + this.__q = var1.__ag_302(); + this.__w = var1.__ag_302(); + this.__o = var1.__ag_302(); + this.__u = var1.__ag_302(); + this.__g_65(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1602858772" + ) + @Export("__g_65") + void __g_65() { + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "409746497" + ) + @Export("getVarbit") + public static int getVarbit(int var0) { + VarbitDefinition var1 = Occluder.method3255(var0); + int var2 = var1.varp; + int var3 = var1.lowBit; + int var4 = var1.highBit; + int var5 = Varps.Varps_masks[var4 - var3]; + return Varps.Varps_main[var2] >> var3 & var5; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IILfe;Lfy;I)Z", + garbageValue = "-2025028346" + ) + static final boolean method593(int var0, int var1, class179 var2, CollisionMap var3) { + int var4 = var0; + int var5 = var1; + byte var6 = 64; + byte var7 = 64; + int var8 = var0 - var6; + int var9 = var1 - var7; + class178.__fi_q[var6][var7] = 99; + class178.__fi_w[var6][var7] = 0; + byte var10 = 0; + int var11 = 0; + class178.__fi_l[var10] = var0; + byte var10001 = var10; + int var18 = var10 + 1; + class178.__fi_e[var10001] = var1; + int[][] var12 = var3.flags; + + while(var18 != var11) { + var4 = class178.__fi_l[var11]; + var5 = class178.__fi_e[var11]; + var11 = var11 + 1 & 4095; + int var16 = var4 - var8; + int var17 = var5 - var9; + int var13 = var4 - var3.xInset; + int var14 = var5 - var3.yInset; + if(var2.vmethod3644(2, var4, var5, var3)) { + WidgetGroupParent.__bx_o = var4; + UrlRequester.__eo_u = var5; + return true; + } + + int var15 = class178.__fi_w[var16][var17] + 1; + if(var16 > 0 && class178.__fi_q[var16 - 1][var17] == 0 && (var12[var13 - 1][var14] & 19136782) == 0 && (var12[var13 - 1][var14 + 1] & 19136824) == 0) { + class178.__fi_l[var18] = var4 - 1; + class178.__fi_e[var18] = var5; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16 - 1][var17] = 2; + class178.__fi_w[var16 - 1][var17] = var15; + } + + if(var16 < 126 && class178.__fi_q[var16 + 1][var17] == 0 && (var12[var13 + 2][var14] & 19136899) == 0 && (var12[var13 + 2][var14 + 1] & 19136992) == 0) { + class178.__fi_l[var18] = var4 + 1; + class178.__fi_e[var18] = var5; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16 + 1][var17] = 8; + class178.__fi_w[var16 + 1][var17] = var15; + } + + if(var17 > 0 && class178.__fi_q[var16][var17 - 1] == 0 && (var12[var13][var14 - 1] & 19136782) == 0 && (var12[var13 + 1][var14 - 1] & 19136899) == 0) { + class178.__fi_l[var18] = var4; + class178.__fi_e[var18] = var5 - 1; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16][var17 - 1] = 1; + class178.__fi_w[var16][var17 - 1] = var15; + } + + if(var17 < 126 && class178.__fi_q[var16][var17 + 1] == 0 && (var12[var13][var14 + 2] & 19136824) == 0 && (var12[var13 + 1][var14 + 2] & 19136992) == 0) { + class178.__fi_l[var18] = var4; + class178.__fi_e[var18] = var5 + 1; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16][var17 + 1] = 4; + class178.__fi_w[var16][var17 + 1] = var15; + } + + if(var16 > 0 && var17 > 0 && class178.__fi_q[var16 - 1][var17 - 1] == 0 && (var12[var13 - 1][var14] & 19136830) == 0 && (var12[var13 - 1][var14 - 1] & 19136782) == 0 && (var12[var13][var14 - 1] & 19136911) == 0) { + class178.__fi_l[var18] = var4 - 1; + class178.__fi_e[var18] = var5 - 1; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16 - 1][var17 - 1] = 3; + class178.__fi_w[var16 - 1][var17 - 1] = var15; + } + + if(var16 < 126 && var17 > 0 && class178.__fi_q[var16 + 1][var17 - 1] == 0 && (var12[var13 + 1][var14 - 1] & 19136911) == 0 && (var12[var13 + 2][var14 - 1] & 19136899) == 0 && (var12[var13 + 2][var14] & 19136995) == 0) { + class178.__fi_l[var18] = var4 + 1; + class178.__fi_e[var18] = var5 - 1; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16 + 1][var17 - 1] = 9; + class178.__fi_w[var16 + 1][var17 - 1] = var15; + } + + if(var16 > 0 && var17 < 126 && class178.__fi_q[var16 - 1][var17 + 1] == 0 && (var12[var13 - 1][var14 + 1] & 19136830) == 0 && (var12[var13 - 1][var14 + 2] & 19136824) == 0 && (var12[var13][var14 + 2] & 19137016) == 0) { + class178.__fi_l[var18] = var4 - 1; + class178.__fi_e[var18] = var5 + 1; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16 - 1][var17 + 1] = 6; + class178.__fi_w[var16 - 1][var17 + 1] = var15; + } + + if(var16 < 126 && var17 < 126 && class178.__fi_q[var16 + 1][var17 + 1] == 0 && (var12[var13 + 1][var14 + 2] & 19137016) == 0 && (var12[var13 + 2][var14 + 2] & 19136992) == 0 && (var12[var13 + 2][var14 + 1] & 19136995) == 0) { + class178.__fi_l[var18] = var4 + 1; + class178.__fi_e[var18] = var5 + 1; + var18 = var18 + 1 & 4095; + class178.__fi_q[var16 + 1][var17 + 1] = 12; + class178.__fi_w[var16 + 1][var17 + 1] = var15; + } + } + + WidgetGroupParent.__bx_o = var4; + UrlRequester.__eo_u = var5; + return false; + } + + @ObfuscatedName("hc") + @ObfuscatedSignature( + signature = "(ILjava/lang/String;I)V", + garbageValue = "-1850233906" + ) + static void method583(int var0, String var1) { + int var2 = Players.Players_count; + int[] var3 = Players.Players_indices; + boolean var4 = false; + Username var5 = new Username(var1, KeyHandler.loginType); + + for(int var6 = 0; var6 < var2; ++var6) { + Player var7 = Client.players[var3[var6]]; + if(var7 != null && var7 != Canvas.localPlayer && var7.username != null && var7.username.__equals_466(var5)) { + PacketBufferNode var8; + if(var0 == 1) { + var8 = Interpreter.method1915(ClientPacket.__gs_ao, Client.packetWriter.isaacCipher); + var8.packetBuffer.writeShort(var3[var6]); + var8.packetBuffer.__ai_315(0); + Client.packetWriter.__q_167(var8); + } else if(var0 == 4) { + var8 = Interpreter.method1915(ClientPacket.__gs_aq, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bx_323(var3[var6]); + var8.packetBuffer.__ai_315(0); + Client.packetWriter.__q_167(var8); + } else if(var0 == 6) { + var8 = Interpreter.method1915(ClientPacket.__gs_cf, Client.packetWriter.isaacCipher); + var8.packetBuffer.__bo_322(var3[var6]); + var8.packetBuffer.__ba_316(0); + Client.packetWriter.__q_167(var8); + } else if(var0 == 7) { + var8 = Interpreter.method1915(ClientPacket.__gs_be, Client.packetWriter.isaacCipher); + var8.packetBuffer.__ba_316(0); + var8.packetBuffer.writeShortLE(var3[var6]); + Client.packetWriter.__q_167(var8); + } + + var4 = true; + break; + } + } + + if(!var4) { + WorldMapIcon1.method219(4, "", "Unable to find " + var1); + } + + } +} diff --git a/rs-client/src/main/java/WorldMapSection3.java b/rs-client/src/main/java/WorldMapSection3.java new file mode 100644 index 0000000000..41bd777ed2 --- /dev/null +++ b/rs-client/src/main/java/WorldMapSection3.java @@ -0,0 +1,272 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("p") +@Implements("WorldMapSection3") +public class WorldMapSection3 implements WorldMapSection { + @ObfuscatedName("h") + @Export("osNameLowerCase") + public static String osNameLowerCase; + @ObfuscatedName("dr") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache8") + static IndexCache indexCache8; + @ObfuscatedName("go") + @ObfuscatedGetter( + intValue = -948290091 + ) + @Export("__p_go") + static int __p_go; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1389733201 + ) + @Export("__m") + int __m; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1622972483 + ) + @Export("__f") + int __f; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 702057599 + ) + @Export("__q") + int __q; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1068088609 + ) + @Export("__w") + int __w; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1257151629 + ) + @Export("__o") + int __o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -1351623663 + ) + @Export("__u") + int __u; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 1016557381 + ) + @Export("__g") + int __g; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 884736611 + ) + @Export("__l") + int __l; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 395786901 + ) + @Export("__e") + int __e; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -627081155 + ) + @Export("__x") + int __x; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lag;I)V", + garbageValue = "1384899025" + ) + public void expandBounds(WorldMapArea var1) { + if(var1.minX0 > this.__g) { + var1.minX0 = this.__g; + } + + if(var1.maxX0 < this.__e) { + var1.maxX0 = this.__e; + } + + if(var1.minY0 > this.__l) { + var1.minY0 = this.__l; + } + + if(var1.maxY0 < this.__x) { + var1.maxY0 = this.__x; + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIB)Z", + garbageValue = "93" + ) + public boolean containsCoord(int var1, int var2, int var3) { + return var1 >= this.__m && var1 < this.__m + this.__f?var2 >> 6 >= this.__q && var2 >> 6 <= this.__o && var3 >> 6 >= this.__w && var3 >> 6 <= this.__u:false; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IIB)Z", + garbageValue = "4" + ) + public boolean containsPosition(int var1, int var2) { + return var1 >> 6 >= this.__g && var1 >> 6 <= this.__e && var2 >> 6 >= this.__l && var2 >> 6 <= this.__x; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IIII)[I", + garbageValue = "1545934424" + ) + public int[] position(int var1, int var2, int var3) { + if(!this.containsCoord(var1, var2, var3)) { + return null; + } else { + int[] var4 = new int[]{this.__g * 64 - this.__q * 64 + var2, var3 + (this.__l * 64 - this.__w * 64)}; + return var4; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(III)Lhu;", + garbageValue = "-1916486802" + ) + public TileLocation coord(int var1, int var2) { + if(!this.containsPosition(var1, var2)) { + return null; + } else { + int var3 = this.__q * 64 - this.__g * 64 + var1; + int var4 = this.__w * 64 - this.__l * 64 + var2; + return new TileLocation(this.__m, var3, var4); + } + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lgr;B)V", + garbageValue = "-113" + ) + public void read(Buffer var1) { + this.__m = var1.readUnsignedByte(); + this.__f = var1.readUnsignedByte(); + this.__q = var1.__ag_302(); + this.__w = var1.__ag_302(); + this.__o = var1.__ag_302(); + this.__u = var1.__ag_302(); + this.__g = var1.__ag_302(); + this.__l = var1.__ag_302(); + this.__e = var1.__ag_302(); + this.__x = var1.__ag_302(); + this.__g_38(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-126" + ) + @Export("__g_38") + void __g_38() { + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Lho;II)V", + garbageValue = "1115233428" + ) + static final void method345(Widget var0, int var1) { + if(var0.__cf == null) { + throw new RuntimeException(); + } else { + if(var0.__fh == null) { + var0.__fh = new int[var0.__cf.length]; + } + + var0.__fh[var1] = Integer.MAX_VALUE; + } + } + + @ObfuscatedName("am") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "23" + ) + @Export("runWidgetOnLoadListener") + static void runWidgetOnLoadListener(int var0) { + if(var0 != -1) { + if(GroundItemPile.loadWidgetGroup(var0)) { + Widget[] var1 = Widget.widgets[var0]; + + for(int var2 = 0; var2 < var1.length; ++var2) { + Widget var3 = var1[var2]; + if(var3.onLoad != null) { + ScriptEvent var4 = new ScriptEvent(); + var4.widget = var3; + var4.args0 = var3.onLoad; + GrandExchangeEvent.runScript0(var4, 5000000); + } + } + + } + } + } + + @ObfuscatedName("ic") + @ObfuscatedSignature( + signature = "(Lho;IIZB)V", + garbageValue = "-35" + ) + @Export("alignWidgetSize") + static void alignWidgetSize(Widget var0, int var1, int var2, boolean var3) { + int var4 = var0.width; + int var5 = var0.height; + if(var0.widthAlignment == 0) { + var0.width = var0.rawWidth; + } else if(var0.widthAlignment == 1) { + var0.width = var1 - var0.rawWidth; + } else if(var0.widthAlignment == 2) { + var0.width = var0.rawWidth * var1 >> 14; + } + + if(var0.heightAlignment == 0) { + var0.height = var0.rawHeight; + } else if(var0.heightAlignment == 1) { + var0.height = var2 - var0.rawHeight; + } else if(var0.heightAlignment == 2) { + var0.height = var2 * var0.rawHeight >> 14; + } + + if(var0.widthAlignment == 4) { + var0.width = var0.height * var0.__aw / var0.__al; + } + + if(var0.heightAlignment == 4) { + var0.height = var0.width * var0.__al / var0.__aw; + } + + if(var0.contentType == 1337) { + Client.viewportWidget = var0; + } + + if(var3 && var0.__ee != null && (var4 != var0.width || var5 != var0.height)) { + ScriptEvent var6 = new ScriptEvent(); + var6.widget = var0; + var6.args0 = var0.__ee; + Client.scriptEvents.addFirst(var6); + } + + } +} diff --git a/rs-client/src/main/java/WorldMapSectionType.java b/rs-client/src/main/java/WorldMapSectionType.java new file mode 100644 index 0000000000..4c5e3bc70d --- /dev/null +++ b/rs-client/src/main/java/WorldMapSectionType.java @@ -0,0 +1,141 @@ +import java.util.Date; +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("h") +@Implements("WorldMapSectionType") +public enum WorldMapSectionType implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lh;" + ) + @Export("__h_m") + __h_m(1, (byte)0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lh;" + ) + @Export("__h_f") + __h_f(0, (byte)1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lh;" + ) + @Export("__h_q") + __h_q(3, (byte)2), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lh;" + ) + @Export("__h_w") + __h_w(2, (byte)3); + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__h_e") + static IndexedSprite __h_e; + @ObfuscatedName("n") + @Export("__h_n") + static int[] __h_n; + @ObfuscatedName("gc") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("modIconSprites") + static IndexedSprite[] modIconSprites; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 738759853 + ) + @Export("type") + final int type; + @ObfuscatedName("u") + @Export("id") + final byte id; + + WorldMapSectionType(int var3, byte var4) { + this.type = var3; + this.id = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.id; + } + + @ObfuscatedName("m") + public static String method252(long var0) { + class211.__hg_q.setTime(new Date(var0)); + int var2 = class211.__hg_q.get(7); + int var3 = class211.__hg_q.get(5); + int var4 = class211.__hg_q.get(2); + int var5 = class211.__hg_q.get(1); + int var6 = class211.__hg_q.get(11); + int var7 = class211.__hg_q.get(12); + int var8 = class211.__hg_q.get(13); + return class211.__hg_f[var2 - 1] + ", " + var3 / 10 + var3 % 10 + "-" + class211.__hg_m[0][var4] + "-" + var5 + " " + var6 / 10 + var6 % 10 + ":" + var7 / 10 + var7 % 10 + ":" + var8 / 10 + var8 % 10 + " GMT"; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IZIZI)V", + garbageValue = "2102950996" + ) + static void method248(int var0, boolean var1, int var2, boolean var3) { + if(ItemContainer.worlds != null) { + class3.method42(0, ItemContainer.worlds.length - 1, var0, var1, var2, var3); + } + + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-1520594673" + ) + static int method253(int var0, Script var1, boolean var2) { + Widget var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + if(var0 == 1500) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.x; + return 1; + } else if(var0 == 1501) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.y; + return 1; + } else if(var0 == 1502) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.width; + return 1; + } else if(var0 == 1503) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.height; + return 1; + } else if(var0 == 1504) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.isHidden?1:0; + return 1; + } else if(var0 == 1505) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.parentId; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("gp") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1187868759" + ) + static void method254() { + if(class60.worldMap0 != null) { + class60.worldMap0.__a_525(SoundSystem.plane, (Canvas.localPlayer.x >> 7) + class50.baseX, (Canvas.localPlayer.y >> 7) + GraphicsObject.baseY, false); + class60.worldMap0.loadCache(); + } + + } +} diff --git a/rs-client/src/main/java/Wrapper.java b/rs-client/src/main/java/Wrapper.java new file mode 100644 index 0000000000..985dd692d7 --- /dev/null +++ b/rs-client/src/main/java/Wrapper.java @@ -0,0 +1,23 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.Implements; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("eu") +@Implements("Wrapper") +public abstract class Wrapper extends DualNode { + @ObfuscatedName("f") + @Export("size") + final int size; + + Wrapper(int var1) { + this.size = var1; + } + + @ObfuscatedName("m") + @Export("get") + abstract Object get(); + + @ObfuscatedName("f") + @Export("isSoft") + abstract boolean isSoft(); +} diff --git a/rs-client/src/main/java/class0.java b/rs-client/src/main/java/class0.java new file mode 100644 index 0000000000..f4e38d90a1 --- /dev/null +++ b/rs-client/src/main/java/class0.java @@ -0,0 +1,19 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("m") +public interface class0 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/Object;Lgr;I)V", + garbageValue = "-223205903" + ) + void vmethod44(Object var1, Buffer var2); + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)Ljava/lang/Object;", + garbageValue = "704451908" + ) + Object vmethod46(Buffer var1); +} diff --git a/rs-client/src/main/java/class1.java b/rs-client/src/main/java/class1.java new file mode 100644 index 0000000000..289c3ea18f --- /dev/null +++ b/rs-client/src/main/java/class1.java @@ -0,0 +1,278 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("f") +final class class1 implements class0 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__f_m") + public static AbstractIndexCache __f_m; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/Object;Lgr;I)V", + garbageValue = "-223205903" + ) + public void vmethod44(Object var1, Buffer var2) { + this.method6((Integer)var1, var2); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)Ljava/lang/Object;", + garbageValue = "704451908" + ) + public Object vmethod46(Buffer var1) { + return Integer.valueOf(var1.readInt()); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ljava/lang/Integer;Lgr;I)V", + garbageValue = "-254123307" + ) + void method6(Integer var1, Buffer var2) { + var2.writeInt(var1.intValue()); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "553036714" + ) + public static boolean method19(int var0) { + return var0 == class231.field2819.field2820; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "644743473" + ) + static int method18(int var0, int var1) { + ItemContainer var2 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); + if(var2 == null) { + return 0; + } else if(var1 == -1) { + return 0; + } else { + int var3 = 0; + + for(int var4 = 0; var4 < var2.quantities.length; ++var4) { + if(var2.ids[var4] == var1) { + var3 += var2.quantities[var4]; + } + } + + return var3; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "-91" + ) + static int method8(int var0, Script var1, boolean var2) { + int var3 = -1; + Widget var4; + if(var0 >= 2000) { + var0 -= 1000; + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var4 = Huffman.getWidget(var3); + } else { + var4 = var2?WorldMapIcon1.__t_i:class12.__n_n; + } + + if(var0 == 1000) { + class179.Interpreter_intStackSize -= 4; + var4.rawX = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4.rawY = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var4.xAlignment = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + var4.yAlignment = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + class22.method295(var4); + TextureProvider.client.alignWidget(var4); + if(var3 != -1 && var4.type == 0) { + class39.revalidateWidgetScroll(Widget.widgets[var3 >> 16], var4, false); + } + + return 1; + } else if(var0 == 1001) { + class179.Interpreter_intStackSize -= 4; + var4.rawWidth = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4.rawHeight = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var4.widthAlignment = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + var4.heightAlignment = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + class22.method295(var4); + TextureProvider.client.alignWidget(var4); + if(var3 != -1 && var4.type == 0) { + class39.revalidateWidgetScroll(Widget.widgets[var3 >> 16], var4, false); + } + + return 1; + } else if(var0 == 1003) { + boolean var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(var5 != var4.isHidden) { + var4.isHidden = var5; + class22.method295(var4); + } + + return 1; + } else if(var0 == 1005) { + var4.noClickThrough = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 1006) { + var4.noScrollThrough = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("ah") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "-82" + ) + static int method16(int var0, Script var1, boolean var2) { + int var3; + if(var0 == 4200) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Skills.getItemDefinition(var3).name; + return 1; + } else { + int var4; + ItemDefinition var5; + if(var0 == 4201) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var5 = Skills.getItemDefinition(var3); + if(var4 >= 1 && var4 <= 5 && var5.groundActions[var4 - 1] != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var5.groundActions[var4 - 1]; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 4202) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var5 = Skills.getItemDefinition(var3); + if(var4 >= 1 && var4 <= 5 && var5.inventoryActions[var4 - 1] != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var5.inventoryActions[var4 - 1]; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 4203) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Skills.getItemDefinition(var3).price; + return 1; + } else if(var0 == 4204) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Skills.getItemDefinition(var3).isStackable == 1?1:0; + return 1; + } else { + ItemDefinition var6; + if(var0 == 4205) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = Skills.getItemDefinition(var3); + if(var6.noteTemplate == -1 && var6.note >= 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.note; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3; + } + + return 1; + } else if(var0 == 4206) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = Skills.getItemDefinition(var3); + if(var6.noteTemplate >= 0 && var6.note >= 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.note; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3; + } + + return 1; + } else if(var0 == 4207) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Skills.getItemDefinition(var3).isMembersOnly?1:0; + return 1; + } else if(var0 == 4208) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = Skills.getItemDefinition(var3); + if(var6.placeholderTemplate == -1 && var6.placeholder >= 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.placeholder; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3; + } + + return 1; + } else if(var0 == 4209) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = Skills.getItemDefinition(var3); + if(var6.placeholderTemplate >= 0 && var6.placeholder >= 0) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.placeholder; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3; + } + + return 1; + } else if(var0 == 4210) { + String var7 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + class50.method900(var7, var4 == 1); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapSection0.__y_sn; + return 1; + } else if(var0 != 4211) { + if(var0 == 4212) { + class231.__hb_sg = 0; + return 1; + } else { + return 2; + } + } else { + if(AttackOption.__cj_sp != null && class231.__hb_sg < WorldMapSection0.__y_sn) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = AttackOption.__cj_sp[++class231.__hb_sg - 1] & '\uffff'; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } + + return 1; + } + } + } + } + + @ObfuscatedName("jv") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "-370289311" + ) + static boolean method15(int var0) { + for(int var1 = 0; var1 < Client.__client_pm; ++var1) { + if(Client.__client_pn[var1] == var0) { + return true; + } + } + + return false; + } + + @ObfuscatedName("kp") + @ObfuscatedSignature( + signature = "(Lho;I)I", + garbageValue = "1809366429" + ) + @Export("getWidgetClickMask") + static int getWidgetClickMask(Widget var0) { + IntegerNode var1 = (IntegerNode)Client.widgetClickMasks.get(((long)var0.id << 32) + (long)var0.childIndex); + return var1 != null?var1.integer:var0.clickMask; + } +} diff --git a/rs-client/src/main/java/class102.java b/rs-client/src/main/java/class102.java new file mode 100644 index 0000000000..0d10655c77 --- /dev/null +++ b/rs-client/src/main/java/class102.java @@ -0,0 +1,316 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("ca") +public class class102 { + @ObfuscatedName("m") + @Export("__ca_m") + static final int[] __ca_m; + @ObfuscatedName("f") + @Export("__ca_f") + static final float[] __ca_f; + @ObfuscatedName("x") + @Export("__ca_x") + static int[] __ca_x; + @ObfuscatedName("d") + @Export("__ca_d") + static int[] __ca_d; + @ObfuscatedName("k") + @Export("__ca_k") + static boolean[] __ca_k; + @ObfuscatedName("q") + int[] field1353; + @ObfuscatedName("w") + int field1360; + @ObfuscatedName("o") + int[] field1357; + @ObfuscatedName("u") + int[] field1352; + @ObfuscatedName("g") + int[] field1356; + @ObfuscatedName("l") + int[] field1358; + @ObfuscatedName("e") + int[][] field1359; + + static { + __ca_m = new int[]{256, 128, 86, 64}; + __ca_f = new float[]{1.0649863E-7F, 1.1341951E-7F, 1.2079015E-7F, 1.2863978E-7F, 1.369995E-7F, 1.459025E-7F, 1.5538409E-7F, 1.6548181E-7F, 1.7623574E-7F, 1.8768856E-7F, 1.998856E-7F, 2.128753E-7F, 2.2670913E-7F, 2.4144197E-7F, 2.5713223E-7F, 2.7384212E-7F, 2.9163792E-7F, 3.1059022E-7F, 3.307741E-7F, 3.5226967E-7F, 3.7516213E-7F, 3.995423E-7F, 4.255068E-7F, 4.5315863E-7F, 4.8260745E-7F, 5.1397E-7F, 5.4737063E-7F, 5.829419E-7F, 6.208247E-7F, 6.611694E-7F, 7.041359E-7F, 7.4989464E-7F, 7.98627E-7F, 8.505263E-7F, 9.057983E-7F, 9.646621E-7F, 1.0273513E-6F, 1.0941144E-6F, 1.1652161E-6F, 1.2409384E-6F, 1.3215816E-6F, 1.4074654E-6F, 1.4989305E-6F, 1.5963394E-6F, 1.7000785E-6F, 1.8105592E-6F, 1.9282195E-6F, 2.053526E-6F, 2.1869757E-6F, 2.3290977E-6F, 2.4804558E-6F, 2.6416496E-6F, 2.813319E-6F, 2.9961443E-6F, 3.1908505E-6F, 3.39821E-6F, 3.619045E-6F, 3.8542307E-6F, 4.1047006E-6F, 4.371447E-6F, 4.6555283E-6F, 4.958071E-6F, 5.280274E-6F, 5.623416E-6F, 5.988857E-6F, 6.3780467E-6F, 6.7925284E-6F, 7.2339453E-6F, 7.704048E-6F, 8.2047E-6F, 8.737888E-6F, 9.305725E-6F, 9.910464E-6F, 1.0554501E-5F, 1.1240392E-5F, 1.1970856E-5F, 1.2748789E-5F, 1.3577278E-5F, 1.4459606E-5F, 1.5399271E-5F, 1.6400005E-5F, 1.7465769E-5F, 1.8600793E-5F, 1.9809577E-5F, 2.1096914E-5F, 2.2467912E-5F, 2.3928002E-5F, 2.5482977E-5F, 2.7139005E-5F, 2.890265E-5F, 3.078091E-5F, 3.2781227E-5F, 3.4911533E-5F, 3.718028E-5F, 3.9596467E-5F, 4.2169668E-5F, 4.491009E-5F, 4.7828602E-5F, 5.0936775E-5F, 5.424693E-5F, 5.7772202E-5F, 6.152657E-5F, 6.552491E-5F, 6.9783084E-5F, 7.4317984E-5F, 7.914758E-5F, 8.429104E-5F, 8.976875E-5F, 9.560242E-5F, 1.0181521E-4F, 1.0843174E-4F, 1.1547824E-4F, 1.2298267E-4F, 1.3097477E-4F, 1.3948625E-4F, 1.4855085E-4F, 1.5820454E-4F, 1.6848555E-4F, 1.7943469E-4F, 1.9109536E-4F, 2.0351382E-4F, 2.167393E-4F, 2.3082423E-4F, 2.4582449E-4F, 2.6179955E-4F, 2.7881275E-4F, 2.9693157E-4F, 3.1622787E-4F, 3.3677815E-4F, 3.5866388E-4F, 3.8197188E-4F, 4.0679457E-4F, 4.3323037E-4F, 4.613841E-4F, 4.913675E-4F, 5.2329927E-4F, 5.573062E-4F, 5.935231E-4F, 6.320936E-4F, 6.731706E-4F, 7.16917E-4F, 7.635063E-4F, 8.1312325E-4F, 8.6596457E-4F, 9.2223985E-4F, 9.821722E-4F, 0.0010459992F, 0.0011139743F, 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 0.0019632196F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 0.0025254795F, 0.0026895993F, 0.0028643848F, 0.0030505287F, 0.003248769F, 0.0034598925F, 0.0036847359F, 0.0039241905F, 0.0041792067F, 0.004450795F, 0.004740033F, 0.005048067F, 0.0053761187F, 0.005725489F, 0.0060975635F, 0.0064938175F, 0.0069158226F, 0.0073652514F, 0.007843887F, 0.008353627F, 0.008896492F, 0.009474637F, 0.010090352F, 0.01074608F, 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 0.014722068F, 0.015678791F, 0.016697686F, 0.017782796F, 0.018938422F, 0.020169148F, 0.021479854F, 0.022875736F, 0.02436233F, 0.025945531F, 0.027631618F, 0.029427277F, 0.031339627F, 0.03337625F, 0.035545226F, 0.037855156F, 0.0403152F, 0.042935107F, 0.045725275F, 0.048696756F, 0.05186135F, 0.05523159F, 0.05882085F, 0.062643364F, 0.06671428F, 0.07104975F, 0.075666964F, 0.08058423F, 0.08582105F, 0.09139818F, 0.097337745F, 0.1036633F, 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 0.14201812F, 0.15124726F, 0.16107617F, 0.1715438F, 0.18269168F, 0.19456401F, 0.20720787F, 0.22067343F, 0.23501402F, 0.25028655F, 0.26655158F, 0.28387362F, 0.3023213F, 0.32196787F, 0.34289113F, 0.36517414F, 0.3889052F, 0.41417846F, 0.44109413F, 0.4697589F, 0.50028646F, 0.53279793F, 0.5674221F, 0.6042964F, 0.64356697F, 0.6853896F, 0.72993004F, 0.777365F, 0.8278826F, 0.88168305F, 0.9389798F, 1.0F}; + } + + class102() { + int var1 = MusicSample.method2352(16); + if(var1 != 1) { + throw new RuntimeException(); + } else { + int var2 = MusicSample.method2352(5); + int var3 = 0; + this.field1357 = new int[var2]; + + int var4; + int var5; + for(var4 = 0; var4 < var2; ++var4) { + var5 = MusicSample.method2352(4); + this.field1357[var4] = var5; + if(var5 >= var3) { + var3 = var5 + 1; + } + } + + this.field1352 = new int[var3]; + this.field1356 = new int[var3]; + this.field1358 = new int[var3]; + this.field1359 = new int[var3][]; + + int var7; + for(var4 = 0; var4 < var3; ++var4) { + this.field1352[var4] = MusicSample.method2352(3) + 1; + var5 = this.field1356[var4] = MusicSample.method2352(2); + if(var5 != 0) { + this.field1358[var4] = MusicSample.method2352(8); + } + + var5 = 1 << var5; + int[] var6 = new int[var5]; + this.field1359[var4] = var6; + + for(var7 = 0; var7 < var5; ++var7) { + var6[var7] = MusicSample.method2352(8) - 1; + } + } + + this.field1360 = MusicSample.method2352(2) + 1; + var4 = MusicSample.method2352(4); + var5 = 2; + + int var9; + for(var9 = 0; var9 < var2; ++var9) { + var5 += this.field1352[this.field1357[var9]]; + } + + this.field1353 = new int[var5]; + this.field1353[0] = 0; + this.field1353[1] = 1 << var4; + var5 = 2; + + for(var9 = 0; var9 < var2; ++var9) { + var7 = this.field1357[var9]; + + for(int var8 = 0; var8 < this.field1352[var7]; ++var8) { + this.field1353[var5++] = MusicSample.method2352(var4); + } + } + + if(__ca_x == null || __ca_x.length < var5) { + __ca_x = new int[var5]; + __ca_d = new int[var5]; + __ca_k = new boolean[var5]; + } + + } + } + + @ObfuscatedName("q") + int method2379(int var1, int var2, int var3, int var4, int var5) { + int var6 = var4 - var2; + int var7 = var3 - var1; + int var8 = var6 < 0?-var6:var6; + int var9 = (var5 - var1) * var8; + int var10 = var9 / var7; + return var6 < 0?var2 - var10:var10 + var2; + } + + @ObfuscatedName("w") + void method2365(int var1, int var2, int var3, int var4, float[] var5, int var6) { + int var7 = var4 - var2; + int var8 = var3 - var1; + int var9 = var7 < 0?-var7:var7; + int var10 = var7 / var8; + int var11 = var2; + int var12 = 0; + int var13 = var7 < 0?var10 - 1:var10 + 1; + var9 -= (var10 < 0?-var10:var10) * var8; + var5[var1] *= __ca_f[var2]; + if(var3 > var6) { + var3 = var6; + } + + for(int var14 = var1 + 1; var14 < var3; ++var14) { + var12 += var9; + if(var12 >= var8) { + var12 -= var8; + var11 += var13; + } else { + var11 += var10; + } + + var5[var14] *= __ca_f[var11]; + } + + } + + @ObfuscatedName("o") + void method2366(int var1, int var2) { + if(var1 < var2) { + int var3 = var1; + int var4 = __ca_x[var1]; + int var5 = __ca_d[var1]; + boolean var6 = __ca_k[var1]; + + for(int var7 = var1 + 1; var7 <= var2; ++var7) { + int var8 = __ca_x[var7]; + if(var8 < var4) { + __ca_x[var3] = var8; + __ca_d[var3] = __ca_d[var7]; + __ca_k[var3] = __ca_k[var7]; + ++var3; + __ca_x[var7] = __ca_x[var3]; + __ca_d[var7] = __ca_d[var3]; + __ca_k[var7] = __ca_k[var3]; + } + } + + __ca_x[var3] = var4; + __ca_d[var3] = var5; + __ca_k[var3] = var6; + this.method2366(var1, var3 - 1); + this.method2366(var3 + 1, var2); + } + } + + @ObfuscatedName("u") + boolean method2367() { + boolean var1 = MusicSample.method2338() != 0; + if(!var1) { + return false; + } else { + int var2 = this.field1353.length; + + int var3; + for(var3 = 0; var3 < var2; ++var3) { + __ca_x[var3] = this.field1353[var3]; + } + + var3 = __ca_m[this.field1360 - 1]; + int var4 = WorldMapCacheName.method634(var3 - 1); + __ca_d[0] = MusicSample.method2352(var4); + __ca_d[1] = MusicSample.method2352(var4); + int var5 = 2; + + for(int var6 = 0; var6 < this.field1357.length; ++var6) { + int var7 = this.field1357[var6]; + int var8 = this.field1352[var7]; + int var9 = this.field1356[var7]; + int var10 = (1 << var9) - 1; + int var11 = 0; + if(var9 > 0) { + var11 = MusicSample.field1323[this.field1358[var7]].method2306(); + } + + for(int var12 = 0; var12 < var8; ++var12) { + int var13 = this.field1359[var7][var11 & var10]; + var11 >>>= var9; + __ca_d[var5++] = var13 >= 0?MusicSample.field1323[var13].method2306():0; + } + } + + return true; + } + } + + @ObfuscatedName("g") + void method2375(float[] var1, int var2) { + int var3 = this.field1353.length; + int var4 = __ca_m[this.field1360 - 1]; + boolean[] var5 = __ca_k; + __ca_k[1] = true; + var5[0] = true; + + int var6; + int var7; + int var8; + int var9; + int var10; + for(var6 = 2; var6 < var3; ++var6) { + var7 = method2369(__ca_x, var6); + var8 = method2363(__ca_x, var6); + var9 = this.method2379(__ca_x[var7], __ca_d[var7], __ca_x[var8], __ca_d[var8], __ca_x[var6]); + var10 = __ca_d[var6]; + int var11 = var4 - var9; + int var13 = (var11 < var9?var11:var9) << 1; + if(var10 != 0) { + boolean[] var14 = __ca_k; + __ca_k[var8] = true; + var14[var7] = true; + __ca_k[var6] = true; + if(var10 >= var13) { + __ca_d[var6] = var11 > var9?var9 + (var10 - var9):var11 + (var9 - var10) - 1; + } else { + __ca_d[var6] = (var10 & 1) != 0?var9 - (var10 + 1) / 2:var10 / 2 + var9; + } + } else { + __ca_k[var6] = false; + __ca_d[var6] = var9; + } + } + + this.method2366(0, var3 - 1); + var6 = 0; + var7 = __ca_d[0] * this.field1360; + + for(var8 = 1; var8 < var3; ++var8) { + if(__ca_k[var8]) { + var9 = __ca_x[var8]; + var10 = __ca_d[var8] * this.field1360; + this.method2365(var6, var7, var9, var10, var1, var2); + if(var9 >= var2) { + return; + } + + var6 = var9; + var7 = var10; + } + } + + float var16 = __ca_f[var7]; + + for(var9 = var6; var9 < var2; ++var9) { + var1[var9] *= var16; + } + + } + + @ObfuscatedName("m") + static int method2369(int[] var0, int var1) { + int var2 = var0[var1]; + int var3 = -1; + int var4 = Integer.MIN_VALUE; + + for(int var5 = 0; var5 < var1; ++var5) { + int var6 = var0[var5]; + if(var6 < var2 && var6 > var4) { + var3 = var5; + var4 = var6; + } + } + + return var3; + } + + @ObfuscatedName("f") + static int method2363(int[] var0, int var1) { + int var2 = var0[var1]; + int var3 = -1; + int var4 = Integer.MAX_VALUE; + + for(int var5 = 0; var5 < var1; ++var5) { + int var6 = var0[var5]; + if(var6 > var2 && var6 < var4) { + var3 = var5; + var4 = var6; + } + } + + return var3; + } +} diff --git a/rs-client/src/main/java/class109.java b/rs-client/src/main/java/class109.java new file mode 100644 index 0000000000..aa4195a34b --- /dev/null +++ b/rs-client/src/main/java/class109.java @@ -0,0 +1,121 @@ +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("da") +public class class109 { + @ObfuscatedName("m") + int field1409; + @ObfuscatedName("f") + int field1406; + @ObfuscatedName("q") + int field1407; + @ObfuscatedName("w") + int field1408; + @ObfuscatedName("o") + int field1405; + @ObfuscatedName("u") + int field1411; + @ObfuscatedName("g") + int[] field1410; + + class109() { + this.field1409 = MusicSample.method2352(16); + this.field1406 = MusicSample.method2352(24); + this.field1407 = MusicSample.method2352(24); + this.field1408 = MusicSample.method2352(24) + 1; + this.field1405 = MusicSample.method2352(6) + 1; + this.field1411 = MusicSample.method2352(8); + int[] var1 = new int[this.field1405]; + + int var2; + for(var2 = 0; var2 < this.field1405; ++var2) { + int var3 = 0; + int var4 = MusicSample.method2352(3); + boolean var5 = MusicSample.method2338() != 0; + if(var5) { + var3 = MusicSample.method2352(5); + } + + var1[var2] = var3 << 3 | var4; + } + + this.field1410 = new int[this.field1405 * 8]; + + for(var2 = 0; var2 < this.field1405 * 8; ++var2) { + this.field1410[var2] = (var1[var2 >> 3] & 1 << (var2 & 7)) != 0?MusicSample.method2352(8):-1; + } + + } + + @ObfuscatedName("m") + void method2473(float[] var1, int var2, boolean var3) { + int var4; + for(var4 = 0; var4 < var2; ++var4) { + var1[var4] = 0.0F; + } + + if(!var3) { + var4 = MusicSample.field1323[this.field1411].field1306; + int var5 = this.field1407 - this.field1406; + int var6 = var5 / this.field1408; + int[] var7 = new int[var6]; + + for(int var8 = 0; var8 < 8; ++var8) { + int var9 = 0; + + while(var9 < var6) { + int var10; + int var11; + if(var8 == 0) { + var10 = MusicSample.field1323[this.field1411].method2306(); + + for(var11 = var4 - 1; var11 >= 0; --var11) { + if(var9 + var11 < var6) { + var7[var9 + var11] = var10 % this.field1405; + } + + var10 /= this.field1405; + } + } + + for(var10 = 0; var10 < var4; ++var10) { + var11 = var7[var9]; + int var12 = this.field1410[var8 + var11 * 8]; + if(var12 >= 0) { + int var13 = var9 * this.field1408 + this.field1406; + class98 var14 = MusicSample.field1323[var12]; + int var15; + if(this.field1409 == 0) { + var15 = this.field1408 / var14.field1306; + + for(int var16 = 0; var16 < var15; ++var16) { + float[] var17 = var14.method2307(); + + for(int var18 = 0; var18 < var14.field1306; ++var18) { + var1[var13 + var16 + var18 * var15] += var17[var18]; + } + } + } else { + var15 = 0; + + while(var15 < this.field1408) { + float[] var19 = var14.method2307(); + + for(int var20 = 0; var20 < var14.field1306; ++var20) { + var1[var13 + var15] += var19[var20]; + ++var15; + } + } + } + } + + ++var9; + if(var9 >= var6) { + break; + } + } + } + } + + } + } +} diff --git a/rs-client/src/main/java/class11.java b/rs-client/src/main/java/class11.java new file mode 100644 index 0000000000..a8a3033982 --- /dev/null +++ b/rs-client/src/main/java/class11.java @@ -0,0 +1,274 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("k") +final class class11 implements Comparator { + @ObfuscatedName("hl") + @ObfuscatedGetter( + intValue = -1945589829 + ) + @Export("cameraZ") + static int cameraZ; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ll;Ll;B)I", + garbageValue = "1" + ) + int method138(GrandExchangeEvent var1, GrandExchangeEvent var2) { + return var1.__m_3().compareTo(var2.__m_3()); + } + + public boolean equals(Object var1) { + return super.equals(var1); + } + + public int compare(Object var1, Object var2) { + return this.method138((GrandExchangeEvent)var1, (GrandExchangeEvent)var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lhx;B)V", + garbageValue = "26" + ) + @Export("updatePlayer") + static final void updatePlayer(PacketBuffer var0) { + var0.importIndex(); + int var1 = Client.localPlayerIndex; + Player var2 = Canvas.localPlayer = Client.players[var1] = new Player(); + var2.index = var1; + int var3 = var0.readBits(30); + byte var4 = (byte)(var3 >> 28); + int var5 = var3 >> 14 & 16383; + int var6 = var3 & 16383; + var2.pathX[0] = var5 - class50.baseX; + var2.x = (var2.pathX[0] << 7) + (var2.transformedSize() << 6); + var2.pathY[0] = var6 - GraphicsObject.baseY; + var2.y = (var2.pathY[0] << 7) + (var2.transformedSize() << 6); + SoundSystem.plane = var2.plane = var4; + if(Players.__cq_o[var1] != null) { + var2.read(Players.__cq_o[var1]); + } + + Players.Players_count = 0; + Players.Players_indices[++Players.Players_count - 1] = var1; + Players.__cq_q[var1] = 0; + Players.__cq_l = 0; + + for(int var7 = 1; var7 < 2048; ++var7) { + if(var1 != var7) { + int var8 = var0.readBits(18); + int var9 = var8 >> 16; + int var10 = var8 >> 8 & 597; + int var11 = var8 & 597; + Players.Players_regions[var7] = (var10 << 14) + var11 + (var9 << 28); + Players.Players_orientations[var7] = 0; + Players.Players_targetIndices[var7] = -1; + Players.__cq_e[++Players.__cq_l - 1] = var7; + Players.__cq_q[var7] = 0; + } + } + + var0.exportIndex(); + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "1948861515" + ) + static int method141(int var0, Script var1, boolean var2) { + Widget var3; + if(var0 >= 2000) { + var0 -= 1000; + var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + } else { + var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + } + + String var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + int[] var5 = null; + if(var4.length() > 0 && var4.charAt(var4.length() - 1) == 'Y') { + int var6 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var6 > 0) { + for(var5 = new int[var6]; var6-- > 0; var5[var6] = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]) { + ; + } + } + + var4 = var4.substring(0, var4.length() - 1); + } + + Object[] var8 = new Object[var4.length() + 1]; + + int var7; + for(var7 = var8.length - 1; var7 >= 1; --var7) { + if(var4.charAt(var7 - 1) == 's') { + var8[var7] = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + } else { + var8[var7] = new Integer(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + } + } + + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var7 != -1) { + var8[0] = new Integer(var7); + } else { + var8 = null; + } + + if(var0 == 1400) { + var3.onClick = var8; + } else if(var0 == 1401) { + var3.onHold = var8; + } else if(var0 == 1402) { + var3.onRelease = var8; + } else if(var0 == 1403) { + var3.onMouseOver = var8; + } else if(var0 == 1404) { + var3.onMouseLeave = var8; + } else if(var0 == 1405) { + var3.onDrag = var8; + } else if(var0 == 1406) { + var3.onTargetLeave = var8; + } else if(var0 == 1407) { + var3.onVarTransmit = var8; + var3.varTransmitTriggers = var5; + } else if(var0 == 1408) { + var3.onTimer = var8; + } else if(var0 == 1409) { + var3.onOp = var8; + } else if(var0 == 1410) { + var3.onDragComplete = var8; + } else if(var0 == 1411) { + var3.onClickRepeat = var8; + } else if(var0 == 1412) { + var3.onMouseRepeat = var8; + } else if(var0 == 1414) { + var3.onInvTransmit = var8; + var3.invTransmitTriggers = var5; + } else if(var0 == 1415) { + var3.onStatTransmit = var8; + var3.statTransmitTriggers = var5; + } else if(var0 == 1416) { + var3.onTargetEnter = var8; + } else if(var0 == 1417) { + var3.onScroll = var8; + } else if(var0 == 1418) { + var3.__em = var8; + } else if(var0 == 1419) { + var3.onKeyListener = var8; + } else if(var0 == 1420) { + var3.__ex = var8; + } else if(var0 == 1421) { + var3.__ej = var8; + } else if(var0 == 1422) { + var3.__el = var8; + } else if(var0 == 1423) { + var3.onDialogAbortListener = var8; + } else if(var0 == 1424) { + var3.__ei = var8; + } else if(var0 == 1425) { + var3.__eq = var8; + } else if(var0 == 1426) { + var3.__eh = var8; + } else { + if(var0 != 1427) { + return 2; + } + + var3.__ee = var8; + } + + var3.hasListener = true; + return 1; + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "1020189514" + ) + static int method146(int var0, Script var1, boolean var2) { + Widget var3; + if(var0 == 2700) { + var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.itemId; + return 1; + } else if(var0 == 2701) { + var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + if(var3.itemId != -1) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.itemQuantity; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 2702) { + int var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + WidgetGroupParent var4 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var5); + if(var4 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 2706) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.rootWidgetGroup; + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("ak") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-87" + ) + protected static final void method145() { + UserComparator6.clock.mark(); + + int var0; + for(var0 = 0; var0 < 32; ++var0) { + GameShell.__ba_a[var0] = 0L; + } + + for(var0 = 0; var0 < 32; ++var0) { + GameShell.__ba_j[var0] = 0L; + } + + GameShell.__ba_l = 0; + } + + @ObfuscatedName("ih") + @ObfuscatedSignature( + signature = "(IIIIII)V", + garbageValue = "-1292134247" + ) + static final void method148(int var0, int var1, int var2, int var3, int var4) { + class32.scrollBarSprites[0].__q_496(var0, var1); + class32.scrollBarSprites[1].__q_496(var0, var3 + var1 - 16); + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1 + 16, 16, var3 - 32, Client.__client_hx); + int var5 = var3 * (var3 - 32) / var4; + if(var5 < 8) { + var5 = 8; + } + + int var6 = (var3 - 32 - var5) * var2 / (var4 - var3); + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var6 + var1 + 16, 16, var5, Client.__client_hn); + Rasterizer2D.Rasterizer2D_drawVerticalLine(var0, var6 + var1 + 16, var5, Client.__client_hg); + Rasterizer2D.Rasterizer2D_drawVerticalLine(var0 + 1, var6 + var1 + 16, var5, Client.__client_hg); + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0, var6 + var1 + 16, 16, Client.__client_hg); + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0, var6 + var1 + 17, 16, Client.__client_hg); + Rasterizer2D.Rasterizer2D_drawVerticalLine(var0 + 15, var6 + var1 + 16, var5, Client.__client_hr); + Rasterizer2D.Rasterizer2D_drawVerticalLine(var0 + 14, var6 + var1 + 17, var5 - 1, Client.__client_hr); + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0, var5 + var6 + var1 + 15, 16, Client.__client_hr); + Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0 + 1, var6 + var5 + var1 + 14, 15, Client.__client_hr); + } +} diff --git a/rs-client/src/main/java/class114.java b/rs-client/src/main/java/class114.java new file mode 100644 index 0000000000..8339fc27b5 --- /dev/null +++ b/rs-client/src/main/java/class114.java @@ -0,0 +1,36 @@ +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("dg") +public class class114 { + @ObfuscatedName("m") + int field1453; + @ObfuscatedName("f") + int field1454; + @ObfuscatedName("q") + int[] field1452; + @ObfuscatedName("w") + int[] field1455; + + class114() { + MusicSample.method2352(16); + this.field1453 = MusicSample.method2338() != 0?MusicSample.method2352(4) + 1:1; + if(MusicSample.method2338() != 0) { + MusicSample.method2352(8); + } + + MusicSample.method2352(2); + if(this.field1453 > 1) { + this.field1454 = MusicSample.method2352(4); + } + + this.field1452 = new int[this.field1453]; + this.field1455 = new int[this.field1453]; + + for(int var1 = 0; var1 < this.field1453; ++var1) { + MusicSample.method2352(8); + this.field1452[var1] = MusicSample.method2352(8); + this.field1455[var1] = MusicSample.method2352(8); + } + + } +} diff --git a/rs-client/src/main/java/class12.java b/rs-client/src/main/java/class12.java new file mode 100644 index 0000000000..7447f2a24c --- /dev/null +++ b/rs-client/src/main/java/class12.java @@ -0,0 +1,164 @@ +import java.util.Comparator; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("n") +final class class12 implements Comparator { + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lho;" + ) + @Export("__n_n") + static Widget __n_n; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ll;Ll;B)I", + garbageValue = "-86" + ) + int method149(GrandExchangeEvent var1, GrandExchangeEvent var2) { + return var1.__f < var2.__f?-1:(var1.__f == var2.__f?0:1); + } + + public boolean equals(Object var1) { + return super.equals(var1); + } + + public int compare(Object var1, Object var2) { + return this.method149((GrandExchangeEvent)var1, (GrandExchangeEvent)var2); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1759858381" + ) + public static boolean method162(int var0) { + return var0 == 10 || var0 == 11 || var0 == 12 || var0 == 13 || var0 == 14 || var0 == 15 || var0 == 16 || var0 == 17; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(CII)C", + garbageValue = "1632289577" + ) + static char method155(char var0, int var1) { + if(var0 >= 192 && var0 <= 255) { + if(var0 >= 192 && var0 <= 198) { + return 'A'; + } + + if(var0 == 199) { + return 'C'; + } + + if(var0 >= 200 && var0 <= 203) { + return 'E'; + } + + if(var0 >= 204 && var0 <= 207) { + return 'I'; + } + + if(var0 >= 210 && var0 <= 214) { + return 'O'; + } + + if(var0 >= 217 && var0 <= 220) { + return 'U'; + } + + if(var0 == 221) { + return 'Y'; + } + + if(var0 == 223) { + return 's'; + } + + if(var0 >= 224 && var0 <= 230) { + return 'a'; + } + + if(var0 == 231) { + return 'c'; + } + + if(var0 >= 232 && var0 <= 235) { + return 'e'; + } + + if(var0 >= 236 && var0 <= 239) { + return 'i'; + } + + if(var0 >= 242 && var0 <= 246) { + return 'o'; + } + + if(var0 >= 249 && var0 <= 252) { + return 'u'; + } + + if(var0 == 253 || var0 == 255) { + return 'y'; + } + } + + return var0 == 338?'O':(var0 == 339?'o':(var0 == 376?'Y':var0)); + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "13" + ) + static int method161(int var0) { + Message var1 = (Message)Messages.Messages_hashTable.get((long)var0); + return var1 == null?-1:(var1.previousDual == Messages.Messages_queue.sentinel?-1:((Message)var1.previousDual).count); + } + + @ObfuscatedName("ja") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1731524026" + ) + static void method159() { + for(WidgetGroupParent var0 = (WidgetGroupParent)Client.widgetGroupParents.first(); var0 != null; var0 = (WidgetGroupParent)Client.widgetGroupParents.next()) { + int var1 = var0.group; + if(GroundItemPile.loadWidgetGroup(var1)) { + boolean var2 = true; + Widget[] var3 = Widget.widgets[var1]; + + int var4; + for(var4 = 0; var4 < var3.length; ++var4) { + if(var3[var4] != null) { + var2 = var3[var4].isIf3; + break; + } + } + + if(!var2) { + var4 = (int)var0.key; + Widget var5 = Huffman.getWidget(var4); + if(var5 != null) { + class22.method295(var5); + } + } + } + } + + } + + @ObfuscatedName("kg") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-7" + ) + static final void method158() { + PacketBufferNode var0 = Interpreter.method1915(ClientPacket.__gs_cr, Client.packetWriter.isaacCipher); + var0.packetBuffer.writeByte(0); + Client.packetWriter.__q_167(var0); + } +} diff --git a/rs-client/src/main/java/class13.java b/rs-client/src/main/java/class13.java new file mode 100644 index 0000000000..bf78e4c305 --- /dev/null +++ b/rs-client/src/main/java/class13.java @@ -0,0 +1,86 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("i") +public class class13 { + @ObfuscatedName("x") + @Export("__i_x") + static int[] __i_x; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lhe;" + ) + @Export("musicTrack") + public static MusicTrack musicTrack; + @ObfuscatedName("af") + @ObfuscatedGetter( + intValue = -1810047523 + ) + @Export("__i_af") + static int __i_af; + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIII)Lln;", + garbageValue = "862375604" + ) + static Sprite method164(int var0, int var1, int var2) { + return (Sprite)WorldMapRegion.__av_o.get(MouseHandler.method1083(var0, var1, var2)); + } + + @ObfuscatedName("fm") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "63" + ) + static final void method163() { + if(AbstractIndexCache.pcmPlayer1 != null) { + AbstractIndexCache.pcmPlayer1.run(); + } + + if(WorldMapCacheName.pcmPlayer0 != null) { + WorldMapCacheName.pcmPlayer0.run(); + } + + } + + @ObfuscatedName("hm") + @ObfuscatedSignature( + signature = "(Lbi;I)V", + garbageValue = "-527387190" + ) + static final void method165(class68 var0) { + long var1 = 0L; + int var3 = -1; + int var4 = 0; + int var5 = 0; + if(var0.field906 == 0) { + var1 = class65.scene.__ar_244(var0.field911, var0.field913, var0.field901); + } + + if(var0.field906 == 1) { + var1 = class65.scene.__ac_245(var0.field911, var0.field913, var0.field901); + } + + if(var0.field906 == 2) { + var1 = class65.scene.__ay_246(var0.field911, var0.field913, var0.field901); + } + + if(var0.field906 == 3) { + var1 = class65.scene.getFloorDecorationTag(var0.field911, var0.field913, var0.field901); + } + + if(var1 != 0L) { + int var6 = class65.scene.getObjectFlags(var0.field911, var0.field913, var0.field901, var1); + var3 = HitSplatDefinition.method4972(var1); + var4 = var6 & 31; + var5 = var6 >> 6 & 3; + } + + var0.field903 = var3; + var0.field905 = var4; + var0.field904 = var5; + } +} diff --git a/rs-client/src/main/java/class14.java b/rs-client/src/main/java/class14.java new file mode 100644 index 0000000000..04ce881b16 --- /dev/null +++ b/rs-client/src/main/java/class14.java @@ -0,0 +1,63 @@ +import java.io.File; +import java.io.IOException; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("a") +public class class14 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/io/File;Ljava/io/File;I)V", + garbageValue = "1360082712" + ) + public static void method167(File var0, File var1) { + try { + AccessFile var2 = new AccessFile(class337.clDat, "rw", 10000L); + Buffer var3 = new Buffer(500); + var3.writeByte(3); + var3.writeByte(var1 != null?1:0); + var3.__j_296(var0.getPath()); + if(var1 != null) { + var3.__j_296(""); + } + + var2.write(var3.array, 0, var3.index); + var2.close(); + } catch (IOException var4) { + var4.printStackTrace(); + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(BI)C", + garbageValue = "-1102775612" + ) + public static char method171(byte var0) { + int var1 = var0 & 255; + if(var1 == 0) { + throw new IllegalArgumentException(""); + } else { + if(var1 >= 128 && var1 < 160) { + char var2 = class304.cp1252AsciiExtension[var1 - 128]; + if(var2 == 0) { + var2 = '?'; + } + + var1 = var2; + } + + return (char)var1; + } + } + + @ObfuscatedName("gt") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1103685678" + ) + static boolean method169() { + return (Client.__client_ke & 8) != 0; + } +} diff --git a/rs-client/src/main/java/class15.java b/rs-client/src/main/java/class15.java new file mode 100644 index 0000000000..6ef8c64f1f --- /dev/null +++ b/rs-client/src/main/java/class15.java @@ -0,0 +1,210 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("z") +public class class15 extends class21 { + @ObfuscatedName("si") + @ObfuscatedGetter( + longValue = 3423502126894795079L + ) + @Export("__z_si") + static long __z_si; + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Lap;" + ) + @Export("worldMapEvent") + static WorldMapEvent worldMapEvent; + @ObfuscatedName("bs") + @ObfuscatedSignature( + signature = "Liy;" + ) + @Export("serverBuild") + static ServerBuild serverBuild; + @ObfuscatedName("gt") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("headIconPkSprites") + static Sprite[] headIconPkSprites; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "962518033" + ) + void method173(Buffer var1) { + int var2 = var1.readUnsignedByte(); + if(var2 != class31.field259.field255) { + throw new IllegalStateException(""); + } else { + super.field148 = var1.readUnsignedByte(); + super.field156 = var1.readUnsignedByte(); + super.field149 = var1.__ag_302(); + super.field146 = var1.__ag_302(); + super.field159 = var1.__ag_302(); + super.field147 = var1.__ag_302(); + super.field150 = var1.__ap_310(); + super.field152 = var1.__ap_310(); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1937224298" + ) + void vmethod715(Buffer var1) { + super.field156 = Math.min(super.field156, 4); + super.field151 = new short[1][64][64]; + super.field145 = new short[super.field156][64][64]; + super.field154 = new byte[super.field156][64][64]; + super.field155 = new byte[super.field156][64][64]; + super.field144 = new class25[super.field156][64][64][]; + int var2 = var1.readUnsignedByte(); + if(var2 != class30.field246.field248) { + throw new IllegalStateException(""); + } else { + int var3 = var1.readUnsignedByte(); + int var4 = var1.readUnsignedByte(); + if(var3 == super.field159 && var4 == super.field147) { + for(int var5 = 0; var5 < 64; ++var5) { + for(int var6 = 0; var6 < 64; ++var6) { + this.method259(var5, var6, var1); + } + } + + } else { + throw new IllegalStateException(""); + } + } + } + + public boolean equals(Object var1) { + if(!(var1 instanceof class15)) { + return false; + } else { + class15 var2 = (class15)var1; + return super.field159 == var2.field159 && super.field147 == var2.field147; + } + } + + public int hashCode() { + return super.field159 | super.field147 << 8; + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(IIB)I", + garbageValue = "3" + ) + static final int method183(int var0, int var1) { + if(var0 == -1) { + return 12345678; + } else { + var1 = (var0 & 127) * var1 / 128; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & 65408) + var1; + } + } + + @ObfuscatedName("p") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "2139921057" + ) + static int method182(int var0, Script var1, boolean var2) { + Widget var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + if(var0 == 2800) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class211.method4107(class1.getWidgetClickMask(var3)); + return 1; + } else if(var0 != 2801) { + if(var0 == 2802) { + if(var3.dataText == null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.dataText; + } + + return 1; + } else { + return 2; + } + } else { + int var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + --var4; + if(var3.actions != null && var4 < var3.actions.length && var3.actions[var4] != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.actions[var4]; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } + } + + @ObfuscatedName("fh") + @ObfuscatedSignature( + signature = "(ZI)V", + garbageValue = "-1757982583" + ) + static final void method184(boolean var0) { + if(var0) { + Client.field658 = Login.__cu_ba?class159.field1980:class159.field1983; + } else { + Client.field658 = ReflectionCheck.clientPreferences.parameters.containsKey(Integer.valueOf(class279.method5357(Login.Login_username)))?class159.field1982:class159.field1985; + } + + } + + @ObfuscatedName("jn") + @ObfuscatedSignature( + signature = "(Lho;I)V", + garbageValue = "1585987978" + ) + static final void method186(Widget var0) { + int var1 = var0.contentType; + if(var1 == 324) { + if(Client.__client_sd == -1) { + Client.__client_sd = var0.spriteId2; + Client.__client_sl = var0.spriteId; + } + + if(Client.__client_ru.isFemale) { + var0.spriteId2 = Client.__client_sd; + } else { + var0.spriteId2 = Client.__client_sl; + } + + } else if(var1 == 325) { + if(Client.__client_sd == -1) { + Client.__client_sd = var0.spriteId2; + Client.__client_sl = var0.spriteId; + } + + if(Client.__client_ru.isFemale) { + var0.spriteId2 = Client.__client_sl; + } else { + var0.spriteId2 = Client.__client_sd; + } + + } else if(var1 == 327) { + var0.modelAngleX = 150; + var0.modelAngleY = (int)(Math.sin((double)Client.cycle / 40.0D) * 256.0D) & 2047; + var0.modelType = 5; + var0.modelId = 0; + } else if(var1 == 328) { + var0.modelAngleX = 150; + var0.modelAngleY = (int)(Math.sin((double)Client.cycle / 40.0D) * 256.0D) & 2047; + var0.modelType = 5; + var0.modelId = 1; + } + } +} diff --git a/rs-client/src/main/java/class157.java b/rs-client/src/main/java/class157.java new file mode 100644 index 0000000000..c4948607bb --- /dev/null +++ b/rs-client/src/main/java/class157.java @@ -0,0 +1,45 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fw") +public class class157 extends AbstractUserComparator { + @ObfuscatedName("nm") + @ObfuscatedGetter( + intValue = 1006519291 + ) + @Export("__fw_nm") + static int __fw_nm; + @ObfuscatedName("m") + final boolean field1969; + + public class157(boolean var1) { + this.field1969 = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lke;Lke;I)I", + garbageValue = "884616259" + ) + int method3381(Buddy var1, Buddy var2) { + return var2.rank != var1.rank?(this.field1969?var1.rank - var2.rank:var2.rank - var1.rank):this.__x_461(var1, var2); + } + + public int compare(Object var1, Object var2) { + return this.method3381((Buddy)var1, (Buddy)var2); + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "307754910" + ) + public static void method3382() { + Widget.widgetSpriteCache.clear(); + Widget.Widget_cachedModels.clear(); + Widget.Widget_cachedFonts.clear(); + Widget.__ho_z.clear(); + } +} diff --git a/rs-client/src/main/java/class159.java b/rs-client/src/main/java/class159.java new file mode 100644 index 0000000000..8018fc0c88 --- /dev/null +++ b/rs-client/src/main/java/class159.java @@ -0,0 +1,61 @@ +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fc") +public enum class159 implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lfc;" + ) + field1982(2, 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lfc;" + ) + field1980(3, 1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lfc;" + ) + field1985(1, 2), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lfc;" + ) + field1983(0, 3); + + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1975536793 + ) + public final int field1984; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 458308007 + ) + final int field1981; + + class159(int var3, int var4) { + this.field1984 = var3; + this.field1981 = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.field1981; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(CI)Z", + garbageValue = "1176730001" + ) + public static boolean method3394(char var0) { + return var0 >= '0' && var0 <= '9'; + } +} diff --git a/rs-client/src/main/java/class16.java b/rs-client/src/main/java/class16.java new file mode 100644 index 0000000000..c9eeee21fa --- /dev/null +++ b/rs-client/src/main/java/class16.java @@ -0,0 +1,591 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("j") +public class class16 { + @ObfuscatedName("ol") + @ObfuscatedSignature( + signature = "Lfv;" + ) + @Export("mouseWheel") + static MouseWheel mouseWheel; + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lbp;" + ) + static class72 field85; + @ObfuscatedName("dv") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache10") + static IndexCache indexCache10; + @ObfuscatedName("ga") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("mapMarkerSprites") + static Sprite[] mapMarkerSprites; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BILjava/lang/CharSequence;I)I", + garbageValue = "-1434501763" + ) + public static int method190(byte[] var0, int var1, CharSequence var2) { + int var3 = var2.length(); + int var4 = var1; + + for(int var5 = 0; var5 < var3; ++var5) { + char var6 = var2.charAt(var5); + if(var6 <= 127) { + var0[var4++] = (byte)var6; + } else if(var6 <= 2047) { + var0[var4++] = (byte)(192 | var6 >> 6); + var0[var4++] = (byte)(128 | var6 & '?'); + } else { + var0[var4++] = (byte)(224 | var6 >> '\f'); + var0[var4++] = (byte)(128 | var6 >> 6 & 63); + var0[var4++] = (byte)(128 | var6 & '?'); + } + } + + return var4 - var1; + } + + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "1394688825" + ) + static int method188(int var0, Script var1, boolean var2) { + Widget var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + if(var0 == 1800) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class211.method4107(class1.getWidgetClickMask(var3)); + return 1; + } else if(var0 != 1801) { + if(var0 == 1802) { + if(var3.dataText == null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.dataText; + } + + return 1; + } else { + return 2; + } + } else { + int var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + --var4; + if(var3.actions != null && var4 < var3.actions.length && var3.actions[var4] != null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.actions[var4]; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } + } + + @ObfuscatedName("hh") + @ObfuscatedSignature( + signature = "(Lgf;I)V", + garbageValue = "1917804788" + ) + static final void method189(class190 var0) { + PacketBuffer var1 = Client.packetWriter.packetBuffer; + int var3; + int var5; + int var6; + int var7; + int var8; + int var9; + int var10; + int var12; + byte var13; + int var14; + if(class190.field2342 == var0) { + byte var2 = var1.__bk_320(); + var3 = var1.__bm_326(); + byte var4 = var1.__bk_320(); + var5 = var1.__bu_325(); + var6 = var1.__ag_302(); + var7 = var1.__bb_317(); + var8 = var7 >> 2; + var9 = var7 & 3; + var10 = Client.__client_gd[var8]; + byte var11 = var1.__bn_319(); + var12 = var1.__by_324(); + var13 = var1.__bk_320(); + var14 = var1.readUnsignedByteNegate(); + int var15 = (var14 >> 4 & 7) + WorldMapSection3.__p_go; + int var16 = (var14 & 7) + Canvas.__ao_gk; + Player var17; + if(var12 == Client.localPlayerIndex) { + var17 = Canvas.localPlayer; + } else { + var17 = Client.players[var12]; + } + + if(var17 != null) { + ObjectDefinition var18 = class50.getObjectDefinition(var5); + int var19; + int var20; + if(var9 != 1 && var9 != 3) { + var19 = var18.sizeX; + var20 = var18.sizeY; + } else { + var19 = var18.sizeY; + var20 = var18.sizeX; + } + + int var21 = var15 + (var19 >> 1); + int var22 = var15 + (var19 + 1 >> 1); + int var23 = var16 + (var20 >> 1); + int var24 = var16 + (var20 + 1 >> 1); + int[][] var25 = Tiles.Tiles_heights[SoundSystem.plane]; + int var26 = var25[var22][var23] + var25[var21][var23] + var25[var21][var24] + var25[var22][var24] >> 2; + int var27 = (var15 << 7) + (var19 << 6); + int var28 = (var16 << 7) + (var20 << 6); + Model var29 = var18.getModel(var8, var9, var25, var27, var26, var28); + if(var29 != null) { + class258.method4898(SoundSystem.plane, var15, var16, var10, -1, 0, 0, var6 + 1, var3 + 1); + var17.animationCycleStart = var6 + Client.cycle; + var17.animationCycleEnd = var3 + Client.cycle; + var17.model0 = var29; + var17.__k = var15 * 128 + var19 * 64; + var17.__i = var16 * 128 + var20 * 64; + var17.tileHeight2 = var26; + byte var30; + if(var2 > var13) { + var30 = var2; + var2 = var13; + var13 = var30; + } + + if(var11 > var4) { + var30 = var11; + var11 = var4; + var4 = var30; + } + + var17.__z = var15 + var2; + var17.__s = var13 + var15; + var17.__j = var11 + var16; + var17.__t = var4 + var16; + } + } + } + + int var37; + int var38; + if(class190.field2349 == var0) { + var37 = var1.__bb_317(); + var3 = (var37 >> 4 & 7) + WorldMapSection3.__p_go; + var38 = (var37 & 7) + Canvas.__ao_gk; + var5 = var1.__bq_318(); + var6 = var5 >> 2; + var7 = var5 & 3; + var8 = Client.__client_gd[var6]; + var9 = var1.__bu_325(); + if(var3 >= 0 && var38 >= 0 && var3 < 104 && var38 < 104) { + class258.method4898(SoundSystem.plane, var3, var38, var8, var9, var6, var7, 0, -1); + } + + } else { + if(class190.field2345 == var0) { + var37 = var1.readUnsignedByte(); + var3 = (var37 >> 4 & 7) + WorldMapSection3.__p_go; + var38 = (var37 & 7) + Canvas.__ao_gk; + var5 = var1.__bq_318(); + var6 = var1.__bb_317(); + var7 = var6 >> 4 & 15; + var8 = var6 & 7; + var9 = var1.__bm_326(); + if(var3 >= 0 && var38 >= 0 && var3 < 104 && var38 < 104) { + var10 = var7 + 1; + if(Canvas.localPlayer.pathX[0] >= var3 - var10 && Canvas.localPlayer.pathX[0] <= var10 + var3 && Canvas.localPlayer.pathY[0] >= var38 - var10 && Canvas.localPlayer.pathY[0] <= var10 + var38 && Client.__client_qc != 0 && var8 > 0 && Client.soundEffectCount < 50) { + Client.soundEffectIds[Client.soundEffectCount] = var9; + Client.unknownSoundValues1[Client.soundEffectCount] = var8; + Client.queuedSoundEffectDelays[Client.soundEffectCount] = var5; + Client.soundEffects[Client.soundEffectCount] = null; + Client.soundLocations[Client.soundEffectCount] = var7 + (var38 << 8) + (var3 << 16); + ++Client.soundEffectCount; + } + } + } + + if(class190.field2341 == var0) { + var37 = var1.__ag_302(); + var3 = var1.__bb_317(); + var38 = var1.__bu_325(); + var5 = var1.readUnsignedByte(); + var6 = (var5 >> 4 & 7) + WorldMapSection3.__p_go; + var7 = (var5 & 7) + Canvas.__ao_gk; + if(var6 >= 0 && var7 >= 0 && var6 < 104 && var7 < 104) { + var6 = var6 * 128 + 64; + var7 = var7 * 128 + 64; + GraphicsObject var42 = new GraphicsObject(var37, SoundSystem.plane, var6, var7, class32.getTileHeight(var6, var7, SoundSystem.plane) - var3, var38, Client.cycle); + Client.graphicsObjects.addFirst(var42); + } + + } else { + int var39; + if(class190.field2344 == var0) { + var37 = var1.__bq_318(); + var3 = var37 >> 2; + var38 = var37 & 3; + var5 = Client.__client_gd[var3]; + var6 = var1.readUnsignedByteNegate(); + var7 = (var6 >> 4 & 7) + WorldMapSection3.__p_go; + var8 = (var6 & 7) + Canvas.__ao_gk; + var9 = var1.__ag_302(); + if(var7 >= 0 && var8 >= 0 && var7 < 103 && var8 < 103) { + if(var5 == 0) { + BoundaryObject var32 = class65.scene.getBoundaryObject(SoundSystem.plane, var7, var8); + if(var32 != null) { + var39 = HitSplatDefinition.method4972(var32.tag); + if(var3 == 2) { + var32.entity1 = new DynamicObject(var39, 2, var38 + 4, SoundSystem.plane, var7, var8, var9, false, var32.entity1); + var32.entity2 = new DynamicObject(var39, 2, var38 + 1 & 3, SoundSystem.plane, var7, var8, var9, false, var32.entity2); + } else { + var32.entity1 = new DynamicObject(var39, var3, var38, SoundSystem.plane, var7, var8, var9, false, var32.entity1); + } + } + } + + if(var5 == 1) { + WallDecoration var43 = class65.scene.getWallDecoration(SoundSystem.plane, var7, var8); + if(var43 != null) { + var39 = HitSplatDefinition.method4972(var43.tag); + if(var3 != 4 && var3 != 5) { + if(var3 == 6) { + var43.entity1 = new DynamicObject(var39, 4, var38 + 4, SoundSystem.plane, var7, var8, var9, false, var43.entity1); + } else if(var3 == 7) { + var43.entity1 = new DynamicObject(var39, 4, (var38 + 2 & 3) + 4, SoundSystem.plane, var7, var8, var9, false, var43.entity1); + } else if(var3 == 8) { + var43.entity1 = new DynamicObject(var39, 4, var38 + 4, SoundSystem.plane, var7, var8, var9, false, var43.entity1); + var43.entity2 = new DynamicObject(var39, 4, (var38 + 2 & 3) + 4, SoundSystem.plane, var7, var8, var9, false, var43.entity2); + } + } else { + var43.entity1 = new DynamicObject(var39, 4, var38, SoundSystem.plane, var7, var8, var9, false, var43.entity1); + } + } + } + + if(var5 == 2) { + GameObject var44 = class65.scene.__aj_243(SoundSystem.plane, var7, var8); + if(var3 == 11) { + var3 = 10; + } + + if(var44 != null) { + var44.entity = new DynamicObject(HitSplatDefinition.method4972(var44.tag), var3, var38, SoundSystem.plane, var7, var8, var9, false, var44.entity); + } + } + + if(var5 == 3) { + FloorDecoration var45 = class65.scene.getFloorDecoration(SoundSystem.plane, var7, var8); + if(var45 != null) { + var45.entity = new DynamicObject(HitSplatDefinition.method4972(var45.tag), 22, var38, SoundSystem.plane, var7, var8, var9, false, var45.entity); + } + } + } + + } else { + GroundItem var34; + if(class190.field2347 == var0) { + var37 = var1.__bb_317(); + var3 = (var37 >> 4 & 7) + WorldMapSection3.__p_go; + var38 = (var37 & 7) + Canvas.__ao_gk; + var5 = var1.__bm_326(); + if(var3 >= 0 && var38 >= 0 && var3 < 104 && var38 < 104) { + NodeDeque var33 = Client.groundItems[SoundSystem.plane][var3][var38]; + if(var33 != null) { + for(var34 = (GroundItem)var33.last(); var34 != null; var34 = (GroundItem)var33.previous()) { + if((var5 & 32767) == var34.id) { + var34.remove(); + break; + } + } + + if(var33.last() == null) { + Client.groundItems[SoundSystem.plane][var3][var38] = null; + } + + TilePaint.method3061(var3, var38); + } + } + + } else if(class190.field2350 == var0) { + var37 = var1.__bq_318(); + var3 = var37 >> 2; + var38 = var37 & 3; + var5 = Client.__client_gd[var3]; + var6 = var1.__bq_318(); + var7 = (var6 >> 4 & 7) + WorldMapSection3.__p_go; + var8 = (var6 & 7) + Canvas.__ao_gk; + if(var7 >= 0 && var8 >= 0 && var7 < 104 && var8 < 104) { + class258.method4898(SoundSystem.plane, var7, var8, var5, -1, var3, var38, 0, -1); + } + + } else if(class190.field2352 == var0) { + var37 = var1.__bq_318() * 4; + var3 = var1.__ag_302(); + var38 = var1.__bu_325(); + var5 = var1.__bq_318() * 4; + var6 = var1.__bl_327(); + var7 = var1.readUnsignedByte(); + var8 = var1.__bq_318(); + var9 = var1.__by_324(); + var10 = var1.__bb_317(); + var39 = (var10 >> 4 & 7) + WorldMapSection3.__p_go; + var12 = (var10 & 7) + Canvas.__ao_gk; + var13 = var1.__bn_319(); + byte var40 = var1.__bk_320(); + var14 = var40 + var39; + int var41 = var13 + var12; + if(var39 >= 0 && var12 >= 0 && var39 < 104 && var12 < 104 && var14 >= 0 && var41 >= 0 && var14 < 104 && var41 < 104 && var38 != 65535) { + var39 = var39 * 128 + 64; + var12 = var12 * 128 + 64; + var14 = var14 * 128 + 64; + var41 = var41 * 128 + 64; + Projectile var35 = new Projectile(var38, SoundSystem.plane, var39, var12, class32.getTileHeight(var39, var12, SoundSystem.plane) - var5, var9 + Client.cycle, var3 + Client.cycle, var7, var8, var6, var37); + var35.setDestination(var14, var41, class32.getTileHeight(var14, var41, SoundSystem.plane) - var37, var9 + Client.cycle); + Client.projectiles.addFirst(var35); + } + + } else if(class190.field2346 != var0) { + if(class190.field2343 == var0) { + var37 = var1.__bu_325(); + var3 = var1.__bm_326(); + var38 = var1.__bb_317(); + var5 = (var38 >> 4 & 7) + WorldMapSection3.__p_go; + var6 = (var38 & 7) + Canvas.__ao_gk; + if(var5 >= 0 && var6 >= 0 && var5 < 104 && var6 < 104) { + var34 = new GroundItem(); + var34.id = var3; + var34.quantity = var37; + if(Client.groundItems[SoundSystem.plane][var5][var6] == null) { + Client.groundItems[SoundSystem.plane][var5][var6] = new NodeDeque(); + } + + Client.groundItems[SoundSystem.plane][var5][var6].addFirst(var34); + TilePaint.method3061(var5, var6); + } + + } + } else { + var37 = var1.__by_324(); + var3 = var1.__bm_326(); + var38 = var1.__by_324(); + var5 = var1.__bb_317(); + var6 = (var5 >> 4 & 7) + WorldMapSection3.__p_go; + var7 = (var5 & 7) + Canvas.__ao_gk; + if(var6 >= 0 && var7 >= 0 && var6 < 104 && var7 < 104) { + NodeDeque var31 = Client.groundItems[SoundSystem.plane][var6][var7]; + if(var31 != null) { + for(GroundItem var36 = (GroundItem)var31.last(); var36 != null; var36 = (GroundItem)var31.previous()) { + if((var37 & 32767) == var36.id && var38 == var36.quantity) { + var36.quantity = var3; + break; + } + } + + TilePaint.method3061(var6, var7); + } + } + + } + } + } + } + } + + @ObfuscatedName("il") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;IIIIZB)V", + garbageValue = "0" + ) + @Export("insertMenuItem") + static final void insertMenuItem(String var0, String var1, int var2, int var3, int var4, int var5, boolean var6) { + if(!Client.isMenuOpen) { + if(Client.menuOptionsCount < 500) { + Client.menuActions[Client.menuOptionsCount] = var0; + Client.menuTargetNames[Client.menuOptionsCount] = var1; + Client.menuOpcodes[Client.menuOptionsCount] = var2; + Client.menuArguments0[Client.menuOptionsCount] = var3; + Client.menuArguments1[Client.menuOptionsCount] = var4; + Client.menuArguments2[Client.menuOptionsCount] = var5; + Client.menuShiftClick[Client.menuOptionsCount] = var6; + ++Client.menuOptionsCount; + } + + } + } + + @ObfuscatedName("ii") + @ObfuscatedSignature( + signature = "(Lho;II)I", + garbageValue = "931169314" + ) + static final int method187(Widget var0, int var1) { + if(var0.cs1Instructions != null && var1 < var0.cs1Instructions.length) { + try { + int[] var2 = var0.cs1Instructions[var1]; + int var3 = 0; + int var4 = 0; + byte var5 = 0; + + while(true) { + int var6 = var2[var4++]; + int var7 = 0; + byte var8 = 0; + if(var6 == 0) { + return var3; + } + + if(var6 == 1) { + var7 = Client.currentLevels[var2[var4++]]; + } + + if(var6 == 2) { + var7 = Client.levels[var2[var4++]]; + } + + if(var6 == 3) { + var7 = Client.experience[var2[var4++]]; + } + + int var9; + Widget var10; + int var11; + int var12; + if(var6 == 4) { + var9 = var2[var4++] << 16; + var9 += var2[var4++]; + var10 = Huffman.getWidget(var9); + var11 = var2[var4++]; + if(var11 != -1 && (!Skills.getItemDefinition(var11).isMembersOnly || Client.isMembersWorld)) { + for(var12 = 0; var12 < var10.itemIds.length; ++var12) { + if(var11 + 1 == var10.itemIds[var12]) { + var7 += var10.itemQuantities[var12]; + } + } + } + } + + if(var6 == 5) { + var7 = Varps.Varps_main[var2[var4++]]; + } + + if(var6 == 6) { + var7 = Skills.Skills_experienceTable[Client.levels[var2[var4++]] - 1]; + } + + if(var6 == 7) { + var7 = Varps.Varps_main[var2[var4++]] * 100 / 46875; + } + + if(var6 == 8) { + var7 = Canvas.localPlayer.combatLevel; + } + + if(var6 == 9) { + for(var9 = 0; var9 < 25; ++var9) { + if(Skills.Skills_enabled[var9]) { + var7 += Client.levels[var9]; + } + } + } + + if(var6 == 10) { + var9 = var2[var4++] << 16; + var9 += var2[var4++]; + var10 = Huffman.getWidget(var9); + var11 = var2[var4++]; + if(var11 != -1 && (!Skills.getItemDefinition(var11).isMembersOnly || Client.isMembersWorld)) { + for(var12 = 0; var12 < var10.itemIds.length; ++var12) { + if(var11 + 1 == var10.itemIds[var12]) { + var7 = 999999999; + break; + } + } + } + } + + if(var6 == 11) { + var7 = Client.runEnergy; + } + + if(var6 == 12) { + var7 = Client.weight; + } + + if(var6 == 13) { + var9 = Varps.Varps_main[var2[var4++]]; + int var13 = var2[var4++]; + var7 = (var9 & 1 << var13) != 0?1:0; + } + + if(var6 == 14) { + var9 = var2[var4++]; + var7 = WorldMapSection2.getVarbit(var9); + } + + if(var6 == 15) { + var8 = 1; + } + + if(var6 == 16) { + var8 = 2; + } + + if(var6 == 17) { + var8 = 3; + } + + if(var6 == 18) { + var7 = (Canvas.localPlayer.x >> 7) + class50.baseX; + } + + if(var6 == 19) { + var7 = (Canvas.localPlayer.y >> 7) + GraphicsObject.baseY; + } + + if(var6 == 20) { + var7 = var2[var4++]; + } + + if(var8 == 0) { + if(var5 == 0) { + var3 += var7; + } + + if(var5 == 1) { + var3 -= var7; + } + + if(var5 == 2 && var7 != 0) { + var3 /= var7; + } + + if(var5 == 3) { + var3 *= var7; + } + + var5 = 0; + } else { + var5 = var8; + } + } + } catch (Exception var14) { + return -1; + } + } else { + return -2; + } + } +} diff --git a/rs-client/src/main/java/class160.java b/rs-client/src/main/java/class160.java new file mode 100644 index 0000000000..18319526ba --- /dev/null +++ b/rs-client/src/main/java/class160.java @@ -0,0 +1,5 @@ +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("fl") +public interface class160 { +} diff --git a/rs-client/src/main/java/class161.java b/rs-client/src/main/java/class161.java new file mode 100644 index 0000000000..0104348d74 --- /dev/null +++ b/rs-client/src/main/java/class161.java @@ -0,0 +1,14 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fj") +public class class161 implements class160 { + @ObfuscatedName("ae") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "442083916" + ) + static int method3395(int var0) { + return (int)Math.pow(2.0D, (double)((float)var0 / 256.0F + 7.0F)); + } +} diff --git a/rs-client/src/main/java/class168.java b/rs-client/src/main/java/class168.java new file mode 100644 index 0000000000..6a3f422952 --- /dev/null +++ b/rs-client/src/main/java/class168.java @@ -0,0 +1,72 @@ +import java.io.File; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fs") +public class class168 { + @ObfuscatedName("o") + @Export("__fs_o") + public static File __fs_o; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = -2051451755 + ) + @Export("idxCount") + public static int idxCount; + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Ldy;" + ) + @Export("randomDat") + public static BufferedFile randomDat; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Ldy;" + ) + @Export("dat2File") + public static BufferedFile dat2File; + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Ldy;" + ) + @Export("idx255File") + public static BufferedFile idx255File; + @ObfuscatedName("au") + @ObfuscatedGetter( + intValue = 1181569415 + ) + @Export("__fs_au") + static int __fs_au; + + static { + randomDat = null; + dat2File = null; + idx255File = null; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(II)Z", + garbageValue = "1352667137" + ) + public static boolean method3461(int var0) { + return (var0 >> 29 & 1) != 0; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(CIB)Ljava/lang/String;", + garbageValue = "66" + ) + public static String method3450(char var0, int var1) { + char[] var2 = new char[var1]; + + for(int var3 = 0; var3 < var1; ++var3) { + var2[var3] = var0; + } + + return new String(var2); + } +} diff --git a/rs-client/src/main/java/class171.java b/rs-client/src/main/java/class171.java new file mode 100644 index 0000000000..c1e9afface --- /dev/null +++ b/rs-client/src/main/java/class171.java @@ -0,0 +1,657 @@ +import java.io.File; +import java.util.Hashtable; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fo") +public class class171 { + @ObfuscatedName("ro") + @ObfuscatedGetter( + intValue = -852697585 + ) + @Export("__fo_ro") + static int __fo_ro; + @ObfuscatedName("m") + @Export("__fo_m") + public static boolean __fo_m; + @ObfuscatedName("f") + @Export("__fo_f") + public static File __fo_f; + @ObfuscatedName("q") + @Export("__fo_q") + static Hashtable __fo_q; + + static { + __fo_m = false; + __fo_q = new Hashtable(16); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "21" + ) + public static void method3498() { + KeyHandler var0 = KeyHandler.KeyHandler_instance; + synchronized(KeyHandler.KeyHandler_instance) { + ++KeyHandler.KeyHandler_idleCycles; + KeyHandler.__an_ct = KeyHandler.__an_cc; + KeyHandler.__an_cl = 0; + int var1; + if(KeyHandler.__an_cw < 0) { + for(var1 = 0; var1 < 112; ++var1) { + KeyHandler.KeyHandler_pressedKeys[var1] = false; + } + + KeyHandler.__an_cw = KeyHandler.__an_ch; + } else { + while(KeyHandler.__an_cw != KeyHandler.__an_ch) { + var1 = KeyHandler.__an_cq[KeyHandler.__an_ch]; + KeyHandler.__an_ch = KeyHandler.__an_ch + 1 & 127; + if(var1 < 0) { + KeyHandler.KeyHandler_pressedKeys[~var1] = false; + } else { + if(!KeyHandler.KeyHandler_pressedKeys[var1] && KeyHandler.__an_cl < KeyHandler.__an_cp.length - 1) { + KeyHandler.__an_cp[++KeyHandler.__an_cl - 1] = var1; + } + + KeyHandler.KeyHandler_pressedKeys[var1] = true; + } + } + } + + if(KeyHandler.__an_cl > 0) { + KeyHandler.KeyHandler_idleCycles = 0; + } + + KeyHandler.__an_cc = KeyHandler.__an_cz; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(IIIIIII)I", + garbageValue = "-1048935304" + ) + public static int method3496(int var0, int var1, int var2, int var3, int var4, int var5) { + if((var5 & 1) == 1) { + int var6 = var3; + var3 = var4; + var4 = var6; + } + + var2 &= 3; + return var2 == 0?var1:(var2 == 1?7 - var0 - (var3 - 1):(var2 == 2?7 - var1 - (var4 - 1):var0)); + } + + @ObfuscatedName("fq") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-36" + ) + static void method3497() { + int var0; + if(Client.titleLoadingStage == 0) { + class65.scene = new Scene(4, 104, 104, Tiles.Tiles_heights); + + for(var0 = 0; var0 < 4; ++var0) { + Client.collisionMaps[var0] = new CollisionMap(104, 104); + } + + WidgetGroupParent.sceneMinimapSprite = new Sprite(512, 512); + Login.Login_loadingText = "Starting game engine..."; + Login.Login_loadingPercent = 5; + Client.titleLoadingStage = 20; + } else if(Client.titleLoadingStage == 20) { + Login.Login_loadingText = "Prepared visibility map"; + Login.Login_loadingPercent = 10; + Client.titleLoadingStage = 30; + } else if(Client.titleLoadingStage == 30) { + AbstractIndexCache.indexCache0 = class22.newIndexCache(0, false, true, true); + Skeleton.indexCache1 = class22.newIndexCache(1, false, true, true); + ObjectSound.indexCache2 = class22.newIndexCache(2, true, false, true); + WorldMapIcon1.indexCache3 = class22.newIndexCache(3, false, true, true); + class25.indexCache4 = class22.newIndexCache(4, false, true, true); + SecureRandomFuture.indexCache5 = class22.newIndexCache(5, true, true, true); + UserComparator3.indexCache6 = class22.newIndexCache(6, true, true, true); + class40.indexCache7 = class22.newIndexCache(7, false, true, true); + WorldMapSection3.indexCache8 = class22.newIndexCache(8, false, true, true); + class238.indexCache9 = class22.newIndexCache(9, false, true, true); + class16.indexCache10 = class22.newIndexCache(10, false, true, true); + Login.indexCache11 = class22.newIndexCache(11, false, true, true); + Formatting.indexCache12 = class22.newIndexCache(12, false, true, true); + ByteArrayPool.indexCache13 = class22.newIndexCache(13, true, false, true); + class2.indexCache14 = class22.newIndexCache(14, false, true, true); + WorldMapSection1.indexCache15 = class22.newIndexCache(15, false, true, true); + class22.indexCache16 = class22.newIndexCache(17, true, true, true); + WorldMapLabelSize.__s_dq = class22.newIndexCache(18, false, true, true); + ItemContainer.__bc_dm = class22.newIndexCache(19, false, true, true); + AbstractByteArrayCopier.__gu_et = class22.newIndexCache(20, false, true, true); + Login.Login_loadingText = "Connecting to update server"; + Login.Login_loadingPercent = 20; + Client.titleLoadingStage = 40; + } else if(Client.titleLoadingStage == 40) { + byte var33 = 0; + var0 = var33 + AbstractIndexCache.indexCache0.__ca_405() * 4 / 100; + var0 += Skeleton.indexCache1.__ca_405() * 4 / 100; + var0 += ObjectSound.indexCache2.__ca_405() * 2 / 100; + var0 += WorldMapIcon1.indexCache3.__ca_405() * 2 / 100; + var0 += class25.indexCache4.__ca_405() * 6 / 100; + var0 += SecureRandomFuture.indexCache5.__ca_405() * 4 / 100; + var0 += UserComparator3.indexCache6.__ca_405() * 2 / 100; + var0 += class40.indexCache7.__ca_405() * 56 / 100; + var0 += WorldMapSection3.indexCache8.__ca_405() * 2 / 100; + var0 += class238.indexCache9.__ca_405() * 2 / 100; + var0 += class16.indexCache10.__ca_405() * 2 / 100; + var0 += Login.indexCache11.__ca_405() * 2 / 100; + var0 += Formatting.indexCache12.__ca_405() * 2 / 100; + var0 += ByteArrayPool.indexCache13.__ca_405() * 2 / 100; + var0 += class2.indexCache14.__ca_405() * 2 / 100; + var0 += WorldMapSection1.indexCache15.__ca_405() * 2 / 100; + var0 += ItemContainer.__bc_dm.__ca_405() / 100; + var0 += WorldMapLabelSize.__s_dq.__ca_405() / 100; + var0 += AbstractByteArrayCopier.__gu_et.__ca_405() / 100; + var0 += class22.indexCache16.__cx_404() && class22.indexCache16.__l_394()?1:0; + if(var0 != 100) { + if(var0 != 0) { + Login.Login_loadingText = "Checking for updates - " + var0 + "%"; + } + + Login.Login_loadingPercent = 30; + } else { + AbstractWorldMapIcon.method625(AbstractIndexCache.indexCache0, "Animations"); + AbstractWorldMapIcon.method625(Skeleton.indexCache1, "Skeletons"); + AbstractWorldMapIcon.method625(class25.indexCache4, "Sound FX"); + AbstractWorldMapIcon.method625(SecureRandomFuture.indexCache5, "Maps"); + AbstractWorldMapIcon.method625(UserComparator3.indexCache6, "Music Tracks"); + AbstractWorldMapIcon.method625(class40.indexCache7, "Models"); + AbstractWorldMapIcon.method625(WorldMapSection3.indexCache8, "Sprites"); + AbstractWorldMapIcon.method625(Login.indexCache11, "Music Jingles"); + AbstractWorldMapIcon.method625(class2.indexCache14, "Music Samples"); + AbstractWorldMapIcon.method625(WorldMapSection1.indexCache15, "Music Patches"); + AbstractWorldMapIcon.method625(ItemContainer.__bc_dm, "World Map"); + AbstractWorldMapIcon.method625(WorldMapLabelSize.__s_dq, "World Map Geography"); + AbstractWorldMapIcon.method625(AbstractByteArrayCopier.__gu_et, "World Map Ground"); + class211.spriteIds = new SpriteIds(); + class211.spriteIds.read(class22.indexCache16); + Login.Login_loadingText = "Loaded update list"; + Login.Login_loadingPercent = 30; + Client.titleLoadingStage = 45; + } + } else if(Client.titleLoadingStage == 45) { + Tiles.method1097(22050, !Client.isLowDetail, 2); + MidiPcmStream var36 = new MidiPcmStream(); + var36.__j_342(9, 128); + WorldMapCacheName.pcmPlayer0 = Players.newPcmPlayer(GameShell.taskHandler, 0, 22050); + WorldMapCacheName.pcmPlayer0.setStream(var36); + NetSocket.method3537(WorldMapSection1.indexCache15, class2.indexCache14, class25.indexCache4, var36); + AbstractIndexCache.pcmPlayer1 = Players.newPcmPlayer(GameShell.taskHandler, 1, 2048); + TaskHandler.pcmStreamMixer = new PcmStreamMixer(); + AbstractIndexCache.pcmPlayer1.setStream(TaskHandler.pcmStreamMixer); + MilliClock.decimator = new Decimator(22050, class309.PcmPlayer_sampleRate); + Login.Login_loadingText = "Prepared sound engine"; + Login.Login_loadingPercent = 35; + Client.titleLoadingStage = 50; + WorldMapElement.fonts = new Fonts(WorldMapSection3.indexCache8, ByteArrayPool.indexCache13); + } else { + int var1; + if(Client.titleLoadingStage == 50) { + FontName[] var35 = new FontName[]{FontName.FontName_verdana15, FontName.FontName_bold12, FontName.FontName_plain12, FontName.FontName_verdana11, FontName.FontName_plain11, FontName.FontName_verdana13}; + var1 = var35.length; + Fonts var32 = WorldMapElement.fonts; + FontName[] var31 = new FontName[]{FontName.FontName_verdana15, FontName.FontName_bold12, FontName.FontName_plain12, FontName.FontName_verdana11, FontName.FontName_plain11, FontName.FontName_verdana13}; + Client.fontsMap = var32.createMap(var31); + if(Client.fontsMap.size() < var1) { + Login.Login_loadingText = "Loading fonts - " + Client.fontsMap.size() * 100 / var1 + "%"; + Login.Login_loadingPercent = 40; + } else { + ScriptEvent.fontPlain11 = (Font)Client.fontsMap.get(FontName.FontName_plain11); + DevicePcmPlayerProvider.fontPlain12 = (Font)Client.fontsMap.get(FontName.FontName_plain12); + class2.fontBold12 = (Font)Client.fontsMap.get(FontName.FontName_bold12); + WorldMapLabelSize.platformInfo = Client.platformInfoProvider.get(); + Login.Login_loadingText = "Loaded fonts"; + Login.Login_loadingPercent = 40; + Client.titleLoadingStage = 60; + } + } else if(Client.titleLoadingStage == 60) { + var0 = FloorDecoration.method2853(class16.indexCache10, WorldMapSection3.indexCache8); + var1 = class3.method36(); + if(var0 < var1) { + Login.Login_loadingText = "Loading title screen - " + var0 * 100 / var1 + "%"; + Login.Login_loadingPercent = 50; + } else { + Login.Login_loadingText = "Loaded title screen"; + Login.Login_loadingPercent = 50; + GameShell.updateGameState(5); + Client.titleLoadingStage = 70; + } + } else { + IndexCache var2; + if(Client.titleLoadingStage == 70) { + if(!ObjectSound.indexCache2.__l_394()) { + Login.Login_loadingText = "Loading config - " + ObjectSound.indexCache2.loadPercent() + "%"; + Login.Login_loadingPercent = 60; + } else { + Varcs.method2160(ObjectSound.indexCache2); + Varps.method4393(ObjectSound.indexCache2); + IndexCache var34 = ObjectSound.indexCache2; + IndexCache var38 = class40.indexCache7; + KitDefinition.KitDefinition_indexCache = var34; + KitDefinition.__im_f = var38; + KitDefinition.__im_q = KitDefinition.KitDefinition_indexCache.__s_396(3); + RectangleMode.method6028(ObjectSound.indexCache2, class40.indexCache7, Client.isLowDetail); + IsaacCipher.method4082(ObjectSound.indexCache2, class40.indexCache7); + var2 = ObjectSound.indexCache2; + StructDefinition.__jq_m = var2; + IndexCache var3 = ObjectSound.indexCache2; + IndexCache var4 = class40.indexCache7; + boolean var5 = Client.isMembersWorld; + Font var6 = ScriptEvent.fontPlain11; + ItemDefinition.ItemDefinition_indexCache = var3; + ItemDefinition.ItemDefinition_modelIndexCache = var4; + class30.__ar_l = var5; + class83.__cm_e = ItemDefinition.ItemDefinition_indexCache.__s_396(10); + class204.__gx_n = var6; + IndexCache var7 = ObjectSound.indexCache2; + IndexCache var8 = AbstractIndexCache.indexCache0; + IndexCache var9 = Skeleton.indexCache1; + SequenceDefinition.SequenceDefinition_indexCache = var7; + SequenceDefinition.__jh_f = var8; + SequenceDefinition.__jh_q = var9; + IndexCache var10 = ObjectSound.indexCache2; + IndexCache var11 = class40.indexCache7; + SpotAnimationDefinition.SpotAnimationDefinition_indexCache = var10; + SpotAnimationDefinition.SpotAnimationDefinition_modelIndexCache = var11; + UnitPriceComparator.method135(ObjectSound.indexCache2); + IndexCache var12 = ObjectSound.indexCache2; + VarpDefinition.__ix_m = var12; + VarpDefinition.__ix_f = VarpDefinition.__ix_m.__s_396(16); + IndexCache var13 = WorldMapIcon1.indexCache3; + IndexCache var14 = class40.indexCache7; + IndexCache var15 = WorldMapSection3.indexCache8; + IndexCache var16 = ByteArrayPool.indexCache13; + Widget.Widget_indexCache = var13; + BufferedSource.__fh_x = var14; + Widget.__ho_d = var15; + class27.__aq_k = var16; + Widget.widgets = new Widget[Widget.Widget_indexCache.__t_397()][]; + Widget.loadedWidgetGroups = new boolean[Widget.Widget_indexCache.__t_397()]; + IndexCache var17 = ObjectSound.indexCache2; + class4.__o_m = var17; + IndexCache var18 = ObjectSound.indexCache2; + EnumDefinition.EnumDefinition_indexCache = var18; + Frames.method3241(ObjectSound.indexCache2); + IndexCache var19 = ObjectSound.indexCache2; + ParamKeyDefinition.__jb_m = var19; + class196.varcs = new Varcs(); + class60.method1172(ObjectSound.indexCache2, WorldMapSection3.indexCache8, ByteArrayPool.indexCache13); + IndexCache var20 = ObjectSound.indexCache2; + IndexCache var21 = WorldMapSection3.indexCache8; + HealthBarDefinition.__ii_m = var20; + HealthBarDefinition.__ii_f = var21; + IndexCache var22 = ObjectSound.indexCache2; + IndexCache var23 = WorldMapSection3.indexCache8; + WorldMapElement.__ic_m = var23; + if(var22.__l_394()) { + UserComparator4.WorldMapElement_count = var22.__s_396(35); + Widget.WorldMapElement_cached = new WorldMapElement[UserComparator4.WorldMapElement_count]; + + for(int var24 = 0; var24 < UserComparator4.WorldMapElement_count; ++var24) { + byte[] var25 = var22.takeRecord(35, var24); + Widget.WorldMapElement_cached[var24] = new WorldMapElement(var24); + if(var25 != null) { + Widget.WorldMapElement_cached[var24].read(new Buffer(var25)); + Widget.WorldMapElement_cached[var24].__w_409(); + } + } + } + + Login.Login_loadingText = "Loaded config"; + Login.Login_loadingPercent = 60; + Client.titleLoadingStage = 80; + } + } else if(Client.titleLoadingStage == 80) { + var0 = 0; + if(UnitPriceComparator.compass == null) { + UnitPriceComparator.compass = class322.readSprite(WorldMapSection3.indexCache8, class211.spriteIds.__m, 0); + } else { + ++var0; + } + + if(FaceNormal.__el_gm == null) { + FaceNormal.__el_gm = class322.readSprite(WorldMapSection3.indexCache8, class211.spriteIds.__f, 0); + } else { + ++var0; + } + + IndexedSprite[] var27; + int var28; + if(class192.mapSceneSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.mapScenes; + if(!SpriteMask.method4392(var2, var28, 0)) { + var27 = null; + } else { + var27 = WorldMapLabel.method444(); + } + + class192.mapSceneSprites = var27; + } else { + ++var0; + } + + Sprite[] var37; + if(class15.headIconPkSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.headIconsPk; + if(!SpriteMask.method4392(var2, var28, 0)) { + var37 = null; + } else { + var37 = UserComparator9.method3344(); + } + + class15.headIconPkSprites = var37; + } else { + ++var0; + } + + if(ClientPreferences.headIconPrayerSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.headIconsPrayer; + if(!SpriteMask.method4392(var2, var28, 0)) { + var37 = null; + } else { + var37 = UserComparator9.method3344(); + } + + ClientPreferences.headIconPrayerSprites = var37; + } else { + ++var0; + } + + if(Player.headIconHintSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.headIconsHint; + if(!SpriteMask.method4392(var2, var28, 0)) { + var37 = null; + } else { + var37 = UserComparator9.method3344(); + } + + Player.headIconHintSprites = var37; + } else { + ++var0; + } + + if(class16.mapMarkerSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.mapMarkers; + if(!SpriteMask.method4392(var2, var28, 0)) { + var37 = null; + } else { + var37 = UserComparator9.method3344(); + } + + class16.mapMarkerSprites = var37; + } else { + ++var0; + } + + if(KeyHandler.crossSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.crosses; + if(!SpriteMask.method4392(var2, var28, 0)) { + var37 = null; + } else { + var37 = UserComparator9.method3344(); + } + + KeyHandler.crossSprites = var37; + } else { + ++var0; + } + + if(class39.mapDotSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.mapDots; + if(!SpriteMask.method4392(var2, var28, 0)) { + var37 = null; + } else { + var37 = UserComparator9.method3344(); + } + + class39.mapDotSprites = var37; + } else { + ++var0; + } + + if(class32.scrollBarSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.scrollBars; + if(!SpriteMask.method4392(var2, var28, 0)) { + var27 = null; + } else { + var27 = WorldMapLabel.method444(); + } + + class32.scrollBarSprites = var27; + } else { + ++var0; + } + + if(WorldMapSectionType.modIconSprites == null) { + var2 = WorldMapSection3.indexCache8; + var28 = class211.spriteIds.modIcons; + if(!SpriteMask.method4392(var2, var28, 0)) { + var27 = null; + } else { + var27 = WorldMapLabel.method444(); + } + + WorldMapSectionType.modIconSprites = var27; + } else { + ++var0; + } + + if(var0 < 11) { + Login.Login_loadingText = "Loading sprites - " + var0 * 100 / 12 + "%"; + Login.Login_loadingPercent = 70; + } else { + AbstractFont.AbstractFont_modIconSprites = WorldMapSectionType.modIconSprites; + FaceNormal.__el_gm.normalize(); + var1 = (int)(Math.random() * 21.0D) - 10; + int var29 = (int)(Math.random() * 21.0D) - 10; + var28 = (int)(Math.random() * 21.0D) - 10; + int var30 = (int)(Math.random() * 41.0D) - 20; + class192.mapSceneSprites[0].shiftColors(var30 + var1, var30 + var29, var30 + var28); + Login.Login_loadingText = "Loaded sprites"; + Login.Login_loadingPercent = 70; + Client.titleLoadingStage = 90; + } + } else if(Client.titleLoadingStage == 90) { + if(!class238.indexCache9.__l_394()) { + Login.Login_loadingText = "Loading textures - " + "0%"; + Login.Login_loadingPercent = 90; + } else { + SecureRandomFuture.textureProvider = new TextureProvider(class238.indexCache9, WorldMapSection3.indexCache8, 20, 0.8D, Client.isLowDetail?64:128); + Rasterizer3D.Rasterizer3D_setTextureLoader(SecureRandomFuture.textureProvider); + Rasterizer3D.Rasterizer3D_setBrightness(0.8D); + Client.titleLoadingStage = 100; + } + } else if(Client.titleLoadingStage == 100) { + var0 = SecureRandomFuture.textureProvider.__m_212(); + if(var0 < 100) { + Login.Login_loadingText = "Loading textures - " + var0 + "%"; + Login.Login_loadingPercent = 90; + } else { + Login.Login_loadingText = "Loaded textures"; + Login.Login_loadingPercent = 90; + Client.titleLoadingStage = 110; + } + } else if(Client.titleLoadingStage == 110) { + Projectile.mouseRecorder = new MouseRecorder(); + GameShell.taskHandler.newThreadTask(Projectile.mouseRecorder, 10); + Login.Login_loadingText = "Loaded input handler"; + Login.Login_loadingPercent = 92; + Client.titleLoadingStage = 120; + } else if(Client.titleLoadingStage == 120) { + if(!class16.indexCache10.tryLoadRecordByNames("huffman", "")) { + Login.Login_loadingText = "Loading wordpack - " + 0 + "%"; + Login.Login_loadingPercent = 94; + } else { + Huffman var26 = new Huffman(class16.indexCache10.takeRecordByNames("huffman", "")); + class303.huffman = var26; + Login.Login_loadingText = "Loaded wordpack"; + Login.Login_loadingPercent = 94; + Client.titleLoadingStage = 130; + } + } else if(Client.titleLoadingStage == 130) { + if(!WorldMapIcon1.indexCache3.__l_394()) { + Login.Login_loadingText = "Loading interfaces - " + WorldMapIcon1.indexCache3.loadPercent() * 4 / 5 + "%"; + Login.Login_loadingPercent = 96; + } else if(!Formatting.indexCache12.__l_394()) { + Login.Login_loadingText = "Loading interfaces - " + (80 + Formatting.indexCache12.loadPercent() / 6) + "%"; + Login.Login_loadingPercent = 96; + } else if(!ByteArrayPool.indexCache13.__l_394()) { + Login.Login_loadingText = "Loading interfaces - " + (96 + ByteArrayPool.indexCache13.loadPercent() / 50) + "%"; + Login.Login_loadingPercent = 96; + } else { + Login.Login_loadingText = "Loaded interfaces"; + Login.Login_loadingPercent = 98; + Client.titleLoadingStage = 140; + } + } else if(Client.titleLoadingStage == 140) { + Login.Login_loadingPercent = 100; + if(!ItemContainer.__bc_dm.tryLoadArchiveByName(WorldMapCacheName.WorldMapCacheName_details.name)) { + Login.Login_loadingText = "Loading world map - " + ItemContainer.__bc_dm.archiveLoadPercentByName(WorldMapCacheName.WorldMapCacheName_details.name) / 10 + "%"; + } else { + if(class60.worldMap0 == null) { + class60.worldMap0 = new WorldMap(); + class60.worldMap0.init(ItemContainer.__bc_dm, WorldMapLabelSize.__s_dq, AbstractByteArrayCopier.__gu_et, class2.fontBold12, Client.fontsMap, class192.mapSceneSprites); + } + + Login.Login_loadingText = "Loaded world map"; + Client.titleLoadingStage = 150; + } + } else if(Client.titleLoadingStage == 150) { + GameShell.updateGameState(10); + } + } + } + } + + @ObfuscatedName("ie") + @ObfuscatedSignature( + signature = "(IIIILjava/lang/String;I)V", + garbageValue = "49247882" + ) + static void method3494(int var0, int var1, int var2, int var3, String var4) { + Widget var5 = class204.getWidgetChild(var1, var2); + if(var5 != null) { + if(var5.onOp != null) { + ScriptEvent var6 = new ScriptEvent(); + var6.widget = var5; + var6.opIndex = var0; + var6.targetName = var4; + var6.args0 = var5.onOp; + AbstractIndexCache.runScript(var6); + } + + boolean var11 = true; + if(var5.contentType > 0) { + var11 = ViewportMouse.method2957(var5); + } + + if(var11) { + int var8 = class1.getWidgetClickMask(var5); + int var9 = var0 - 1; + boolean var7 = (var8 >> var9 + 1 & 1) != 0; + if(var7) { + PacketBufferNode var10; + if(var0 == 1) { + var10 = Interpreter.method1915(ClientPacket.__gs_bi, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 2) { + var10 = Interpreter.method1915(ClientPacket.__gs_b, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 3) { + var10 = Interpreter.method1915(ClientPacket.__gs_aa, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 4) { + var10 = Interpreter.method1915(ClientPacket.__gs_y, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 5) { + var10 = Interpreter.method1915(ClientPacket.__gs_ad, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 6) { + var10 = Interpreter.method1915(ClientPacket.__gs_br, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 7) { + var10 = Interpreter.method1915(ClientPacket.__gs_cu, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 8) { + var10 = Interpreter.method1915(ClientPacket.__gs_a, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 9) { + var10 = Interpreter.method1915(ClientPacket.__gs_cj, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + if(var0 == 10) { + var10 = Interpreter.method1915(ClientPacket.__gs_m, Client.packetWriter.isaacCipher); + var10.packetBuffer.writeInt(var1); + var10.packetBuffer.writeShort(var2); + var10.packetBuffer.writeShort(var3); + Client.packetWriter.__q_167(var10); + } + + } + } + } + } +} diff --git a/rs-client/src/main/java/class178.java b/rs-client/src/main/java/class178.java new file mode 100644 index 0000000000..39a0c68d25 --- /dev/null +++ b/rs-client/src/main/java/class178.java @@ -0,0 +1,25 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("fi") +public class class178 { + @ObfuscatedName("q") + @Export("__fi_q") + static int[][] __fi_q; + @ObfuscatedName("w") + @Export("__fi_w") + static int[][] __fi_w; + @ObfuscatedName("l") + @Export("__fi_l") + static int[] __fi_l; + @ObfuscatedName("e") + @Export("__fi_e") + static int[] __fi_e; + + static { + __fi_q = new int[128][128]; + __fi_w = new int[128][128]; + __fi_l = new int[4096]; + __fi_e = new int[4096]; + } +} diff --git a/rs-client/src/main/java/class179.java b/rs-client/src/main/java/class179.java new file mode 100644 index 0000000000..5b0bec30cc --- /dev/null +++ b/rs-client/src/main/java/class179.java @@ -0,0 +1,81 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("fe") +public abstract class class179 { + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -1237576843 + ) + @Export("Interpreter_intStackSize") + static int Interpreter_intStackSize; + @ObfuscatedName("e") + @Export("__fe_e") + static byte[][][] __fe_e; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 123677543 + ) + public int field2120; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -2126454535 + ) + public int field2121; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1566880917 + ) + public int field2122; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -2126101601 + ) + public int field2123; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIILfy;I)Z", + garbageValue = "-519225044" + ) + protected abstract boolean vmethod3644(int var1, int var2, int var3, CollisionMap var4); + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "1634956279" + ) + public static int method3642(int var0, int var1) { + int var2; + for(var2 = 1; var1 > 1; var1 >>= 1) { + if((var1 & 1) != 0) { + var2 = var0 * var2; + } + + var0 *= var0; + } + + if(var1 == 1) { + return var0 * var2; + } else { + return var2; + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Lir;II)Z", + garbageValue = "-602741260" + ) + static boolean method3643(AbstractIndexCache var0, int var1) { + byte[] var2 = var0.takeRecordFlat(var1); + if(var2 == null) { + return false; + } else { + DevicePcmPlayerProvider.decodeSprite(var2); + return true; + } + } +} diff --git a/rs-client/src/main/java/class190.java b/rs-client/src/main/java/class190.java new file mode 100644 index 0000000000..b36e1c9dfa --- /dev/null +++ b/rs-client/src/main/java/class190.java @@ -0,0 +1,135 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gf") +public class class190 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2346; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2352; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2342; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2341; + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2344; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2345; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2350; + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2347; + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2343; + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lgf;" + ) + public static final class190 field2349; + @ObfuscatedName("ge") + @Export("xteaKeys") + static int[][] xteaKeys; + + static { + field2346 = new class190(7); + field2352 = new class190(15); + field2342 = new class190(14); + field2341 = new class190(6); + field2344 = new class190(4); + field2345 = new class190(5); + field2350 = new class190(2); + field2347 = new class190(3); + field2343 = new class190(5); + field2349 = new class190(4); + } + + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "7" + ) + class190(int var1) { + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)Lbt;", + garbageValue = "-68901151" + ) + static World method3672() { + World.__bt_g = 0; + return Fonts.method5647(); + } + + @ObfuscatedName("iv") + @ObfuscatedSignature( + signature = "(IIIIIIB)V", + garbageValue = "0" + ) + static final void method3669(int var0, int var1, int var2, int var3, int var4, int var5) { + int var6 = var2 - var0; + int var7 = var3 - var1; + int var8 = var6 >= 0?var6:-var6; + int var9 = var7 >= 0?var7:-var7; + int var10 = var8; + if(var8 < var9) { + var10 = var9; + } + + if(var10 != 0) { + int var11 = (var6 << 16) / var10; + int var12 = (var7 << 16) / var10; + if(var12 <= var11) { + var11 = -var11; + } else { + var12 = -var12; + } + + int var13 = var5 * var12 >> 17; + int var14 = var5 * var12 + 1 >> 17; + int var15 = var5 * var11 >> 17; + int var16 = var5 * var11 + 1 >> 17; + var0 -= Rasterizer2D.Rasterizer2D_xClipStart; + var1 -= Rasterizer2D.Rasterizer2D_yClipStart; + int var17 = var0 + var13; + int var18 = var0 - var14; + int var19 = var0 + var6 - var14; + int var20 = var0 + var13 + var6; + int var21 = var15 + var1; + int var22 = var1 - var16; + int var23 = var7 + var1 - var16; + int var24 = var15 + var7 + var1; + Rasterizer3D.method2985(var17, var18, var19); + Rasterizer3D.method3020(var21, var22, var23, var17, var18, var19, var4); + Rasterizer3D.method2985(var17, var19, var20); + Rasterizer3D.method3020(var21, var23, var24, var17, var19, var20, var4); + } + } +} diff --git a/rs-client/src/main/java/class192.java b/rs-client/src/main/java/class192.java new file mode 100644 index 0000000000..38c7ca5429 --- /dev/null +++ b/rs-client/src/main/java/class192.java @@ -0,0 +1,13 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gq") +public class class192 { + @ObfuscatedName("gv") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("mapSceneSprites") + static IndexedSprite[] mapSceneSprites; +} diff --git a/rs-client/src/main/java/class196.java b/rs-client/src/main/java/class196.java new file mode 100644 index 0000000000..750c5159bc --- /dev/null +++ b/rs-client/src/main/java/class196.java @@ -0,0 +1,50 @@ +import java.util.HashMap; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gy") +public class class196 { + @ObfuscatedName("of") + @ObfuscatedSignature( + signature = "Lch;" + ) + @Export("varcs") + static Varcs varcs; + + static { + new HashMap(); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "125" + ) + static int method3736(int var0, Script var1, boolean var2) { + return var0 < 1000?Canvas.method861(var0, var1, var2):(var0 < 1100?class1.method8(var0, var1, var2):(var0 < 1200?StructDefinition.method4952(var0, var1, var2):(var0 < 1300?class32.method576(var0, var1, var2):(var0 < 1400?WorldMapAreaData.method710(var0, var1, var2):(var0 < 1500?class11.method141(var0, var1, var2):(var0 < 1600?WorldMapSectionType.method253(var0, var1, var2):(var0 < 1700?ScriptEvent.method1185(var0, var1, var2):(var0 < 1800?Formatting.method2023(var0, var1, var2):(var0 < 1900?class16.method188(var0, var1, var2):(var0 < 2000?FriendSystem.method1867(var0, var1, var2):(var0 < 2100?class1.method8(var0, var1, var2):(var0 < 2200?StructDefinition.method4952(var0, var1, var2):(var0 < 2300?class32.method576(var0, var1, var2):(var0 < 2400?WorldMapAreaData.method710(var0, var1, var2):(var0 < 2500?class11.method141(var0, var1, var2):(var0 < 2600?ViewportMouse.method2983(var0, var1, var2):(var0 < 2700?GrandExchangeEvents.method75(var0, var1, var2):(var0 < 2800?class11.method146(var0, var1, var2):(var0 < 2900?class15.method182(var0, var1, var2):(var0 < 3000?FriendSystem.method1867(var0, var1, var2):(var0 < 3200?class4.method54(var0, var1, var2):(var0 < 3300?WorldComparator.method68(var0, var1, var2):(var0 < 3400?ScriptEvent.method1187(var0, var1, var2):(var0 < 3500?Formatting.method2022(var0, var1, var2):(var0 < 3700?FontName.method5639(var0, var1, var2):(var0 < 4000?class248.method4741(var0, var1, var2):(var0 < 4100?TextureProvider.method2752(var0, var1, var2):(var0 < 4200?class211.method4103(var0, var1, var2):(var0 < 4300?class1.method16(var0, var1, var2):(var0 < 5100?DynamicObject.method2223(var0, var1, var2):(var0 < 5400?UserComparator4.method3335(var0, var1, var2):(var0 < 5600?OwnWorldComparator.method1285(var0, var1, var2):(var0 < 5700?Decimator.method2492(var0, var1, var2):(var0 < 6300?class229.method4513(var0, var1, var2):(var0 < 6600?class31.method573(var0, var1, var2):(var0 < 6700?class54.method1093(var0, var1, var2):2)))))))))))))))))))))))))))))))))))); + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-127" + ) + static void method3740() { + if(Client.Login_isUsernameRemembered && Login.Login_username != null && Login.Login_username.length() > 0) { + Login.currentLoginField = 1; + } else { + Login.currentLoginField = 0; + } + + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(II)Ljava/lang/String;", + garbageValue = "1247389467" + ) + static final String method3735(int var0) { + return var0 < 100000?"" + var0 + "":(var0 < 10000000?"" + var0 / 1000 + "K" + "":"" + var0 / 1000000 + "M" + ""); + } +} diff --git a/rs-client/src/main/java/class197.java b/rs-client/src/main/java/class197.java new file mode 100644 index 0000000000..0be18d8d6a --- /dev/null +++ b/rs-client/src/main/java/class197.java @@ -0,0 +1,13 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gz") +public class class197 { + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "Llp;" + ) + @Export("rasterProvider") + public static AbstractRasterProvider rasterProvider; +} diff --git a/rs-client/src/main/java/class198.java b/rs-client/src/main/java/class198.java new file mode 100644 index 0000000000..bf77a5a5b6 --- /dev/null +++ b/rs-client/src/main/java/class198.java @@ -0,0 +1,14 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gm") +public class class198 { + @ObfuscatedName("kn") + @ObfuscatedSignature( + signature = "(Lho;I)Ljava/lang/String;", + garbageValue = "1713547686" + ) + static String method3745(Widget var0) { + return class211.method4107(class1.getWidgetClickMask(var0)) == 0?null:(var0.spellActionName != null && var0.spellActionName.trim().length() != 0?var0.spellActionName:null); + } +} diff --git a/rs-client/src/main/java/class2.java b/rs-client/src/main/java/class2.java new file mode 100644 index 0000000000..7cbac1fdf0 --- /dev/null +++ b/rs-client/src/main/java/class2.java @@ -0,0 +1,149 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("q") +final class class2 implements class0 { + @ObfuscatedName("dj") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache14") + static IndexCache indexCache14; + @ObfuscatedName("ee") + @ObfuscatedGetter( + intValue = -753026759 + ) + @Export("port1") + static int port1; + @ObfuscatedName("fo") + @ObfuscatedSignature( + signature = "Lkk;" + ) + @Export("fontBold12") + static Font fontBold12; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/Object;Lgr;I)V", + garbageValue = "-223205903" + ) + public void vmethod44(Object var1, Buffer var2) { + this.method21((Long)var1, var2); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)Ljava/lang/Object;", + garbageValue = "704451908" + ) + public Object vmethod46(Buffer var1) { + return Long.valueOf(var1.readLong()); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ljava/lang/Long;Lgr;I)V", + garbageValue = "1518625016" + ) + void method21(Long var1, Buffer var2) { + var2.writeLong(var1.longValue()); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lir;Lir;ZII)V", + garbageValue = "-1535318699" + ) + static void method27(AbstractIndexCache var0, AbstractIndexCache var1, boolean var2, int var3) { + if(Login.__cu_f) { + if(var3 == 4) { + Login.__cu_aw = 4; + } + + } else { + Login.__cu_aw = var3; + Rasterizer2D.Rasterizer2D_clear(); + byte[] var4 = var0.takeRecordByNames("title.jpg", ""); + Login.__cu_g = class27.method438(var4); + Fonts.__kz_l = Login.__cu_g.copy(); + if((Client.worldProperties & 536870912) != 0) { + WorldMapSectionType.__h_e = MenuAction.method2025(var1, "logo_deadman_mode", ""); + } else { + WorldMapSectionType.__h_e = MenuAction.method2025(var1, "logo", ""); + } + + Login.__cu_o = MenuAction.method2025(var1, "titlebox", ""); + IndexCacheLoader.__bd_u = MenuAction.method2025(var1, "titlebutton", ""); + int var6 = var1.getArchiveId("runes"); + int var7 = var1.getRecordId(var6, ""); + IndexedSprite[] var8; + if(!SpriteMask.method4392(var1, var6, var7)) { + var8 = null; + } else { + var8 = WorldMapLabel.method444(); + } + + WorldMapEvent.__ap_w = var8; + var7 = var1.getArchiveId("title_mute"); + int var10 = var1.getRecordId(var7, ""); + IndexedSprite[] var9; + if(!SpriteMask.method4392(var1, var7, var10)) { + var9 = null; + } else { + var9 = WorldMapLabel.method444(); + } + + KeyHandler.__an_x = var9; + Login.__cu_d = MenuAction.method2025(var1, "options_radio_buttons,0", ""); + GraphicsObject.__bw_k = MenuAction.method2025(var1, "options_radio_buttons,4", ""); + class308.__kw_n = MenuAction.method2025(var1, "options_radio_buttons,2", ""); + KeyHandler.__an_i = MenuAction.method2025(var1, "options_radio_buttons,6", ""); + class168.__fs_au = Login.__cu_d.subWidth; + GroundItemPile.__dr_ao = Login.__cu_d.subHeight; + class16.field85 = new class72(WorldMapEvent.__ap_w); + if(var2) { + Login.Login_username = ""; + Login.Login_password = ""; + } + + class13.__i_af = 0; + Login.__cu_ai = ""; + Login.__cu_ba = true; + Login.__cu_bk = false; + if(!ReflectionCheck.clientPreferences.titleMusicDisabled) { + Canvas.method858(2, UserComparator3.indexCache6, "scape main", "", 255, false); + } else { + AbstractSocket.method3488(2); + } + + UserComparator9.method3343(false); + Login.__cu_f = true; + Login.__cu_q = (SoundCache.canvasWidth - 765) / 2; + Login.__cu_y = Login.__cu_q + 202; + Varps.__hv_h = Login.__cu_y + 180; + Login.__cu_g.drawAt(Login.__cu_q, 0); + Fonts.__kz_l.drawAt(Login.__cu_q + 382, 0); + WorldMapSectionType.__h_e.__q_496(Login.__cu_q + 382 - WorldMapSectionType.__h_e.subWidth / 2, 18); + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lir;Ljava/lang/String;Ljava/lang/String;B)[Lln;", + garbageValue = "0" + ) + public static Sprite[] method20(AbstractIndexCache var0, String var1, String var2) { + int var3 = var0.getArchiveId(var1); + int var4 = var0.getRecordId(var3, var2); + Sprite[] var5; + if(!SpriteMask.method4392(var0, var3, var4)) { + var5 = null; + } else { + var5 = UserComparator9.method3344(); + } + + return var5; + } +} diff --git a/rs-client/src/main/java/class203.java b/rs-client/src/main/java/class203.java new file mode 100644 index 0000000000..57b042deea --- /dev/null +++ b/rs-client/src/main/java/class203.java @@ -0,0 +1,78 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ga") +public class class203 { + @ObfuscatedName("f") + @ObfuscatedGetter( + longValue = -6166028446082638015L + ) + @Export("currentTimeMsOffset") + static long currentTimeMsOffset; + @ObfuscatedName("eh") + @ObfuscatedGetter( + intValue = 994298267 + ) + @Export("port3") + static int port3; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)J", + garbageValue = "340448023" + ) + @Export("currentTimeMs") + public static synchronized long currentTimeMs() { + long var0 = System.currentTimeMillis(); + if(var0 < ModelData0.currentTimeMsLast) { + currentTimeMsOffset += ModelData0.currentTimeMsLast - var0; + } + + ModelData0.currentTimeMsLast = var0; + return var0 + currentTimeMsOffset; + } + + @ObfuscatedName("m") + public static final void method4010(long var0) { + if(var0 > 0L) { + if(var0 % 10L == 0L) { + long var2 = var0 - 1L; + + try { + Thread.sleep(var2); + } catch (InterruptedException var8) { + ; + } + + try { + Thread.sleep(1L); + } catch (InterruptedException var7) { + ; + } + } else { + try { + Thread.sleep(var0); + } catch (InterruptedException var6) { + ; + } + } + + } + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "571835999" + ) + public static void method4008(int var0) { + if(class214.__hf_o != 0) { + WorldMapLabel.__aj_e = var0; + } else { + class214.midiPcmStream.__m_340(var0); + } + + } +} diff --git a/rs-client/src/main/java/class204.java b/rs-client/src/main/java/class204.java new file mode 100644 index 0000000000..f648d1f2b2 --- /dev/null +++ b/rs-client/src/main/java/class204.java @@ -0,0 +1,99 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gx") +public class class204 { + @ObfuscatedName("x") + @Export("__gx_x") + static final int[] __gx_x; + @ObfuscatedName("d") + @Export("__gx_d") + static final int[] __gx_d; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lkk;" + ) + @Export("__gx_n") + public static Font __gx_n; + + static { + __gx_x = new int[2048]; + __gx_d = new int[2048]; + double var0 = 0.0030679615757712823D; + + for(int var2 = 0; var2 < 2048; ++var2) { + __gx_x[var2] = (int)(65536.0D * Math.sin(var0 * (double)var2)); + __gx_d[var2] = (int)(65536.0D * Math.cos(var0 * (double)var2)); + } + + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)Lho;", + garbageValue = "-1975300504" + ) + @Export("getWidgetChild") + public static Widget getWidgetChild(int var0, int var1) { + Widget var2 = Huffman.getWidget(var0); + return var1 == -1?var2:(var2 != null && var2.children != null && var1 < var2.children.length?var2.children[var1]:null); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lir;Ljava/lang/String;Ljava/lang/String;IZB)V", + garbageValue = "0" + ) + public static void method4011(AbstractIndexCache var0, String var1, String var2, int var3, boolean var4) { + int var5 = var0.getArchiveId(var1); + int var6 = var0.getRecordId(var5, var2); + Login.method2076(var0, var5, var6, var3, var4); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "([BIIIIIII[Lfy;B)V", + garbageValue = "64" + ) + static final void method4013(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, CollisionMap[] var8) { + int var10; + for(int var9 = 0; var9 < 8; ++var9) { + for(var10 = 0; var10 < 8; ++var10) { + if(var9 + var2 > 0 && var9 + var2 < 103 && var3 + var10 > 0 && var3 + var10 < 103) { + var8[var1].flags[var9 + var2][var3 + var10] &= -16777217; + } + } + } + + Buffer var21 = new Buffer(var0); + + for(var10 = 0; var10 < 4; ++var10) { + for(int var11 = 0; var11 < 64; ++var11) { + for(int var12 = 0; var12 < 64; ++var12) { + if(var10 == var4 && var11 >= var5 && var11 < var5 + 8 && var12 >= var6 && var12 < var6 + 8) { + int var15 = var2 + CollisionMap.method3632(var11 & 7, var12 & 7, var7); + int var18 = var11 & 7; + int var19 = var12 & 7; + int var20 = var7 & 3; + int var17; + if(var20 == 0) { + var17 = var19; + } else if(var20 == 1) { + var17 = 7 - var18; + } else if(var20 == 2) { + var17 = 7 - var19; + } else { + var17 = var18; + } + + TotalQuantityComparator.loadTerrain(var21, var1, var15, var3 + var17, 0, 0, var7); + } else { + TotalQuantityComparator.loadTerrain(var21, 0, -1, -1, 0, 0, 0); + } + } + } + } + + } +} diff --git a/rs-client/src/main/java/class206.java b/rs-client/src/main/java/class206.java new file mode 100644 index 0000000000..05ab4835f3 --- /dev/null +++ b/rs-client/src/main/java/class206.java @@ -0,0 +1,14 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("gj") +public class class206 { + @ObfuscatedName("jq") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-1763054678" + ) + static boolean method4028() { + return Client.tapToDrop; + } +} diff --git a/rs-client/src/main/java/class21.java b/rs-client/src/main/java/class21.java new file mode 100644 index 0000000000..259d966766 --- /dev/null +++ b/rs-client/src/main/java/class21.java @@ -0,0 +1,444 @@ +import java.util.LinkedList; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("b") +public abstract class class21 { + @ObfuscatedName("by") + @Export("__b_by") + static String __b_by; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -474193537 + ) + int field149; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1952285401 + ) + int field146; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1560078681 + ) + int field159; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 549708301 + ) + int field147; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -814742029 + ) + int field148; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 2075507241 + ) + int field156; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -1715718119 + ) + int field150; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = -2119420619 + ) + int field152; + @ObfuscatedName("e") + short[][][] field151; + @ObfuscatedName("x") + short[][][] field145; + @ObfuscatedName("d") + byte[][][] field154; + @ObfuscatedName("k") + byte[][][] field155; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "[[[[Lv;" + ) + class25[][][][] field144; + @ObfuscatedName("i") + boolean field157; + @ObfuscatedName("a") + boolean field153; + + class21() { + this.field150 = -1; + this.field152 = -1; + new LinkedList(); + this.field157 = false; + this.field153 = false; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1937224298" + ) + abstract void vmethod715(Buffer var1); + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(I)Z", + garbageValue = "-947070877" + ) + boolean method271() { + return this.field157 && this.field153; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Lir;B)V", + garbageValue = "-108" + ) + void method263(AbstractIndexCache var1) { + if(!this.method271()) { + byte[] var2 = var1.takeRecord(this.field150, this.field152); + if(var2 != null) { + this.vmethod715(new Buffer(var2)); + this.field157 = true; + this.field153 = true; + } + + } + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2111523326" + ) + void method282() { + this.field151 = null; + this.field145 = null; + this.field154 = null; + this.field155 = null; + this.field144 = null; + this.field157 = false; + this.field153 = false; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(IILgr;I)V", + garbageValue = "-1039890176" + ) + void method259(int var1, int var2, Buffer var3) { + int var4 = var3.readUnsignedByte(); + if(var4 != 0) { + if((var4 & 1) != 0) { + this.method260(var1, var2, var3, var4); + } else { + this.method257(var1, var2, var3, var4); + } + + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(IILgr;IB)V", + garbageValue = "34" + ) + void method260(int var1, int var2, Buffer var3, int var4) { + boolean var5 = (var4 & 2) != 0; + if(var5) { + this.field145[0][var1][var2] = (short)var3.readUnsignedByte(); + } + + this.field151[0][var1][var2] = (short)var3.readUnsignedByte(); + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(IILgr;II)V", + garbageValue = "1538895535" + ) + void method257(int var1, int var2, Buffer var3, int var4) { + int var5 = ((var4 & 24) >> 3) + 1; + boolean var6 = (var4 & 2) != 0; + boolean var7 = (var4 & 4) != 0; + this.field151[0][var1][var2] = (short)var3.readUnsignedByte(); + int var8; + int var9; + int var11; + if(var6) { + var8 = var3.readUnsignedByte(); + + for(var9 = 0; var9 < var8; ++var9) { + int var10 = var3.readUnsignedByte(); + if(var10 != 0) { + this.field145[var9][var1][var2] = (short)var10; + var11 = var3.readUnsignedByte(); + this.field154[var9][var1][var2] = (byte)(var11 >> 2); + this.field155[var9][var1][var2] = (byte)(var11 & 3); + } + } + } + + if(var7) { + for(var8 = 0; var8 < var5; ++var8) { + var9 = var3.readUnsignedByte(); + if(var9 != 0) { + class25[] var14 = this.field144[var8][var1][var2] = new class25[var9]; + + for(var11 = 0; var11 < var9; ++var11) { + int var12 = var3.__ap_310(); + int var13 = var3.readUnsignedByte(); + var14[var11] = new class25(var12, var13 >> 2, var13 & 3); + } + } + } + } + + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "1061931388" + ) + int method256() { + return this.field159; + } + + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "-128" + ) + int method264() { + return this.field147; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(Lhx;B)V", + garbageValue = "-3" + ) + static final void method293(PacketBuffer var0) { + for(int var1 = 0; var1 < Players.__cq_n; ++var1) { + int var2 = Players.__cq_i[var1]; + Player var3 = Client.players[var2]; + int var4 = var0.readUnsignedByte(); + if((var4 & 8) != 0) { + var4 += var0.readUnsignedByte() << 8; + } + + byte var5 = -1; + int var6; + int var7; + int var9; + int var10; + int var13; + if((var4 & 64) != 0) { + var6 = var0.__bb_317(); + int var8; + int var11; + int var12; + if(var6 > 0) { + for(var7 = 0; var7 < var6; ++var7) { + var9 = -1; + var10 = -1; + var11 = -1; + var8 = var0.__ae_307(); + if(var8 == 32767) { + var8 = var0.__ae_307(); + var10 = var0.__ae_307(); + var9 = var0.__ae_307(); + var11 = var0.__ae_307(); + } else if(var8 != 32766) { + var10 = var0.__ae_307(); + } else { + var8 = -1; + } + + var12 = var0.__ae_307(); + var3.addHitSplat(var8, var10, var9, var11, Client.cycle, var12); + } + } + + var7 = var0.readUnsignedByteNegate(); + if(var7 > 0) { + for(var8 = 0; var8 < var7; ++var8) { + var9 = var0.__ae_307(); + var10 = var0.__ae_307(); + if(var10 != 32767) { + var11 = var0.__ae_307(); + var12 = var0.__bb_317(); + var13 = var10 > 0?var0.readUnsignedByte():var12; + var3.addHealthBar(var9, Client.cycle, var10, var11, var12, var13); + } else { + var3.removeHealthBar(var9); + } + } + } + } + + if((var4 & 512) != 0) { + var3.spotAnimation = var0.__bm_326(); + var6 = var0.__bp_331(); + var3.heightOffset = var6 >> 16; + var3.__bt = (var6 & 65535) + Client.cycle; + var3.spotAnimationFrame = 0; + var3.spotAnimationFrameCycle = 0; + if(var3.__bt > Client.cycle) { + var3.spotAnimationFrame = -1; + } + + if(var3.spotAnimation == 65535) { + var3.spotAnimation = -1; + } + } + + if((var4 & 4096) != 0) { + var5 = var0.__bn_319(); + } + + if((var4 & 1024) != 0) { + var3.__bf = var0.__bd_321(); + var3.__be = var0.__bn_319(); + var3.__bh = var0.__bn_319(); + var3.__bv = var0.__bd_321(); + var3.__bw = var0.__bu_325() + Client.cycle; + var3.__cr = var0.__by_324() + Client.cycle; + var3.__cv = var0.__ag_302(); + if(var3.__ag) { + var3.__bf += var3.tileX; + var3.__be += var3.tileY; + var3.__bh += var3.tileX; + var3.__bv += var3.tileY; + var3.pathLength = 0; + } else { + var3.__bf += var3.pathX[0]; + var3.__be += var3.pathY[0]; + var3.__bh += var3.pathX[0]; + var3.__bv += var3.pathY[0]; + var3.pathLength = 1; + } + + var3.__ch = 0; + } + + if((var4 & 32) != 0) { + var3.overheadText = var0.readStringCp1252NullTerminated(); + if(var3.overheadText.charAt(0) == '~') { + var3.overheadText = var3.overheadText.substring(1); + WorldMapIcon1.method219(2, var3.username.getName(), var3.overheadText); + } else if(var3 == Canvas.localPlayer) { + WorldMapIcon1.method219(2, var3.username.getName(), var3.overheadText); + } + + var3.isAutoChatting = false; + var3.overheadTextColor = 0; + var3.overheadTextEffect = 0; + var3.overheadTextCyclesRemaining = 150; + } + + if((var4 & 4) != 0) { + var3.__bc = var0.__by_324(); + if(var3.pathLength == 0) { + var3.orientation = var3.__bc; + var3.__bc = -1; + } + } + + if((var4 & 1) != 0) { + var6 = var0.__bq_318(); + byte[] var14 = new byte[var6]; + Buffer var15 = new Buffer(var14); + var0.__bh_333(var14, 0, var6); + Players.__cq_o[var2] = var15; + var3.read(var15); + } + + if((var4 & 2) != 0) { + var3.targetIndex = var0.__bu_325(); + if(var3.targetIndex == 65535) { + var3.targetIndex = -1; + } + } + + if((var4 & 2048) != 0) { + Players.__cq_w[var2] = var0.__bn_319(); + } + + if((var4 & 16) != 0) { + var6 = var0.__bu_325(); + PlayerType var20 = (PlayerType)ScriptFrame.findEnumerated(class48.method865(), var0.readUnsignedByte()); + boolean var18 = var0.readUnsignedByteNegate() == 1; + var9 = var0.readUnsignedByte(); + var10 = var0.index; + if(var3.username != null && var3.appearance != null) { + boolean var19 = false; + if(var20.isUser && WorldMapArea.friendSystem.isIgnored(var3.username)) { + var19 = true; + } + + if(!var19 && Client.__client_jc == 0 && !var3.isHidden) { + Players.__cq_a.index = 0; + var0.__al_305(Players.__cq_a.array, 0, var9); + Players.__cq_a.index = 0; + String var16 = AbstractFont.escapeBrackets(class233.method4527(KitDefinition.method4866(Players.__cq_a))); + var3.overheadText = var16.trim(); + var3.overheadTextColor = var6 >> 8; + var3.overheadTextEffect = var6 & 255; + var3.overheadTextCyclesRemaining = 150; + var3.isAutoChatting = var18; + var3.__az = var3 != Canvas.localPlayer && var20.isUser && "" != Client.__client_pz && var16.toLowerCase().indexOf(Client.__client_pz) == -1; + if(var20.isPrivileged) { + var13 = var18?91:1; + } else { + var13 = var18?90:2; + } + + if(var20.modIcon != -1) { + WorldMapIcon1.method219(var13, ItemContainer.method1170(var20.modIcon) + var3.username.getName(), var16); + } else { + WorldMapIcon1.method219(var13, var3.username.getName(), var16); + } + } + } + + var0.index = var10 + var9; + } + + if((var4 & 256) != 0) { + for(var6 = 0; var6 < 3; ++var6) { + var3.actions[var6] = var0.readStringCp1252NullTerminated(); + } + } + + if((var4 & 128) != 0) { + var6 = var0.__ag_302(); + if(var6 == 65535) { + var6 = -1; + } + + var7 = var0.readUnsignedByte(); + class234.method4534(var3, var6, var7); + } + + if(var3.__ag) { + if(var5 == 127) { + var3.resetPath(var3.tileX, var3.tileY); + } else { + byte var17; + if(var5 != -1) { + var17 = var5; + } else { + var17 = Players.__cq_w[var2]; + } + + var3.__x_130(var3.tileX, var3.tileY, var17); + } + } + } + + } +} diff --git a/rs-client/src/main/java/class210.java b/rs-client/src/main/java/class210.java new file mode 100644 index 0000000000..ea27bac5c4 --- /dev/null +++ b/rs-client/src/main/java/class210.java @@ -0,0 +1,219 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hr") +public class class210 { + @ObfuscatedName("dn") + @ObfuscatedSignature( + signature = "Lfm;" + ) + @Export("js5SocketTask") + static Task js5SocketTask; + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(Lhx;II)V", + garbageValue = "-9255886" + ) + static void method4101(PacketBuffer var0, int var1) { + boolean var2 = var0.readBits(1) == 1; + if(var2) { + Players.__cq_i[++Players.__cq_n - 1] = var1; + } + + int var3 = var0.readBits(2); + Player var4 = Client.players[var1]; + if(var3 == 0) { + if(var2) { + var4.__ag = false; + } else if(Client.localPlayerIndex == var1) { + throw new RuntimeException(); + } else { + Players.Players_regions[var1] = (var4.plane << 28) + (GraphicsObject.baseY + var4.pathY[0] >> 13) + (class50.baseX + var4.pathX[0] >> 13 << 14); + if(var4.__bc != -1) { + Players.Players_orientations[var1] = var4.__bc; + } else { + Players.Players_orientations[var1] = var4.orientation; + } + + Players.Players_targetIndices[var1] = var4.targetIndex; + Client.players[var1] = null; + if(var0.readBits(1) != 0) { + class236.updateExternalPlayer(var0, var1); + } + + } + } else { + int var5; + int var6; + int var7; + if(var3 == 1) { + var5 = var0.readBits(3); + var6 = var4.pathX[0]; + var7 = var4.pathY[0]; + if(var5 == 0) { + --var6; + --var7; + } else if(var5 == 1) { + --var7; + } else if(var5 == 2) { + ++var6; + --var7; + } else if(var5 == 3) { + --var6; + } else if(var5 == 4) { + ++var6; + } else if(var5 == 5) { + --var6; + ++var7; + } else if(var5 == 6) { + ++var7; + } else if(var5 == 7) { + ++var6; + ++var7; + } + + if(Client.localPlayerIndex == var1 && (var4.x < 1536 || var4.y < 1536 || var4.x >= 11776 || var4.y >= 11776)) { + var4.resetPath(var6, var7); + var4.__ag = false; + } else if(var2) { + var4.__ag = true; + var4.tileX = var6; + var4.tileY = var7; + } else { + var4.__ag = false; + var4.__x_130(var6, var7, Players.__cq_w[var1]); + } + + } else if(var3 == 2) { + var5 = var0.readBits(4); + var6 = var4.pathX[0]; + var7 = var4.pathY[0]; + if(var5 == 0) { + var6 -= 2; + var7 -= 2; + } else if(var5 == 1) { + --var6; + var7 -= 2; + } else if(var5 == 2) { + var7 -= 2; + } else if(var5 == 3) { + ++var6; + var7 -= 2; + } else if(var5 == 4) { + var6 += 2; + var7 -= 2; + } else if(var5 == 5) { + var6 -= 2; + --var7; + } else if(var5 == 6) { + var6 += 2; + --var7; + } else if(var5 == 7) { + var6 -= 2; + } else if(var5 == 8) { + var6 += 2; + } else if(var5 == 9) { + var6 -= 2; + ++var7; + } else if(var5 == 10) { + var6 += 2; + ++var7; + } else if(var5 == 11) { + var6 -= 2; + var7 += 2; + } else if(var5 == 12) { + --var6; + var7 += 2; + } else if(var5 == 13) { + var7 += 2; + } else if(var5 == 14) { + ++var6; + var7 += 2; + } else if(var5 == 15) { + var6 += 2; + var7 += 2; + } + + if(Client.localPlayerIndex == var1 && (var4.x < 1536 || var4.y < 1536 || var4.x >= 11776 || var4.y >= 11776)) { + var4.resetPath(var6, var7); + var4.__ag = false; + } else if(var2) { + var4.__ag = true; + var4.tileX = var6; + var4.tileY = var7; + } else { + var4.__ag = false; + var4.__x_130(var6, var7, Players.__cq_w[var1]); + } + + } else { + var5 = var0.readBits(1); + int var8; + int var9; + int var10; + int var11; + if(var5 == 0) { + var6 = var0.readBits(12); + var7 = var6 >> 10; + var8 = var6 >> 5 & 31; + if(var8 > 15) { + var8 -= 32; + } + + var9 = var6 & 31; + if(var9 > 15) { + var9 -= 32; + } + + var10 = var8 + var4.pathX[0]; + var11 = var9 + var4.pathY[0]; + if(Client.localPlayerIndex != var1 || var4.x >= 1536 && var4.y >= 1536 && var4.x < 11776 && var4.y < 11776) { + if(var2) { + var4.__ag = true; + var4.tileX = var10; + var4.tileY = var11; + } else { + var4.__ag = false; + var4.__x_130(var10, var11, Players.__cq_w[var1]); + } + } else { + var4.resetPath(var10, var11); + var4.__ag = false; + } + + var4.plane = (byte)(var7 + var4.plane & 3); + if(Client.localPlayerIndex == var1) { + SoundSystem.plane = var4.plane; + } + + } else { + var6 = var0.readBits(30); + var7 = var6 >> 28; + var8 = var6 >> 14 & 16383; + var9 = var6 & 16383; + var10 = (var8 + class50.baseX + var4.pathX[0] & 16383) - class50.baseX; + var11 = (var9 + GraphicsObject.baseY + var4.pathY[0] & 16383) - GraphicsObject.baseY; + if(Client.localPlayerIndex == var1 && (var4.x < 1536 || var4.y < 1536 || var4.x >= 11776 || var4.y >= 11776)) { + var4.resetPath(var10, var11); + var4.__ag = false; + } else if(var2) { + var4.__ag = true; + var4.tileX = var10; + var4.tileY = var11; + } else { + var4.__ag = false; + var4.__x_130(var10, var11, Players.__cq_w[var1]); + } + + var4.plane = (byte)(var7 + var4.plane & 3); + if(Client.localPlayerIndex == var1) { + SoundSystem.plane = var4.plane; + } + + } + } + } + } +} diff --git a/rs-client/src/main/java/class211.java b/rs-client/src/main/java/class211.java new file mode 100644 index 0000000000..14dd76547b --- /dev/null +++ b/rs-client/src/main/java/class211.java @@ -0,0 +1,220 @@ +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hg") +public class class211 { + @ObfuscatedName("m") + @Export("__hg_m") + static final String[][] __hg_m; + @ObfuscatedName("f") + @Export("__hg_f") + static final String[] __hg_f; + @ObfuscatedName("q") + @Export("__hg_q") + static Calendar __hg_q; + @ObfuscatedName("em") + @ObfuscatedSignature( + signature = "Llg;" + ) + @Export("spriteIds") + static SpriteIds spriteIds; + + static { + __hg_m = new String[][]{{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}, {"Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"}}; + __hg_f = new String[]{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; + Calendar.getInstance(TimeZone.getTimeZone("Europe/London")); + __hg_q = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "2034023208" + ) + public static int method4107(int var0) { + return var0 >> 11 & 63; + } + + @ObfuscatedName("ay") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "-1028057613" + ) + static int method4103(int var0, Script var1, boolean var2) { + String var3; + int var4; + if(var0 == 4100) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + var4; + return 1; + } else { + String var9; + if(var0 == 4101) { + Interpreter.Interpreter_stringStackSize -= 2; + var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize]; + var9 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + var9; + return 1; + } else if(var0 == 4102) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + ByteArrayPool.method4001(var4, true); + return 1; + } else if(var0 == 4103) { + 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 == 4104) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + long var11 = ((long)var10 + 11745L) * 86400000L; + Interpreter.Interpreter_calendar.setTime(new Date(var11)); + var6 = Interpreter.Interpreter_calendar.get(5); + int var16 = Interpreter.Interpreter_calendar.get(2); + int var8 = Interpreter.Interpreter_calendar.get(1); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var6 + "-" + Interpreter.__bv_z[var16] + "-" + var8; + return 1; + } else if(var0 != 4105) { + if(var0 == 4106) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Integer.toString(var10); + return 1; + } else if(var0 == 4107) { + Interpreter.Interpreter_stringStackSize -= 2; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WallDecoration.method3256(AttackOption.method2033(Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize], Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1], Client.language)); + return 1; + } else { + int var5; + byte[] var13; + Font var14; + if(var0 == 4108) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + class179.Interpreter_intStackSize -= 2; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var13 = ByteArrayPool.indexCache13.takeRecord(var5, 0); + var14 = new Font(var13); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var14.lineCount(var3, var4); + return 1; + } else if(var0 == 4109) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + class179.Interpreter_intStackSize -= 2; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var13 = ByteArrayPool.indexCache13.takeRecord(var5, 0); + var14 = new Font(var13); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var14.lineWidth(var3, var4); + return 1; + } else if(var0 == 4110) { + Interpreter.Interpreter_stringStackSize -= 2; + var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize]; + var9 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1]; + if(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var9; + } + + return 1; + } else if(var0 == 4111) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = AbstractFont.escapeBrackets(var3); + return 1; + } else if(var0 == 4112) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3 + (char)var4; + return 1; + } else if(var0 == 4113) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ChatChannel.method2238((char)var10)?1:0; + return 1; + } else if(var0 == 4114) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = VarcInt.method4807((char)var10)?1:0; + return 1; + } else if(var0 == 4115) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = UrlRequest.method3271((char)var10)?1:0; + return 1; + } else if(var0 == 4116) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class159.method3394((char)var10)?1:0; + return 1; + } else if(var0 == 4117) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + if(var3 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.length(); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } + + return 1; + } else if(var0 == 4118) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + class179.Interpreter_intStackSize -= 2; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.substring(var4, var5); + return 1; + } else if(var0 == 4119) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + StringBuilder var17 = new StringBuilder(var3.length()); + boolean var15 = false; + + for(var6 = 0; var6 < var3.length(); ++var6) { + char var7 = var3.charAt(var6); + if(var7 == '<') { + var15 = true; + } else if(var7 == '>') { + var15 = false; + } else if(!var15) { + var17.append(var7); + } + } + + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var17.toString(); + return 1; + } else if(var0 == 4120) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.indexOf(var4); + return 1; + } else if(var0 == 4121) { + Interpreter.Interpreter_stringStackSize -= 2; + var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize]; + var9 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1]; + var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.indexOf(var9, 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]; + var9 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1]; + if(Canvas.localPlayer.appearance != null && Canvas.localPlayer.appearance.isFemale) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var9; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3; + } + + return 1; + } + } + } + } +} diff --git a/rs-client/src/main/java/class212.java b/rs-client/src/main/java/class212.java new file mode 100644 index 0000000000..21afc326ac --- /dev/null +++ b/rs-client/src/main/java/class212.java @@ -0,0 +1,73 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("hh") +public class class212 { + @ObfuscatedName("m") + public static void method4109(byte[] var0, int var1, byte[] var2, int var3, int var4) { + if(var2 == var0) { + if(var3 == var1) { + return; + } + + if(var3 > var1 && var3 < var4 + var1) { + --var4; + var1 += var4; + var3 += var4; + var4 = var1 - var4; + + for(var4 += 7; var1 >= var4; var2[var3--] = var0[var1--]) { + var2[var3--] = var0[var1--]; + var2[var3--] = var0[var1--]; + var2[var3--] = var0[var1--]; + var2[var3--] = var0[var1--]; + var2[var3--] = var0[var1--]; + var2[var3--] = var0[var1--]; + var2[var3--] = var0[var1--]; + } + + for(var4 -= 7; var1 >= var4; var2[var3--] = var0[var1--]) { + ; + } + + return; + } + } + + var4 += var1; + + for(var4 -= 7; var1 < var4; var2[var3++] = var0[var1++]) { + var2[var3++] = var0[var1++]; + var2[var3++] = var0[var1++]; + var2[var3++] = var0[var1++]; + var2[var3++] = var0[var1++]; + var2[var3++] = var0[var1++]; + var2[var3++] = var0[var1++]; + var2[var3++] = var0[var1++]; + } + + for(var4 += 7; var1 < var4; var2[var3++] = var0[var1++]) { + ; + } + + } + + @ObfuscatedName("x") + @Export("clearIntArray") + public static void clearIntArray(int[] var0, int var1, int var2) { + for(var2 = var2 + var1 - 7; var1 < var2; var0[var1++] = 0) { + var0[var1++] = 0; + var0[var1++] = 0; + var0[var1++] = 0; + var0[var1++] = 0; + var0[var1++] = 0; + var0[var1++] = 0; + var0[var1++] = 0; + } + + for(var2 += 7; var1 < var2; var0[var1++] = 0) { + ; + } + + } +} diff --git a/rs-client/src/main/java/class214.java b/rs-client/src/main/java/class214.java new file mode 100644 index 0000000000..fb35600fda --- /dev/null +++ b/rs-client/src/main/java/class214.java @@ -0,0 +1,121 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hf") +public class class214 { + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__hf_f") + public static AbstractIndexCache __hf_f; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__hf_q") + public static AbstractIndexCache __hf_q; + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lhm;" + ) + @Export("midiPcmStream") + public static MidiPcmStream midiPcmStream; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -848833001 + ) + @Export("__hf_o") + public static int __hf_o; + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__hf_u") + public static AbstractIndexCache __hf_u; + @ObfuscatedName("k") + @Export("__hf_k") + static int[] __hf_k; + @ObfuscatedName("ko") + @ObfuscatedGetter( + intValue = 2079315667 + ) + @Export("menuWidth") + static int menuWidth; + + static { + __hf_o = 0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;IZI)Z", + garbageValue = "-125135280" + ) + static boolean method4144(CharSequence var0, int var1, boolean var2) { + if(var1 >= 2 && var1 <= 36) { + boolean var3 = false; + boolean var4 = false; + int var5 = 0; + int var6 = var0.length(); + + for(int var7 = 0; var7 < var6; ++var7) { + char var8 = var0.charAt(var7); + if(var7 == 0) { + if(var8 == '-') { + var3 = true; + continue; + } + + if(var8 == '+') { + continue; + } + } + + int var10; + if(var8 >= '0' && var8 <= '9') { + var10 = var8 - '0'; + } else if(var8 >= 'A' && var8 <= 'Z') { + var10 = var8 - '7'; + } else { + if(var8 < 'a' || var8 > 'z') { + return false; + } + + var10 = var8 - 'W'; + } + + if(var10 >= var1) { + return false; + } + + if(var3) { + var10 = -var10; + } + + int var9 = var5 * var1 + var10; + if(var9 / var1 != var5) { + return false; + } + + var5 = var9; + var4 = true; + } + + return var4; + } else { + throw new IllegalArgumentException(""); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;II)I", + garbageValue = "2125526115" + ) + public static int method4157(CharSequence var0, int var1) { + return IgnoreList.method5438(var0, var1, true); + } +} diff --git a/rs-client/src/main/java/class22.java b/rs-client/src/main/java/class22.java new file mode 100644 index 0000000000..abedb5af5a --- /dev/null +++ b/rs-client/src/main/java/class22.java @@ -0,0 +1,123 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("c") +public final class class22 { + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "Lgr;" + ) + @Export("NetCache_responseArchiveBuffer") + public static Buffer NetCache_responseArchiveBuffer; + @ObfuscatedName("bn") + @ObfuscatedSignature( + signature = "Lis;" + ) + @Export("studioGame") + static StudioGame studioGame; + @ObfuscatedName("eb") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache16") + static IndexCache indexCache16; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1976624405 + ) + int field169; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -698663527 + ) + int field164; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1588021801 + ) + int field166; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 2138505015 + ) + int field167; + // $FF: synthetic field + @ObfuscatedSignature( + signature = "Lal;" + ) + final WorldMapManager this$0; + + @ObfuscatedSignature( + signature = "(Lal;)V" + ) + class22(WorldMapManager var1) { + this.this$0 = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-1573773621" + ) + public static int method297() { + return ++MouseHandler.MouseHandler_idleCycles - 1; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "61" + ) + static final void method294(String var0) { + StringBuilder var10000 = (new StringBuilder()).append(var0); + Object var10001 = null; + String var1 = var10000.append(" is already on your ignore list").toString(); + WorldMapIcon1.method219(30, "", var1); + } + + @ObfuscatedName("fw") + @ObfuscatedSignature( + signature = "(IZZZB)Lit;", + garbageValue = "-15" + ) + @Export("newIndexCache") + static IndexCache newIndexCache(int var0, boolean var1, boolean var2, boolean var3) { + IndexStore var4 = null; + if(class168.dat2File != null) { + var4 = new IndexStore(var0, class168.dat2File, IndexStoreAction.idxFiles[var0], 1000000); + } + + return new IndexCache(var4, Fonts.indexStore255, var0, var1, var2, var3); + } + + @ObfuscatedName("jp") + @ObfuscatedSignature( + signature = "(Lho;I)V", + garbageValue = "1002272291" + ) + static void method295(Widget var0) { + if(var0.cycle == Client.__client_oo) { + Client.__client_od[var0.rootIndex] = true; + } + + } + + @ObfuscatedName("jo") + @ObfuscatedSignature( + signature = "(Lho;IIII)V", + garbageValue = "1417616898" + ) + static final void method296(Widget var0, int var1, int var2, int var3) { + SpriteMask var4 = var0.getSpriteMask(false); + if(var4 != null) { + if(Client.minimapState < 3) { + UnitPriceComparator.compass.__ay_513(var1, var2, var4.width, var4.height, 25, 25, Client.minimapOrientation, 256, var4.xStarts, var4.xWidths); + } else { + Rasterizer2D.method5948(var1, var2, 0, var4.xStarts, var4.xWidths); + } + + } + } +} diff --git a/rs-client/src/main/java/class226.java b/rs-client/src/main/java/class226.java new file mode 100644 index 0000000000..02d0ac741e --- /dev/null +++ b/rs-client/src/main/java/class226.java @@ -0,0 +1,148 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ht") +public class class226 { + @ObfuscatedName("m") + @Export("__ht_m") + public static final short[] __ht_m; + @ObfuscatedName("f") + @Export("__ht_f") + public static final short[][] __ht_f; + @ObfuscatedName("q") + @Export("__ht_q") + public static final short[] __ht_q; + @ObfuscatedName("w") + @Export("__ht_w") + public static final short[][] __ht_w; + + static { + __ht_m = new short[]{(short)6798, (short)8741, (short)25238, (short)4626, (short)4550}; + __ht_f = new short[][]{{(short)6798, (short)107, (short)10283, (short)16, (short)4797, (short)7744, (short)5799, (short)4634, (short)-31839, (short)22433, (short)2983, (short)-11343, (short)8, (short)5281, (short)10438, (short)3650, (short)-27322, (short)-21845, (short)200, (short)571, (short)908, (short)21830, (short)28946, (short)-15701, (short)-14010}, {(short)8741, (short)12, (short)-1506, (short)-22374, (short)7735, (short)8404, (short)1701, (short)-27106, (short)24094, (short)10153, (short)-8915, (short)4783, (short)1341, (short)16578, (short)-30533, (short)25239, (short)8, (short)5281, (short)10438, (short)3650, (short)-27322, (short)-21845, (short)200, (short)571, (short)908, (short)21830, (short)28946, (short)-15701, (short)-14010}, {(short)25238, (short)8742, (short)12, (short)-1506, (short)-22374, (short)7735, (short)8404, (short)1701, (short)-27106, (short)24094, (short)10153, (short)-8915, (short)4783, (short)1341, (short)16578, (short)-30533, (short)8, (short)5281, (short)10438, (short)3650, (short)-27322, (short)-21845, (short)200, (short)571, (short)908, (short)21830, (short)28946, (short)-15701, (short)-14010}, {(short)4626, (short)11146, (short)6439, (short)12, (short)4758, (short)10270}, {(short)4550, (short)4537, (short)5681, (short)5673, (short)5790, (short)6806, (short)8076, (short)4574, (short)17050, (short)0, (short)127, (short)-31821, (short)-17991}}; + __ht_q = new short[]{(short)-10304, (short)9104, (short)-1, (short)-1, (short)-1}; + __ht_w = new short[][]{{(short)6554, (short)115, (short)10304, (short)28, (short)5702, (short)7756, (short)5681, (short)4510, (short)-31835, (short)22437, (short)2859, (short)-11339, (short)16, (short)5157, (short)10446, (short)3658, (short)-27314, (short)-21965, (short)472, (short)580, (short)784, (short)21966, (short)28950, (short)-15697, (short)-14002}, {(short)9104, (short)10275, (short)7595, (short)3610, (short)7975, (short)8526, (short)918, (short)-26734, (short)24466, (short)10145, (short)-6882, (short)5027, (short)1457, (short)16565, (short)-30545, (short)25486, (short)24, (short)5392, (short)10429, (short)3673, (short)-27335, (short)-21957, (short)192, (short)687, (short)412, (short)21821, (short)28835, (short)-15460, (short)-14019}, new short[0], new short[0], new short[0]}; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(IIIIIZI)Lln;", + garbageValue = "-76173898" + ) + @Export("getItemSprite") + public static final Sprite getItemSprite(int var0, int var1, int var2, int var3, int var4, boolean var5) { + if(var1 == -1) { + var4 = 0; + } else if(var4 == 2 && var1 != 1) { + var4 = 1; + } + + long var6 = ((long)var1 << 16) + (long)var0 + ((long)var2 << 38) + ((long)var4 << 40) + ((long)var3 << 42); + Sprite var8; + if(!var5) { + var8 = (Sprite)ItemDefinition.Sprite_cached.get(var6); + if(var8 != null) { + return var8; + } + } + + ItemDefinition var9 = Skills.getItemDefinition(var0); + if(var1 > 1 && var9.__az != null) { + int var10 = -1; + + for(int var11 = 0; var11 < 10; ++var11) { + if(var1 >= var9.__au[var11] && var9.__au[var11] != 0) { + var10 = var9.__az[var11]; + } + } + + if(var10 != -1) { + var9 = Skills.getItemDefinition(var10); + } + } + + Model var19 = var9.getModel(1); + if(var19 == null) { + return null; + } else { + Sprite var20 = null; + if(var9.noteTemplate != -1) { + var20 = getItemSprite(var9.note, 10, 1, 0, 0, true); + if(var20 == null) { + return null; + } + } else if(var9.notedId != -1) { + var20 = getItemSprite(var9.unnotedId, var1, var2, var3, 0, false); + if(var20 == null) { + return null; + } + } else if(var9.placeholderTemplate != -1) { + var20 = getItemSprite(var9.placeholder, var1, 0, 0, 0, false); + if(var20 == null) { + return null; + } + } + + int[] var12 = Rasterizer2D.Rasterizer2D_pixels; + int var13 = Rasterizer2D.Rasterizer2D_width; + int var14 = Rasterizer2D.Rasterizer2D_height; + int[] var15 = new int[4]; + Rasterizer2D.Rasterizer2D_getClipArray(var15); + var8 = new Sprite(36, 32); + Rasterizer2D.Rasterizer2D_replace(var8.pixels, 36, 32); + Rasterizer2D.Rasterizer2D_clear(); + Rasterizer3D.Rasterizer3D_method1(); + Rasterizer3D.method2989(16, 16); + Rasterizer3D.__et_w = false; + if(var9.placeholderTemplate != -1) { + var20.__a_505(0, 0); + } + + int var16 = var9.zoom2d; + if(var5) { + var16 = (int)((double)var16 * 1.5D); + } else if(var2 == 2) { + var16 = (int)((double)var16 * 1.04D); + } + + int var17 = var16 * Rasterizer3D.Rasterizer3D_sine[var9.xan2d] >> 16; + int var18 = var16 * Rasterizer3D.Rasterizer3D_cosine[var9.xan2d] >> 16; + var19.calculateBoundsCylinder(); + var19.__c_234(0, var9.yan2d, var9.zan2d, var9.xan2d, var9.offsetX2d, var19.height / 2 + var17 + var9.offsetY2d, var18 + var9.offsetY2d); + if(var9.notedId != -1) { + var20.__a_505(0, 0); + } + + if(var2 >= 1) { + var8.__l_502(1); + } + + if(var2 >= 2) { + var8.__l_502(16777215); + } + + if(var3 != 0) { + var8.__e_503(var3); + } + + Rasterizer2D.Rasterizer2D_replace(var8.pixels, 36, 32); + if(var9.noteTemplate != -1) { + var20.__a_505(0, 0); + } + + if(var4 == 1 || var4 == 2 && var9.isStackable == 1) { + class204.__gx_n.draw(class196.method3735(var1), 0, 9, 16776960, 1); + } + + if(!var5) { + ItemDefinition.Sprite_cached.put(var8, var6); + } + + Rasterizer2D.Rasterizer2D_replace(var12, var13, var14); + Rasterizer2D.Rasterizer2D_setClipArray(var15); + Rasterizer3D.Rasterizer3D_method1(); + Rasterizer3D.__et_w = true; + return var8; + } + } +} diff --git a/rs-client/src/main/java/class227.java b/rs-client/src/main/java/class227.java new file mode 100644 index 0000000000..9b08e368b6 --- /dev/null +++ b/rs-client/src/main/java/class227.java @@ -0,0 +1,385 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hj") +public class class227 { + @ObfuscatedName("e") + @Export("__hj_e") + public static short[] __hj_e; + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(IIIIIILem;Lfy;B)V", + garbageValue = "120" + ) + static final void method4446(int var0, int var1, int var2, int var3, int var4, int var5, Scene var6, CollisionMap var7) { + if(!Client.isLowDetail || (Tiles.Tiles_renderFlags[0][var1][var2] & 2) != 0 || (Tiles.Tiles_renderFlags[var0][var1][var2] & 16) == 0) { + if(var0 < Tiles.Tiles_minPlane) { + Tiles.Tiles_minPlane = var0; + } + + ObjectDefinition var8 = class50.getObjectDefinition(var3); + int var9; + int var10; + if(var4 != 1 && var4 != 3) { + var9 = var8.sizeX; + var10 = var8.sizeY; + } else { + var9 = var8.sizeY; + var10 = var8.sizeX; + } + + int var11; + int var12; + if(var9 + var1 <= 104) { + var11 = (var9 >> 1) + var1; + var12 = (var9 + 1 >> 1) + var1; + } else { + var11 = var1; + var12 = var1 + 1; + } + + int var13; + int var14; + if(var10 + var2 <= 104) { + var13 = (var10 >> 1) + var2; + var14 = var2 + (var10 + 1 >> 1); + } else { + var13 = var2; + var14 = var2 + 1; + } + + int[][] var15 = Tiles.Tiles_heights[var0]; + int var16 = var15[var12][var14] + var15[var11][var14] + var15[var11][var13] + var15[var12][var13] >> 2; + int var17 = (var1 << 7) + (var9 << 6); + int var18 = (var2 << 7) + (var10 << 6); + long var19 = FontName.method5637(var1, var2, 2, var8.int1 == 0, var3); + int var21 = var5 + (var4 << 6); + if(var8.int3 == 1) { + var21 += 256; + } + + int var23; + int var24; + if(var8.__t_424()) { + ObjectSound var22 = new ObjectSound(); + var22.__f = var0; + var22.__q = var1 * 128; + var22.__w = var2 * 128; + var23 = var8.sizeX; + var24 = var8.sizeY; + if(var4 == 1 || var4 == 3) { + var23 = var8.sizeY; + var24 = var8.sizeX; + } + + var22.__o = (var23 + var1) * 128; + var22.__u = (var24 + var2) * 128; + var22.soundEffectId = var8.ambientSoundId; + var22.__g = var8.int4 * 128; + var22.__x = var8.int5; + var22.__d = var8.int6; + var22.soundEffectIds = var8.__ax; + if(var8.transforms != null) { + var22.obj = var8; + var22.set(); + } + + ObjectSound.objectSounds.addFirst(var22); + if(var22.soundEffectIds != null) { + var22.__n = var22.__x + (int)(Math.random() * (double)(var22.__d - var22.__x)); + } + } + + Object var34; + if(var5 == 22) { + if(!Client.isLowDetail || var8.int1 != 0 || var8.interactType == 1 || var8.boolean2) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(22, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 22, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newFloorDecoration(var0, var1, var2, var16, (Entity)var34, var19, var21); + if(var8.interactType == 1 && var7 != null) { + var7.__o_286(var1, var2); + } + + } + } else if(var5 != 10 && var5 != 11) { + if(var5 >= 12) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(var5, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, var5, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.__d_238(var0, var1, var2, var16, 1, 1, (Entity)var34, 0, var19, var21); + if(var5 >= 12 && var5 <= 17 && var5 != 13 && var0 > 0) { + Tiles.__bq_a[var0][var1][var2] |= 2340; + } + + if(var8.interactType != 0 && var7 != null) { + var7.__q_284(var1, var2, var9, var10, var8.boolean1); + } + + } else if(var5 == 0) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(0, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 0, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newBoundaryObject(var0, var1, var2, var16, (Entity)var34, (Entity)null, Tiles.__bq_t[var4], 0, var19, var21); + if(var4 == 0) { + if(var8.clipped) { + Tiles.__bq_l[var0][var1][var2] = 50; + Tiles.__bq_l[var0][var1][var2 + 1] = 50; + } + + if(var8.modelClipped) { + Tiles.__bq_a[var0][var1][var2] |= 585; + } + } else if(var4 == 1) { + if(var8.clipped) { + Tiles.__bq_l[var0][var1][var2 + 1] = 50; + Tiles.__bq_l[var0][var1 + 1][var2 + 1] = 50; + } + + if(var8.modelClipped) { + Tiles.__bq_a[var0][var1][1 + var2] |= 1170; + } + } else if(var4 == 2) { + if(var8.clipped) { + Tiles.__bq_l[var0][var1 + 1][var2] = 50; + Tiles.__bq_l[var0][var1 + 1][var2 + 1] = 50; + } + + if(var8.modelClipped) { + Tiles.__bq_a[var0][var1 + 1][var2] |= 585; + } + } else if(var4 == 3) { + if(var8.clipped) { + Tiles.__bq_l[var0][var1][var2] = 50; + Tiles.__bq_l[var0][var1 + 1][var2] = 50; + } + + if(var8.modelClipped) { + Tiles.__bq_a[var0][var1][var2] |= 1170; + } + } + + if(var8.interactType != 0 && var7 != null) { + var7.__f_283(var1, var2, var5, var4, var8.boolean1); + } + + if(var8.int2 != 16) { + var6.__y_241(var0, var1, var2, var8.int2); + } + + } else if(var5 == 1) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(1, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 1, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newBoundaryObject(var0, var1, var2, var16, (Entity)var34, (Entity)null, Tiles.__bq_y[var4], 0, var19, var21); + if(var8.clipped) { + if(var4 == 0) { + Tiles.__bq_l[var0][var1][var2 + 1] = 50; + } else if(var4 == 1) { + Tiles.__bq_l[var0][var1 + 1][var2 + 1] = 50; + } else if(var4 == 2) { + Tiles.__bq_l[var0][var1 + 1][var2] = 50; + } else if(var4 == 3) { + Tiles.__bq_l[var0][var1][var2] = 50; + } + } + + if(var8.interactType != 0 && var7 != null) { + var7.__f_283(var1, var2, var5, var4, var8.boolean1); + } + + } else { + int var28; + if(var5 == 2) { + var28 = var4 + 1 & 3; + Object var29; + Object var30; + if(var8.animationId == -1 && var8.transforms == null) { + var29 = var8.__l_423(2, var4 + 4, var15, var17, var16, var18); + var30 = var8.__l_423(2, var28, var15, var17, var16, var18); + } else { + var29 = new DynamicObject(var3, 2, var4 + 4, var0, var1, var2, var8.animationId, true, (Entity)null); + var30 = new DynamicObject(var3, 2, var28, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newBoundaryObject(var0, var1, var2, var16, (Entity)var29, (Entity)var30, Tiles.__bq_t[var4], Tiles.__bq_t[var28], var19, var21); + if(var8.modelClipped) { + if(var4 == 0) { + Tiles.__bq_a[var0][var1][var2] |= 585; + Tiles.__bq_a[var0][var1][1 + var2] |= 1170; + } else if(var4 == 1) { + Tiles.__bq_a[var0][var1][1 + var2] |= 1170; + Tiles.__bq_a[var0][var1 + 1][var2] |= 585; + } else if(var4 == 2) { + Tiles.__bq_a[var0][var1 + 1][var2] |= 585; + Tiles.__bq_a[var0][var1][var2] |= 1170; + } else if(var4 == 3) { + Tiles.__bq_a[var0][var1][var2] |= 1170; + Tiles.__bq_a[var0][var1][var2] |= 585; + } + } + + if(var8.interactType != 0 && var7 != null) { + var7.__f_283(var1, var2, var5, var4, var8.boolean1); + } + + if(var8.int2 != 16) { + var6.__y_241(var0, var1, var2, var8.int2); + } + + } else if(var5 == 3) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(3, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 3, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newBoundaryObject(var0, var1, var2, var16, (Entity)var34, (Entity)null, Tiles.__bq_y[var4], 0, var19, var21); + if(var8.clipped) { + if(var4 == 0) { + Tiles.__bq_l[var0][var1][var2 + 1] = 50; + } else if(var4 == 1) { + Tiles.__bq_l[var0][var1 + 1][var2 + 1] = 50; + } else if(var4 == 2) { + Tiles.__bq_l[var0][var1 + 1][var2] = 50; + } else if(var4 == 3) { + Tiles.__bq_l[var0][var1][var2] = 50; + } + } + + if(var8.interactType != 0 && var7 != null) { + var7.__f_283(var1, var2, var5, var4, var8.boolean1); + } + + } else if(var5 == 9) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(var5, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, var5, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.__d_238(var0, var1, var2, var16, 1, 1, (Entity)var34, 0, var19, var21); + if(var8.interactType != 0 && var7 != null) { + var7.__q_284(var1, var2, var9, var10, var8.boolean1); + } + + if(var8.int2 != 16) { + var6.__y_241(var0, var1, var2, var8.int2); + } + + } else if(var5 == 4) { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(4, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 4, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newWallDecoration(var0, var1, var2, var16, (Entity)var34, (Entity)null, Tiles.__bq_t[var4], 0, 0, 0, var19, var21); + } else { + long var31; + Object var33; + if(var5 == 5) { + var28 = 16; + var31 = var6.__ar_244(var0, var1, var2); + if(var31 != 0L) { + var28 = class50.getObjectDefinition(HitSplatDefinition.method4972(var31)).int2; + } + + if(var8.animationId == -1 && var8.transforms == null) { + var33 = var8.__l_423(4, var4, var15, var17, var16, var18); + } else { + var33 = new DynamicObject(var3, 4, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newWallDecoration(var0, var1, var2, var16, (Entity)var33, (Entity)null, Tiles.__bq_t[var4], 0, var28 * Tiles.__bq_h[var4], var28 * Tiles.__bq_b[var4], var19, var21); + } else if(var5 == 6) { + var28 = 8; + var31 = var6.__ar_244(var0, var1, var2); + if(var31 != 0L) { + var28 = class50.getObjectDefinition(HitSplatDefinition.method4972(var31)).int2 / 2; + } + + if(var8.animationId == -1 && var8.transforms == null) { + var33 = var8.__l_423(4, var4 + 4, var15, var17, var16, var18); + } else { + var33 = new DynamicObject(var3, 4, var4 + 4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newWallDecoration(var0, var1, var2, var16, (Entity)var33, (Entity)null, 256, var4, var28 * Tiles.__bq_c[var4], var28 * Tiles.__bq_r[var4], var19, var21); + } else if(var5 == 7) { + var23 = var4 + 2 & 3; + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(4, var23 + 4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 4, var23 + 4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newWallDecoration(var0, var1, var2, var16, (Entity)var34, (Entity)null, 256, var23, 0, 0, var19, var21); + } else if(var5 == 8) { + var28 = 8; + var31 = var6.__ar_244(var0, var1, var2); + if(var31 != 0L) { + var28 = class50.getObjectDefinition(HitSplatDefinition.method4972(var31)).int2 / 2; + } + + int var27 = var4 + 2 & 3; + Object var26; + if(var8.animationId == -1 && var8.transforms == null) { + var33 = var8.__l_423(4, var4 + 4, var15, var17, var16, var18); + var26 = var8.__l_423(4, var27 + 4, var15, var17, var16, var18); + } else { + var33 = new DynamicObject(var3, 4, var4 + 4, var0, var1, var2, var8.animationId, true, (Entity)null); + var26 = new DynamicObject(var3, 4, var27 + 4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + var6.newWallDecoration(var0, var1, var2, var16, (Entity)var33, (Entity)var26, 256, var4, var28 * Tiles.__bq_c[var4], var28 * Tiles.__bq_r[var4], var19, var21); + } + } + } + } else { + if(var8.animationId == -1 && var8.transforms == null) { + var34 = var8.__l_423(10, var4, var15, var17, var16, var18); + } else { + var34 = new DynamicObject(var3, 10, var4, var0, var1, var2, var8.animationId, true, (Entity)null); + } + + if(var34 != null && var6.__d_238(var0, var1, var2, var16, var9, var10, (Entity)var34, var5 == 11?256:0, var19, var21) && var8.clipped) { + var23 = 15; + if(var34 instanceof Model) { + var23 = ((Model)var34).__l_233() / 4; + if(var23 > 30) { + var23 = 30; + } + } + + for(var24 = 0; var24 <= var9; ++var24) { + for(int var25 = 0; var25 <= var10; ++var25) { + if(var23 > Tiles.__bq_l[var0][var24 + var1][var25 + var2]) { + Tiles.__bq_l[var0][var24 + var1][var25 + var2] = (byte)var23; + } + } + } + } + + if(var8.interactType != 0 && var7 != null) { + var7.__q_284(var1, var2, var9, var10, var8.boolean1); + } + + } + } + } +} diff --git a/rs-client/src/main/java/class229.java b/rs-client/src/main/java/class229.java new file mode 100644 index 0000000000..c7b24610fd --- /dev/null +++ b/rs-client/src/main/java/class229.java @@ -0,0 +1,141 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hz") +public class class229 { + @ObfuscatedName("l") + @Export("__hz_l") + public static short[][] __hz_l; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Ljb;", + garbageValue = "-41" + ) + @Export("getParamKeyDefinition") + public static ParamKeyDefinition getParamKeyDefinition(int var0) { + ParamKeyDefinition var1 = (ParamKeyDefinition)ParamKeyDefinition.ParamKeyDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = ParamKeyDefinition.__jb_m.takeRecord(11, var0); + var1 = new ParamKeyDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + var1.init(); + ParamKeyDefinition.ParamKeyDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("ad") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "1886084106" + ) + static int method4513(int var0, Script var1, boolean var2) { + if(var0 == 6200) { + class179.Interpreter_intStackSize -= 2; + Client.__client_rw = (short)class161.method3395(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]); + if(Client.__client_rw <= 0) { + Client.__client_rw = 256; + } + + Client.__client_rm = (short)class161.method3395(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + if(Client.__client_rm <= 0) { + Client.__client_rm = 256; + } + + return 1; + } else if(var0 == 6201) { + class179.Interpreter_intStackSize -= 2; + Client.__client_re = (short)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + if(Client.__client_re <= 0) { + Client.__client_re = 256; + } + + Client.__client_rb = (short)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + if(Client.__client_rb <= 0) { + Client.__client_rb = 320; + } + + return 1; + } else if(var0 == 6202) { + class179.Interpreter_intStackSize -= 4; + Client.__client_rv = (short)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + if(Client.__client_rv <= 0) { + Client.__client_rv = 1; + } + + Client.__client_ri = (short)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + if(Client.__client_ri <= 0) { + Client.__client_ri = 32767; + } else if(Client.__client_ri < Client.__client_rv) { + Client.__client_ri = Client.__client_rv; + } + + Client.__client_rs = (short)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + if(Client.__client_rs <= 0) { + Client.__client_rs = 1; + } + + Client.__client_rp = (short)Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3]; + if(Client.__client_rp <= 0) { + Client.__client_rp = 32767; + } else if(Client.__client_rp < Client.__client_rs) { + Client.__client_rp = Client.__client_rs; + } + + return 1; + } else if(var0 == 6203) { + if(Client.viewportWidget != null) { + FontName.setViewportShape(0, 0, Client.viewportWidget.width, Client.viewportWidget.height, false); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.viewportWidth; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.viewportHeight; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } + + return 1; + } else if(var0 == 6204) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_re; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_rb; + return 1; + } else if(var0 == 6205) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class30.method571(Client.__client_rw); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class30.method571(Client.__client_rm); + return 1; + } else { + return 2; + } + } + + @ObfuscatedName("gq") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-21" + ) + static void method4514() { + if(Canvas.localPlayer.x >> 7 == Client.destinationX && Canvas.localPlayer.y >> 7 == Client.destinationY) { + Client.destinationX = 0; + } + + } + + @ObfuscatedName("kj") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "20" + ) + static final void method4512() { + SecureRandomFuture.method2104(); + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.clearIgnoreds(); + } + + } +} diff --git a/rs-client/src/main/java/class230.java b/rs-client/src/main/java/class230.java new file mode 100644 index 0000000000..45abced5f0 --- /dev/null +++ b/rs-client/src/main/java/class230.java @@ -0,0 +1,85 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hy") +public class class230 { + @ObfuscatedName("az") + @Export("__hy_az") + protected static boolean __hy_az; + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;I)[B", + garbageValue = "-242562639" + ) + public static byte[] method4516(CharSequence var0) { + int var1 = var0.length(); + byte[] var2 = new byte[var1]; + + for(int var3 = 0; var3 < var1; ++var3) { + char var4 = var0.charAt(var3); + if(var4 > 0 && var4 < 128 || var4 >= 160 && var4 <= 255) { + var2[var3] = (byte)var4; + } else if(var4 == 8364) { + var2[var3] = -128; + } else if(var4 == 8218) { + var2[var3] = -126; + } else if(var4 == 402) { + var2[var3] = -125; + } else if(var4 == 8222) { + var2[var3] = -124; + } else if(var4 == 8230) { + var2[var3] = -123; + } else if(var4 == 8224) { + var2[var3] = -122; + } else if(var4 == 8225) { + var2[var3] = -121; + } else if(var4 == 710) { + var2[var3] = -120; + } else if(var4 == 8240) { + var2[var3] = -119; + } else if(var4 == 352) { + var2[var3] = -118; + } else if(var4 == 8249) { + var2[var3] = -117; + } else if(var4 == 338) { + var2[var3] = -116; + } else if(var4 == 381) { + var2[var3] = -114; + } else if(var4 == 8216) { + var2[var3] = -111; + } else if(var4 == 8217) { + var2[var3] = -110; + } else if(var4 == 8220) { + var2[var3] = -109; + } else if(var4 == 8221) { + var2[var3] = -108; + } else if(var4 == 8226) { + var2[var3] = -107; + } else if(var4 == 8211) { + var2[var3] = -106; + } else if(var4 == 8212) { + var2[var3] = -105; + } else if(var4 == 732) { + var2[var3] = -104; + } else if(var4 == 8482) { + var2[var3] = -103; + } else if(var4 == 353) { + var2[var3] = -102; + } else if(var4 == 8250) { + var2[var3] = -101; + } else if(var4 == 339) { + var2[var3] = -100; + } else if(var4 == 382) { + var2[var3] = -98; + } else if(var4 == 376) { + var2[var3] = -97; + } else { + var2[var3] = 63; + } + } + + return var2; + } +} diff --git a/rs-client/src/main/java/class231.java b/rs-client/src/main/java/class231.java new file mode 100644 index 0000000000..edbdbf067b --- /dev/null +++ b/rs-client/src/main/java/class231.java @@ -0,0 +1,196 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hb") +public enum class231 implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2805(0, 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2802(1, 0), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2813(2, 0), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2804(3, 0), + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2806(9, 2), + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2823(4, 1), + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2807(5, 1), + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2808(6, 1), + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2809(7, 1), + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2812(8, 1), + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2811(12, 2), + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2803(13, 2), + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2821(14, 2), + @ObfuscatedName("i") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2814(15, 2), + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2815(16, 2), + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2816(17, 2), + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2817(18, 2), + @ObfuscatedName("s") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2818(19, 2), + @ObfuscatedName("t") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2801(20, 2), + @ObfuscatedName("y") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2826(21, 2), + @ObfuscatedName("h") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2810(10, 2), + @ObfuscatedName("b") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2822(11, 2), + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "Lhb;" + ) + field2819(22, 3); + + @ObfuscatedName("sg") + @ObfuscatedGetter( + intValue = -745071109 + ) + @Export("__hb_sg") + static int __hb_sg; + @ObfuscatedName("av") + @Export("__hb_av") + static java.awt.Font __hb_av; + @ObfuscatedName("r") + @ObfuscatedGetter( + intValue = 899733687 + ) + public final int field2820; + + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "0" + ) + class231(int var3, int var4) { + this.field2820 = var3; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.field2820; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Lib;", + garbageValue = "1" + ) + public static InvDefinition method4523(int var0) { + InvDefinition var1 = (InvDefinition)InvDefinition.__ib_f.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = class4.__o_m.takeRecord(5, var0); + var1 = new InvDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + InvDefinition.__ib_f.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("hy") + @ObfuscatedSignature( + signature = "(Lcs;IIB)V", + garbageValue = "1" + ) + static final void method4520(MenuAction var0, int var1, int var2) { + Actor.menuAction(var0.argument1, var0.argument2, var0.opcode, var0.argument0, var0.action, var0.action, var1, var2); + } + + @ObfuscatedName("jm") + @ObfuscatedSignature( + signature = "(IIIIIIII)V", + garbageValue = "1521012895" + ) + static final void method4517(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + if(GroundItemPile.loadWidgetGroup(var0)) { + class238.updateWidgetGroup(Widget.widgets[var0], -1, var1, var2, var3, var4, var5, var6); + } + } +} diff --git a/rs-client/src/main/java/class233.java b/rs-client/src/main/java/class233.java new file mode 100644 index 0000000000..378320997a --- /dev/null +++ b/rs-client/src/main/java/class233.java @@ -0,0 +1,50 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("hk") +public class class233 { + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Ljava/lang/String;", + garbageValue = "1328150819" + ) + public static String method4527(String var0) { + int var1 = var0.length(); + char[] var2 = new char[var1]; + byte var3 = 2; + + for(int var4 = 0; var4 < var1; ++var4) { + char var5 = var0.charAt(var4); + if(var3 == 0) { + var5 = Character.toLowerCase(var5); + } else if(var3 == 2 || Character.isUpperCase(var5)) { + char var6; + if(var5 != 181 && var5 != 402) { + var6 = Character.toTitleCase(var5); + } else { + var6 = var5; + } + + var5 = var6; + } + + if(Character.isLetter(var5)) { + var3 = 0; + } else if(var5 != '.' && var5 != '?' && var5 != '!') { + if(Character.isSpaceChar(var5)) { + if(var3 != 2) { + var3 = 1; + } + } else { + var3 = 1; + } + } else { + var3 = 2; + } + + var2[var4] = var5; + } + + return new String(var2); + } +} diff --git a/rs-client/src/main/java/class234.java b/rs-client/src/main/java/class234.java new file mode 100644 index 0000000000..269612760a --- /dev/null +++ b/rs-client/src/main/java/class234.java @@ -0,0 +1,52 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("if") +public class class234 { + @ObfuscatedName("gh") + @ObfuscatedSignature( + signature = "(Lbr;III)V", + garbageValue = "-701527010" + ) + static void method4534(Player var0, int var1, int var2) { + if(var0.sequence == var1 && var1 != -1) { + int var3 = WorldMapAreaData.getSequenceDefinition(var1).__t; + if(var3 == 1) { + var0.sequenceFrame = 0; + var0.sequenceFrameCycle = 0; + var0.sequenceDelay = var2; + var0.__bj = 0; + } + + if(var3 == 2) { + var0.__bj = 0; + } + } else if(var1 == -1 || var0.sequence == -1 || WorldMapAreaData.getSequenceDefinition(var1).__n >= WorldMapAreaData.getSequenceDefinition(var0.sequence).__n) { + var0.sequence = var1; + var0.sequenceFrame = 0; + var0.sequenceFrameCycle = 0; + var0.sequenceDelay = var2; + var0.__bj = 0; + var0.__ch = var0.pathLength; + } + + } + + @ObfuscatedName("kt") + @ObfuscatedSignature( + signature = "(Lgr;IS)V", + garbageValue = "-30972" + ) + static void method4535(Buffer var0, int var1) { + class50.method902(var0.array, var1); + if(class168.randomDat != null) { + try { + class168.randomDat.seek(0L); + class168.randomDat.write(var0.array, var1, 24); + } catch (Exception var3) { + ; + } + } + + } +} diff --git a/rs-client/src/main/java/class236.java b/rs-client/src/main/java/class236.java new file mode 100644 index 0000000000..77d9f09cf7 --- /dev/null +++ b/rs-client/src/main/java/class236.java @@ -0,0 +1,134 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ie") +public class class236 { + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lhx;II)Z", + garbageValue = "278945262" + ) + @Export("updateExternalPlayer") + static boolean updateExternalPlayer(PacketBuffer var0, int var1) { + int var2 = var0.readBits(2); + int var3; + int var4; + int var7; + int var8; + int var9; + int var10; + if(var2 == 0) { + if(var0.readBits(1) != 0) { + updateExternalPlayer(var0, var1); + } + + var3 = var0.readBits(13); + var4 = var0.readBits(13); + boolean var12 = var0.readBits(1) == 1; + if(var12) { + Players.__cq_i[++Players.__cq_n - 1] = var1; + } + + if(Client.players[var1] != null) { + throw new RuntimeException(); + } else { + Player var6 = Client.players[var1] = new Player(); + var6.index = var1; + if(Players.__cq_o[var1] != null) { + var6.read(Players.__cq_o[var1]); + } + + var6.orientation = Players.Players_orientations[var1]; + var6.targetIndex = Players.Players_targetIndices[var1]; + var7 = Players.Players_regions[var1]; + var8 = var7 >> 28; + var9 = var7 >> 14 & 255; + var10 = var7 & 255; + var6.pathTraversed[0] = Players.__cq_w[var1]; + var6.plane = (byte)var8; + var6.resetPath((var9 << 13) + var3 - class50.baseX, (var10 << 13) + var4 - GraphicsObject.baseY); + var6.__ag = false; + return true; + } + } else if(var2 == 1) { + var3 = var0.readBits(2); + var4 = Players.Players_regions[var1]; + Players.Players_regions[var1] = (((var4 >> 28) + var3 & 3) << 28) + (var4 & 268435455); + return false; + } else { + int var5; + int var11; + if(var2 == 2) { + var3 = var0.readBits(5); + var4 = var3 >> 3; + var5 = var3 & 7; + var11 = Players.Players_regions[var1]; + var7 = (var11 >> 28) + var4 & 3; + var8 = var11 >> 14 & 255; + var9 = var11 & 255; + if(var5 == 0) { + --var8; + --var9; + } + + if(var5 == 1) { + --var9; + } + + if(var5 == 2) { + ++var8; + --var9; + } + + if(var5 == 3) { + --var8; + } + + if(var5 == 4) { + ++var8; + } + + if(var5 == 5) { + --var8; + ++var9; + } + + if(var5 == 6) { + ++var9; + } + + if(var5 == 7) { + ++var8; + ++var9; + } + + Players.Players_regions[var1] = (var8 << 14) + var9 + (var7 << 28); + return false; + } else { + var3 = var0.readBits(18); + var4 = var3 >> 16; + var5 = var3 >> 8 & 255; + var11 = var3 & 255; + var7 = Players.Players_regions[var1]; + var8 = (var7 >> 28) + var4 & 3; + var9 = var5 + (var7 >> 14) & 255; + var10 = var7 + var11 & 255; + Players.Players_regions[var1] = (var9 << 14) + var10 + (var8 << 28); + return false; + } + } + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-616244124" + ) + static final int method4537(int var0, int var1) { + int var2 = var0 + var1 * 57; + var2 ^= var2 << 13; + int var3 = (var2 * var2 * 15731 + 789221) * var2 + 1376312589 & Integer.MAX_VALUE; + return var3 >> 19 & 255; + } +} diff --git a/rs-client/src/main/java/class237.java b/rs-client/src/main/java/class237.java new file mode 100644 index 0000000000..0de7e2203c --- /dev/null +++ b/rs-client/src/main/java/class237.java @@ -0,0 +1,15 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("in") +public class class237 { + @ObfuscatedName("eu") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-1306713115" + ) + static final void method4539() { + Scene.Scene_isLowDetail = false; + Client.isLowDetail = false; + } +} diff --git a/rs-client/src/main/java/class238.java b/rs-client/src/main/java/class238.java new file mode 100644 index 0000000000..a556c08699 --- /dev/null +++ b/rs-client/src/main/java/class238.java @@ -0,0 +1,598 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("il") +public final class class238 { + @ObfuscatedName("dw") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache9") + static IndexCache indexCache9; + + @ObfuscatedName("im") + @ObfuscatedSignature( + signature = "(Lho;I)Z", + garbageValue = "188151075" + ) + @Export("runCs1") + static final boolean runCs1(Widget var0) { + if(var0.cs1Comparisons == null) { + return false; + } else { + for(int var1 = 0; var1 < var0.cs1Comparisons.length; ++var1) { + int var2 = class16.method187(var0, var1); + int var3 = var0.cs1ComparisonValues[var1]; + if(var0.cs1Comparisons[var1] == 2) { + if(var2 >= var3) { + return false; + } + } else if(var0.cs1Comparisons[var1] == 3) { + if(var2 <= var3) { + return false; + } + } else if(var0.cs1Comparisons[var1] == 4) { + if(var2 == var3) { + return false; + } + } else if(var3 != var2) { + return false; + } + } + + return true; + } + } + + @ObfuscatedName("jr") + @ObfuscatedSignature( + signature = "([Lho;IIIIIIII)V", + garbageValue = "1706481742" + ) + @Export("updateWidgetGroup") + static final void updateWidgetGroup(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + for(int var8 = 0; var8 < var0.length; ++var8) { + Widget var9 = var0[var8]; + if(var9 != null && var9.parentId == var1 && (!var9.isIf3 || var9.type == 0 || var9.hasListener || class1.getWidgetClickMask(var9) != 0 || var9 == Client.clickedWidgetParent || var9.contentType == 1338)) { + if(var9.isIf3) { + if(PacketBufferNode.method3673(var9)) { + continue; + } + } else if(var9.type == 0 && var9 != Clock.mousedOverWidgetIf1 && PacketBufferNode.method3673(var9)) { + continue; + } + + int var10 = var9.x + var6; + int var11 = var7 + var9.y; + int var12; + int var13; + int var14; + int var15; + int var17; + int var18; + if(var9.type == 2) { + var12 = var2; + var13 = var3; + var14 = var4; + var15 = var5; + } else { + int var16; + if(var9.type == 9) { + var16 = var10; + var17 = var11; + var18 = var10 + var9.width; + int var19 = var11 + var9.height; + if(var18 < var10) { + var16 = var18; + var18 = var10; + } + + if(var19 < var11) { + var17 = var19; + var19 = var11; + } + + ++var18; + ++var19; + var12 = var16 > var2?var16:var2; + var13 = var17 > var3?var17:var3; + var14 = var18 < var4?var18:var4; + var15 = var19 < var5?var19:var5; + } else { + var16 = var10 + var9.width; + var17 = var11 + var9.height; + var12 = var10 > var2?var10:var2; + var13 = var11 > var3?var11:var3; + var14 = var16 < var4?var16:var4; + var15 = var17 < var5?var17:var5; + } + } + + if(var9 == Client.clickedWidget) { + Client.__client_nt = true; + Client.__client_nk = var10; + Client.__client_np = var11; + } + + boolean var32 = false; + if(var9.__cg) { + switch(Client.__client_mf) { + case 0: + var32 = true; + case 1: + default: + break; + case 2: + if(Client.__client_ms == var9.id >>> 16) { + var32 = true; + } + break; + case 3: + if(var9.id == Client.__client_ms) { + var32 = true; + } + } + } + + if(var32 || !var9.isIf3 || var12 < var14 && var13 < var15) { + if(var9.isIf3) { + ScriptEvent var26; + if(var9.noClickThrough) { + if(MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) { + for(var26 = (ScriptEvent)Client.scriptEvents.last(); var26 != null; var26 = (ScriptEvent)Client.scriptEvents.previous()) { + if(var26.boolean1) { + var26.remove(); + var26.widget.__fq = false; + } + } + + if(MouseRecorder.widgetDragDuration == 0) { + Client.clickedWidget = null; + Client.clickedWidgetParent = null; + } + + if(!Client.isMenuOpen) { + class30.method569(); + } + } + } else if(var9.noScrollThrough && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) { + for(var26 = (ScriptEvent)Client.scriptEvents.last(); var26 != null; var26 = (ScriptEvent)Client.scriptEvents.previous()) { + if(var26.boolean1 && var26.widget.onScroll == var26.args0) { + var26.remove(); + } + } + } + } + + var17 = MouseHandler.MouseHandler_x; + var18 = MouseHandler.MouseHandler_y; + if(MouseHandler.MouseHandler_lastButton != 0) { + var17 = MouseHandler.MouseHandler_lastPressedX; + var18 = MouseHandler.MouseHandler_lastPressedY; + } + + boolean var33 = var17 >= var12 && var18 >= var13 && var17 < var14 && var18 < var15; + if(var9.contentType == 1337) { + if(!Client.isLoading && !Client.isMenuOpen && var33) { + WorldMapEvent.method781(var17, var18, var12, var13); + } + } else if(var9.contentType == 1338) { + WorldMapRegion.method567(var9, var10, var11); + } else { + if(var9.contentType == 1400) { + class60.worldMap0.onCycle(MouseHandler.MouseHandler_x, MouseHandler.MouseHandler_y, var33, var10, var11, var9.width, var9.height); + } + + if(!Client.isMenuOpen && var33) { + if(var9.contentType == 1400) { + class60.worldMap0.__bd_544(var10, var11, var9.width, var9.height, var17, var18); + } else { + ChatChannel.method2237(var9, var17 - var10, var18 - var11); + } + } + + boolean var21; + int var23; + if(var32) { + for(int var20 = 0; var20 < var9.__cf.length; ++var20) { + var21 = false; + boolean var22 = false; + if(!var21 && var9.__cf[var20] != null) { + for(var23 = 0; var23 < var9.__cf[var20].length; ++var23) { + boolean var24 = false; + if(var9.__fh != null) { + var24 = KeyHandler.KeyHandler_pressedKeys[var9.__cf[var20][var23]]; + } + + if(class1.method15(var9.__cf[var20][var23]) || var24) { + var21 = true; + if(var9.__fh != null && var9.__fh[var20] > Client.cycle) { + break; + } + + byte var25 = var9.__cp[var20][var23]; + if(var25 == 0 || ((var25 & 8) == 0 || !KeyHandler.KeyHandler_pressedKeys[86] && !KeyHandler.KeyHandler_pressedKeys[82] && !KeyHandler.KeyHandler_pressedKeys[81]) && ((var25 & 2) == 0 || KeyHandler.KeyHandler_pressedKeys[86]) && ((var25 & 1) == 0 || KeyHandler.KeyHandler_pressedKeys[82]) && ((var25 & 4) == 0 || KeyHandler.KeyHandler_pressedKeys[81])) { + var22 = true; + break; + } + } + } + } + + if(var22) { + if(var20 < 10) { + class171.method3494(var20 + 1, var9.id, var9.childIndex, var9.itemId, ""); + } else if(var20 == 10) { + Player.method1281(); + class25.method350(var9.id, var9.childIndex, class211.method4107(class1.getWidgetClickMask(var9)), var9.itemId); + Client.selectedSpellActionName = class198.method3745(var9); + if(Client.selectedSpellActionName == null) { + Client.selectedSpellActionName = "null"; + } + + Client.selectedSpellName = var9.dataText + BufferedFile.colorStartTag(16777215); + } + + var23 = var9.__cc[var20]; + if(var9.__fh == null) { + var9.__fh = new int[var9.__cf.length]; + } + + if(var9.__ci == null) { + var9.__ci = new int[var9.__cf.length]; + } + + if(var23 != 0) { + if(var9.__fh[var20] == 0) { + var9.__fh[var20] = var23 + Client.cycle + var9.__ci[var20]; + } else { + var9.__fh[var20] = var23 + Client.cycle; + } + } else { + var9.__fh[var20] = Integer.MAX_VALUE; + } + } + + if(!var21 && var9.__fh != null) { + var9.__fh[var20] = 0; + } + } + } + + if(var9.isIf3) { + if(MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) { + var33 = true; + } else { + var33 = false; + } + + boolean var34 = false; + if((MouseHandler.MouseHandler_currentButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_currentButton == 4) && var33) { + var34 = true; + } + + var21 = false; + if((MouseHandler.MouseHandler_lastButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_lastButton == 4) && MouseHandler.MouseHandler_lastPressedX >= var12 && MouseHandler.MouseHandler_lastPressedY >= var13 && MouseHandler.MouseHandler_lastPressedX < var14 && MouseHandler.MouseHandler_lastPressedY < var15) { + var21 = true; + } + + if(var21) { + Players.clickWidget(var9, MouseHandler.MouseHandler_lastPressedX - var10, MouseHandler.MouseHandler_lastPressedY - var11); + } + + if(var9.contentType == 1400) { + class60.worldMap0.__w_519(var17, var18, var33 & var34, var33 & var21); + } + + if(Client.clickedWidget != null && var9 != Client.clickedWidget && var33 && class54.method1090(class1.getWidgetClickMask(var9))) { + Client.draggedOnWidget = var9; + } + + if(var9 == Client.clickedWidgetParent) { + Client.__client_nn = true; + Client.__client_nw = var10; + Client.__client_nl = var11; + } + + if(var9.hasListener) { + ScriptEvent var27; + if(var33 && Client.mouseWheelRotation != 0 && var9.onScroll != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseY = Client.mouseWheelRotation; + var27.args0 = var9.onScroll; + Client.scriptEvents.addFirst(var27); + } + + if(Client.clickedWidget != null || DevicePcmPlayerProvider.dragInventoryWidget != null || Client.isMenuOpen) { + var21 = false; + var34 = false; + var33 = false; + } + + if(!var9.__fw && var21) { + var9.__fw = true; + if(var9.onClick != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_lastPressedX - var10; + var27.mouseY = MouseHandler.MouseHandler_lastPressedY - var11; + var27.args0 = var9.onClick; + Client.scriptEvents.addFirst(var27); + } + } + + if(var9.__fw && var34 && var9.onClickRepeat != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_x - var10; + var27.mouseY = MouseHandler.MouseHandler_y - var11; + var27.args0 = var9.onClickRepeat; + Client.scriptEvents.addFirst(var27); + } + + if(var9.__fw && !var34) { + var9.__fw = false; + if(var9.onRelease != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_x - var10; + var27.mouseY = MouseHandler.MouseHandler_y - var11; + var27.args0 = var9.onRelease; + Client.__client_oc.addFirst(var27); + } + } + + if(var34 && var9.onHold != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_x - var10; + var27.mouseY = MouseHandler.MouseHandler_y - var11; + var27.args0 = var9.onHold; + Client.scriptEvents.addFirst(var27); + } + + if(!var9.__fq && var33) { + var9.__fq = true; + if(var9.onMouseOver != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_x - var10; + var27.mouseY = MouseHandler.MouseHandler_y - var11; + var27.args0 = var9.onMouseOver; + Client.scriptEvents.addFirst(var27); + } + } + + if(var9.__fq && var33 && var9.onMouseRepeat != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_x - var10; + var27.mouseY = MouseHandler.MouseHandler_y - var11; + var27.args0 = var9.onMouseRepeat; + Client.scriptEvents.addFirst(var27); + } + + if(var9.__fq && !var33) { + var9.__fq = false; + if(var9.onMouseLeave != null) { + var27 = new ScriptEvent(); + var27.boolean1 = true; + var27.widget = var9; + var27.mouseX = MouseHandler.MouseHandler_x - var10; + var27.mouseY = MouseHandler.MouseHandler_y - var11; + var27.args0 = var9.onMouseLeave; + Client.__client_oc.addFirst(var27); + } + } + + if(var9.onTimer != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.onTimer; + Client.__client_oh.addFirst(var27); + } + + ScriptEvent var30; + int var35; + int var36; + if(var9.onVarTransmit != null && Client.__client_nd > var9.__fc) { + if(var9.varTransmitTriggers != null && Client.__client_nd - var9.__fc <= 32) { + label887: + for(var35 = var9.__fc; var35 < Client.__client_nd; ++var35) { + var23 = Client.__client_nr[var35 & 31]; + + for(var36 = 0; var36 < var9.varTransmitTriggers.length; ++var36) { + if(var23 == var9.varTransmitTriggers[var36]) { + var30 = new ScriptEvent(); + var30.widget = var9; + var30.args0 = var9.onVarTransmit; + Client.scriptEvents.addFirst(var30); + break label887; + } + } + } + } else { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.onVarTransmit; + Client.scriptEvents.addFirst(var27); + } + + var9.__fc = Client.__client_nd; + } + + if(var9.onInvTransmit != null && Client.__client_ns > var9.__fl) { + if(var9.invTransmitTriggers != null && Client.__client_ns - var9.__fl <= 32) { + label863: + for(var35 = var9.__fl; var35 < Client.__client_ns; ++var35) { + var23 = Client.__client_nz[var35 & 31]; + + for(var36 = 0; var36 < var9.invTransmitTriggers.length; ++var36) { + if(var23 == var9.invTransmitTriggers[var36]) { + var30 = new ScriptEvent(); + var30.widget = var9; + var30.args0 = var9.onInvTransmit; + Client.scriptEvents.addFirst(var30); + break label863; + } + } + } + } else { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.onInvTransmit; + Client.scriptEvents.addFirst(var27); + } + + var9.__fl = Client.__client_ns; + } + + if(var9.onStatTransmit != null && Client.changedSkillsCount > var9.__fj) { + if(var9.statTransmitTriggers != null && Client.changedSkillsCount - var9.__fj <= 32) { + label839: + for(var35 = var9.__fj; var35 < Client.changedSkillsCount; ++var35) { + var23 = Client.changedSkills[var35 & 31]; + + for(var36 = 0; var36 < var9.statTransmitTriggers.length; ++var36) { + if(var23 == var9.statTransmitTriggers[var36]) { + var30 = new ScriptEvent(); + var30.widget = var9; + var30.args0 = var9.onStatTransmit; + Client.scriptEvents.addFirst(var30); + break label839; + } + } + } + } else { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.onStatTransmit; + Client.scriptEvents.addFirst(var27); + } + + var9.__fj = Client.changedSkillsCount; + } + + if(Client.chatCycle > var9.__fg && var9.__em != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.__em; + Client.scriptEvents.addFirst(var27); + } + + if(Client.__client_na > var9.__fg && var9.__ex != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.__ex; + Client.scriptEvents.addFirst(var27); + } + + if(Client.__client_nh > var9.__fg && var9.__ej != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.__ej; + Client.scriptEvents.addFirst(var27); + } + + if(Client.__client_nv > var9.__fg && var9.__eq != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.__eq; + Client.scriptEvents.addFirst(var27); + } + + if(Client.__client_nc > var9.__fg && var9.__eh != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.__eh; + Client.scriptEvents.addFirst(var27); + } + + if(Client.__client_ni > var9.__fg && var9.__el != null) { + var27 = new ScriptEvent(); + var27.widget = var9; + var27.args0 = var9.__el; + Client.scriptEvents.addFirst(var27); + } + + var9.__fg = Client.cycleCntr; + if(var9.onKeyListener != null) { + for(var35 = 0; var35 < Client.__client_pm; ++var35) { + ScriptEvent var31 = new ScriptEvent(); + var31.widget = var9; + var31.keyTyped = Client.__client_pn[var35]; + var31.keyPressed = Client.__client_pq[var35]; + var31.args0 = var9.onKeyListener; + Client.scriptEvents.addFirst(var31); + } + } + } + } + + if(!var9.isIf3) { + if(Client.clickedWidget != null || DevicePcmPlayerProvider.dragInventoryWidget != null || Client.isMenuOpen) { + continue; + } + + if((var9.mouseOverRedirect >= 0 || var9.mouseOverColor != 0) && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) { + if(var9.mouseOverRedirect >= 0) { + Clock.mousedOverWidgetIf1 = var0[var9.mouseOverRedirect]; + } else { + Clock.mousedOverWidgetIf1 = var9; + } + } + + if(var9.type == 8 && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) { + AccessFile.__dk_lm = var9; + } + + if(var9.scrollHeight > var9.height) { + WorldMapSection0.method246(var9, var10 + var9.width, var11, var9.height, var9.scrollHeight, MouseHandler.MouseHandler_x, MouseHandler.MouseHandler_y); + } + } + + if(var9.type == 0) { + updateWidgetGroup(var0, var9.id, var12, var13, var14, var15, var10 - var9.scrollX, var11 - var9.scrollY); + if(var9.children != null) { + updateWidgetGroup(var9.children, var9.id, var12, var13, var14, var15, var10 - var9.scrollX, var11 - var9.scrollY); + } + + WidgetGroupParent var28 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var9.id); + if(var28 != null) { + if(var28.type == 0 && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15 && !Client.isMenuOpen) { + for(ScriptEvent var29 = (ScriptEvent)Client.scriptEvents.last(); var29 != null; var29 = (ScriptEvent)Client.scriptEvents.previous()) { + if(var29.boolean1) { + var29.remove(); + var29.widget.__fq = false; + } + } + + if(MouseRecorder.widgetDragDuration == 0) { + Client.clickedWidget = null; + Client.clickedWidgetParent = null; + } + + if(!Client.isMenuOpen) { + class30.method569(); + } + } + + class231.method4517(var28.group, var12, var13, var14, var15, var10, var11); + } + } + } + } + } + } + + } +} diff --git a/rs-client/src/main/java/class248.java b/rs-client/src/main/java/class248.java new file mode 100644 index 0000000000..272be7ca32 --- /dev/null +++ b/rs-client/src/main/java/class248.java @@ -0,0 +1,333 @@ +import java.util.HashMap; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("iu") +public class class248 { + @ObfuscatedName("e") + @Export("__iu_e") + static int[] __iu_e; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 662119345 + ) + @Export("__iu_n") + static int __iu_n; + @ObfuscatedName("m") + final HashMap field3267; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lla;" + ) + Bounds field3263; + @ObfuscatedName("q") + int[] field3271; + @ObfuscatedName("w") + int[] field3262; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1072223029 + ) + int field3266; + + public class248() { + this.field3267 = new HashMap(); + this.field3263 = new Bounds(0, 0); + this.field3271 = new int[2048]; + this.field3262 = new int[2048]; + this.field3266 = 0; + Login.method2056(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2027223388" + ) + void method4716(int var1) { + int var2 = var1 * 2 + 1; + double[] var3 = Bounds.method5905(0.0D, (double)((float)var1 / 3.0F), var1); + double var4 = var3[var1] * var3[var1]; + int[] var6 = new int[var2 * var2]; + boolean var7 = false; + + for(int var8 = 0; var8 < var2; ++var8) { + for(int var9 = 0; var9 < var2; ++var9) { + int var10 = var6[var9 + var2 * var8] = (int)(256.0D * (var3[var9] * var3[var8] / var4)); + if(!var7 && var10 > 0) { + var7 = true; + } + } + } + + Sprite var11 = new Sprite(var6, var2, var2); + this.field3267.put(Integer.valueOf(var1), var11); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(II)Lln;", + garbageValue = "-1847730067" + ) + Sprite method4718(int var1) { + if(!this.field3267.containsKey(Integer.valueOf(var1))) { + this.method4716(var1); + } + + return (Sprite)this.field3267.get(Integer.valueOf(var1)); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-703491177" + ) + public final void method4738(int var1, int var2) { + if(this.field3266 < this.field3271.length) { + this.field3271[this.field3266] = var1; + this.field3262[this.field3266] = var2; + ++this.field3266; + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "20019778" + ) + public final void method4719() { + this.field3266 = 0; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(IILln;FI)V", + garbageValue = "1523665695" + ) + public final void method4720(int var1, int var2, Sprite var3, float var4) { + int var5 = (int)(18.0F * var4); + Sprite var6 = this.method4718(var5); + int var7 = var5 * 2 + 1; + Bounds var8 = new Bounds(0, 0, var3.subWidth, var3.subHeight); + Bounds var9 = new Bounds(0, 0); + this.field3263.__f_488(var7, var7); + System.nanoTime(); + + int var10; + int var11; + int var12; + for(var10 = 0; var10 < this.field3266; ++var10) { + var11 = this.field3271[var10]; + var12 = this.field3262[var10]; + int var13 = (int)(var4 * (float)(var11 - var1)) - var5; + int var14 = (int)((float)var3.subHeight - (float)(var12 - var2) * var4) - var5; + this.field3263.__m_487(var13, var14); + this.field3263.__q_490(var8, var9); + this.method4721(var6, var3, var9); + } + + System.nanoTime(); + System.nanoTime(); + + for(var10 = 0; var10 < var3.pixels.length; ++var10) { + if(var3.pixels[var10] == 0) { + var3.pixels[var10] = -16777216; + } else { + var11 = (var3.pixels[var10] + 64 - 1) / 256; + if(var11 <= 0) { + var3.pixels[var10] = -16777216; + } else { + if(var11 > __iu_e.length) { + var11 = __iu_e.length; + } + + var12 = __iu_e[var11 - 1]; + var3.pixels[var10] = -16777216 | var12; + } + } + } + + System.nanoTime(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Lln;Lln;Lla;B)V", + garbageValue = "112" + ) + void method4721(Sprite var1, Sprite var2, Bounds var3) { + if(var3.__q != 0 && var3.__w != 0) { + int var4 = 0; + int var5 = 0; + if(var3.__m == 0) { + var4 = var1.subWidth - var3.__q; + } + + if(var3.__f == 0) { + var5 = var1.subHeight - var3.__w; + } + + int var6 = var4 + var5 * var1.subWidth; + int var7 = var2.subWidth * var3.__f + var3.__m; + + for(int var8 = 0; var8 < var3.__w; ++var8) { + for(int var9 = 0; var9 < var3.__q; ++var9) { + int var10001 = var7++; + var2.pixels[var10001] += var1.pixels[var6++]; + } + + var6 += var1.subWidth - var3.__q; + var7 += var2.subWidth - var3.__q; + } + + } + } + + @ObfuscatedName("ar") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "2033111880" + ) + static int method4741(int var0, Script var1, boolean var2) { + int var3; + if(var0 == 3903) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.grandExchangeOffers[var3].type(); + return 1; + } else if(var0 == 3904) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.grandExchangeOffers[var3].id; + return 1; + } else if(var0 == 3905) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.grandExchangeOffers[var3].unitPrice; + return 1; + } else if(var0 == 3906) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.grandExchangeOffers[var3].totalQuantity; + return 1; + } else if(var0 == 3907) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.grandExchangeOffers[var3].currentQuantity; + return 1; + } else if(var0 == 3908) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.grandExchangeOffers[var3].currentPrice; + return 1; + } else { + int var12; + if(var0 == 3910) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var12 = Client.grandExchangeOffers[var3].status(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var12 == 0?1:0; + return 1; + } else if(var0 == 3911) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var12 = Client.grandExchangeOffers[var3].status(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var12 == 2?1:0; + return 1; + } else if(var0 == 3912) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var12 = Client.grandExchangeOffers[var3].status(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var12 == 5?1:0; + return 1; + } else if(var0 == 3913) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var12 = Client.grandExchangeOffers[var3].status(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var12 == 1?1:0; + return 1; + } else { + boolean var13; + if(var0 == 3914) { + var13 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(FloorDecoration.grandExchangeEvents != null) { + FloorDecoration.grandExchangeEvents.sort(GrandExchangeEvents.__g_w, var13); + } + + return 1; + } else if(var0 == 3915) { + var13 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(FloorDecoration.grandExchangeEvents != null) { + FloorDecoration.grandExchangeEvents.sort(GrandExchangeEvents.__g_q, var13); + } + + return 1; + } else if(var0 == 3916) { + class179.Interpreter_intStackSize -= 2; + var13 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize] == 1; + boolean var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1] == 1; + if(FloorDecoration.grandExchangeEvents != null) { + Client.__client_sj.__m = var4; + FloorDecoration.grandExchangeEvents.sort(Client.__client_sj, var13); + } + + return 1; + } else if(var0 == 3917) { + var13 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(FloorDecoration.grandExchangeEvents != null) { + FloorDecoration.grandExchangeEvents.sort(GrandExchangeEvents.__g_f, var13); + } + + return 1; + } else if(var0 == 3918) { + var13 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(FloorDecoration.grandExchangeEvents != null) { + FloorDecoration.grandExchangeEvents.sort(GrandExchangeEvents.__g_o, var13); + } + + return 1; + } else if(var0 == 3919) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = FloorDecoration.grandExchangeEvents == null?0:FloorDecoration.grandExchangeEvents.events.size(); + return 1; + } else { + GrandExchangeEvent var11; + if(var0 == 3920) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.world; + return 1; + } else if(var0 == 3921) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.__m_3(); + return 1; + } else if(var0 == 3922) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.__f_4(); + return 1; + } else if(var0 == 3923) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + long var5 = class203.currentTimeMs() - class15.__z_si - var11.__f; + int var7 = (int)(var5 / 3600000L); + int var8 = (int)((var5 - (long)(var7 * 3600000)) / 60000L); + int var9 = (int)((var5 - (long)(var7 * 3600000) - (long)(var8 * 60000)) / 1000L); + String var10 = var7 + ":" + var8 / 10 + var8 % 10 + ":" + var9 / 10 + var9 % 10; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var10; + return 1; + } else if(var0 == 3924) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.grandExchangeOffer.totalQuantity; + return 1; + } else if(var0 == 3925) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.grandExchangeOffer.unitPrice; + return 1; + } else if(var0 == 3926) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var11 = (GrandExchangeEvent)FloorDecoration.grandExchangeEvents.events.get(var3); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.grandExchangeOffer.id; + return 1; + } else { + return 2; + } + } + } + } + } +} diff --git a/rs-client/src/main/java/class249.java b/rs-client/src/main/java/class249.java new file mode 100644 index 0000000000..e6ba48a937 --- /dev/null +++ b/rs-client/src/main/java/class249.java @@ -0,0 +1,47 @@ +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ip") +public enum class249 implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lip;" + ) + field3277(0, 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lip;" + ) + field3273(1, 1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lip;" + ) + field3274(2, 2); + + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = 2070321655 + ) + public final int field3275; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 1686539261 + ) + final int field3276; + + class249(int var3, int var4) { + this.field3275 = var3; + this.field3276 = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.field3276; + } +} diff --git a/rs-client/src/main/java/class25.java b/rs-client/src/main/java/class25.java new file mode 100644 index 0000000000..5bd96c6c26 --- /dev/null +++ b/rs-client/src/main/java/class25.java @@ -0,0 +1,103 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("v") +public class class25 { + @ObfuscatedName("dd") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache4") + static IndexCache indexCache4; + @ObfuscatedName("kw") + @ObfuscatedGetter( + intValue = -12041645 + ) + @Export("menuX") + static int menuX; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 916624935 + ) + final int field199; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 1452888767 + ) + final int field198; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -501025733 + ) + final int field202; + + class25(int var1, int var2, int var3) { + this.field199 = var1; + this.field198 = var2; + this.field202 = var3; + } + + @ObfuscatedName("j") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-1540935608" + ) + static final int method348(int var0, int var1) { + if(var0 == -2) { + return 12345678; + } else if(var0 == -1) { + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return var1; + } else { + var1 = (var0 & 127) * var1 / 128; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & 65408) + var1; + } + } + + @ObfuscatedName("gd") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "641029128" + ) + static void method349() { + if(Client.renderSelf) { + WorldMapCacheName.addPlayerToScene(Canvas.localPlayer, false); + } + + } + + @ObfuscatedName("hk") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "162108213" + ) + static void method350(int var0, int var1, int var2, int var3) { + Widget var4 = class204.getWidgetChild(var0, var1); + if(var4 != null && var4.onTargetEnter != null) { + ScriptEvent var5 = new ScriptEvent(); + var5.widget = var4; + var5.args0 = var4.onTargetEnter; + AbstractIndexCache.runScript(var5); + } + + Client.__client_mh = var3; + Client.isSpellSelected = true; + ServerBuild.__iy_lo = var0; + Client.__client_lc = var1; + FloorDecoration.selectedSpellFlags = var2; + class22.method295(var4); + } +} diff --git a/rs-client/src/main/java/class258.java b/rs-client/src/main/java/class258.java new file mode 100644 index 0000000000..94185ddd44 --- /dev/null +++ b/rs-client/src/main/java/class258.java @@ -0,0 +1,67 @@ +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ig") +public class class258 { + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(B)Lln;", + garbageValue = "-51" + ) + static Sprite method4900() { + Sprite var0 = new Sprite(); + var0.width = class328.indexedSpriteWidth; + var0.height = class328.indexedSpriteHeight; + var0.yOffset = class328.indexedSpriteOffsetXs[0]; + var0.xOffset = class328.indexedSpriteOffsetYs[0]; + var0.subWidth = VarbitDefinition.indexedSpriteWidths[0]; + var0.subHeight = SecureRandomCallable.indexedSpriteHeights[0]; + int var1 = var0.subHeight * var0.subWidth; + byte[] var2 = class328.spritePixels[0]; + var0.pixels = new int[var1]; + + for(int var3 = 0; var3 < var1; ++var3) { + var0.pixels[var3] = class328.indexedSpritePalette[var2[var3] & 255]; + } + + class328.indexedSpriteOffsetXs = null; + class328.indexedSpriteOffsetYs = null; + VarbitDefinition.indexedSpriteWidths = null; + SecureRandomCallable.indexedSpriteHeights = null; + class328.indexedSpritePalette = null; + class328.spritePixels = null; + return var0; + } + + @ObfuscatedName("hd") + @ObfuscatedSignature( + signature = "(IIIIIIIIII)V", + garbageValue = "772902595" + ) + static final void method4898(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + class68 var9 = null; + + for(class68 var10 = (class68)Client.__client_kh.last(); var10 != null; var10 = (class68)Client.__client_kh.previous()) { + if(var0 == var10.field911 && var10.field913 == var1 && var2 == var10.field901 && var3 == var10.field906) { + var9 = var10; + break; + } + } + + if(var9 == null) { + var9 = new class68(); + var9.field911 = var0; + var9.field906 = var3; + var9.field913 = var1; + var9.field901 = var2; + class13.method165(var9); + Client.__client_kh.addFirst(var9); + } + + var9.field899 = var4; + var9.field908 = var5; + var9.field907 = var6; + var9.field909 = var7; + var9.field910 = var8; + } +} diff --git a/rs-client/src/main/java/class266.java b/rs-client/src/main/java/class266.java new file mode 100644 index 0000000000..7881dd6794 --- /dev/null +++ b/rs-client/src/main/java/class266.java @@ -0,0 +1,68 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ju") +public enum class266 implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lju;" + ) + field3529(2, 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lju;" + ) + field3527(0, 1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lju;" + ) + field3526(1, 2); + + @ObfuscatedName("b") + @Export("osName") + public static String osName; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -739868097 + ) + public final int field3528; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1327532101 + ) + final int field3530; + + class266(int var3, int var4) { + this.field3528 = var3; + this.field3530 = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.field3530; + } + + @ObfuscatedName("ft") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1908348747" + ) + static final void method5120() { + if(VertexNormal.__dq_pe) { + if(PacketWriter.clanChat != null) { + PacketWriter.clanChat.sort(); + } + + FontName.method5635(); + VertexNormal.__dq_pe = false; + } + + } +} diff --git a/rs-client/src/main/java/class27.java b/rs-client/src/main/java/class27.java new file mode 100644 index 0000000000..7acd856783 --- /dev/null +++ b/rs-client/src/main/java/class27.java @@ -0,0 +1,71 @@ +import java.awt.image.BufferedImage; +import java.awt.image.PixelGrabber; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import javax.imageio.ImageIO; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("aq") +public final class class27 { + @ObfuscatedName("k") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__aq_k") + public static AbstractIndexCache __aq_k; + @ObfuscatedName("f") + final int[] field225; + + class27() { + this.field225 = new int[4096]; + } + + class27(int[] var1) { + this.field225 = var1; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-695741813" + ) + final int method430(int var1, int var2) { + return this.field225[var1 + var2 * 64]; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)[Lge;", + garbageValue = "37" + ) + public static ServerPacket[] method429() { + return new ServerPacket[]{ServerPacket.__ge_m, ServerPacket.__ge_f, ServerPacket.__ge_q, ServerPacket.__ge_w, ServerPacket.__ge_o, ServerPacket.__ge_u, ServerPacket.__ge_g, ServerPacket.__ge_l, ServerPacket.__ge_e, ServerPacket.__ge_x, ServerPacket.__ge_d, ServerPacket.__ge_k, ServerPacket.__ge_n, ServerPacket.__ge_i, ServerPacket.__ge_a, ServerPacket.__ge_z, ServerPacket.__ge_j, ServerPacket.__ge_s, ServerPacket.__ge_t, ServerPacket.__ge_y, ServerPacket.__ge_h, ServerPacket.__ge_b, ServerPacket.__ge_c, ServerPacket.__ge_r, ServerPacket.__ge_p, ServerPacket.__ge_v, ServerPacket.__ge_ag, ServerPacket.__ge_aq, ServerPacket.__ge_aj, ServerPacket.__ge_av, ServerPacket.__ge_ar, ServerPacket.__ge_ac, ServerPacket.__ge_ay, ServerPacket.__ge_ah, ServerPacket.__ge_ak, ServerPacket.__ge_aw, ServerPacket.__ge_al, ServerPacket.__ge_ab, ServerPacket.__ge_ae, ServerPacket.__ge_at, ServerPacket.__ge_ad, ServerPacket.__ge_ap, ServerPacket.__ge_as, ServerPacket.__ge_am, ServerPacket.__ge_an, ServerPacket.__ge_az, ServerPacket.__ge_au, ServerPacket.__ge_ao, ServerPacket.__ge_aa, ServerPacket.__ge_ax, ServerPacket.__ge_af, ServerPacket.__ge_ai, ServerPacket.__ge_ba, ServerPacket.__ge_bb, ServerPacket.__ge_bs, ServerPacket.__ge_bq, ServerPacket.__ge_bn, ServerPacket.__ge_bk, ServerPacket.__ge_bd, ServerPacket.__ge_bc, ServerPacket.__ge_bo, ServerPacket.__ge_bx, ServerPacket.__ge_by, ServerPacket.__ge_bu, ServerPacket.__ge_bm, ServerPacket.__ge_bl, ServerPacket.__ge_br, ServerPacket.__ge_bj, ServerPacket.__ge_bi, ServerPacket.__ge_bz, ServerPacket.__ge_bg, ServerPacket.__ge_bt, ServerPacket.__ge_bp, ServerPacket.__ge_bf, ServerPacket.__ge_bh, ServerPacket.__ge_be, ServerPacket.__ge_bv, ServerPacket.__ge_bw, ServerPacket.__ge_cr, ServerPacket.__ge_cv, ServerPacket.__ge_ce, ServerPacket.__ge_cy, ServerPacket.__ge_cs, ServerPacket.__ge_cm, ServerPacket.__ge_cj}; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([BI)Lln;", + garbageValue = "-143338910" + ) + public static final Sprite method438(byte[] var0) { + BufferedImage var1 = null; + + try { + var1 = ImageIO.read(new ByteArrayInputStream(var0)); + int var2 = var1.getWidth(); + int var3 = var1.getHeight(); + int[] var4 = new int[var3 * var2]; + PixelGrabber var5 = new PixelGrabber(var1, 0, 0, var2, var3, var4, 0, var2); + var5.grabPixels(); + return new Sprite(var4, var2, var3); + } catch (IOException var7) { + ; + } catch (InterruptedException var8) { + ; + } + + return new Sprite(0, 0); + } +} diff --git a/rs-client/src/main/java/class277.java b/rs-client/src/main/java/class277.java new file mode 100644 index 0000000000..2a92e19d7a --- /dev/null +++ b/rs-client/src/main/java/class277.java @@ -0,0 +1,114 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jn") +public class class277 { + @ObfuscatedName("by") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__jn_by") + static IndexedSprite __jn_by; + + @ObfuscatedName("m") + public static final int method5355(double var0, double var2, double var4) { + double var6 = var4; + double var8 = var4; + double var10 = var4; + if(0.0D != var2) { + double var12; + if(var4 < 0.5D) { + var12 = var4 * (var2 + 1.0D); + } else { + var12 = var4 + var2 - var2 * var4; + } + + double var14 = var4 * 2.0D - var12; + double var16 = var0 + 0.3333333333333333D; + if(var16 > 1.0D) { + --var16; + } + + double var20 = var0 - 0.3333333333333333D; + if(var20 < 0.0D) { + ++var20; + } + + if(6.0D * var16 < 1.0D) { + var6 = var16 * (var12 - var14) * 6.0D + var14; + } else if(var16 * 2.0D < 1.0D) { + var6 = var12; + } else if(var16 * 3.0D < 2.0D) { + var6 = var14 + (var12 - var14) * (0.6666666666666666D - var16) * 6.0D; + } else { + var6 = var14; + } + + if(var0 * 6.0D < 1.0D) { + var8 = var14 + (var12 - var14) * 6.0D * var0; + } else if(var0 * 2.0D < 1.0D) { + var8 = var12; + } else if(var0 * 3.0D < 2.0D) { + var8 = 6.0D * (0.6666666666666666D - var0) * (var12 - var14) + var14; + } else { + var8 = var14; + } + + if(var20 * 6.0D < 1.0D) { + var10 = var20 * 6.0D * (var12 - var14) + var14; + } else if(2.0D * var20 < 1.0D) { + var10 = var12; + } else if(var20 * 3.0D < 2.0D) { + var10 = var14 + 6.0D * (0.6666666666666666D - var20) * (var12 - var14); + } else { + var10 = var14; + } + } + + int var22 = (int)(256.0D * var6); + int var13 = (int)(var8 * 256.0D); + int var23 = (int)(var10 * 256.0D); + int var15 = var23 + (var13 << 8) + (var22 << 16); + return var15; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "([Ljava/lang/CharSequence;III)Ljava/lang/String;", + garbageValue = "1648987580" + ) + public static String method5356(CharSequence[] var0, int var1, int var2) { + if(var2 == 0) { + return ""; + } else if(var2 == 1) { + CharSequence var3 = var0[var1]; + return var3 == null?"null":var3.toString(); + } else { + int var8 = var2 + var1; + int var4 = 0; + + for(int var5 = var1; var5 < var8; ++var5) { + CharSequence var6 = var0[var5]; + if(var6 == null) { + var4 += 4; + } else { + var4 += var6.length(); + } + } + + StringBuilder var9 = new StringBuilder(var4); + + for(int var10 = var1; var10 < var8; ++var10) { + CharSequence var7 = var0[var10]; + if(var7 == null) { + var9.append("null"); + } else { + var9.append(var7); + } + } + + return var9.toString(); + } + } +} diff --git a/rs-client/src/main/java/class279.java b/rs-client/src/main/java/class279.java new file mode 100644 index 0000000000..2f80b4c89c --- /dev/null +++ b/rs-client/src/main/java/class279.java @@ -0,0 +1,29 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("jx") +public class class279 { + @ObfuscatedName("ne") + @ObfuscatedSignature( + signature = "[Lho;" + ) + @Export("__jx_ne") + static Widget[] __jx_ne; + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;I)I", + garbageValue = "-2144835936" + ) + public static int method5357(CharSequence var0) { + int var1 = var0.length(); + int var2 = 0; + + for(int var3 = 0; var3 < var1; ++var3) { + var2 = (var2 << 5) - var2 + var0.charAt(var3); + } + + return var2; + } +} diff --git a/rs-client/src/main/java/class3.java b/rs-client/src/main/java/class3.java new file mode 100644 index 0000000000..826ab81db7 --- /dev/null +++ b/rs-client/src/main/java/class3.java @@ -0,0 +1,330 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("w") +public class class3 implements Enumerated { + @ObfuscatedName("qs") + @ObfuscatedGetter( + intValue = 1608439891 + ) + @Export("__w_qs") + static int __w_qs; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lw;" + ) + static final class3 field20; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lw;" + ) + static final class3 field14; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lw;" + ) + static final class3 field15; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1621503295 + ) + final int field13; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -393250053 + ) + public final int field17; + @ObfuscatedName("u") + public final Class field18; + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lm;" + ) + public final class0 field19; + + static { + field20 = new class3(2, 0, Integer.class, new class1()); + field14 = new class3(0, 1, Long.class, new class2()); + field15 = new class3(1, 2, String.class, new class4()); + } + + @ObfuscatedSignature( + signature = "(IILjava/lang/Class;Lm;)V" + ) + class3(int var1, int var2, Class var3, class0 var4) { + this.field13 = var1; + this.field17 = var2; + this.field18 = var3; + this.field19 = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.field17; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(Lgr;I)Ljava/lang/Object;", + garbageValue = "1915331486" + ) + public Object method31(Buffer var1) { + return this.field19.vmethod46(var1); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)[Lw;", + garbageValue = "23" + ) + public static class3[] method34() { + return new class3[]{field15, field20, field14}; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "772942762" + ) + static int method36() { + return 11; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "729662922" + ) + public static void method41() { + while(true) { + NodeDeque var1 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; + IndexStoreAction var0; + synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { + var0 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_responseQueue.removeLast(); + } + + if(var0 == null) { + return; + } + + var0.indexCache.load(var0.indexStore, (int)var0.key, var0.data, false); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IIIZIZI)V", + garbageValue = "653716649" + ) + static void method42(int var0, int var1, int var2, boolean var3, int var4, boolean var5) { + if(var0 < var1) { + int var6 = (var0 + var1) / 2; + int var7 = var0; + World var8 = ItemContainer.worlds[var6]; + ItemContainer.worlds[var6] = ItemContainer.worlds[var1]; + ItemContainer.worlds[var1] = var8; + + for(int var9 = var0; var9 < var1; ++var9) { + World var11 = ItemContainer.worlds[var9]; + int var12 = WorldMapLabel.compareWorlds(var11, var8, var2, var3); + int var10; + if(var12 != 0) { + if(var3) { + var10 = -var12; + } else { + var10 = var12; + } + } else if(var4 == -1) { + var10 = 0; + } else { + int var13 = WorldMapLabel.compareWorlds(var11, var8, var4, var5); + if(var5) { + var10 = -var13; + } else { + var10 = var13; + } + } + + if(var10 <= 0) { + World var14 = ItemContainer.worlds[var9]; + ItemContainer.worlds[var9] = ItemContainer.worlds[var7]; + ItemContainer.worlds[var7++] = var14; + } + } + + ItemContainer.worlds[var1] = ItemContainer.worlds[var7]; + ItemContainer.worlds[var7] = var8; + method42(var0, var7 - 1, var2, var3, var4, var5); + method42(var7 + 1, var1, var2, var3, var4, var5); + } + + } + + @ObfuscatedName("hq") + @ObfuscatedSignature( + signature = "(ZLhx;B)V", + garbageValue = "1" + ) + @Export("updateNpcs") + static final void updateNpcs(boolean var0, PacketBuffer var1) { + Client.__client_ky = 0; + Client.__client_fw = 0; + PacketBuffer var2 = Client.packetWriter.packetBuffer; + var2.importIndex(); + int var3 = var2.readBits(8); + int var4; + if(var3 < Client.npcCount) { + for(var4 = var3; var4 < Client.npcCount; ++var4) { + Client.__client_kd[++Client.__client_ky - 1] = Client.npcIndices[var4]; + } + } + + if(var3 > Client.npcCount) { + throw new RuntimeException(""); + } else { + Client.npcCount = 0; + + int var5; + int var7; + int var8; + int var9; + for(var4 = 0; var4 < var3; ++var4) { + var5 = Client.npcIndices[var4]; + Npc var6 = Client.npcs[var5]; + var7 = var2.readBits(1); + if(var7 == 0) { + Client.npcIndices[++Client.npcCount - 1] = var5; + var6.npcCycle = Client.cycle; + } else { + var8 = var2.readBits(2); + if(var8 == 0) { + Client.npcIndices[++Client.npcCount - 1] = var5; + var6.npcCycle = Client.cycle; + Client.__client_fg[++Client.__client_fw - 1] = var5; + } else { + int var10; + if(var8 == 1) { + Client.npcIndices[++Client.npcCount - 1] = var5; + var6.npcCycle = Client.cycle; + var9 = var2.readBits(3); + var6.__m_162(var9, (byte)1); + var10 = var2.readBits(1); + if(var10 == 1) { + Client.__client_fg[++Client.__client_fw - 1] = var5; + } + } else if(var8 == 2) { + Client.npcIndices[++Client.npcCount - 1] = var5; + var6.npcCycle = Client.cycle; + var9 = var2.readBits(3); + var6.__m_162(var9, (byte)2); + var10 = var2.readBits(3); + var6.__m_162(var10, (byte)2); + int var11 = var2.readBits(1); + if(var11 == 1) { + Client.__client_fg[++Client.__client_fw - 1] = var5; + } + } else if(var8 == 3) { + Client.__client_kd[++Client.__client_ky - 1] = var5; + } + } + } + } + + int var12; + while(var1.bitsRemaining(Client.packetWriter.serverPacket0Length) >= 27) { + var12 = var1.readBits(15); + if(var12 == 32767) { + break; + } + + boolean var15 = false; + if(Client.npcs[var12] == null) { + Client.npcs[var12] = new Npc(); + var15 = true; + } + + Npc var13 = Client.npcs[var12]; + Client.npcIndices[++Client.npcCount - 1] = var12; + var13.npcCycle = Client.cycle; + if(var0) { + var5 = var1.readBits(8); + if(var5 > 127) { + var5 -= 256; + } + } else { + var5 = var1.readBits(5); + if(var5 > 15) { + var5 -= 32; + } + } + + int var14 = var1.readBits(1); + var7 = Client.__client_kn[var1.readBits(3)]; + if(var15) { + var13.orientation = var13.__ac = var7; + } + + var8 = var1.readBits(1); + if(var8 == 1) { + Client.__client_fg[++Client.__client_fw - 1] = var12; + } + + if(var0) { + var9 = var1.readBits(8); + if(var9 > 127) { + var9 -= 256; + } + } else { + var9 = var1.readBits(5); + if(var9 > 15) { + var9 -= 32; + } + } + + var13.definition = ObjectDefinition.getNpcDefinition(var1.readBits(14)); + var13.size = var13.definition.size; + var13.__cj = var13.definition.__av; + if(var13.__cj == 0) { + var13.__ac = 0; + } + + var13.walkSequence = var13.definition.walkSequence; + var13.walkTurnSequence = var13.definition.walkTurnSequence; + var13.walkTurnLeftSequence = var13.definition.walkTurnLeftSequence; + var13.walkTurnRightSequence = var13.definition.walkTurnRightSequence; + var13.idleSequence = var13.definition.idleSequence; + var13.turnLeftSequence = var13.definition.turnLeftSequence; + var13.turnRightSequence = var13.definition.turnRightSequence; + var13.__f_163(Canvas.localPlayer.pathX[0] + var5, Canvas.localPlayer.pathY[0] + var9, var14 == 1); + } + + var1.exportIndex(); + WorldComparator.method67(var1); + + for(var12 = 0; var12 < Client.__client_ky; ++var12) { + var3 = Client.__client_kd[var12]; + if(Client.npcs[var3].npcCycle != Client.cycle) { + Client.npcs[var3].definition = null; + Client.npcs[var3] = null; + } + } + + if(var1.index != Client.packetWriter.serverPacket0Length) { + throw new RuntimeException(var1.index + "," + Client.packetWriter.serverPacket0Length); + } else { + for(var12 = 0; var12 < Client.npcCount; ++var12) { + if(Client.npcs[Client.npcIndices[var12]] == null) { + throw new RuntimeException(var12 + "," + Client.npcCount); + } + } + + } + } + } +} diff --git a/rs-client/src/main/java/class30.java b/rs-client/src/main/java/class30.java new file mode 100644 index 0000000000..ca1c58090c --- /dev/null +++ b/rs-client/src/main/java/class30.java @@ -0,0 +1,123 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ar") +public class class30 { + @ObfuscatedName("qw") + @ObfuscatedGetter( + intValue = -1555836449 + ) + @Export("__ar_qw") + static int __ar_qw; + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lar;" + ) + static final class30 field246; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lar;" + ) + static final class30 field247; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = -18917723 + ) + @Export("musicTrackArchiveId") + public static int musicTrackArchiveId; + @ObfuscatedName("l") + @Export("__ar_l") + public static boolean __ar_l; + @ObfuscatedName("bd") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("__ar_bd") + static Sprite[] __ar_bd; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -1474464623 + ) + final int field248; + + static { + field246 = new class30(0); + field247 = new class30(1); + } + + class30(int var1) { + this.field248 = var1; + } + + @ObfuscatedName("at") + @ObfuscatedSignature( + signature = "(II)I", + garbageValue = "2127022463" + ) + static int method571(int var0) { + return (int)((Math.log((double)var0) / Interpreter.__bv_r - 7.0D) * 256.0D); + } + + @ObfuscatedName("hp") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "49" + ) + static void method569() { + Client.menuOptionsCount = 0; + Client.isMenuOpen = false; + Client.menuActions[0] = "Cancel"; + Client.menuTargetNames[0] = ""; + Client.menuOpcodes[0] = 1006; + Client.menuShiftClick[0] = false; + Client.menuOptionsCount = 1; + } + + @ObfuscatedName("jz") + @ObfuscatedSignature( + signature = "([Lho;II)V", + garbageValue = "-1070833742" + ) + static final void method570(Widget[] var0, int var1) { + for(int var2 = 0; var2 < var0.length; ++var2) { + Widget var3 = var0[var2]; + if(var3 != null) { + if(var3.type == 0) { + if(var3.children != null) { + method570(var3.children, var1); + } + + WidgetGroupParent var4 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var3.id); + if(var4 != null) { + GrandExchangeEvents.method74(var4.group, var1); + } + } + + ScriptEvent var5; + if(var1 == 0 && var3.onDialogAbortListener != null) { + var5 = new ScriptEvent(); + var5.widget = var3; + var5.args0 = var3.onDialogAbortListener; + AbstractIndexCache.runScript(var5); + } + + if(var1 == 1 && var3.__ei != null) { + if(var3.childIndex >= 0) { + Widget var6 = Huffman.getWidget(var3.id); + if(var6 == null || var6.children == null || var3.childIndex >= var6.children.length || var3 != var6.children[var3.childIndex]) { + continue; + } + } + + var5 = new ScriptEvent(); + var5.widget = var3; + var5.args0 = var3.__ei; + AbstractIndexCache.runScript(var5); + } + } + } + + } +} diff --git a/rs-client/src/main/java/class303.java b/rs-client/src/main/java/class303.java new file mode 100644 index 0000000000..341761fd19 --- /dev/null +++ b/rs-client/src/main/java/class303.java @@ -0,0 +1,13 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ki") +public class class303 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lgd;" + ) + @Export("huffman") + public static Huffman huffman; +} diff --git a/rs-client/src/main/java/class304.java b/rs-client/src/main/java/class304.java new file mode 100644 index 0000000000..c8a10ff60a --- /dev/null +++ b/rs-client/src/main/java/class304.java @@ -0,0 +1,13 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("kr") +public class class304 { + @ObfuscatedName("m") + @Export("cp1252AsciiExtension") + public static final char[] cp1252AsciiExtension; + + static { + cp1252AsciiExtension = new char[]{'€', '\u0000', '‚', 'ƒ', '„', '…', '†', '‡', 'ˆ', '‰', 'Š', '‹', 'Œ', '\u0000', 'Ž', '\u0000', '\u0000', '‘', '’', '“', '”', '•', '–', '—', '˜', '™', 'š', '›', 'œ', '\u0000', 'ž', 'Ÿ'}; + } +} diff --git a/rs-client/src/main/java/class305.java b/rs-client/src/main/java/class305.java new file mode 100644 index 0000000000..b28a55c0b0 --- /dev/null +++ b/rs-client/src/main/java/class305.java @@ -0,0 +1,17 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("kb") +public class class305 { + @ObfuscatedName("q") + @Export("__kb_q") + static final char[] __kb_q; + @ObfuscatedName("w") + @Export("__kb_w") + static final char[] __kb_w; + + static { + __kb_q = new char[]{' ', ' ', '_', '-', 'à', 'á', 'â', 'ä', 'ã', 'À', 'Á', 'Â', 'Ä', 'Ã', 'è', 'é', 'ê', 'ë', 'È', 'É', 'Ê', 'Ë', 'í', 'î', 'ï', 'Í', 'Î', 'Ï', 'ò', 'ó', 'ô', 'ö', 'õ', 'Ò', 'Ó', 'Ô', 'Ö', 'Õ', 'ù', 'ú', 'û', 'ü', 'Ù', 'Ú', 'Û', 'Ü', 'ç', 'Ç', 'ÿ', 'Ÿ', 'ñ', 'Ñ', 'ß'}; + __kb_w = new char[]{'[', ']', '#'}; + } +} diff --git a/rs-client/src/main/java/class306.java b/rs-client/src/main/java/class306.java new file mode 100644 index 0000000000..86c014ae84 --- /dev/null +++ b/rs-client/src/main/java/class306.java @@ -0,0 +1,91 @@ +import java.io.IOException; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ku") +public final class class306 { + @ObfuscatedName("m") + @Export("base37Table") + public static final char[] base37Table; + + static { + base37Table = new char[]{'_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/CharSequence;B)Ljava/lang/String;", + garbageValue = "1" + ) + public static String method5781(CharSequence var0) { + int var1 = var0.length(); + StringBuilder var2 = new StringBuilder(var1); + + for(int var3 = 0; var3 < var1; ++var3) { + char var4 = var0.charAt(var3); + if((var4 < 'a' || var4 > 'z') && (var4 < 'A' || var4 > 'Z') && (var4 < '0' || var4 > '9') && var4 != '.' && var4 != '-' && var4 != '*' && var4 != '_') { + if(var4 == ' ') { + var2.append('+'); + } else { + byte var5 = HealthBar.charToByteCp1252(var4); + var2.append('%'); + int var6 = var5 >> 4 & 15; + if(var6 >= 10) { + var2.append((char)(var6 + 55)); + } else { + var2.append((char)(var6 + 48)); + } + + var6 = var5 & 15; + if(var6 >= 10) { + var2.append((char)(var6 + 55)); + } else { + var2.append((char)(var6 + 48)); + } + } + } else { + var2.append(var4); + } + } + + return var2.toString(); + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(B)Lbf;", + garbageValue = "124" + ) + static ClientPreferences method5780() { + AccessFile var0 = null; + ClientPreferences var1 = new ClientPreferences(); + + try { + var0 = LoginPacket.getPreferencesFile("", class22.studioGame.name, false); + byte[] var2 = new byte[(int)var0.length()]; + + int var4; + for(int var3 = 0; var3 < var2.length; var3 += var4) { + var4 = var0.read(var2, var3, var2.length - var3); + if(var4 == -1) { + throw new IOException(); + } + } + + var1 = new ClientPreferences(new Buffer(var2)); + } catch (Exception var6) { + ; + } + + try { + if(var0 != null) { + var0.close(); + } + } catch (Exception var5) { + ; + } + + return var1; + } +} diff --git a/rs-client/src/main/java/class307.java b/rs-client/src/main/java/class307.java new file mode 100644 index 0000000000..060ec01941 --- /dev/null +++ b/rs-client/src/main/java/class307.java @@ -0,0 +1,104 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kc") +public class class307 { + @ObfuscatedName("m") + @Export("__kc_m") + public static char[] __kc_m; + @ObfuscatedName("f") + @Export("__kc_f") + static char[] __kc_f; + @ObfuscatedName("q") + @Export("__kc_q") + static char[] __kc_q; + @ObfuscatedName("w") + @Export("__kc_w") + static int[] __kc_w; + @ObfuscatedName("g") + @Export("__kc_g") + static byte[][][] __kc_g; + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Ldt;" + ) + @Export("soundCache") + public static SoundCache soundCache; + + static { + __kc_m = new char[64]; + + int var0; + for(var0 = 0; var0 < 26; ++var0) { + __kc_m[var0] = (char)(var0 + 65); + } + + for(var0 = 26; var0 < 52; ++var0) { + __kc_m[var0] = (char)(var0 + 97 - 26); + } + + for(var0 = 52; var0 < 62; ++var0) { + __kc_m[var0] = (char)(var0 + 48 - 52); + } + + __kc_m[62] = '+'; + __kc_m[63] = '/'; + __kc_f = new char[64]; + + for(var0 = 0; var0 < 26; ++var0) { + __kc_f[var0] = (char)(var0 + 65); + } + + for(var0 = 26; var0 < 52; ++var0) { + __kc_f[var0] = (char)(var0 + 97 - 26); + } + + for(var0 = 52; var0 < 62; ++var0) { + __kc_f[var0] = (char)(var0 + 48 - 52); + } + + __kc_f[62] = '*'; + __kc_f[63] = '-'; + __kc_q = new char[64]; + + for(var0 = 0; var0 < 26; ++var0) { + __kc_q[var0] = (char)(var0 + 65); + } + + for(var0 = 26; var0 < 52; ++var0) { + __kc_q[var0] = (char)(var0 + 97 - 26); + } + + for(var0 = 52; var0 < 62; ++var0) { + __kc_q[var0] = (char)(var0 + 48 - 52); + } + + __kc_q[62] = '-'; + __kc_q[63] = '_'; + __kc_w = new int[128]; + + for(var0 = 0; var0 < __kc_w.length; ++var0) { + __kc_w[var0] = -1; + } + + for(var0 = 65; var0 <= 90; ++var0) { + __kc_w[var0] = var0 - 65; + } + + for(var0 = 97; var0 <= 122; ++var0) { + __kc_w[var0] = var0 - 97 + 26; + } + + for(var0 = 48; var0 <= 57; ++var0) { + __kc_w[var0] = var0 - 48 + 52; + } + + int[] var2 = __kc_w; + __kc_w[43] = 62; + var2[42] = 62; + int[] var1 = __kc_w; + __kc_w[47] = 63; + var1[45] = 63; + } +} diff --git a/rs-client/src/main/java/class308.java b/rs-client/src/main/java/class308.java new file mode 100644 index 0000000000..bd4b8675ff --- /dev/null +++ b/rs-client/src/main/java/class308.java @@ -0,0 +1,16 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("kw") +public final class class308 { + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Llq;" + ) + @Export("__kw_n") + static IndexedSprite __kw_n; + @ObfuscatedName("gn") + @Export("regions") + static int[] regions; +} diff --git a/rs-client/src/main/java/class309.java b/rs-client/src/main/java/class309.java new file mode 100644 index 0000000000..704dc64f84 --- /dev/null +++ b/rs-client/src/main/java/class309.java @@ -0,0 +1,13 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("kl") +public class class309 { + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = 147524751 + ) + @Export("PcmPlayer_sampleRate") + public static int PcmPlayer_sampleRate; +} diff --git a/rs-client/src/main/java/class31.java b/rs-client/src/main/java/class31.java new file mode 100644 index 0000000000..9942be4c2f --- /dev/null +++ b/rs-client/src/main/java/class31.java @@ -0,0 +1,270 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ac") +public class class31 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lac;" + ) + static final class31 field259; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lac;" + ) + static final class31 field254; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 214832375 + ) + final int field255; + + static { + field259 = new class31(0); + field254 = new class31(1); + } + + class31(int var1) { + this.field255 = var1; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(Lbt;I)V", + garbageValue = "-1277717693" + ) + @Export("changeWorld") + static void changeWorld(World var0) { + if(var0.__e_144() != Client.isMembersWorld) { + Client.isMembersWorld = var0.__e_144(); + boolean var1 = var0.__e_144(); + if(var1 != class30.__ar_l) { + class72.method1780(); + class30.__ar_l = var1; + } + } + + class50.worldHost = var0.host; + Client.worldId = var0.id; + Client.worldProperties = var0.properties; + class2.port1 = Client.gameBuild == 0?43594:var0.id + 40000; + WorldMapArea.port2 = Client.gameBuild == 0?443:var0.id + 50000; + class203.port3 = class2.port1; + } + + @ObfuscatedName("ap") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "130306081" + ) + static int method573(int var0, Script var1, boolean var2) { + if(var0 == 6500) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ClientParameter.loadWorlds()?1:0; + return 1; + } else { + World var3; + if(var0 == 6501) { + var3 = class190.method3672(); + if(var3 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.id; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.properties; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.activity; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.location; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.population; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.host; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 6502) { + var3 = Fonts.method5647(); + if(var3 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.id; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.properties; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.activity; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.location; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var3.population; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3.host; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else { + World var4; + int var5; + int var7; + if(var0 == 6506) { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var4 = null; + + for(var5 = 0; var5 < World.worldsCount; ++var5) { + if(var7 == ItemContainer.worlds[var5].id) { + var4 = ItemContainer.worlds[var5]; + break; + } + } + + if(var4 != null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.id; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.properties; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.activity; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.location; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.population; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.host; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } else if(var0 == 6507) { + class179.Interpreter_intStackSize -= 4; + var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + boolean var10 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1] == 1; + var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + boolean var6 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 3] == 1; + WorldMapSectionType.method248(var7, var10, var5, var6); + return 1; + } else if(var0 != 6511) { + if(var0 == 6512) { + Client.followerOpsLowPriority = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else { + int var8; + ParamKeyDefinition var9; + if(var0 == 6513) { + class179.Interpreter_intStackSize -= 2; + var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var8 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var9 = class229.getParamKeyDefinition(var8); + if(var9.isString()) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ObjectDefinition.getNpcDefinition(var7).getStringParam(var8, var9.keyString); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ObjectDefinition.getNpcDefinition(var7).getIntParam(var8, var9.keyInt); + } + + return 1; + } else if(var0 == 6514) { + class179.Interpreter_intStackSize -= 2; + var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var8 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var9 = class229.getParamKeyDefinition(var8); + if(var9.isString()) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = class50.getObjectDefinition(var7).getStringParam(var8, var9.keyString); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class50.getObjectDefinition(var7).getIntParam(var8, var9.keyInt); + } + + return 1; + } else if(var0 == 6515) { + class179.Interpreter_intStackSize -= 2; + var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var8 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var9 = class229.getParamKeyDefinition(var8); + if(var9.isString()) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Skills.getItemDefinition(var7).getStringParam(var8, var9.keyString); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Skills.getItemDefinition(var7).getIntParam(var8, var9.keyInt); + } + + return 1; + } else if(var0 == 6516) { + class179.Interpreter_intStackSize -= 2; + var7 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var8 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var9 = class229.getParamKeyDefinition(var8); + if(var9.isString()) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = GzipDecompressor.method3702(var7).getStringParam(var8, var9.keyString); + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = GzipDecompressor.method3702(var7).getIntParam(var8, var9.keyInt); + } + + return 1; + } else if(var0 == 6518) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_bl?1:0; + return 1; + } else if(var0 == 6519) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.clientType & 3; + return 1; + } else if(var0 == 6520) { + return 1; + } else if(var0 == 6521) { + return 1; + } else if(var0 == 6522) { + --Interpreter.Interpreter_stringStackSize; + --class179.Interpreter_intStackSize; + return 1; + } else if(var0 == 6523) { + --Interpreter.Interpreter_stringStackSize; + --class179.Interpreter_intStackSize; + return 1; + } else if(var0 == 6524) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + return 1; + } else if(var0 == 6525) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + return 1; + } else if(var0 == 6526) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1; + return 1; + } else { + return 2; + } + } + } else { + var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + if(var7 >= 0 && var7 < World.worldsCount) { + var4 = ItemContainer.worlds[var7]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.id; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.properties; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.activity; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.location; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var4.population; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.host; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } + + return 1; + } + } + } + } + + @ObfuscatedName("kd") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;B)V", + garbageValue = "-110" + ) + static final void method574(String var0) { + if(!var0.equals("")) { + PacketBufferNode var1 = Interpreter.method1915(ClientPacket.__gs_cr, Client.packetWriter.isaacCipher); + var1.packetBuffer.writeByte(WorldMapRegion.method550(var0)); + var1.packetBuffer.writeStringCp1252NullTerminated(var0); + Client.packetWriter.__q_167(var1); + } + } +} diff --git a/rs-client/src/main/java/class310.java b/rs-client/src/main/java/class310.java new file mode 100644 index 0000000000..49b9df7811 --- /dev/null +++ b/rs-client/src/main/java/class310.java @@ -0,0 +1,37 @@ +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ko") +public class class310 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lko;" + ) + static final class310 field3806; + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lko;" + ) + public static final class310 field3805; + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lko;" + ) + static final class310 field3807; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1410154159 + ) + public final int field3804; + + static { + field3806 = new class310(0); + field3805 = new class310(1); + field3807 = new class310(2); + } + + class310(int var1) { + this.field3804 = var1; + } +} diff --git a/rs-client/src/main/java/class311.java b/rs-client/src/main/java/class311.java new file mode 100644 index 0000000000..da433a2eab --- /dev/null +++ b/rs-client/src/main/java/class311.java @@ -0,0 +1,41 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ka") +public class class311 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lka;" + ) + static final class311 field3810; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = -2077113503 + ) + @Export("__ka_e") + static int __ka_e; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -800980069 + ) + final int field3809; + + static { + field3810 = new class311(3); + } + + class311(int var1) { + this.field3809 = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Llj;", + garbageValue = "-2017595575" + ) + public static RectangleMode[] method5822() { + return new RectangleMode[]{RectangleMode.__lj_f, RectangleMode.__lj_m, RectangleMode.__lj_q}; + } +} diff --git a/rs-client/src/main/java/class313.java b/rs-client/src/main/java/class313.java new file mode 100644 index 0000000000..5dd381a8f5 --- /dev/null +++ b/rs-client/src/main/java/class313.java @@ -0,0 +1,77 @@ +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ll") +public enum class313 implements Enumerated { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3834(2, 0), + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3825(7, 1), + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3826(8, 2), + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3830(0, 3), + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3831(4, 4), + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3829(1, 5), + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3828(6, 6), + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3824(5, 7), + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "Lll;" + ) + field3832(3, 8); + + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = -561869045 + ) + final int field3833; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = 1246567185 + ) + final int field3827; + + class313(int var3, int var4) { + this.field3833 = var3; + this.field3827 = var4; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "83" + ) + public int rsOrdinal() { + return this.field3827; + } +} diff --git a/rs-client/src/main/java/class32.java b/rs-client/src/main/java/class32.java new file mode 100644 index 0000000000..0397ba9999 --- /dev/null +++ b/rs-client/src/main/java/class32.java @@ -0,0 +1,109 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ay") +public class class32 { + @ObfuscatedName("u") + @Export("__ay_u") + static byte[][][] __ay_u; + @ObfuscatedName("gj") + @ObfuscatedSignature( + signature = "[Llq;" + ) + @Export("scrollBarSprites") + static IndexedSprite[] scrollBarSprites; + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "19" + ) + static int method576(int var0, Script var1, boolean var2) { + Widget var3; + if(var0 >= 2000) { + var0 -= 1000; + var3 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + } else { + var3 = var2?WorldMapIcon1.__t_i:class12.__n_n; + } + + class22.method295(var3); + if(var0 != 1200 && var0 != 1205 && var0 != 1212) { + if(var0 == 1201) { + var3.modelType = 2; + var3.modelId = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + return 1; + } else if(var0 == 1202) { + var3.modelType = 3; + var3.modelId = Canvas.localPlayer.appearance.getChatHeadId(); + return 1; + } else { + return 2; + } + } else { + class179.Interpreter_intStackSize -= 2; + int var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + int var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + var3.itemId = var4; + var3.itemQuantity = var5; + ItemDefinition var6 = Skills.getItemDefinition(var4); + var3.modelAngleX = var6.xan2d; + var3.modelAngleY = var6.yan2d; + var3.modelAngleZ = var6.zan2d; + var3.modelOffsetX = var6.offsetX2d; + var3.modelOffsetY = var6.offsetY2d; + var3.modelZoom = var6.zoom2d; + if(var0 == 1205) { + var3.itemQuantityMode = 0; + } else if(var0 == 1212 | 1 == var6.isStackable) { + var3.itemQuantityMode = 1; + } else { + var3.itemQuantityMode = 2; + } + + if(var3.__bf > 0) { + var3.modelZoom = var3.modelZoom * 32 / var3.__bf; + } else if(var3.rawWidth > 0) { + var3.modelZoom = var3.modelZoom * 32 / var3.rawWidth; + } + + return 1; + } + } + + @ObfuscatedName("z") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "972977798" + ) + static void method578(int var0) { + Login.__cu_aw = 12; + Login.__cu_aj = var0; + } + + @ObfuscatedName("gu") + @ObfuscatedSignature( + signature = "(IIII)I", + garbageValue = "2095576499" + ) + @Export("getTileHeight") + static final int getTileHeight(int var0, int var1, int var2) { + int var3 = var0 >> 7; + int var4 = var1 >> 7; + if(var3 >= 0 && var4 >= 0 && var3 <= 103 && var4 <= 103) { + int var5 = var2; + if(var2 < 3 && (Tiles.Tiles_renderFlags[1][var3][var4] & 2) == 2) { + var5 = var2 + 1; + } + + int var6 = var0 & 127; + int var7 = var1 & 127; + int var8 = (128 - var6) * Tiles.Tiles_heights[var5][var3][var4] + var6 * Tiles.Tiles_heights[var5][var3 + 1][var4] >> 7; + int var9 = Tiles.Tiles_heights[var5][var3 + 1][var4 + 1] * var6 + Tiles.Tiles_heights[var5][var3][var4 + 1] * (128 - var6) >> 7; + return var7 * var9 + var8 * (128 - var7) >> 7; + } else { + return 0; + } + } +} diff --git a/rs-client/src/main/java/class322.java b/rs-client/src/main/java/class322.java new file mode 100644 index 0000000000..7b7f01256e --- /dev/null +++ b/rs-client/src/main/java/class322.java @@ -0,0 +1,27 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("le") +public class class322 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lja;" + ) + @Export("reflectionChecks") + public static IterableNodeDeque reflectionChecks; + + static { + reflectionChecks = new IterableNodeDeque(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;III)Lln;", + garbageValue = "-2000477161" + ) + @Export("readSprite") + public static Sprite readSprite(AbstractIndexCache var0, int var1, int var2) { + return !SpriteMask.method4392(var0, var1, var2)?null:class258.method4900(); + } +} diff --git a/rs-client/src/main/java/class328.java b/rs-client/src/main/java/class328.java new file mode 100644 index 0000000000..9de036e0ec --- /dev/null +++ b/rs-client/src/main/java/class328.java @@ -0,0 +1,37 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("lr") +public class class328 { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = -1119867679 + ) + @Export("indexedSpriteCount") + static int indexedSpriteCount; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = 161627197 + ) + @Export("indexedSpriteWidth") + static int indexedSpriteWidth; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = -76329055 + ) + @Export("indexedSpriteHeight") + static int indexedSpriteHeight; + @ObfuscatedName("w") + @Export("indexedSpriteOffsetXs") + static int[] indexedSpriteOffsetXs; + @ObfuscatedName("o") + @Export("indexedSpriteOffsetYs") + static int[] indexedSpriteOffsetYs; + @ObfuscatedName("l") + @Export("indexedSpritePalette") + static int[] indexedSpritePalette; + @ObfuscatedName("e") + @Export("spritePixels") + static byte[][] spritePixels; +} diff --git a/rs-client/src/main/java/class337.java b/rs-client/src/main/java/class337.java new file mode 100644 index 0000000000..fbd6228899 --- /dev/null +++ b/rs-client/src/main/java/class337.java @@ -0,0 +1,10 @@ +import java.io.File; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("lc") +public class class337 { + @ObfuscatedName("w") + @Export("clDat") + public static File clDat; +} diff --git a/rs-client/src/main/java/class39.java b/rs-client/src/main/java/class39.java new file mode 100644 index 0000000000..3d56e1aaf4 --- /dev/null +++ b/rs-client/src/main/java/class39.java @@ -0,0 +1,828 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("at") +public class class39 extends class21 { + @ObfuscatedName("gu") + @ObfuscatedSignature( + signature = "[Lln;" + ) + @Export("mapDotSprites") + static Sprite[] mapDotSprites; + @ObfuscatedName("z") + @ObfuscatedGetter( + intValue = -521428531 + ) + int field318; + @ObfuscatedName("j") + @ObfuscatedGetter( + intValue = 686082379 + ) + int field319; + @ObfuscatedName("s") + @ObfuscatedGetter( + intValue = 1610203543 + ) + int field321; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 2053974369 + ) + int field323; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "101973298" + ) + void method714(Buffer var1) { + int var2 = var1.readUnsignedByte(); + if(var2 != class31.field254.field255) { + throw new IllegalStateException(""); + } else { + super.field148 = var1.readUnsignedByte(); + super.field156 = var1.readUnsignedByte(); + super.field149 = var1.__ag_302(); + super.field146 = var1.__ag_302(); + this.field318 = var1.readUnsignedByte(); + this.field319 = var1.readUnsignedByte(); + super.field159 = var1.__ag_302(); + super.field147 = var1.__ag_302(); + this.field321 = var1.readUnsignedByte(); + this.field323 = var1.readUnsignedByte(); + super.field150 = var1.__ap_310(); + super.field152 = var1.__ap_310(); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)V", + garbageValue = "1937224298" + ) + void vmethod715(Buffer var1) { + super.field156 = Math.min(super.field156, 4); + super.field151 = new short[1][64][64]; + super.field145 = new short[super.field156][64][64]; + super.field154 = new byte[super.field156][64][64]; + super.field155 = new byte[super.field156][64][64]; + super.field144 = new class25[super.field156][64][64][]; + int var2 = var1.readUnsignedByte(); + if(var2 != class30.field247.field248) { + throw new IllegalStateException(""); + } else { + int var3 = var1.readUnsignedByte(); + int var4 = var1.readUnsignedByte(); + int var5 = var1.readUnsignedByte(); + int var6 = var1.readUnsignedByte(); + if(var3 == super.field159 && var4 == super.field147 && var5 == this.field321 && var6 == this.field323) { + for(int var7 = 0; var7 < 8; ++var7) { + for(int var8 = 0; var8 < 8; ++var8) { + this.method259(var7 + this.field321 * 8, var8 + this.field323 * 8, var1); + } + } + + } else { + throw new IllegalStateException(""); + } + } + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-2074777367" + ) + int method717() { + return this.field318; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "-914799830" + ) + int method718() { + return this.field319; + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(B)I", + garbageValue = "20" + ) + int method719() { + return this.field321; + } + + @ObfuscatedName("au") + @ObfuscatedSignature( + signature = "(I)I", + garbageValue = "793815646" + ) + int method720() { + return this.field323; + } + + public int hashCode() { + return super.field159 | super.field147 << 8 | this.field321 << 16 | this.field323 << 24; + } + + public boolean equals(Object var1) { + if(!(var1 instanceof class39)) { + return false; + } else { + class39 var2 = (class39)var1; + return var2.field159 == super.field159 && var2.field147 == super.field147?this.field321 == var2.field321 && var2.field323 == this.field323:false; + } + } + + @ObfuscatedName("gr") + @ObfuscatedSignature( + signature = "(Lbz;IIIIIB)V", + garbageValue = "-1" + ) + @Export("drawActor2d") + static final void drawActor2d(Actor var0, int var1, int var2, int var3, int var4, int var5) { + if(var0 != null && var0.isVisible()) { + if(var0 instanceof Npc) { + NpcDefinition var6 = ((Npc)var0).definition; + if(var6.transforms != null) { + var6 = var6.transform(); + } + + if(var6 == null) { + return; + } + } + + int var75 = Players.Players_count; + int[] var7 = Players.Players_indices; + byte var8 = 0; + Player var10; + if(var1 < var75 && var0.playerCycle == Client.cycle) { + var10 = (Player)var0; + boolean var9; + if(Client.__client_ke == 0) { + var9 = false; + } else if(var10 != Canvas.localPlayer) { + boolean var77 = (Client.__client_ke & 4) != 0; + boolean var78 = var77; + boolean var13; + if(!var77) { + var13 = (Client.__client_ke & 1) != 0; + var78 = var13 && var10.isFriend(); + } + + var13 = var78; + if(!var78) { + boolean var79 = (Client.__client_ke & 2) != 0; + var13 = var79 && var10.isClanMember(); + } + + var9 = var13; + } else { + var9 = class14.method169(); + } + + if(var9) { + Player var11 = (Player)var0; + if(var1 < var75) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight + 15); + AbstractFont var12 = (AbstractFont)Client.fontsMap.get(FontName.FontName_plain12); + byte var92 = 9; + var12.drawCentered(var11.username.getName(), var2 + Client.viewportTempX, var3 + Client.viewportTempY - var92, 16777215, 0); + var8 = 18; + } + } + } + + int var87 = -2; + int var15; + int var22; + int var23; + if(!var0.healthBars.isEmpty()) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight + 15); + + for(HealthBar var88 = (HealthBar)var0.healthBars.last(); var88 != null; var88 = (HealthBar)var0.healthBars.previous()) { + HealthBarUpdate var89 = var88.get(Client.cycle); + if(var89 == null) { + if(var88.isEmpty()) { + var88.remove(); + } + } else { + HealthBarDefinition var91 = var88.definition; + Sprite var76 = var91.getSprite2(); + Sprite var14 = var91.getSprite1(); + int var16 = 0; + if(var76 != null && var14 != null) { + if(var91.widthPadding * 2 < var14.subWidth) { + var16 = var91.widthPadding; + } + + var15 = var14.subWidth - var16 * 2; + } else { + var15 = var91.width; + } + + int var17 = 255; + boolean var18 = true; + int var19 = Client.cycle - var89.cycle; + int var20 = var15 * var89.health2 / var91.width; + int var21; + int var93; + if(var89.cycleOffset > var19) { + var21 = var91.int4 == 0?0:var91.int4 * (var19 / var91.int4); + var22 = var15 * var89.health / var91.width; + var93 = var21 * (var20 - var22) / var89.cycleOffset + var22; + } else { + var93 = var20; + var21 = var89.cycleOffset + var91.int5 - var19; + if(var91.int3 >= 0) { + var17 = (var21 << 8) / (var91.int5 - var91.int3); + } + } + + if(var89.health2 > 0 && var93 < 1) { + var93 = 1; + } + + if(var76 != null && var14 != null) { + if(var15 == var93) { + var93 += var16 * 2; + } else { + var93 += var16; + } + + var21 = var76.subHeight; + var87 += var21; + var22 = var2 + Client.viewportTempX - (var15 >> 1); + var23 = var3 + Client.viewportTempY - var87; + var22 -= var16; + if(var17 >= 0 && var17 < 255) { + var76.__h_508(var22, var23, var17); + Rasterizer2D.Rasterizer2D_expandClip(var22, var23, var22 + var93, var23 + var21); + var14.__h_508(var22, var23, var17); + } else { + var76.__a_505(var22, var23); + Rasterizer2D.Rasterizer2D_expandClip(var22, var23, var93 + var22, var21 + var23); + var14.__a_505(var22, var23); + } + + Rasterizer2D.Rasterizer2D_setClip(var2, var3, var2 + var4, var3 + var5); + var87 += 2; + } else { + var87 += 5; + if(Client.viewportTempX > -1) { + var21 = var2 + Client.viewportTempX - (var15 >> 1); + var22 = var3 + Client.viewportTempY - var87; + Rasterizer2D.Rasterizer2D_fillRectangle(var21, var22, var93, 5, 65280); + Rasterizer2D.Rasterizer2D_fillRectangle(var21 + var93, var22, var15 - var93, 5, 16711680); + } + + var87 += 2; + } + } + } + } + + if(var87 == -2) { + var87 += 7; + } + + var87 += var8; + if(var1 < var75) { + var10 = (Player)var0; + if(var10.isHidden) { + return; + } + + if(var10.headIconPk != -1 || var10.headIconPrayer != -1) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight + 15); + if(Client.viewportTempX > -1) { + if(var10.headIconPk != -1) { + var87 += 25; + class15.headIconPkSprites[var10.headIconPk].__a_505(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var87); + } + + if(var10.headIconPrayer != -1) { + var87 += 25; + ClientPreferences.headIconPrayerSprites[var10.headIconPrayer].__a_505(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var87); + } + } + } + + if(var1 >= 0 && Client.hintArrowType == 10 && var7[var1] == Client.hintArrowPlayerIndex) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight + 15); + if(Client.viewportTempX > -1) { + var87 += Player.headIconHintSprites[1].subHeight; + Player.headIconHintSprites[1].__a_505(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var87); + } + } + } else { + NpcDefinition var90 = ((Npc)var0).definition; + if(var90.transforms != null) { + var90 = var90.transform(); + } + + if(var90.headIconPrayer >= 0 && var90.headIconPrayer < ClientPreferences.headIconPrayerSprites.length) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight + 15); + if(Client.viewportTempX > -1) { + ClientPreferences.headIconPrayerSprites[var90.headIconPrayer].__a_505(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - 30); + } + } + + if(Client.hintArrowType == 1 && Client.npcIndices[var1 - var75] == Client.hintArrowNpcIndex && Client.cycle % 20 < 10) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight + 15); + if(Client.viewportTempX > -1) { + Player.headIconHintSprites[0].__a_505(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - 28); + } + } + } + + if(var0.overheadText != null && (var1 >= var75 || !var0.__az && (Client.publicChatMode == 4 || !var0.isAutoChatting && (Client.publicChatMode == 0 || Client.publicChatMode == 3 || Client.publicChatMode == 1 && ((Player)var0).isFriend())))) { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight); + if(Client.viewportTempX > -1 && Client.overheadTextCount < Client.overheadTextLimit) { + Client.overheadTextXOffsets[Client.overheadTextCount] = class2.fontBold12.stringWidth(var0.overheadText) / 2; + Client.overheadTextAscents[Client.overheadTextCount] = class2.fontBold12.ascent; + Client.overheadTextXs[Client.overheadTextCount] = Client.viewportTempX; + Client.overheadTextYs[Client.overheadTextCount] = Client.viewportTempY; + Client.overheadTextColors[Client.overheadTextCount] = var0.overheadTextColor; + Client.overheadTextEffects[Client.overheadTextCount] = var0.overheadTextEffect; + Client.overheadTextCyclesRemaining[Client.overheadTextCount] = var0.overheadTextCyclesRemaining; + Client.overheadText[Client.overheadTextCount] = var0.overheadText; + ++Client.overheadTextCount; + } + } + + for(int var80 = 0; var80 < 4; ++var80) { + int var96 = var0.hitSplatCycles[var80]; + int var97 = var0.hitSplatTypes[var80]; + HitSplatDefinition var95 = null; + int var98 = 0; + if(var97 >= 0) { + if(var96 <= Client.cycle) { + continue; + } + + var95 = class72.getHitSplatDefinition(var0.hitSplatTypes[var80]); + var98 = var95.__i; + if(var95 != null && var95.transforms != null) { + var95 = var95.transform(); + if(var95 == null) { + var0.hitSplatCycles[var80] = -1; + continue; + } + } + } else if(var96 < 0) { + continue; + } + + var15 = var0.hitSplatTypes2[var80]; + HitSplatDefinition var81 = null; + if(var15 >= 0) { + var81 = class72.getHitSplatDefinition(var15); + if(var81 != null && var81.transforms != null) { + var81 = var81.transform(); + } + } + + if(var96 - var98 <= Client.cycle) { + if(var95 == null) { + var0.hitSplatCycles[var80] = -1; + } else { + DevicePcmPlayerProvider.method840(var0, var0.defaultHeight / 2); + if(Client.viewportTempX > -1) { + if(var80 == 1) { + Client.viewportTempY -= 20; + } + + if(var80 == 2) { + Client.viewportTempX -= 15; + Client.viewportTempY -= 10; + } + + if(var80 == 3) { + Client.viewportTempX += 15; + Client.viewportTempY -= 10; + } + + Sprite var82 = null; + Sprite var83 = null; + Sprite var84 = null; + Sprite var85 = null; + var22 = 0; + var23 = 0; + int var24 = 0; + int var25 = 0; + int var26 = 0; + int var27 = 0; + int var28 = 0; + int var29 = 0; + Sprite var30 = null; + Sprite var31 = null; + Sprite var32 = null; + Sprite var33 = null; + int var34 = 0; + int var35 = 0; + int var36 = 0; + int var37 = 0; + int var38 = 0; + int var39 = 0; + int var40 = 0; + int var41 = 0; + int var42 = 0; + var82 = var95.__g_417(); + int var43; + if(var82 != null) { + var22 = var82.subWidth; + var43 = var82.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var26 = var82.yOffset; + } + + var83 = var95.__l_418(); + if(var83 != null) { + var23 = var83.subWidth; + var43 = var83.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var27 = var83.yOffset; + } + + var84 = var95.__e_419(); + if(var84 != null) { + var24 = var84.subWidth; + var43 = var84.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var28 = var84.yOffset; + } + + var85 = var95.__x_420(); + if(var85 != null) { + var25 = var85.subWidth; + var43 = var85.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var29 = var85.yOffset; + } + + if(var81 != null) { + var30 = var81.__g_417(); + if(var30 != null) { + var34 = var30.subWidth; + var43 = var30.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var38 = var30.yOffset; + } + + var31 = var81.__l_418(); + if(var31 != null) { + var35 = var31.subWidth; + var43 = var31.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var39 = var31.yOffset; + } + + var32 = var81.__e_419(); + if(var32 != null) { + var36 = var32.subWidth; + var43 = var32.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var40 = var32.yOffset; + } + + var33 = var81.__x_420(); + if(var33 != null) { + var37 = var33.subWidth; + var43 = var33.subHeight; + if(var43 > var42) { + var42 = var43; + } + + var41 = var33.yOffset; + } + } + + Font var86 = var95.getFont(); + if(var86 == null) { + var86 = ScriptEvent.fontPlain11; + } + + Font var44; + if(var81 != null) { + var44 = var81.getFont(); + if(var44 == null) { + var44 = ScriptEvent.fontPlain11; + } + } else { + var44 = ScriptEvent.fontPlain11; + } + + String var45 = null; + String var46 = null; + boolean var47 = false; + int var48 = 0; + var45 = var95.getString(var0.hitSplatValues[var80]); + int var94 = var86.stringWidth(var45); + if(var81 != null) { + var46 = var81.getString(var0.hitSplatValues2[var80]); + var48 = var44.stringWidth(var46); + } + + int var49 = 0; + int var50 = 0; + if(var23 > 0) { + if(var84 == null && var85 == null) { + var49 = 1; + } else { + var49 = var94 / var23 + 1; + } + } + + if(var81 != null && var35 > 0) { + if(var32 == null && var33 == null) { + var50 = 1; + } else { + var50 = var48 / var35 + 1; + } + } + + int var51 = 0; + int var52 = var51; + if(var22 > 0) { + var51 += var22; + } + + var51 += 2; + int var53 = var51; + if(var24 > 0) { + var51 += var24; + } + + int var54 = var51; + int var55 = var51; + int var56; + if(var23 > 0) { + var56 = var23 * var49; + var51 += var56; + var55 += (var56 - var94) / 2; + } else { + var51 += var94; + } + + var56 = var51; + if(var25 > 0) { + var51 += var25; + } + + int var57 = 0; + int var58 = 0; + int var59 = 0; + int var60 = 0; + int var61 = 0; + int var62; + if(var81 != null) { + var51 += 2; + var57 = var51; + if(var34 > 0) { + var51 += var34; + } + + var51 += 2; + var58 = var51; + if(var36 > 0) { + var51 += var36; + } + + var59 = var51; + var61 = var51; + if(var35 > 0) { + var62 = var35 * var50; + var51 += var62; + var61 += (var62 - var48) / 2; + } else { + var51 += var48; + } + + var60 = var51; + if(var37 > 0) { + var51 += var37; + } + } + + var62 = var0.hitSplatCycles[var80] - Client.cycle; + int var63 = var95.__t - var62 * var95.__t / var95.__i; + int var64 = var62 * var95.__y / var95.__i + -var95.__y; + int var65 = var63 + (var2 + Client.viewportTempX - (var51 >> 1)); + int var66 = var64 + (var3 + Client.viewportTempY - 12); + int var67 = var66; + int var68 = var42 + var66; + int var69 = var66 + var95.__r + 15; + int var70 = var69 - var86.maxAscent; + int var71 = var69 + var86.maxDescent; + if(var70 < var66) { + var67 = var70; + } + + if(var71 > var68) { + var68 = var71; + } + + int var72 = 0; + int var73; + int var74; + if(var81 != null) { + var72 = var66 + var81.__r + 15; + var73 = var72 - var44.maxAscent; + var74 = var72 + var44.maxDescent; + if(var73 < var67) { + ; + } + + if(var74 > var68) { + ; + } + } + + var73 = 255; + if(var95.__h >= 0) { + var73 = (var62 << 8) / (var95.__i - var95.__h); + } + + if(var73 >= 0 && var73 < 255) { + if(var82 != null) { + var82.__h_508(var52 + var65 - var26, var66, var73); + } + + if(var84 != null) { + var84.__h_508(var65 + var53 - var28, var66, var73); + } + + if(var83 != null) { + for(var74 = 0; var74 < var49; ++var74) { + var83.__h_508(var23 * var74 + (var65 + var54 - var27), var66, var73); + } + } + + if(var85 != null) { + var85.__h_508(var56 + var65 - var29, var66, var73); + } + + var86.drawAlpha(var45, var55 + var65, var69, var95.__n, 0, var73); + if(var81 != null) { + if(var30 != null) { + var30.__h_508(var65 + var57 - var38, var66, var73); + } + + if(var32 != null) { + var32.__h_508(var65 + var58 - var40, var66, var73); + } + + if(var31 != null) { + for(var74 = 0; var74 < var50; ++var74) { + var31.__h_508(var74 * var35 + (var59 + var65 - var39), var66, var73); + } + } + + if(var33 != null) { + var33.__h_508(var60 + var65 - var41, var66, var73); + } + + var44.drawAlpha(var46, var61 + var65, var72, var81.__n, 0, var73); + } + } else { + if(var82 != null) { + var82.__a_505(var52 + var65 - var26, var66); + } + + if(var84 != null) { + var84.__a_505(var65 + var53 - var28, var66); + } + + if(var83 != null) { + for(var74 = 0; var74 < var49; ++var74) { + var83.__a_505(var23 * var74 + (var54 + var65 - var27), var66); + } + } + + if(var85 != null) { + var85.__a_505(var56 + var65 - var29, var66); + } + + var86.draw(var45, var55 + var65, var69, var95.__n | -16777216, 0); + if(var81 != null) { + if(var30 != null) { + var30.__a_505(var65 + var57 - var38, var66); + } + + if(var32 != null) { + var32.__a_505(var58 + var65 - var40, var66); + } + + if(var31 != null) { + for(var74 = 0; var74 < var50; ++var74) { + var31.__a_505(var74 * var35 + (var65 + var59 - var39), var66); + } + } + + if(var33 != null) { + var33.__a_505(var60 + var65 - var41, var66); + } + + var44.draw(var46, var61 + var65, var72, var81.__n | -16777216, 0); + } + } + } + } + } + } + + } + } + + @ObfuscatedName("hv") + @ObfuscatedSignature( + signature = "(IIB)V", + garbageValue = "3" + ) + static final void method741(int var0, int var1) { + if(Client.menuOptionsCount >= 2 || Client.isItemSelected != 0 || Client.isSpellSelected) { + if(Client.showMouseOverText) { + int var2 = Client.menuOptionsCount - 1; + String var4; + if(Client.isItemSelected == 1 && Client.menuOptionsCount < 2) { + var4 = "Use" + " " + Client.selectedItemName + " " + "->"; + } else if(Client.isSpellSelected && Client.menuOptionsCount < 2) { + var4 = Client.selectedSpellActionName + " " + Client.selectedSpellName + " " + "->"; + } else { + String var5; + if(var2 < 0) { + var5 = ""; + } else if(Client.menuTargetNames[var2].length() > 0) { + var5 = Client.menuActions[var2] + " " + Client.menuTargetNames[var2]; + } else { + var5 = Client.menuActions[var2]; + } + + var4 = var5; + } + + if(Client.menuOptionsCount > 2) { + var4 = var4 + BufferedFile.colorStartTag(16777215) + " " + '/' + " " + (Client.menuOptionsCount - 2) + " more options"; + } + + class2.fontBold12.drawRandomAlphaAndSpacing(var4, var0 + 4, var1 + 15, 16777215, 0, Client.cycle / 1000); + } + } + } + + @ObfuscatedName("ib") + @ObfuscatedSignature( + signature = "([Lho;Lho;ZI)V", + garbageValue = "1840850218" + ) + @Export("revalidateWidgetScroll") + static void revalidateWidgetScroll(Widget[] var0, Widget var1, boolean var2) { + int var3 = var1.scrollWidth != 0?var1.scrollWidth:var1.width; + int var4 = var1.scrollHeight != 0?var1.scrollHeight:var1.height; + WorldMapRegion.notRevalidateWidgetScroll(var0, var1.id, var3, var4, var2); + if(var1.children != null) { + WorldMapRegion.notRevalidateWidgetScroll(var1.children, var1.id, var3, var4, var2); + } + + WidgetGroupParent var5 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var1.id); + if(var5 != null) { + int var6 = var5.group; + if(GroundItemPile.loadWidgetGroup(var6)) { + WorldMapRegion.notRevalidateWidgetScroll(Widget.widgets[var6], -1, var3, var4, var2); + } + } + + if(var1.contentType == 1337) { + ; + } + + } +} diff --git a/rs-client/src/main/java/class4.java b/rs-client/src/main/java/class4.java new file mode 100644 index 0000000000..a52dce6aa4 --- /dev/null +++ b/rs-client/src/main/java/class4.java @@ -0,0 +1,331 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("o") +final class class4 implements class0 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "Lir;" + ) + @Export("__o_m") + public static AbstractIndexCache __o_m; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/lang/Object;Lgr;I)V", + garbageValue = "-223205903" + ) + public void vmethod44(Object var1, Buffer var2) { + this.method45((String)var1, var2); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Lgr;I)Ljava/lang/Object;", + garbageValue = "704451908" + ) + public Object vmethod46(Buffer var1) { + return var1.readStringCp1252NullTerminated(); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Lgr;B)V", + garbageValue = "-17" + ) + void method45(String var1, Buffer var2) { + var2.writeStringCp1252NullTerminated(var1); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Lji;", + garbageValue = "253581236" + ) + public static ClientParameter[] method47() { + return new ClientParameter[]{ClientParameter.__ji_e, ClientParameter.__ji_m, ClientParameter.__ji_g, ClientParameter.__ji_d, ClientParameter.__ji_u, ClientParameter.__ji_o, ClientParameter.__ji_k, ClientParameter.__ji_j, ClientParameter.__ji_q, ClientParameter.__ji_z, ClientParameter.__ji_n, ClientParameter.__ji_a, ClientParameter.__ji_t, ClientParameter.__ji_w, ClientParameter.__ji_i, ClientParameter.__ji_s, ClientParameter.__ji_x, ClientParameter.__ji_f, ClientParameter.__ji_l}; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-843046456" + ) + public static void method55() { + OverlayDefinition.__jf_f.clear(); + } + + @ObfuscatedName("v") + @ObfuscatedSignature( + signature = "(ILcg;ZB)I", + garbageValue = "1" + ) + static int method54(int var0, Script var1, boolean var2) { + String var3; + if(var0 == 3100) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + WorldMapIcon1.method219(0, "", var3); + return 1; + } else if(var0 == 3101) { + class179.Interpreter_intStackSize -= 2; + class234.method4534(Canvas.localPlayer, Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize], Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + return 1; + } else if(var0 == 3103) { + if(!Interpreter.__bv_t) { + Interpreter.__bv_s = true; + } + + return 1; + } else { + int var10; + if(var0 == 3104) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var10 = 0; + if(UserComparator4.method3336(var3)) { + var10 = MouseHandler.method1085(var3); + } + + PacketBufferNode var12 = Interpreter.method1915(ClientPacket.__gs_s, Client.packetWriter.isaacCipher); + var12.packetBuffer.writeInt(var10); + Client.packetWriter.__q_167(var12); + return 1; + } else { + PacketBufferNode var14; + if(var0 == 3105) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var14 = Interpreter.method1915(ClientPacket.__gs_cl, Client.packetWriter.isaacCipher); + var14.packetBuffer.writeByte(var3.length() + 1); + var14.packetBuffer.writeStringCp1252NullTerminated(var3); + Client.packetWriter.__q_167(var14); + return 1; + } else if(var0 == 3106) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + var14 = Interpreter.method1915(ClientPacket.__gs_e, Client.packetWriter.isaacCipher); + var14.packetBuffer.writeByte(var3.length() + 1); + var14.packetBuffer.writeStringCp1252NullTerminated(var3); + Client.packetWriter.__q_167(var14); + return 1; + } else { + String var7; + int var15; + if(var0 == 3107) { + var15 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var7 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + WorldMapSection2.method583(var15, var7); + return 1; + } else if(var0 == 3108) { + class179.Interpreter_intStackSize -= 3; + var15 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var10 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + int var9 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2]; + Widget var13 = Huffman.getWidget(var9); + Players.clickWidget(var13, var15, var10); + return 1; + } else if(var0 == 3109) { + class179.Interpreter_intStackSize -= 2; + var15 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var10 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + Widget var11 = var2?WorldMapIcon1.__t_i:class12.__n_n; + Players.clickWidget(var11, var15, var10); + return 1; + } else if(var0 == 3110) { + AbstractRasterProvider.__lp_ca = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 3111) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ReflectionCheck.clientPreferences.roofsHidden?1:0; + return 1; + } else if(var0 == 3112) { + ReflectionCheck.clientPreferences.roofsHidden = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapSection0.method247(); + return 1; + } else if(var0 == 3113) { + var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize]; + boolean var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + WorldMapCacheName.method635(var3, var4, false); + return 1; + } else if(var0 == 3115) { + var15 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var14 = Interpreter.method1915(ClientPacket.__gs_as, Client.packetWriter.isaacCipher); + var14.packetBuffer.writeShort(var15); + Client.packetWriter.__q_167(var14); + return 1; + } else if(var0 == 3116) { + var15 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_stringStackSize -= 2; + var7 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize]; + String var5 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1]; + if(var7.length() > 500) { + return 1; + } else if(var5.length() > 500) { + return 1; + } else { + PacketBufferNode var6 = Interpreter.method1915(ClientPacket.__gs_j, Client.packetWriter.isaacCipher); + var6.packetBuffer.writeShort(1 + WorldMapRegion.method550(var7) + WorldMapRegion.method550(var5)); + var6.packetBuffer.writeStringCp1252NullTerminated(var7); + var6.packetBuffer.writeByte(var15); + var6.packetBuffer.writeStringCp1252NullTerminated(var5); + Client.packetWriter.__q_167(var6); + return 1; + } + } else if(var0 == 3117) { + Client.shiftClickDrop = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 3118) { + Client.showMouseOverText = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 3119) { + Client.renderSelf = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 3120) { + if(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1) { + Client.__client_ke |= 1; + } else { + Client.__client_ke &= -2; + } + + return 1; + } else if(var0 == 3121) { + if(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1) { + Client.__client_ke |= 2; + } else { + Client.__client_ke &= -3; + } + + return 1; + } else if(var0 == 3122) { + if(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1) { + Client.__client_ke |= 4; + } else { + Client.__client_ke &= -5; + } + + return 1; + } else if(var0 == 3123) { + if(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1) { + Client.__client_ke |= 8; + } else { + Client.__client_ke &= -9; + } + + return 1; + } else if(var0 == 3124) { + Client.__client_ke = 0; + return 1; + } else if(var0 == 3125) { + Client.showMouseCross = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 3126) { + Client.showLoadingMessages = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + return 1; + } else if(var0 == 3127) { + WorldMapAreaData.method705(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1); + return 1; + } else if(var0 == 3128) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class206.method4028()?1:0; + return 1; + } else if(var0 == 3129) { + class179.Interpreter_intStackSize -= 2; + Client.oculusOrbNormalSpeed = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + Client.__client_in = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]; + return 1; + } else if(var0 == 3130) { + class179.Interpreter_intStackSize -= 2; + return 1; + } else if(var0 == 3131) { + --class179.Interpreter_intStackSize; + return 1; + } else if(var0 == 3132) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = SoundCache.canvasWidth; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Huffman.canvasHeight; + return 1; + } else if(var0 == 3133) { + --class179.Interpreter_intStackSize; + return 1; + } else if(var0 == 3134) { + return 1; + } else if(var0 == 3135) { + class179.Interpreter_intStackSize -= 2; + return 1; + } else if(var0 == 3136) { + Client.__client_mf = 3; + Client.__client_ms = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + return 1; + } else if(var0 == 3137) { + Client.__client_mf = 2; + Client.__client_ms = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + return 1; + } else if(var0 == 3138) { + Client.__client_mf = 0; + return 1; + } else if(var0 == 3139) { + Client.__client_mf = 1; + return 1; + } else if(var0 == 3140) { + Client.__client_mf = 3; + Client.__client_ms = var2?WorldMapIcon1.__t_i.id:class12.__n_n.id; + return 1; + } else { + boolean var8; + if(var0 == 3141) { + var8 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + ReflectionCheck.clientPreferences.hideUsername = var8; + WorldMapSection0.method247(); + return 1; + } else if(var0 == 3142) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ReflectionCheck.clientPreferences.hideUsername?1:0; + return 1; + } else if(var0 == 3143) { + var8 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + Client.Login_isUsernameRemembered = var8; + if(!var8) { + ReflectionCheck.clientPreferences.rememberedUsername = ""; + WorldMapSection0.method247(); + } + + return 1; + } else if(var0 == 3144) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.Login_isUsernameRemembered?1:0; + return 1; + } else if(var0 == 3145) { + return 1; + } else if(var0 == 3146) { + var8 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + if(var8 == ReflectionCheck.clientPreferences.titleMusicDisabled) { + ReflectionCheck.clientPreferences.titleMusicDisabled = !var8; + WorldMapSection0.method247(); + } + + return 1; + } else if(var0 == 3147) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = ReflectionCheck.clientPreferences.titleMusicDisabled?0:1; + return 1; + } else if(var0 == 3148) { + return 1; + } else if(var0 == 3149) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + return 1; + } else if(var0 == 3150) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + return 1; + } else if(var0 == 3151) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + return 1; + } else if(var0 == 3152) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + return 1; + } else if(var0 == 3153) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Login.Login_loadingPercent; + return 1; + } else if(var0 == 3154) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = GrandExchangeOffer.method101(); + return 1; + } else { + return 2; + } + } + } + } + } + } +} diff --git a/rs-client/src/main/java/class40.java b/rs-client/src/main/java/class40.java new file mode 100644 index 0000000000..d8e3457f5d --- /dev/null +++ b/rs-client/src/main/java/class40.java @@ -0,0 +1,884 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ad") +public class class40 { + @ObfuscatedName("dl") + @ObfuscatedSignature( + signature = "Lit;" + ) + @Export("indexCache7") + static IndexCache indexCache7; + @ObfuscatedName("gs") + @Export("regionLandArchives") + static byte[][] regionLandArchives; + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1443846573 + ) + int field326; + @ObfuscatedName("f") + byte[][][] field329; + + class40(int var1) { + this.field326 = var1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIIIIIIIB)V", + garbageValue = "125" + ) + void method743(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + if(var7 != 0 && this.field326 != 0 && this.field329 != null) { + var8 = this.method744(var8, var7); + var7 = this.method774(var7); + Rasterizer2D.raster2d7(var1, var2, var5, var6, var3, var4, this.field329[var7 - 1][var8], this.field326); + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-203451964" + ) + int method744(int var1, int var2) { + if(var2 == 9) { + var1 = var1 + 1 & 3; + } + + if(var2 == 10) { + var1 = var1 + 3 & 3; + } + + if(var2 == 11) { + var1 = var1 + 3 & 3; + } + + return var1; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IB)I", + garbageValue = "-63" + ) + int method774(int var1) { + return var1 != 9 && var1 != 10?(var1 == 11?8:var1):1; + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1551779144" + ) + void method763() { + if(this.field329 == null) { + this.field329 = new byte[8][4][]; + this.method745(); + this.method748(); + this.method751(); + this.method750(); + this.method762(); + this.method752(); + this.method753(); + this.method754(); + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "196149319" + ) + void method745() { + byte[] var1 = new byte[this.field326 * this.field326]; + int var2 = 0; + + int var3; + int var4; + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[0][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[0][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[0][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[0][3] = var1; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1590087827" + ) + void method748() { + byte[] var1 = new byte[this.field326 * this.field326]; + int var2 = 0; + + int var3; + int var4; + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[1][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var2 >= 0 && var2 < var1.length) { + if(var4 >= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } else { + ++var2; + } + } + } + + this.field329[1][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 <= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[1][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 >= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[1][3] = var1; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "530017326" + ) + void method751() { + byte[] var1 = new byte[this.field326 * this.field326]; + int var2 = 0; + + int var3; + int var4; + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 <= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[2][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[2][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[2][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 >= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[2][3] = var1; + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-40" + ) + void method750() { + byte[] var1 = new byte[this.field326 * this.field326]; + int var2 = 0; + + int var3; + int var4; + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[3][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[3][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 >= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[3][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 <= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[3][3] = var1; + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-545325116" + ) + void method762() { + byte[] var1 = new byte[this.field326 * this.field326]; + int var2 = 0; + + int var3; + int var4; + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 >= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[4][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[4][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3 >> 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[4][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var2 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 <= var3 << 1) { + var1[var2] = -1; + } + + ++var2; + } + } + + this.field329[4][3] = var1; + } + + @ObfuscatedName("x") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "-2005544109" + ) + void method752() { + byte[] var1 = new byte[this.field326 * this.field326]; + boolean var2 = false; + var1 = new byte[this.field326 * this.field326]; + int var5 = 0; + + int var3; + int var4; + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[5][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var3 <= this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[5][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[5][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var3 >= this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[5][3] = var1; + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "-105" + ) + void method753() { + byte[] var1 = new byte[this.field326 * this.field326]; + boolean var2 = false; + var1 = new byte[this.field326 * this.field326]; + int var5 = 0; + + int var3; + int var4; + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[6][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 <= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[6][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 <= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[6][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 <= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[6][3] = var1; + } + + @ObfuscatedName("a") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2013517896" + ) + void method754() { + byte[] var1 = new byte[this.field326 * this.field326]; + boolean var2 = false; + var1 = new byte[this.field326 * this.field326]; + int var5 = 0; + + int var3; + int var4; + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[7][0] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = 0; var4 < this.field326; ++var4) { + if(var4 >= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[7][1] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = this.field326 - 1; var3 >= 0; --var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 >= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[7][2] = var1; + var1 = new byte[this.field326 * this.field326]; + var5 = 0; + + for(var3 = 0; var3 < this.field326; ++var3) { + for(var4 = this.field326 - 1; var4 >= 0; --var4) { + if(var4 >= var3 - this.field326 / 2) { + var1[var5] = -1; + } + + ++var5; + } + } + + this.field329[7][3] = var1; + } + + @ObfuscatedName("gf") + @ObfuscatedSignature( + signature = "(IIIII)V", + garbageValue = "-1557475479" + ) + @Export("drawEntities") + static final void drawEntities(int var0, int var1, int var2, int var3) { + ++Client.viewportDrawCount; + class229.method4514(); + class25.method349(); + TriBool.method5560(); + BufferedSource.method3423(true); + int var4 = Players.Players_count; + int[] var5 = Players.Players_indices; + + int var6; + for(var6 = 0; var6 < var4; ++var6) { + if(var5[var6] != Client.combatTargetPlayerIndex && var5[var6] != Client.localPlayerIndex) { + WorldMapCacheName.addPlayerToScene(Client.players[var5[var6]], true); + } + } + + BufferedSource.method3423(false); + + for(Projectile var20 = (Projectile)Client.projectiles.last(); var20 != null; var20 = (Projectile)Client.projectiles.previous()) { + if(var20.plane == SoundSystem.plane && Client.cycle <= var20.cycleEnd) { + if(Client.cycle >= var20.cycleStart) { + if(var20.targetIndex > 0) { + Npc var22 = Client.npcs[var20.targetIndex - 1]; + if(var22 != null && var22.x >= 0 && var22.x < 13312 && var22.y >= 0 && var22.y < 13312) { + var20.setDestination(var22.x, var22.y, class32.getTileHeight(var22.x, var22.y, var20.plane) - var20.endHeight, Client.cycle); + } + } + + if(var20.targetIndex < 0) { + var6 = -var20.targetIndex - 1; + Player var23; + if(var6 == Client.localPlayerIndex) { + var23 = Canvas.localPlayer; + } else { + var23 = Client.players[var6]; + } + + if(var23 != null && var23.x >= 0 && var23.x < 13312 && var23.y >= 0 && var23.y < 13312) { + var20.setDestination(var23.x, var23.y, class32.getTileHeight(var23.x, var23.y, var20.plane) - var20.endHeight, Client.cycle); + } + } + + var20.advance(Client.__client_gy); + class65.scene.__a_239(SoundSystem.plane, (int)var20.x, (int)var20.y, (int)var20.z, 60, var20, var20.yaw, -1L, false); + } + } else { + var20.remove(); + } + } + + for(GraphicsObject var25 = (GraphicsObject)Client.graphicsObjects.last(); var25 != null; var25 = (GraphicsObject)Client.graphicsObjects.previous()) { + if(var25.plane == SoundSystem.plane && !var25.isFinished) { + if(Client.cycle >= var25.cycleStart) { + var25.advance(Client.__client_gy); + if(var25.isFinished) { + var25.remove(); + } else { + class65.scene.__a_239(var25.plane, var25.x, var25.y, var25.height, 60, var25, 0, -1L, false); + } + } + } else { + var25.remove(); + } + } + + FontName.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_method1(); + int var7; + int var8; + int var9; + int var10; + int var11; + int var12; + int var13; + int var14; + int var21; + if(!Client.isCameraLocked) { + var4 = Client.cameraPitchTarget; + if(Client.__client_ik / 256 > var4) { + var4 = Client.__client_ik / 256; + } + + if(Client.__client_rh[4] && Client.__client_rl[4] + 128 > var4) { + var4 = Client.__client_rl[4] + 128; + } + + var21 = Client.minimapOrientation & 2047; + var6 = MouseHandler.oculusOrbFocalPointX; + var7 = MouseRecorder.__bu_hy; + var8 = ScriptEvent.oculusOrbFocalPointY; + var9 = var4 * 3 + 600; + var10 = ScriptEvent.method1176(var9, var3); + var11 = 2048 - var4 & 2047; + var12 = 2048 - var21 & 2047; + var13 = 0; + var14 = 0; + int var15 = var10; + int var16; + int var17; + int var18; + if(var11 != 0) { + var16 = Rasterizer3D.Rasterizer3D_sine[var11]; + var17 = Rasterizer3D.Rasterizer3D_cosine[var11]; + var18 = var14 * var17 - var16 * var10 >> 16; + var15 = var17 * var10 + var16 * var14 >> 16; + var14 = var18; + } + + if(var12 != 0) { + var16 = Rasterizer3D.Rasterizer3D_sine[var12]; + var17 = Rasterizer3D.Rasterizer3D_cosine[var12]; + var18 = var15 * var16 + var17 * var13 >> 16; + var15 = var15 * var17 - var16 * var13 >> 16; + var13 = var18; + } + + WorldMapSection1.cameraX = var6 - var13; + GrandExchangeEvents.cameraY = var7 - var14; + class11.cameraZ = var8 - var15; + WorldMapIcon1.cameraPitch = var4; + MusicPatchNode.cameraYaw = var21; + if(Client.oculusOrbState == 1 && Client.rights >= 2 && Client.cycle % 50 == 0 && (MouseHandler.oculusOrbFocalPointX >> 7 != Canvas.localPlayer.x >> 7 || ScriptEvent.oculusOrbFocalPointY >> 7 != Canvas.localPlayer.y >> 7)) { + var16 = Canvas.localPlayer.plane; + var17 = (MouseHandler.oculusOrbFocalPointX >> 7) + class50.baseX; + var18 = (ScriptEvent.oculusOrbFocalPointY >> 7) + GraphicsObject.baseY; + PacketBufferNode var19 = Interpreter.method1915(ClientPacket.__gs_bx, Client.packetWriter.isaacCipher); + var19.packetBuffer.writeIntME(Client.__client_il); + var19.packetBuffer.writeShortLE(var18); + var19.packetBuffer.__ai_315(var16); + var19.packetBuffer.writeShort(var17); + Client.packetWriter.__q_167(var19); + } + } + + if(!Client.isCameraLocked) { + var4 = UnitPriceComparator.method131(); + } else { + var4 = Login.method2061(); + } + + var21 = WorldMapSection1.cameraX; + var6 = GrandExchangeEvents.cameraY; + var7 = class11.cameraZ; + var8 = WorldMapIcon1.cameraPitch; + var9 = MusicPatchNode.cameraYaw; + + for(var10 = 0; var10 < 5; ++var10) { + if(Client.__client_rh[var10]) { + var11 = (int)(Math.random() * (double)(Client.__client_rd[var10] * 2 + 1) - (double)Client.__client_rd[var10] + Math.sin((double)Client.__client_rk[var10] * ((double)Client.__client_rj[var10] / 100.0D)) * (double)Client.__client_rl[var10]); + if(var10 == 0) { + WorldMapSection1.cameraX += var11; + } + + if(var10 == 1) { + GrandExchangeEvents.cameraY += var11; + } + + if(var10 == 2) { + class11.cameraZ += var11; + } + + if(var10 == 3) { + MusicPatchNode.cameraYaw = var11 + MusicPatchNode.cameraYaw & 2047; + } + + if(var10 == 4) { + WorldMapIcon1.cameraPitch += var11; + if(WorldMapIcon1.cameraPitch < 128) { + WorldMapIcon1.cameraPitch = 128; + } + + if(WorldMapIcon1.cameraPitch > 383) { + WorldMapIcon1.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 { + ViewportMouse.ViewportMouse_isInViewport = false; + ViewportMouse.ViewportMouse_entityCount = 0; + } + + class13.method163(); + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var2, var3, 0); + class13.method163(); + var12 = Rasterizer3D.Rasterizer3D_zoom; + Rasterizer3D.Rasterizer3D_zoom = Client.viewportZoom; + class65.scene.draw(WorldMapSection1.cameraX, GrandExchangeEvents.cameraY, class11.cameraZ, WorldMapIcon1.cameraPitch, MusicPatchNode.cameraYaw, var4); + Rasterizer3D.Rasterizer3D_zoom = var12; + class13.method163(); + class65.scene.clearTempGameObjects(); + UrlRequester.method3258(var0, var1, var2, var3); + UnitPriceComparator.method136(var0, var1); + ((TextureProvider)Rasterizer3D.Rasterizer3D_textureLoader).animate(Client.__client_gy); + Client.__client_jc = 0; + var13 = (Canvas.localPlayer.x >> 7) + class50.baseX; + var14 = (Canvas.localPlayer.y >> 7) + GraphicsObject.baseY; + if(var13 >= 3053 && var13 <= 3156 && var14 >= 3056 && var14 <= 3136) { + Client.__client_jc = 1; + } + + if(var13 >= 3072 && var13 <= 3118 && var14 >= 9492 && var14 <= 9535) { + Client.__client_jc = 1; + } + + if(Client.__client_jc == 1 && var13 >= 3139 && var13 <= 3199 && var14 >= 3008 && var14 <= 3062) { + Client.__client_jc = 0; + } + + WorldMapSection1.cameraX = var21; + GrandExchangeEvents.cameraY = var6; + class11.cameraZ = var7; + WorldMapIcon1.cameraPitch = var8; + MusicPatchNode.cameraYaw = var9; + if(Client.isLoading) { + byte var24 = 0; + var14 = var24 + NetCache.NetCache_pendingPriorityWritesCount + NetCache.NetCache_pendingPriorityResponsesCount; + if(var14 == 0) { + Client.isLoading = false; + } + } + + if(Client.isLoading) { + Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var2, var3, 0); + class68.drawLoadingMessage("Loading - please wait.", false); + } + + } +} diff --git a/rs-client/src/main/java/class46.java b/rs-client/src/main/java/class46.java new file mode 100644 index 0000000000..c5863c981e --- /dev/null +++ b/rs-client/src/main/java/class46.java @@ -0,0 +1,25 @@ +import java.applet.Applet; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; +import netscape.javascript.JSObject; + +@ObfuscatedName("au") +public class class46 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Ljava/applet/Applet;Ljava/lang/String;B)V", + garbageValue = "0" + ) + public static void method850(Applet var0, String var1) throws Throwable { + JSObject.getWindow(var0).eval(var1); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/applet/Applet;Ljava/lang/String;B)Ljava/lang/Object;", + garbageValue = "6" + ) + static Object method851(Applet var0, String var1) throws Throwable { + return JSObject.getWindow(var0).call(var1, (Object[])null); + } +} diff --git a/rs-client/src/main/java/class48.java b/rs-client/src/main/java/class48.java new file mode 100644 index 0000000000..fbbac8a5e6 --- /dev/null +++ b/rs-client/src/main/java/class48.java @@ -0,0 +1,73 @@ +import javax.imageio.ImageIO; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("aa") +public class class48 { + static { + ImageIO.setUseCache(false); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)[Lij;", + garbageValue = "-818052349" + ) + public static PlayerType[] method865() { + return new PlayerType[]{PlayerType.PlayerType_normal, PlayerType.PlayerType_ironman, PlayerType.PlayerType_hardcoreIronman, PlayerType.PlayerType_ultimateIronman, PlayerType.PlayerType_playerModerator, PlayerType.PlayerType_jagexModerator}; + } + + @ObfuscatedName("fd") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "643714573" + ) + static final void method868() { + if(Client.__client_fd > 0) { + TextureProvider.method2773(); + } else { + Client.timer.__f_454(); + GameShell.updateGameState(40); + ClientParameter.__ji_fp = Client.packetWriter.getSocket(); + Client.packetWriter.removeSocket(); + } + } + + @ObfuscatedName("je") + @ObfuscatedSignature( + signature = "(Lho;I)Lho;", + garbageValue = "-1926681563" + ) + static Widget method869(Widget var0) { + Widget var2 = var0; + int var3 = WorldMapRegion.method568(class1.getWidgetClickMask(var0)); + Widget var1; + if(var3 == 0) { + var1 = null; + } else { + int var4 = 0; + + while(true) { + if(var4 >= var3) { + var1 = var2; + break; + } + + var2 = Huffman.getWidget(var2.parentId); + if(var2 == null) { + var1 = null; + break; + } + + ++var4; + } + } + + Widget var5 = var1; + if(var1 == null) { + var5 = var0.parent; + } + + return var5; + } +} diff --git a/rs-client/src/main/java/class50.java b/rs-client/src/main/java/class50.java new file mode 100644 index 0000000000..41a84cb467 --- /dev/null +++ b/rs-client/src/main/java/class50.java @@ -0,0 +1,266 @@ +import java.applet.Applet; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("af") +public class class50 { + @ObfuscatedName("m") + @Export("__af_m") + public static Applet __af_m; + @ObfuscatedName("f") + @Export("__af_f") + public static String __af_f; + @ObfuscatedName("ei") + @Export("worldHost") + static String worldHost; + @ObfuscatedName("ff") + @ObfuscatedGetter( + intValue = -790717597 + ) + @Export("baseX") + static int baseX; + + static { + __af_m = null; + __af_f = ""; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IB)Lio;", + garbageValue = "20" + ) + @Export("getSpotAnimationDefinition") + public static SpotAnimationDefinition getSpotAnimationDefinition(int var0) { + SpotAnimationDefinition var1 = (SpotAnimationDefinition)SpotAnimationDefinition.SpotAnimationDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = SpotAnimationDefinition.SpotAnimationDefinition_indexCache.takeRecord(13, var0); + var1 = new SpotAnimationDefinition(); + var1.id = var0; + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + SpotAnimationDefinition.SpotAnimationDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Ljr;", + garbageValue = "151801733" + ) + @Export("getObjectDefinition") + public static ObjectDefinition getObjectDefinition(int var0) { + ObjectDefinition var1 = (ObjectDefinition)ObjectDefinition.ObjectDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = ObjectDefinition.ObjectDefinition_indexCache.takeRecord(6, var0); + var1 = new ObjectDefinition(); + var1.id = var0; + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + var1.init(); + if(var1.isSolid) { + var1.interactType = 0; + var1.boolean1 = false; + } + + ObjectDefinition.ObjectDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("gc") + @ObfuscatedSignature( + signature = "(ZLhx;B)V", + garbageValue = "83" + ) + @Export("loadRegions") + static final void loadRegions(boolean var0, PacketBuffer var1) { + Client.isInInstance = var0; + int var2; + int var3; + int var5; + int var6; + int var7; + int var8; + if(!Client.isInInstance) { + var2 = var1.__bm_326(); + var3 = var1.__bu_325(); + int var4 = var1.__ag_302(); + class190.xteaKeys = new int[var4][4]; + + for(var5 = 0; var5 < var4; ++var5) { + for(var6 = 0; var6 < 4; ++var6) { + class190.xteaKeys[var5][var6] = var1.readInt(); + } + } + + class308.regions = new int[var4]; + IndexCacheLoader.regionMapArchiveIds = new int[var4]; + MouseHandler.regionLandArchiveIds = new int[var4]; + class40.regionLandArchives = new byte[var4][]; + HealthBarUpdate.regionMapArchives = new byte[var4][]; + boolean var16 = false; + if((var3 / 8 == 48 || var3 / 8 == 49) && var2 / 8 == 48) { + var16 = true; + } + + if(var3 / 8 == 48 && var2 / 8 == 148) { + var16 = true; + } + + var4 = 0; + + for(var6 = (var3 - 6) / 8; var6 <= (var3 + 6) / 8; ++var6) { + for(var7 = (var2 - 6) / 8; var7 <= (var2 + 6) / 8; ++var7) { + var8 = var7 + (var6 << 8); + if(!var16 || var7 != 49 && var7 != 149 && var7 != 147 && var6 != 50 && (var6 != 49 || var7 != 47)) { + class308.regions[var4] = var8; + IndexCacheLoader.regionMapArchiveIds[var4] = SecureRandomFuture.indexCache5.getArchiveId("m" + var6 + "_" + var7); + MouseHandler.regionLandArchiveIds[var4] = SecureRandomFuture.indexCache5.getArchiveId("l" + var6 + "_" + var7); + ++var4; + } + } + } + + DynamicObject.method2224(var3, var2, true); + } else { + var2 = var1.__bu_325(); + var3 = var1.__bm_326(); + boolean var15 = var1.readUnsignedByte() == 1; + var5 = var1.__ag_302(); + var1.importIndex(); + + int var9; + for(var6 = 0; var6 < 4; ++var6) { + for(var7 = 0; var7 < 13; ++var7) { + for(var8 = 0; var8 < 13; ++var8) { + var9 = var1.readBits(1); + if(var9 == 1) { + Client.instanceChunkTemplates[var6][var7][var8] = var1.readBits(26); + } else { + Client.instanceChunkTemplates[var6][var7][var8] = -1; + } + } + } + } + + var1.exportIndex(); + class190.xteaKeys = new int[var5][4]; + + for(var6 = 0; var6 < var5; ++var6) { + for(var7 = 0; var7 < 4; ++var7) { + class190.xteaKeys[var6][var7] = var1.readInt(); + } + } + + class308.regions = new int[var5]; + IndexCacheLoader.regionMapArchiveIds = new int[var5]; + MouseHandler.regionLandArchiveIds = new int[var5]; + class40.regionLandArchives = new byte[var5][]; + HealthBarUpdate.regionMapArchives = new byte[var5][]; + var5 = 0; + + for(var6 = 0; var6 < 4; ++var6) { + for(var7 = 0; var7 < 13; ++var7) { + for(var8 = 0; var8 < 13; ++var8) { + var9 = Client.instanceChunkTemplates[var6][var7][var8]; + if(var9 != -1) { + int var10 = var9 >> 14 & 1023; + int var11 = var9 >> 3 & 2047; + int var12 = (var10 / 8 << 8) + var11 / 8; + + int var13; + for(var13 = 0; var13 < var5; ++var13) { + if(class308.regions[var13] == var12) { + var12 = -1; + break; + } + } + + if(var12 != -1) { + class308.regions[var5] = var12; + var13 = var12 >> 8 & 255; + int var14 = var12 & 255; + IndexCacheLoader.regionMapArchiveIds[var5] = SecureRandomFuture.indexCache5.getArchiveId("m" + var13 + "_" + var14); + MouseHandler.regionLandArchiveIds[var5] = SecureRandomFuture.indexCache5.getArchiveId("l" + var13 + "_" + var14); + ++var5; + } + } + } + } + } + + DynamicObject.method2224(var3, var2, !var15); + } + + } + + @ObfuscatedName("kh") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;ZI)V", + garbageValue = "-2128641115" + ) + static void method900(String var0, boolean var1) { + var0 = var0.toLowerCase(); + short[] var2 = new short[16]; + int var3 = 0; + + for(int var4 = 0; var4 < class83.__cm_e; ++var4) { + ItemDefinition var5 = Skills.getItemDefinition(var4); + if((!var1 || var5.isTradable) && var5.noteTemplate == -1 && var5.name.toLowerCase().indexOf(var0) != -1) { + if(var3 >= 250) { + WorldMapSection0.__y_sn = -1; + AttackOption.__cj_sp = null; + return; + } + + if(var3 >= var2.length) { + short[] var6 = new short[var2.length * 2]; + + for(int var7 = 0; var7 < var3; ++var7) { + var6[var7] = var2[var7]; + } + + var2 = var6; + } + + var2[var3++] = (short)var4; + } + } + + AttackOption.__cj_sp = var2; + class231.__hb_sg = 0; + WorldMapSection0.__y_sn = var3; + String[] var8 = new String[WorldMapSection0.__y_sn]; + + for(int var9 = 0; var9 < WorldMapSection0.__y_sn; ++var9) { + var8[var9] = Skills.getItemDefinition(var2[var9]).name; + } + + Huffman.method3695(var8, AttackOption.__cj_sp); + } + + @ObfuscatedName("kk") + @ObfuscatedSignature( + signature = "([BII)V", + garbageValue = "-522943529" + ) + static void method902(byte[] var0, int var1) { + if(Client.__client_ev == null) { + Client.__client_ev = new byte[24]; + } + + class212.method4109(var0, var1, Client.__client_ev, 0, 24); + } +} diff --git a/rs-client/src/main/java/class54.java b/rs-client/src/main/java/class54.java new file mode 100644 index 0000000000..e468e14b19 --- /dev/null +++ b/rs-client/src/main/java/class54.java @@ -0,0 +1,1200 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bs") +public final class class54 { + @ObfuscatedName("nb") + @ObfuscatedGetter( + intValue = -1247107945 + ) + @Export("__bs_nb") + static int __bs_nb; + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "1587830917" + ) + static int method1086(int var0, int var1) { + long var2 = (long)((var0 << 16) + var1); + return ModelData0.NetCache_currentResponse != null && var2 == ModelData0.NetCache_currentResponse.key?class22.NetCache_responseArchiveBuffer.index * 99 / (class22.NetCache_responseArchiveBuffer.array.length - ModelData0.NetCache_currentResponse.padding) + 1:0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(IB)Z", + garbageValue = "1" + ) + public static boolean method1090(int var0) { + return (var0 >> 20 & 1) != 0; + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(Lba;I)V", + garbageValue = "-603753561" + ) + static void method1092(GameShell var0) { + int var3; + int var15; + if(Login.__cu_bk) { + while(true) { + if(!Decimator.method2490()) { + if(MouseHandler.MouseHandler_lastButton != 1 && (AbstractRasterProvider.__lp_ca || MouseHandler.MouseHandler_lastButton != 4)) { + break; + } + + int var1 = Login.__cu_q + 280; + if(MouseHandler.MouseHandler_lastPressedX >= var1 && MouseHandler.MouseHandler_lastPressedX <= var1 + 14 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(0, 0); + break; + } + + if(MouseHandler.MouseHandler_lastPressedX >= var1 + 15 && MouseHandler.MouseHandler_lastPressedX <= var1 + 80 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(0, 1); + break; + } + + int var2 = Login.__cu_q + 390; + if(MouseHandler.MouseHandler_lastPressedX >= var2 && MouseHandler.MouseHandler_lastPressedX <= var2 + 14 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(1, 0); + break; + } + + if(MouseHandler.MouseHandler_lastPressedX >= var2 + 15 && MouseHandler.MouseHandler_lastPressedX <= var2 + 80 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(1, 1); + break; + } + + var3 = Login.__cu_q + 500; + if(MouseHandler.MouseHandler_lastPressedX >= var3 && MouseHandler.MouseHandler_lastPressedX <= var3 + 14 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(2, 0); + break; + } + + if(MouseHandler.MouseHandler_lastPressedX >= var3 + 15 && MouseHandler.MouseHandler_lastPressedX <= var3 + 80 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(2, 1); + break; + } + + var15 = Login.__cu_q + 610; + if(MouseHandler.MouseHandler_lastPressedX >= var15 && MouseHandler.MouseHandler_lastPressedX <= var15 + 14 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(3, 0); + break; + } + + if(MouseHandler.MouseHandler_lastPressedX >= var15 + 15 && MouseHandler.MouseHandler_lastPressedX <= var15 + 80 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedY <= 18) { + Interpreter.method1975(3, 1); + break; + } + + if(MouseHandler.MouseHandler_lastPressedX >= Login.__cu_q + 708 && MouseHandler.MouseHandler_lastPressedY >= 4 && MouseHandler.MouseHandler_lastPressedX <= Login.__cu_q + 708 + 50 && MouseHandler.MouseHandler_lastPressedY <= 20) { + FontName.method5636(); + break; + } + + if(Login.__cu_bl != -1) { + World var13 = ItemContainer.worlds[Login.__cu_bl]; + class31.changeWorld(var13); + FontName.method5636(); + } else { + if(Login.__cu_br > 0 && SecureRandomFuture.__cn_bu != null && MouseHandler.MouseHandler_lastPressedX >= 0 && MouseHandler.MouseHandler_lastPressedX <= SecureRandomFuture.__cn_bu.subWidth && MouseHandler.MouseHandler_lastPressedY >= Huffman.canvasHeight / 2 - 50 && MouseHandler.MouseHandler_lastPressedY <= Huffman.canvasHeight / 2 + 50) { + --Login.__cu_br; + } + + if(Login.__cu_br < Login.__cu_bj && NetSocket.__fb_bm != null && MouseHandler.MouseHandler_lastPressedX >= SoundCache.canvasWidth - NetSocket.__fb_bm.subWidth - 5 && MouseHandler.MouseHandler_lastPressedX <= SoundCache.canvasWidth && MouseHandler.MouseHandler_lastPressedY >= Huffman.canvasHeight / 2 - 50 && MouseHandler.MouseHandler_lastPressedY <= Huffman.canvasHeight / 2 + 50) { + ++Login.__cu_br; + } + } + break; + } + + if(IndexStoreAction.__ik_cn == 13) { + FontName.method5636(); + break; + } + + if(IndexStoreAction.__ik_cn == 96) { + if(Login.__cu_br > 0 && SecureRandomFuture.__cn_bu != null) { + --Login.__cu_br; + } + } else if(IndexStoreAction.__ik_cn == 97 && Login.__cu_br < Login.__cu_bj && NetSocket.__fb_bm != null) { + ++Login.__cu_br; + } + } + + } else { + if((MouseHandler.MouseHandler_lastButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_lastButton == 4) && MouseHandler.MouseHandler_lastPressedX >= Login.__cu_q + 765 - 50 && MouseHandler.MouseHandler_lastPressedY >= 453) { + ReflectionCheck.clientPreferences.titleMusicDisabled = !ReflectionCheck.clientPreferences.titleMusicDisabled; + WorldMapSection0.method247(); + if(!ReflectionCheck.clientPreferences.titleMusicDisabled) { + class204.method4011(UserComparator3.indexCache6, "scape main", "", 255, false); + } else { + class214.midiPcmStream.clear(); + class214.__hf_o = 1; + class214.__hf_u = null; + } + } + + if(Client.gameState != 5) { + if(-1L == Login.__cu_bi) { + Login.__cu_bi = class203.currentTimeMs() + 1000L; + } + + long var11 = class203.currentTimeMs(); + if(AbstractIndexCache.method4585() && -1L == Login.__cu_bz) { + Login.__cu_bz = var11; + if(Login.__cu_bz > Login.__cu_bi) { + Login.__cu_bi = Login.__cu_bz; + } + } + + if(Client.gameState == 10 || Client.gameState == 11) { + if(Client.language == 0) { + if(MouseHandler.MouseHandler_lastButton == 1 || !AbstractRasterProvider.__lp_ca && MouseHandler.MouseHandler_lastButton == 4) { + var3 = Login.__cu_q + 5; + short var4 = 463; + byte var5 = 100; + byte var6 = 35; + if(MouseHandler.MouseHandler_lastPressedX >= var3 && MouseHandler.MouseHandler_lastPressedX <= var3 + var5 && MouseHandler.MouseHandler_lastPressedY >= var4 && MouseHandler.MouseHandler_lastPressedY <= var6 + var4) { + if(ClientParameter.loadWorlds()) { + Login.__cu_bk = true; + Login.__cu_br = 0; + Login.__cu_bj = 0; + } + + return; + } + } + + if(FriendLoginUpdate.__kn_x != null && ClientParameter.loadWorlds()) { + Login.__cu_bk = true; + Login.__cu_br = 0; + Login.__cu_bj = 0; + } + } + + var3 = MouseHandler.MouseHandler_lastButton; + var15 = MouseHandler.MouseHandler_lastPressedX; + int var16 = MouseHandler.MouseHandler_lastPressedY; + if(var3 == 0) { + var15 = MouseHandler.MouseHandler_x; + var16 = MouseHandler.MouseHandler_y; + } + + if(!AbstractRasterProvider.__lp_ca && var3 == 4) { + var3 = 1; + } + + int var7; + short var8; + if(Login.__cu_aw == 0) { + boolean var17 = false; + + while(Decimator.method2490()) { + if(IndexStoreAction.__ik_cn == 84) { + var17 = true; + } + } + + var7 = Varps.__hv_h - 80; + var8 = 291; + if(var3 == 1 && var15 >= var7 - 75 && var15 <= var7 + 75 && var16 >= var8 - 20 && var16 <= var8 + 20) { + WorldMapCacheName.method635(Message.method1227("secure", true) + "m=account-creation/g=oldscape/create_account_funnel.ws", true, false); + } + + var7 = Varps.__hv_h + 80; + if(var3 == 1 && var15 >= var7 - 75 && var15 <= var7 + 75 && var16 >= var8 - 20 && var16 <= var8 + 20 || var17) { + if((Client.worldProperties & 33554432) != 0) { + Login.Login_response0 = ""; + Login.Login_response1 = "This is a Beta world."; + Login.Login_response2 = "Your normal account will not be affected."; + Login.Login_response3 = ""; + Login.__cu_aw = 1; + class196.method3740(); + } else if((Client.worldProperties & 4) != 0) { + if((Client.worldProperties & 1024) != 0) { + Login.Login_response1 = "This is a High Risk PvP world."; + Login.Login_response2 = "Players can attack each other almost everywhere"; + Login.Login_response3 = "and the Protect Item prayer won\'t work."; + } else { + Login.Login_response1 = "This is a PvP world."; + Login.Login_response2 = "Players can attack each other"; + Login.Login_response3 = "almost everywhere."; + } + + Login.Login_response0 = "Warning!"; + Login.__cu_aw = 1; + class196.method3740(); + } else if((Client.worldProperties & 1024) != 0) { + Login.Login_response1 = "This is a High Risk world."; + Login.Login_response2 = "The Protect Item prayer will"; + Login.Login_response3 = "not work on this world."; + Login.Login_response0 = "Warning!"; + Login.__cu_aw = 1; + class196.method3740(); + } else { + MouseHandler.method1084(false); + } + } + } else { + int var18; + short var20; + if(Login.__cu_aw != 1) { + boolean var9; + int var10; + short var19; + if(Login.__cu_aw == 2) { + var19 = 201; + var18 = var19 + 52; + if(var3 == 1 && var16 >= var18 - 12 && var16 < var18 + 2) { + Login.currentLoginField = 0; + } + + var18 += 15; + if(var3 == 1 && var16 >= var18 - 12 && var16 < var18 + 2) { + Login.currentLoginField = 1; + } + + var18 += 15; + var19 = 361; + if(TilePaint.__eb_ah != null) { + var7 = TilePaint.__eb_ah.__q / 2; + if(var3 == 1 && var15 >= TilePaint.__eb_ah.__m - var7 && var15 <= var7 + TilePaint.__eb_ah.__m && var16 >= var19 - 15 && var16 < var19) { + switch(Login.__cu_ac) { + case 1: + method1089("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); + Login.__cu_aw = 5; + return; + case 2: + WorldMapCacheName.method635("https://support.runescape.com/hc/en-gb", true, false); + } + } + } + + var7 = Varps.__hv_h - 80; + var8 = 321; + if(var3 == 1 && var15 >= var7 - 75 && var15 <= var7 + 75 && var16 >= var8 - 20 && var16 <= var8 + 20) { + Login.Login_username = Login.Login_username.trim(); + if(Login.Login_username.length() == 0) { + method1089("", "Please enter your username/email address.", ""); + return; + } + + if(Login.Login_password.length() == 0) { + method1089("", "Please enter your password.", ""); + return; + } + + method1089("", "Connecting to server...", ""); + class15.method184(false); + GameShell.updateGameState(20); + return; + } + + var7 = Login.__cu_y + 180 + 80; + if(var3 == 1 && var15 >= var7 - 75 && var15 <= var7 + 75 && var16 >= var8 - 20 && var16 <= var8 + 20) { + Login.__cu_aw = 0; + Login.Login_username = ""; + Login.Login_password = ""; + class13.__i_af = 0; + Login.__cu_ai = ""; + Login.__cu_ba = true; + } + + var7 = Varps.__hv_h + -117; + var8 = 277; + Login.__cu_aa = var15 >= var7 && var15 < var7 + class168.__fs_au && var16 >= var8 && var16 < var8 + GroundItemPile.__dr_ao; + if(var3 == 1 && Login.__cu_aa) { + Client.Login_isUsernameRemembered = !Client.Login_isUsernameRemembered; + if(!Client.Login_isUsernameRemembered && ReflectionCheck.clientPreferences.rememberedUsername != null) { + ReflectionCheck.clientPreferences.rememberedUsername = null; + WorldMapSection0.method247(); + } + } + + var7 = Varps.__hv_h + 24; + var8 = 277; + Login.__cu_ax = var15 >= var7 && var15 < var7 + class168.__fs_au && var16 >= var8 && var16 < var8 + GroundItemPile.__dr_ao; + if(var3 == 1 && Login.__cu_ax) { + ReflectionCheck.clientPreferences.hideUsername = !ReflectionCheck.clientPreferences.hideUsername; + if(!ReflectionCheck.clientPreferences.hideUsername) { + Login.Login_username = ""; + ReflectionCheck.clientPreferences.rememberedUsername = null; + class196.method3740(); + } + + WorldMapSection0.method247(); + } + + while(true) { + while(Decimator.method2490()) { + var9 = false; + + for(var10 = 0; var10 < "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-_=+[{]};:\'@#~,<.>/?\\| ".length(); ++var10) { + if(GzipDecompressor.__go_ck == "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-_=+[{]};:\'@#~,<.>/?\\| ".charAt(var10)) { + var9 = true; + break; + } + } + + if(IndexStoreAction.__ik_cn == 13) { + Login.__cu_aw = 0; + Login.Login_username = ""; + Login.Login_password = ""; + class13.__i_af = 0; + Login.__cu_ai = ""; + Login.__cu_ba = true; + } else if(Login.currentLoginField == 0) { + if(IndexStoreAction.__ik_cn == 85 && Login.Login_username.length() > 0) { + Login.Login_username = Login.Login_username.substring(0, Login.Login_username.length() - 1); + } + + if(IndexStoreAction.__ik_cn == 84 || IndexStoreAction.__ik_cn == 80) { + Login.currentLoginField = 1; + } + + if(var9 && Login.Login_username.length() < 320) { + Login.Login_username = Login.Login_username + GzipDecompressor.__go_ck; + } + } else if(Login.currentLoginField == 1) { + if(IndexStoreAction.__ik_cn == 85 && Login.Login_password.length() > 0) { + Login.Login_password = Login.Login_password.substring(0, Login.Login_password.length() - 1); + } + + if(IndexStoreAction.__ik_cn == 84 || IndexStoreAction.__ik_cn == 80) { + Login.currentLoginField = 0; + } + + if(IndexStoreAction.__ik_cn == 84) { + Login.Login_username = Login.Login_username.trim(); + if(Login.Login_username.length() == 0) { + method1089("", "Please enter your username/email address.", ""); + return; + } + + if(Login.Login_password.length() == 0) { + method1089("", "Please enter your password.", ""); + return; + } + + method1089("", "Connecting to server...", ""); + class15.method184(false); + GameShell.updateGameState(20); + return; + } + + if(var9 && Login.Login_password.length() < 20) { + Login.Login_password = Login.Login_password + GzipDecompressor.__go_ck; + } + } + } + + return; + } + } else if(Login.__cu_aw == 3) { + var18 = Login.__cu_y + 180; + var20 = 276; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + MouseHandler.method1084(false); + } + + var18 = Login.__cu_y + 180; + var20 = 326; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + method1089("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); + Login.__cu_aw = 5; + return; + } + } else { + int var22; + if(Login.__cu_aw == 4) { + var18 = Login.__cu_y + 180 - 80; + var20 = 321; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + Login.__cu_ai.trim(); + if(Login.__cu_ai.length() != 6) { + method1089("", "Please enter a 6-digit PIN.", ""); + return; + } + + class13.__i_af = Integer.parseInt(Login.__cu_ai); + Login.__cu_ai = ""; + class15.method184(true); + method1089("", "Connecting to server...", ""); + GameShell.updateGameState(20); + return; + } + + if(var3 == 1 && var15 >= Login.__cu_y + 180 - 9 && var15 <= Login.__cu_y + 180 + 130 && var16 >= 263 && var16 <= 296) { + Login.__cu_ba = !Login.__cu_ba; + } + + if(var3 == 1 && var15 >= Login.__cu_y + 180 - 34 && var15 <= Login.__cu_y + 34 + 180 && var16 >= 351 && var16 <= 363) { + WorldMapCacheName.method635(Message.method1227("secure", true) + "m=totp-authenticator/disableTOTPRequest", true, false); + } + + var18 = Login.__cu_y + 180 + 80; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + Login.__cu_aw = 0; + Login.Login_username = ""; + Login.Login_password = ""; + class13.__i_af = 0; + Login.__cu_ai = ""; + } + + while(Decimator.method2490()) { + boolean var21 = false; + + for(var22 = 0; var22 < "1234567890".length(); ++var22) { + if(GzipDecompressor.__go_ck == "1234567890".charAt(var22)) { + var21 = true; + break; + } + } + + if(IndexStoreAction.__ik_cn == 13) { + Login.__cu_aw = 0; + Login.Login_username = ""; + Login.Login_password = ""; + class13.__i_af = 0; + Login.__cu_ai = ""; + } else { + if(IndexStoreAction.__ik_cn == 85 && Login.__cu_ai.length() > 0) { + Login.__cu_ai = Login.__cu_ai.substring(0, Login.__cu_ai.length() - 1); + } + + if(IndexStoreAction.__ik_cn == 84) { + Login.__cu_ai.trim(); + if(Login.__cu_ai.length() != 6) { + method1089("", "Please enter a 6-digit PIN.", ""); + return; + } + + class13.__i_af = Integer.parseInt(Login.__cu_ai); + Login.__cu_ai = ""; + class15.method184(true); + method1089("", "Connecting to server...", ""); + GameShell.updateGameState(20); + return; + } + + if(var21 && Login.__cu_ai.length() < 6) { + Login.__cu_ai = Login.__cu_ai + GzipDecompressor.__go_ck; + } + } + } + } else if(Login.__cu_aw == 5) { + var18 = Login.__cu_y + 180 - 80; + var20 = 321; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + NpcDefinition.method5162(); + return; + } + + var18 = Login.__cu_y + 180 + 80; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + MouseHandler.method1084(true); + } + + var8 = 361; + if(UrlRequester.__eo_ak != null) { + var22 = UrlRequester.__eo_ak.__q / 2; + if(var3 == 1 && var15 >= UrlRequester.__eo_ak.__m - var22 && var15 <= var22 + UrlRequester.__eo_ak.__m && var16 >= var8 - 15 && var16 < var8) { + WorldMapCacheName.method635(Message.method1227("secure", true) + "m=weblogin/g=oldscape/cant_log_in", true, false); + } + } + + while(Decimator.method2490()) { + var9 = false; + + for(var10 = 0; var10 < "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-_=+[{]};:\'@#~,<.>/?\\| ".length(); ++var10) { + if(GzipDecompressor.__go_ck == "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-_=+[{]};:\'@#~,<.>/?\\| ".charAt(var10)) { + var9 = true; + break; + } + } + + if(IndexStoreAction.__ik_cn == 13) { + MouseHandler.method1084(true); + } else { + if(IndexStoreAction.__ik_cn == 85 && Login.Login_username.length() > 0) { + Login.Login_username = Login.Login_username.substring(0, Login.Login_username.length() - 1); + } + + if(IndexStoreAction.__ik_cn == 84) { + NpcDefinition.method5162(); + return; + } + + if(var9 && Login.Login_username.length() < 320) { + Login.Login_username = Login.Login_username + GzipDecompressor.__go_ck; + } + } + } + } else if(Login.__cu_aw == 6) { + while(true) { + do { + if(!Decimator.method2490()) { + var19 = 321; + if(var3 == 1 && var16 >= var19 - 20 && var16 <= var19 + 20) { + MouseHandler.method1084(true); + } + + return; + } + } while(IndexStoreAction.__ik_cn != 84 && IndexStoreAction.__ik_cn != 13); + + MouseHandler.method1084(true); + } + } else if(Login.__cu_aw == 7) { + var18 = Login.__cu_y + 180 - 80; + var20 = 321; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + WorldMapCacheName.method635(Message.method1227("secure", true) + "m=dob/set_dob.ws", true, false); + method1089("", "Page has opened in a new window.", "(Please check your popup blocker.)"); + Login.__cu_aw = 6; + return; + } + + var18 = Login.__cu_y + 180 + 80; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + MouseHandler.method1084(true); + } + } else if(Login.__cu_aw == 8) { + var18 = Login.__cu_y + 180 - 80; + var20 = 321; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + WorldMapCacheName.method635("https://www.jagex.com/terms/privacy/#eight", true, false); + method1089("", "Page has opened in a new window.", "(Please check your popup blocker.)"); + Login.__cu_aw = 6; + return; + } + + var18 = Login.__cu_y + 180 + 80; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + MouseHandler.method1084(true); + } + } else if(Login.__cu_aw == 12) { + String var14 = ""; + switch(Login.__cu_aj) { + case 0: + var14 = "https://support.runescape.com/hc/en-gb/articles/115002238729-Account-Bans"; + break; + case 1: + var14 = "https://support.runescape.com/hc/en-gb/articles/206103939-My-account-is-locked"; + break; + default: + MouseHandler.method1084(false); + } + + var7 = Login.__cu_y + 180; + var8 = 276; + if(var3 == 1 && var15 >= var7 - 75 && var15 <= var7 + 75 && var16 >= var8 - 20 && var16 <= var8 + 20) { + WorldMapCacheName.method635(var14, true, false); + method1089("", "Page has opened in a new window.", "(Please check your popup blocker.)"); + Login.__cu_aw = 6; + return; + } + + var7 = Login.__cu_y + 180; + var8 = 326; + if(var3 == 1 && var15 >= var7 - 75 && var15 <= var7 + 75 && var16 >= var8 - 20 && var16 <= var8 + 20) { + MouseHandler.method1084(false); + } + } + } + } else { + while(Decimator.method2490()) { + if(IndexStoreAction.__ik_cn == 84) { + MouseHandler.method1084(false); + } else if(IndexStoreAction.__ik_cn == 13) { + Login.__cu_aw = 0; + } + } + + var18 = Varps.__hv_h - 80; + var20 = 321; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + MouseHandler.method1084(false); + } + + var18 = Varps.__hv_h + 80; + if(var3 == 1 && var15 >= var18 - 75 && var15 <= var18 + 75 && var16 >= var20 - 20 && var16 <= var20 + 20) { + Login.__cu_aw = 0; + } + } + } + + } + } + } + } + + @ObfuscatedName("d") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;B)V", + garbageValue = "-14" + ) + static void method1089(String var0, String var1, String var2) { + Login.Login_response1 = var0; + Login.Login_response2 = var1; + Login.Login_response3 = var2; + } + + @ObfuscatedName("as") + @ObfuscatedSignature( + signature = "(ILcg;ZI)I", + garbageValue = "571260142" + ) + static int method1093(int var0, Script var1, boolean var2) { + int var3; + if(var0 == 6600) { + var3 = SoundSystem.plane; + int var9 = (Canvas.localPlayer.x >> 7) + class50.baseX; + int var5 = (Canvas.localPlayer.y >> 7) + GraphicsObject.baseY; + BufferedFile.worldMap().__a_525(var3, var9, var5, true); + return 1; + } else { + WorldMapArea var11; + if(var0 == 6601) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + String var16 = ""; + var11 = BufferedFile.worldMap().getMapArea(var3); + if(var11 != null) { + var16 = var11.name(); + } + + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16; + return 1; + } else if(var0 == 6602) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + BufferedFile.worldMap().setCurrentMapAreaId(var3); + return 1; + } else if(var0 == 6603) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().getZoomLevel(); + return 1; + } else if(var0 == 6604) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + BufferedFile.worldMap().setZoomLevel(var3); + return 1; + } else if(var0 == 6605) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().isCacheLoaded()?1:0; + return 1; + } else { + TileLocation var15; + if(var0 == 6606) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + BufferedFile.worldMap().setWorldMapPositionTarget(var15.x, var15.y); + return 1; + } else if(var0 == 6607) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + BufferedFile.worldMap().__aw_531(var15.x, var15.y); + return 1; + } else if(var0 == 6608) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + BufferedFile.worldMap().__al_532(var15.plane, var15.x, var15.y); + return 1; + } else if(var0 == 6609) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + BufferedFile.worldMap().__ab_533(var15.plane, var15.x, var15.y); + return 1; + } else if(var0 == 6610) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().__ae_534(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().__at_535(); + return 1; + } else { + WorldMapArea var13; + if(var0 == 6611) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var13 = BufferedFile.worldMap().getMapArea(var3); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.origin().packed(); + } + + return 1; + } else if(var0 == 6612) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var13 = BufferedFile.worldMap().getMapArea(var3); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (var13.maxX() - var13.minX() + 1) * 64; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = (var13.maxY() - var13.minY() + 1) * 64; + } + + return 1; + } else if(var0 == 6613) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var13 = BufferedFile.worldMap().getMapArea(var3); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.minX() * 64; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.minY() * 64; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.maxX() * 64 + 64 - 1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.maxY() * 64 + 64 - 1; + } + + return 1; + } else if(var0 == 6614) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var13 = BufferedFile.worldMap().getMapArea(var3); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.zoom(); + } + + return 1; + } else if(var0 == 6615) { + var15 = BufferedFile.worldMap().__ad_536(); + if(var15 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.x; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.y; + } + + return 1; + } else if(var0 == 6616) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().currentMapAreaId(); + return 1; + } else if(var0 == 6617) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + var13 = BufferedFile.worldMap().getCurrentMapArea(); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + return 1; + } else { + int[] var14 = var13.position(var15.plane, var15.x, var15.y); + if(var14 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var14[0]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var14[1]; + } + + return 1; + } + } else { + TileLocation var7; + if(var0 == 6618) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + var13 = BufferedFile.worldMap().getCurrentMapArea(); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + return 1; + } else { + var7 = var13.coord(var15.x, var15.y); + if(var7 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var7.packed(); + } + + return 1; + } + } else { + TileLocation var12; + if(var0 == 6619) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var12 = new TileLocation(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + TotalQuantityComparator.method96(var3, var12, false); + return 1; + } else if(var0 == 6620) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var12 = new TileLocation(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + TotalQuantityComparator.method96(var3, var12, true); + return 1; + } else if(var0 == 6621) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var12 = new TileLocation(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + var11 = BufferedFile.worldMap().getMapArea(var3); + if(var11 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0; + return 1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.containsCoord(var12.plane, var12.x, var12.y)?1:0; + return 1; + } + } else if(var0 == 6622) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().__ap_537(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().__as_538(); + return 1; + } else if(var0 == 6623) { + var15 = new TileLocation(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + var13 = BufferedFile.worldMap().mapAreaAtCoord(var15.plane, var15.x, var15.y); + if(var13 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var13.id(); + } + + return 1; + } else if(var0 == 6624) { + BufferedFile.worldMap().__am_539(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + return 1; + } else if(var0 == 6625) { + BufferedFile.worldMap().__an_540(); + return 1; + } else if(var0 == 6626) { + BufferedFile.worldMap().__az_541(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]); + return 1; + } else if(var0 == 6627) { + BufferedFile.worldMap().__au_542(); + return 1; + } else { + boolean var10; + if(var0 == 6628) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + BufferedFile.worldMap().perpetualFlash(var10); + return 1; + } else if(var0 == 6629) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + BufferedFile.worldMap().flashElement(var3); + return 1; + } else if(var0 == 6630) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + BufferedFile.worldMap().flashCategory(var3); + return 1; + } else if(var0 == 6631) { + BufferedFile.worldMap().stopCurrentFlashes(); + return 1; + } else if(var0 == 6632) { + var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1; + BufferedFile.worldMap().setElementsEnabled(var10); + return 1; + } else { + boolean var4; + if(var0 == 6633) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1] == 1; + BufferedFile.worldMap().disableElement(var3, var4); + return 1; + } else if(var0 == 6634) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1] == 1; + BufferedFile.worldMap().disableCategory(var3, var4); + return 1; + } else if(var0 == 6635) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().getElementsEnabled()?1:0; + return 1; + } else if(var0 == 6636) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().isElementDisabled(var3)?1:0; + return 1; + } else if(var0 == 6637) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = BufferedFile.worldMap().isCategoryDisabled(var3)?1:0; + return 1; + } else if(var0 == 6638) { + class179.Interpreter_intStackSize -= 2; + var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize]; + var12 = new TileLocation(Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1]); + var7 = BufferedFile.worldMap().__bc_545(var3, var12); + if(var7 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var7.packed(); + } + + return 1; + } else { + AbstractWorldMapIcon var8; + if(var0 == 6639) { + var8 = BufferedFile.worldMap().iconStart(); + if(var8 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var8.__m_15(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var8.coord2.packed(); + } + + return 1; + } else if(var0 == 6640) { + var8 = BufferedFile.worldMap().iconNext(); + if(var8 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var8.__m_15(); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var8.coord2.packed(); + } + + return 1; + } else { + WorldMapElement var6; + if(var0 == 6693) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = ViewportMouse.getWorldMapElement(var3); + if(var6.__l == null) { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = ""; + } else { + Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var6.__l; + } + + return 1; + } else if(var0 == 6694) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = ViewportMouse.getWorldMapElement(var3); + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.textSize; + return 1; + } else if(var0 == 6695) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = ViewportMouse.getWorldMapElement(var3); + if(var6 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.category; + } + + return 1; + } else if(var0 == 6696) { + var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]; + var6 = ViewportMouse.getWorldMapElement(var3); + if(var6 == null) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1; + } else { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var6.sprite1; + } + + return 1; + } else if(var0 == 6697) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class15.worldMapEvent.mapElement; + return 1; + } else if(var0 == 6698) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class15.worldMapEvent.coord1.packed(); + return 1; + } else if(var0 == 6699) { + Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class15.worldMapEvent.coord2.packed(); + return 1; + } else { + return 2; + } + } + } + } + } + } + } + } + } + } + } + + @ObfuscatedName("fy") + @ObfuscatedSignature( + signature = "(S)V", + garbageValue = "-9841" + ) + static final void method1091() { + int var0; + int var1; + int var2; + int var3; + int var4; + int var5; + if(Client.oculusOrbState == 0) { + var0 = Canvas.localPlayer.x; + var1 = Canvas.localPlayer.y; + if(MouseHandler.oculusOrbFocalPointX - var0 < -500 || MouseHandler.oculusOrbFocalPointX - var0 > 500 || ScriptEvent.oculusOrbFocalPointY - var1 < -500 || ScriptEvent.oculusOrbFocalPointY - var1 > 500) { + MouseHandler.oculusOrbFocalPointX = var0; + ScriptEvent.oculusOrbFocalPointY = var1; + } + + if(var0 != MouseHandler.oculusOrbFocalPointX) { + MouseHandler.oculusOrbFocalPointX += (var0 - MouseHandler.oculusOrbFocalPointX) / 16; + } + + if(var1 != ScriptEvent.oculusOrbFocalPointY) { + ScriptEvent.oculusOrbFocalPointY += (var1 - ScriptEvent.oculusOrbFocalPointY) / 16; + } + + var2 = MouseHandler.oculusOrbFocalPointX >> 7; + var3 = ScriptEvent.oculusOrbFocalPointY >> 7; + var4 = class32.getTileHeight(MouseHandler.oculusOrbFocalPointX, ScriptEvent.oculusOrbFocalPointY, SoundSystem.plane); + var5 = 0; + int var6; + if(var2 > 3 && var3 > 3 && var2 < 100 && var3 < 100) { + for(var6 = var2 - 4; var6 <= var2 + 4; ++var6) { + for(int var7 = var3 - 4; var7 <= var3 + 4; ++var7) { + int var8 = SoundSystem.plane; + if(var8 < 3 && (Tiles.Tiles_renderFlags[1][var6][var7] & 2) == 2) { + ++var8; + } + + int var9 = var4 - Tiles.Tiles_heights[var8][var6][var7]; + if(var9 > var5) { + var5 = var9; + } + } + } + } + + var6 = var5 * 192; + if(var6 > 98048) { + var6 = 98048; + } + + if(var6 < 32768) { + var6 = 32768; + } + + if(var6 > Client.__client_ik) { + Client.__client_ik += (var6 - Client.__client_ik) / 24; + } else if(var6 < Client.__client_ik) { + Client.__client_ik += (var6 - Client.__client_ik) / 80; + } + + MouseRecorder.__bu_hy = class32.getTileHeight(Canvas.localPlayer.x, Canvas.localPlayer.y, SoundSystem.plane) - Client.__client_ho; + } else if(Client.oculusOrbState == 1) { + if(Client.__client_ij && Canvas.localPlayer != null) { + var0 = Canvas.localPlayer.pathX[0]; + var1 = Canvas.localPlayer.pathY[0]; + if(var0 >= 0 && var1 >= 0 && var0 < 104 && var1 < 104) { + MouseHandler.oculusOrbFocalPointX = Canvas.localPlayer.x; + var2 = class32.getTileHeight(Canvas.localPlayer.x, Canvas.localPlayer.y, SoundSystem.plane) - Client.__client_ho; + if(var2 < MouseRecorder.__bu_hy) { + MouseRecorder.__bu_hy = var2; + } + + ScriptEvent.oculusOrbFocalPointY = Canvas.localPlayer.y; + Client.__client_ij = false; + } + } + + short var10 = -1; + if(KeyHandler.KeyHandler_pressedKeys[33]) { + var10 = 0; + } else if(KeyHandler.KeyHandler_pressedKeys[49]) { + var10 = 1024; + } + + if(KeyHandler.KeyHandler_pressedKeys[48]) { + if(var10 == 0) { + var10 = 1792; + } else if(var10 == 1024) { + var10 = 1280; + } else { + var10 = 1536; + } + } else if(KeyHandler.KeyHandler_pressedKeys[50]) { + if(var10 == 0) { + var10 = 256; + } else if(var10 == 1024) { + var10 = 768; + } else { + var10 = 512; + } + } + + byte var11 = 0; + if(KeyHandler.KeyHandler_pressedKeys[35]) { + var11 = -1; + } else if(KeyHandler.KeyHandler_pressedKeys[51]) { + var11 = 1; + } + + var2 = 0; + if(var10 >= 0 || var11 != 0) { + var2 = KeyHandler.KeyHandler_pressedKeys[81]?Client.__client_in:Client.oculusOrbNormalSpeed; + var2 *= 16; + Client.__client_hk = var10; + Client.__client_if = var11; + } + + if(Client.__client_hc < var2) { + Client.__client_hc += var2 / 8; + if(Client.__client_hc > var2) { + Client.__client_hc = var2; + } + } else if(Client.__client_hc > var2) { + Client.__client_hc = Client.__client_hc * 9 / 10; + } + + if(Client.__client_hc > 0) { + var3 = Client.__client_hc / 16; + if(Client.__client_hk >= 0) { + var0 = Client.__client_hk - MusicPatchNode.cameraYaw & 2047; + var4 = Rasterizer3D.Rasterizer3D_sine[var0]; + var5 = Rasterizer3D.Rasterizer3D_cosine[var0]; + MouseHandler.oculusOrbFocalPointX += var3 * var4 / 65536; + ScriptEvent.oculusOrbFocalPointY += var3 * var5 / 65536; + } + + if(Client.__client_if != 0) { + MouseRecorder.__bu_hy += var3 * Client.__client_if; + if(MouseRecorder.__bu_hy > 0) { + MouseRecorder.__bu_hy = 0; + } + } + } else { + Client.__client_hk = -1; + Client.__client_if = -1; + } + + if(KeyHandler.KeyHandler_pressedKeys[13]) { + Client.packetWriter.__q_167(Interpreter.method1915(ClientPacket.__gs_ab, Client.packetWriter.isaacCipher)); + Client.oculusOrbState = 0; + } + } + + if(MouseHandler.MouseHandler_currentButton == 4 && AbstractRasterProvider.__lp_ca) { + var0 = MouseHandler.MouseHandler_y - Client.__client_ht; + Client.__client_hu = var0 * 2; + Client.__client_ht = var0 != -1 && var0 != 1?(MouseHandler.MouseHandler_y + Client.__client_ht) / 2:MouseHandler.MouseHandler_y; + var1 = Client.__client_hi - MouseHandler.MouseHandler_x; + Client.__client_hv = var1 * 2; + Client.__client_hi = var1 != -1 && var1 != 1?(Client.__client_hi + MouseHandler.MouseHandler_x) / 2:MouseHandler.MouseHandler_x; + } else { + if(KeyHandler.KeyHandler_pressedKeys[96]) { + Client.__client_hv += (-24 - Client.__client_hv) / 2; + } else if(KeyHandler.KeyHandler_pressedKeys[97]) { + Client.__client_hv += (24 - Client.__client_hv) / 2; + } else { + Client.__client_hv /= 2; + } + + if(KeyHandler.KeyHandler_pressedKeys[98]) { + Client.__client_hu += (12 - Client.__client_hu) / 2; + } else if(KeyHandler.KeyHandler_pressedKeys[99]) { + Client.__client_hu += (-12 - Client.__client_hu) / 2; + } else { + Client.__client_hu /= 2; + } + + Client.__client_ht = MouseHandler.MouseHandler_y; + Client.__client_hi = MouseHandler.MouseHandler_x; + } + + Client.minimapOrientation = Client.__client_hv / 2 + Client.minimapOrientation & 2047; + Client.cameraPitchTarget += Client.__client_hu / 2; + if(Client.cameraPitchTarget < 128) { + Client.cameraPitchTarget = 128; + } + + if(Client.cameraPitchTarget > 383) { + Client.cameraPitchTarget = 383; + } + + } +} diff --git a/rs-client/src/main/java/class60.java b/rs-client/src/main/java/class60.java new file mode 100644 index 0000000000..f35817664d --- /dev/null +++ b/rs-client/src/main/java/class60.java @@ -0,0 +1,28 @@ +import java.awt.FontMetrics; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bo") +public class class60 { + @ObfuscatedName("sz") + @ObfuscatedSignature( + signature = "Llz;" + ) + @Export("worldMap0") + static WorldMap worldMap0; + @ObfuscatedName("ar") + @Export("__bo_ar") + static FontMetrics __bo_ar; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(Lir;Lir;Lir;I)V", + garbageValue = "1583108922" + ) + public static void method1172(AbstractIndexCache var0, AbstractIndexCache var1, AbstractIndexCache var2) { + HitSplatDefinition.__jm_m = var0; + HitSplatDefinition.__jm_f = var1; + HitSplatDefinition.__jm_q = var2; + } +} diff --git a/rs-client/src/main/java/class65.java b/rs-client/src/main/java/class65.java new file mode 100644 index 0000000000..d42b1a1296 --- /dev/null +++ b/rs-client/src/main/java/class65.java @@ -0,0 +1,238 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bl") +public class class65 extends class179 { + @ObfuscatedName("n") + @ObfuscatedSignature( + signature = "Lcz;" + ) + @Export("pcmPlayerProvider") + public static PcmPlayerProvider pcmPlayerProvider; + @ObfuscatedName("gf") + @ObfuscatedSignature( + signature = "Lem;" + ) + @Export("scene") + static Scene scene; + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(IIILfy;I)Z", + garbageValue = "-519225044" + ) + protected boolean vmethod3644(int var1, int var2, int var3, CollisionMap var4) { + return var2 == super.field2120 && var3 == super.field2121; + } + + @ObfuscatedName("fi") + @ObfuscatedSignature( + signature = "(Lbz;II)V", + garbageValue = "406386718" + ) + static final void method1232(Actor var0, int var1) { + if(var0.__bw > Client.cycle) { + SpriteIds.method5828(var0); + } else { + int var2; + int var3; + int var4; + int var5; + int var7; + if(var0.__cr >= Client.cycle) { + if(var0.__cr == Client.cycle || var0.sequence == -1 || var0.sequenceDelay != 0 || var0.sequenceFrameCycle + 1 > WorldMapAreaData.getSequenceDefinition(var0.sequence).frameLengths[var0.sequenceFrame]) { + var2 = var0.__cr - var0.__bw; + var3 = Client.cycle - var0.__bw; + var4 = var0.__bf * 128 + var0.size * 64; + var5 = var0.__be * 128 + var0.size * 64; + int var6 = var0.__bh * 128 + var0.size * 64; + var7 = var0.__bv * 128 + var0.size * 64; + var0.x = (var3 * var6 + var4 * (var2 - var3)) / var2; + var0.y = (var3 * var7 + var5 * (var2 - var3)) / var2; + } + + var0.__cq = 0; + var0.orientation = var0.__cv; + var0.__ac = var0.orientation; + } else { + var0.movementSequence = var0.idleSequence; + if(var0.pathLength == 0) { + var0.__cq = 0; + } else { + label310: { + if(var0.sequence != -1 && var0.sequenceDelay == 0) { + SequenceDefinition var11 = WorldMapAreaData.getSequenceDefinition(var0.sequence); + if(var0.__ch > 0 && var11.__j == 0) { + ++var0.__cq; + break label310; + } + + if(var0.__ch <= 0 && var11.__s == 0) { + ++var0.__cq; + break label310; + } + } + + var2 = var0.x; + var3 = var0.y; + var4 = var0.pathX[var0.pathLength - 1] * 128 + var0.size * 64; + var5 = var0.pathY[var0.pathLength - 1] * 128 + var0.size * 64; + if(var2 < var4) { + if(var3 < var5) { + var0.orientation = 1280; + } else if(var3 > var5) { + var0.orientation = 1792; + } else { + var0.orientation = 1536; + } + } else if(var2 > var4) { + if(var3 < var5) { + var0.orientation = 768; + } else if(var3 > var5) { + var0.orientation = 256; + } else { + var0.orientation = 512; + } + } else if(var3 < var5) { + var0.orientation = 1024; + } else if(var3 > var5) { + var0.orientation = 0; + } + + byte var12 = var0.pathTraversed[var0.pathLength - 1]; + if(var4 - var2 <= 256 && var4 - var2 >= -256 && var5 - var3 <= 256 && var5 - var3 >= -256) { + var7 = var0.orientation - var0.__ac & 2047; + if(var7 > 1024) { + var7 -= 2048; + } + + int var8 = var0.walkTurnSequence; + if(var7 >= -256 && var7 <= 256) { + var8 = var0.walkSequence; + } else if(var7 >= 256 && var7 < 768) { + var8 = var0.walkTurnRightSequence; + } else if(var7 >= -768 && var7 <= -256) { + var8 = var0.walkTurnLeftSequence; + } + + if(var8 == -1) { + var8 = var0.walkSequence; + } + + var0.movementSequence = var8; + int var9 = 4; + boolean var10 = true; + if(var0 instanceof Npc) { + var10 = ((Npc)var0).definition.isClickable; + } + + if(var10) { + if(var0.__ac != var0.orientation && var0.targetIndex == -1 && var0.__cj != 0) { + var9 = 2; + } + + if(var0.pathLength > 2) { + var9 = 6; + } + + if(var0.pathLength > 3) { + var9 = 8; + } + + if(var0.__cq > 0 && var0.pathLength > 1) { + var9 = 8; + --var0.__cq; + } + } else { + if(var0.pathLength > 1) { + var9 = 6; + } + + if(var0.pathLength > 2) { + var9 = 8; + } + + if(var0.__cq > 0 && var0.pathLength > 1) { + var9 = 8; + --var0.__cq; + } + } + + if(var12 == 2) { + var9 <<= 1; + } + + if(var9 >= 8 && var0.movementSequence == var0.walkSequence && var0.runSequence != -1) { + var0.movementSequence = var0.runSequence; + } + + if(var2 != var4 || var5 != var3) { + if(var2 < var4) { + var0.x += var9; + if(var0.x > var4) { + var0.x = var4; + } + } else if(var2 > var4) { + var0.x -= var9; + if(var0.x < var4) { + var0.x = var4; + } + } + + if(var3 < var5) { + var0.y += var9; + if(var0.y > var5) { + var0.y = var5; + } + } else if(var3 > var5) { + var0.y -= var9; + if(var0.y < var5) { + var0.y = var5; + } + } + } + + if(var4 == var0.x && var5 == var0.y) { + --var0.pathLength; + if(var0.__ch > 0) { + --var0.__ch; + } + } + } else { + var0.x = var4; + var0.y = var5; + --var0.pathLength; + if(var0.__ch > 0) { + --var0.__ch; + } + } + } + } + } + } + + if(var0.x < 128 || var0.y < 128 || var0.x >= 13184 || var0.y >= 13184) { + var0.sequence = -1; + var0.spotAnimation = -1; + var0.__bw = 0; + var0.__cr = 0; + var0.x = var0.pathX[0] * 128 + var0.size * 64; + var0.y = var0.pathY[0] * 128 + var0.size * 64; + var0.__bb_143(); + } + + if(Canvas.localPlayer == var0 && (var0.x < 1536 || var0.y < 1536 || var0.x >= 11776 || var0.y >= 11776)) { + var0.sequence = -1; + var0.spotAnimation = -1; + var0.__bw = 0; + var0.__cr = 0; + var0.x = var0.pathX[0] * 128 + var0.size * 64; + var0.y = var0.pathY[0] * 128 + var0.size * 64; + var0.__bb_143(); + } + + IndexStoreAction.method4553(var0); + ChatChannel.method2225(var0); + } +} diff --git a/rs-client/src/main/java/class68.java b/rs-client/src/main/java/class68.java new file mode 100644 index 0000000000..b72668100c --- /dev/null +++ b/rs-client/src/main/java/class68.java @@ -0,0 +1,136 @@ +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bi") +public final class class68 extends Node { + @ObfuscatedName("m") + @ObfuscatedGetter( + intValue = 1439936951 + ) + int field911; + @ObfuscatedName("f") + @ObfuscatedGetter( + intValue = -1471611383 + ) + int field906; + @ObfuscatedName("q") + @ObfuscatedGetter( + intValue = 1059464897 + ) + int field913; + @ObfuscatedName("w") + @ObfuscatedGetter( + intValue = -1306474107 + ) + int field901; + @ObfuscatedName("o") + @ObfuscatedGetter( + intValue = -1889242993 + ) + int field903; + @ObfuscatedName("u") + @ObfuscatedGetter( + intValue = 318288659 + ) + int field904; + @ObfuscatedName("g") + @ObfuscatedGetter( + intValue = 629071861 + ) + int field905; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 1986990761 + ) + int field899; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 1768602131 + ) + int field907; + @ObfuscatedName("x") + @ObfuscatedGetter( + intValue = 1989829133 + ) + int field908; + @ObfuscatedName("d") + @ObfuscatedGetter( + intValue = -715662659 + ) + int field909; + @ObfuscatedName("k") + @ObfuscatedGetter( + intValue = -2141472019 + ) + int field910; + + class68() { + this.field909 = 0; + this.field910 = -1; + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(B)V", + garbageValue = "100" + ) + public static void method1694() { + class322.reflectionChecks = new IterableNodeDeque(); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "1641191614" + ) + public static void method1695(int var0, int var1) { + VarbitDefinition var2 = Occluder.method3255(var0); + int var3 = var2.varp; + int var4 = var2.lowBit; + int var5 = var2.highBit; + int var6 = Varps.Varps_masks[var5 - var4]; + if(var1 < 0 || var1 > var6) { + var1 = 0; + } + + var6 <<= var4; + Varps.Varps_main[var3] = Varps.Varps_main[var3] & ~var6 | var1 << var4 & var6; + } + + @ObfuscatedName("gl") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;ZI)V", + garbageValue = "-1792684945" + ) + @Export("drawLoadingMessage") + static final void drawLoadingMessage(String var0, boolean var1) { + if(Client.showLoadingMessages) { + byte var2 = 4; + int var3 = var2 + 6; + int var4 = var2 + 6; + int var5 = DevicePcmPlayerProvider.fontPlain12.lineWidth(var0, 250); + int var6 = DevicePcmPlayerProvider.fontPlain12.lineCount(var0, 250) * 13; + Rasterizer2D.Rasterizer2D_fillRectangle(var3 - var2, var4 - var2, var2 + var5 + var2, var2 + var6 + var2, 0); + Rasterizer2D.Rasterizer2D_drawRectangle(var3 - var2, var4 - var2, var5 + var2 + var2, var2 + var2 + var6, 16777215); + DevicePcmPlayerProvider.fontPlain12.drawLines(var0, var3, var4, var5, var6, 16777215, -1, 1, 1, 0); + Players.method2112(var3 - var2, var4 - var2, var2 + var5 + var2, var6 + var2 + var2); + if(var1) { + class197.rasterProvider.drawFull(0, 0); + } else { + int var7 = var3; + int var8 = var4; + int var9 = var5; + int var10 = var6; + + for(int var11 = 0; var11 < Client.rootWidgetCount; ++var11) { + if(Client.rootWidgetWidths[var11] + Client.rootWidgetXs[var11] > var7 && Client.rootWidgetXs[var11] < var9 + var7 && Client.rootWidgetHeights[var11] + Client.rootWidgetYs[var11] > var8 && Client.rootWidgetYs[var11] < var10 + var8) { + Client.__client_ot[var11] = true; + } + } + } + + } + } +} diff --git a/rs-client/src/main/java/class72.java b/rs-client/src/main/java/class72.java new file mode 100644 index 0000000000..e93de12f7d --- /dev/null +++ b/rs-client/src/main/java/class72.java @@ -0,0 +1,639 @@ +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.net.URL; +import java.net.URLConnection; +import java.util.Random; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("bp") +public class class72 { + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "[Llq;" + ) + IndexedSprite[] field998; + @ObfuscatedName("g") + int[] field1015; + @ObfuscatedName("l") + @ObfuscatedGetter( + intValue = 475300985 + ) + int field1008; + @ObfuscatedName("e") + int[] field1013; + @ObfuscatedName("x") + int[] field1006; + @ObfuscatedName("d") + int[] field1007; + @ObfuscatedName("k") + int[] field1014; + @ObfuscatedName("n") + @ObfuscatedGetter( + intValue = 521751567 + ) + int field1009; + @ObfuscatedName("i") + @ObfuscatedGetter( + intValue = 486426941 + ) + int field1005; + @ObfuscatedName("a") + int[] field1011; + @ObfuscatedName("z") + int[] field1012; + @ObfuscatedName("j") + int[] field1004; + @ObfuscatedName("s") + int[] field1018; + @ObfuscatedName("t") + @ObfuscatedGetter( + intValue = 242237475 + ) + int field1010; + @ObfuscatedName("y") + @ObfuscatedGetter( + intValue = -422060935 + ) + int field1016; + @ObfuscatedName("h") + @ObfuscatedGetter( + intValue = -1072107507 + ) + int field1017; + + @ObfuscatedSignature( + signature = "([Llq;)V" + ) + class72(IndexedSprite[] var1) { + this.field1015 = new int[256]; + this.field1008 = 0; + this.field1009 = 0; + this.field1005 = 0; + this.field1010 = 0; + this.field1016 = 0; + this.field1017 = 0; + this.field998 = var1; + this.method1772(); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1987616827" + ) + void method1772() { + this.field1006 = new int[256]; + + int var1; + for(var1 = 0; var1 < 64; ++var1) { + this.field1006[var1] = var1 * 262144; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1006[var1 + 64] = var1 * 1024 + 16711680; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1006[var1 + 128] = var1 * 4 + 16776960; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1006[var1 + 192] = 16777215; + } + + this.field1007 = new int[256]; + + for(var1 = 0; var1 < 64; ++var1) { + this.field1007[var1] = var1 * 1024; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1007[var1 + 64] = var1 * 4 + 65280; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1007[var1 + 128] = var1 * 262144 + 65535; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1007[var1 + 192] = 16777215; + } + + this.field1014 = new int[256]; + + for(var1 = 0; var1 < 64; ++var1) { + this.field1014[var1] = var1 * 4; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1014[var1 + 64] = var1 * 262144 + 255; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1014[var1 + 128] = var1 * 1024 + 16711935; + } + + for(var1 = 0; var1 < 64; ++var1) { + this.field1014[var1 + 192] = 16777215; + } + + this.field1013 = new int[256]; + this.field1010 = 0; + this.field1004 = new int['耀']; + this.field1018 = new int['耀']; + this.method1779((IndexedSprite)null); + this.field1011 = new int['耀']; + this.field1012 = new int['耀']; + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1269720175" + ) + void method1762() { + this.field1006 = null; + this.field1007 = null; + this.field1014 = null; + this.field1013 = null; + this.field1004 = null; + this.field1018 = null; + this.field1011 = null; + this.field1012 = null; + this.field1010 = 0; + this.field1016 = 0; + } + + @ObfuscatedName("q") + @ObfuscatedSignature( + signature = "(III)V", + garbageValue = "-1684910110" + ) + void method1782(int var1, int var2) { + if(this.field1011 == null) { + this.method1772(); + } + + if(this.field1017 == 0) { + this.field1017 = var2; + } + + int var3 = var2 - this.field1017; + if(var3 >= 256) { + var3 = 0; + } + + this.field1017 = var2; + if(var3 > 0) { + this.method1791(var3); + } + + this.method1787(var1); + } + + @ObfuscatedName("w") + @ObfuscatedSignature( + signature = "(IB)V", + garbageValue = "115" + ) + final void method1791(int var1) { + this.field1010 += var1 * 128; + int var2; + if(this.field1010 > this.field1004.length) { + this.field1010 -= this.field1004.length; + var2 = (int)(Math.random() * 12.0D); + this.method1779(this.field998[var2]); + } + + var2 = 0; + int var3 = var1 * 128; + int var4 = (256 - var1) * 128; + + int var6; + for(int var5 = 0; var5 < var4; ++var5) { + var6 = this.field1011[var3 + var2] - this.field1004[var2 + this.field1010 & this.field1004.length - 1] * var1 / 6; + if(var6 < 0) { + var6 = 0; + } + + this.field1011[var2++] = var6; + } + + byte var15 = 10; + var6 = 128 - var15; + + int var7; + int var10; + for(var7 = 256 - var1; var7 < 256; ++var7) { + int var8 = var7 * 128; + + for(int var9 = 0; var9 < 128; ++var9) { + var10 = (int)(Math.random() * 100.0D); + if(var10 < 50 && var9 > var15 && var9 < var6) { + this.field1011[var9 + var8] = 255; + } else { + this.field1011[var9 + var8] = 0; + } + } + } + + if(this.field1009 > 0) { + this.field1009 -= var1 * 4; + } + + if(this.field1005 > 0) { + this.field1005 -= var1 * 4; + } + + if(this.field1009 == 0 && this.field1005 == 0) { + var7 = (int)(Math.random() * (double)(2000 / var1)); + if(var7 == 0) { + this.field1009 = 1024; + } + + if(var7 == 1) { + this.field1005 = 1024; + } + } + + for(var7 = 0; var7 < 256 - var1; ++var7) { + this.field1015[var7] = this.field1015[var7 + var1]; + } + + for(var7 = 256 - var1; var7 < 256; ++var7) { + this.field1015[var7] = (int)(Math.sin((double)this.field1008 / 14.0D) * 16.0D + Math.sin((double)this.field1008 / 15.0D) * 14.0D + Math.sin((double)this.field1008 / 16.0D) * 12.0D); + ++this.field1008; + } + + this.field1016 += var1; + var7 = ((Client.cycle & 1) + var1) / 2; + if(var7 > 0) { + short var16 = 128; + byte var17 = 2; + var10 = 128 - var17 - var17; + + int var11; + int var12; + int var13; + for(var11 = 0; var11 < this.field1016 * 100; ++var11) { + var12 = (int)(Math.random() * (double)var10) + var17; + var13 = (int)(Math.random() * (double)var16) + var16; + this.field1011[var12 + (var13 << 7)] = 192; + } + + this.field1016 = 0; + + int var14; + for(var11 = 0; var11 < 256; ++var11) { + var12 = 0; + var13 = var11 * 128; + + for(var14 = -var7; var14 < 128; ++var14) { + if(var7 + var14 < 128) { + var12 += this.field1011[var7 + var14 + var13]; + } + + if(var14 - (var7 + 1) >= 0) { + var12 -= this.field1011[var14 + var13 - (var7 + 1)]; + } + + if(var14 >= 0) { + this.field1012[var14 + var13] = var12 / (var7 * 2 + 1); + } + } + } + + for(var11 = 0; var11 < 128; ++var11) { + var12 = 0; + + for(var13 = -var7; var13 < 256; ++var13) { + var14 = var13 * 128; + if(var13 + var7 < 256) { + var12 += this.field1012[var14 + var11 + var7 * 128]; + } + + if(var13 - (var7 + 1) >= 0) { + var12 -= this.field1012[var11 + var14 - (var7 + 1) * 128]; + } + + if(var13 >= 0) { + this.field1011[var11 + var14] = var12 / (var7 * 2 + 1); + } + } + } + } + + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(IIII)I", + garbageValue = "1964326152" + ) + final int method1765(int var1, int var2, int var3) { + int var4 = 256 - var3; + return (var4 * (var1 & 65280) + var3 * (var2 & 65280) & 16711680) + (var4 * (var1 & 16711935) + var3 * (var2 & 16711935) & -16711936) >> 8; + } + + @ObfuscatedName("u") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "2128815315" + ) + final void method1787(int var1) { + int var2 = this.field1013.length; + if(this.field1009 > 0) { + this.method1766(this.field1009, this.field1007); + } else if(this.field1005 > 0) { + this.method1766(this.field1005, this.field1014); + } else { + for(int var3 = 0; var3 < var2; ++var3) { + this.field1013[var3] = this.field1006[var3]; + } + } + + this.method1767(var1); + } + + @ObfuscatedName("g") + @ObfuscatedSignature( + signature = "(I[II)V", + garbageValue = "647774031" + ) + final void method1766(int var1, int[] var2) { + int var3 = this.field1013.length; + + for(int var4 = 0; var4 < var3; ++var4) { + if(var1 > 768) { + this.field1013[var4] = this.method1765(this.field1006[var4], var2[var4], 1024 - var1); + } else if(var1 > 256) { + this.field1013[var4] = var2[var4]; + } else { + this.field1013[var4] = this.method1765(var2[var4], this.field1006[var4], 256 - var1); + } + } + + } + + @ObfuscatedName("l") + @ObfuscatedSignature( + signature = "(II)V", + garbageValue = "-3198599" + ) + final void method1767(int var1) { + int var2 = 0; + + for(int var3 = 1; var3 < 255; ++var3) { + int var4 = (256 - var3) * this.field1015[var3] / 256; + int var5 = var4 + var1; + int var6 = 0; + int var7 = 128; + if(var5 < 0) { + var6 = -var5; + var5 = 0; + } + + if(var5 + 128 >= class197.rasterProvider.width) { + var7 = class197.rasterProvider.width - var5; + } + + int var8 = var5 + (var3 + 8) * class197.rasterProvider.width; + var2 += var6; + + for(int var9 = var6; var9 < var7; ++var9) { + int var10 = this.field1011[var2++]; + int var11 = var8 % Rasterizer2D.Rasterizer2D_width; + if(var10 != 0 && var11 >= Rasterizer2D.Rasterizer2D_xClipStart && var11 < Rasterizer2D.Rasterizer2D_xClipEnd) { + int var12 = var10; + int var13 = 256 - var10; + var10 = this.field1013[var10]; + int var14 = class197.rasterProvider.pixels[var8]; + class197.rasterProvider.pixels[var8++] = -16777216 | ((var10 & 16711935) * var12 + (var14 & 16711935) * var13 & -16711936) + (var12 * (var10 & 65280) + var13 * (var14 & 65280) & 16711680) >> 8; + } else { + ++var8; + } + } + + var2 += 128 - var7; + } + + } + + @ObfuscatedName("e") + @ObfuscatedSignature( + signature = "(Llq;I)V", + garbageValue = "849366777" + ) + final void method1779(IndexedSprite var1) { + int var2; + for(var2 = 0; var2 < this.field1004.length; ++var2) { + this.field1004[var2] = 0; + } + + int var3; + for(var2 = 0; var2 < 5000; ++var2) { + var3 = (int)(Math.random() * 128.0D * 256.0D); + this.field1004[var3] = (int)(Math.random() * 256.0D); + } + + int var4; + int var5; + for(var2 = 0; var2 < 20; ++var2) { + for(var3 = 1; var3 < 255; ++var3) { + for(var4 = 1; var4 < 127; ++var4) { + var5 = var4 + (var3 << 7); + this.field1018[var5] = (this.field1004[var5 + 1] + this.field1004[var5 + 128] + this.field1004[var5 - 128] + this.field1004[var5 - 1]) / 4; + } + } + + int[] var8 = this.field1004; + this.field1004 = this.field1018; + this.field1018 = var8; + } + + if(var1 != null) { + var2 = 0; + + for(var3 = 0; var3 < var1.subHeight; ++var3) { + for(var4 = 0; var4 < var1.subWidth; ++var4) { + if(var1.pixels[var2++] != 0) { + var5 = var4 + var1.xOffset + 16; + int var6 = var3 + var1.yOffset + 16; + int var7 = var5 + (var6 << 7); + this.field1004[var7] = 0; + } + } + } + } + + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(JLjava/lang/String;S)I", + garbageValue = "842" + ) + static final int method1778(long var0, String var2) { + Random var3 = new Random(); + Buffer var4 = new Buffer(128); + Buffer var5 = new Buffer(128); + int[] var6 = new int[]{var3.nextInt(), var3.nextInt(), (int)(var0 >> 32), (int)var0}; + var4.writeByte(10); + + int var7; + for(var7 = 0; var7 < 4; ++var7) { + var4.writeInt(var3.nextInt()); + } + + var4.writeInt(var6[0]); + var4.writeInt(var6[1]); + var4.writeLong(var0); + var4.writeLong(0L); + + for(var7 = 0; var7 < 4; ++var7) { + var4.writeInt(var3.nextInt()); + } + + var4.encryptRsa(class80.__ce_o, class80.__ce_u); + var5.writeByte(10); + + for(var7 = 0; var7 < 3; ++var7) { + var5.writeInt(var3.nextInt()); + } + + var5.writeLong(var3.nextLong()); + var5.writeLongMedium(var3.nextLong()); + Varps.method4400(var5); + var5.writeLong(var3.nextLong()); + var5.encryptRsa(class80.__ce_o, class80.__ce_u); + var7 = WorldMapRegion.method550(var2); + if(var7 % 8 != 0) { + var7 += 8 - var7 % 8; + } + + Buffer var8 = new Buffer(var7); + var8.writeStringCp1252NullTerminated(var2); + var8.index = var7; + var8.xteaEncryptAll(var6); + Buffer var9 = new Buffer(var4.index + var5.index + var8.index + 5); + var9.writeByte(2); + var9.writeByte(var4.index); + var9.__s_297(var4.array, 0, var4.index); + var9.writeByte(var5.index); + var9.__s_297(var5.array, 0, var5.index); + var9.writeShort(var8.index); + var9.__s_297(var8.array, 0, var8.index); + byte[] var11 = var9.array; + int var13 = var11.length; + StringBuilder var14 = new StringBuilder(); + + int var17; + for(int var15 = 0; var15 < var13 + 0; var15 += 3) { + int var16 = var11[var15] & 255; + var14.append(class307.__kc_m[var16 >>> 2]); + if(var15 < var13 - 1) { + var17 = var11[var15 + 1] & 255; + var14.append(class307.__kc_m[(var16 & 3) << 4 | var17 >>> 4]); + if(var15 < var13 - 2) { + int var18 = var11[var15 + 2] & 255; + var14.append(class307.__kc_m[(var17 & 15) << 2 | var18 >>> 6]).append(class307.__kc_m[var18 & 63]); + } else { + var14.append(class307.__kc_m[(var17 & 15) << 2]).append("="); + } + } else { + var14.append(class307.__kc_m[(var16 & 3) << 4]).append("=="); + } + } + + String var12 = var14.toString(); + var12 = var12; + + try { + URL var19 = new URL(Message.method1227("services", false) + "m=accountappeal/login.ws"); + URLConnection var24 = var19.openConnection(); + var24.setDoInput(true); + var24.setDoOutput(true); + var24.setConnectTimeout(5000); + OutputStreamWriter var20 = new OutputStreamWriter(var24.getOutputStream()); + var20.write("data2=" + class306.method5781(var12) + "&dest=" + class306.method5781("passwordchoice.ws")); + var20.flush(); + InputStream var21 = var24.getInputStream(); + var9 = new Buffer(new byte[1000]); + + do { + var17 = var21.read(var9.array, var9.index, 1000 - var9.index); + if(var17 == -1) { + var20.close(); + var21.close(); + String var22 = new String(var9.array); + if(var22.startsWith("OFFLINE")) { + return 4; + } else if(var22.startsWith("WRONG")) { + return 7; + } else if(var22.startsWith("RELOAD")) { + return 3; + } else if(var22.startsWith("Not permitted for social network accounts.")) { + return 6; + } else { + var9.xteaDecryptAll(var6); + + while(var9.index > 0 && var9.array[var9.index - 1] == 0) { + --var9.index; + } + + var22 = new String(var9.array, 0, var9.index); + if(class83.method2026(var22)) { + WorldMapCacheName.method635(var22, true, false); + return 2; + } else { + return 5; + } + } + } + + var9.index += var17; + } while(var9.index < 1000); + + return 5; + } catch (Throwable var23) { + var23.printStackTrace(); + return 5; + } + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(II)Ljm;", + garbageValue = "-499011631" + ) + @Export("getHitSplatDefinition") + public static HitSplatDefinition getHitSplatDefinition(int var0) { + HitSplatDefinition var1 = (HitSplatDefinition)HitSplatDefinition.HitSplatDefinition_cached.get((long)var0); + if(var1 != null) { + return var1; + } else { + byte[] var2 = HitSplatDefinition.__jm_m.takeRecord(32, var0); + var1 = new HitSplatDefinition(); + if(var2 != null) { + var1.read(new Buffer(var2)); + } + + HitSplatDefinition.HitSplatDefinition_cached.put(var1, (long)var0); + return var1; + } + } + + @ObfuscatedName("c") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "2135404786" + ) + public static void method1780() { + ItemDefinition.ItemDefinition_cached.clear(); + ItemDefinition.ItemDefinition_cachedModels.clear(); + ItemDefinition.Sprite_cached.clear(); + } +} diff --git a/rs-client/src/main/java/class80.java b/rs-client/src/main/java/class80.java new file mode 100644 index 0000000000..61022cc1b2 --- /dev/null +++ b/rs-client/src/main/java/class80.java @@ -0,0 +1,47 @@ +import java.math.BigInteger; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("ce") +public class class80 { + @ObfuscatedName("o") + @Export("__ce_o") + static final BigInteger __ce_o; + @ObfuscatedName("u") + @Export("__ce_u") + static final BigInteger __ce_u; + + static { + __ce_o = new BigInteger("80782894952180643741752986186714059433953886149239752893425047584684715842049"); + __ce_u = new BigInteger("7237300117305667488707183861728052766358166655052137727439795191253340127955075499635575104901523446809299097934591732635674173519120047404024393881551683"); + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(I)V", + garbageValue = "1844169387" + ) + static void method2015() { + if(Login.__cu_f) { + Login.__cu_o = null; + IndexCacheLoader.__bd_u = null; + WorldMapEvent.__ap_w = null; + Login.__cu_g = null; + Fonts.__kz_l = null; + WorldMapSectionType.__h_e = null; + KeyHandler.__an_x = null; + Login.__cu_d = null; + class308.__kw_n = null; + class30.__ar_bd = null; + Frames.__en_bc = null; + AttackOption.__cj_bo = null; + UrlRequest.__ey_bx = null; + class277.__jn_by = null; + class16.field85.method1762(); + AbstractSocket.method3488(2); + UserComparator9.method3343(true); + Login.__cu_f = false; + } + } +} diff --git a/rs-client/src/main/java/class83.java b/rs-client/src/main/java/class83.java new file mode 100644 index 0000000000..21b18571bd --- /dev/null +++ b/rs-client/src/main/java/class83.java @@ -0,0 +1,65 @@ +import java.math.BigInteger; +import java.net.MalformedURLException; +import java.net.URL; +import net.runelite.mapping.Export; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +@ObfuscatedName("cm") +public class class83 { + @ObfuscatedName("m") + @Export("__cm_m") + static final BigInteger __cm_m; + @ObfuscatedName("f") + @Export("__cm_f") + static final BigInteger __cm_f; + @ObfuscatedName("e") + @ObfuscatedGetter( + intValue = 533653621 + ) + @Export("__cm_e") + public static int __cm_e; + + static { + __cm_m = new BigInteger("10001", 16); + __cm_f = new BigInteger("83ff79a3e258b99ead1a70e1049883e78e513c4cdec538d8da9483879a9f81689c0c7d146d7b82b52d05cf26132b1cda5930eeef894e4ccf3d41eebc3aabe54598c4ca48eb5a31d736bfeea17875a35558b9e3fcd4aebe2a9cc970312a477771b36e173dc2ece6001ab895c553e2770de40073ea278026f36961c94428d8d7db", 16); + } + + @ObfuscatedName("m") + @ObfuscatedSignature( + signature = "(III)I", + garbageValue = "-1211070559" + ) + static int method2027(int var0, int var1) { + ItemContainer var2 = (ItemContainer)ItemContainer.itemContainers.get((long)var0); + return var2 == null?-1:(var1 >= 0 && var1 < var2.ids.length?var2.ids[var1]:-1); + } + + @ObfuscatedName("f") + @ObfuscatedSignature( + signature = "(Ljava/lang/String;I)Z", + garbageValue = "-1468699107" + ) + static boolean method2026(String var0) { + if(var0 == null) { + return false; + } else { + try { + new URL(var0); + return true; + } catch (MalformedURLException var2) { + return false; + } + } + } + + @ObfuscatedName("o") + @ObfuscatedSignature( + signature = "(Lir;II)Llq;", + garbageValue = "1413048059" + ) + public static IndexedSprite method2028(AbstractIndexCache var0, int var1) { + return !class179.method3643(var0, var1)?null:ServerPacket.method3663(); + } +} diff --git a/rs-client/src/main/java/class98.java b/rs-client/src/main/java/class98.java new file mode 100644 index 0000000000..043142871d --- /dev/null +++ b/rs-client/src/main/java/class98.java @@ -0,0 +1,228 @@ +import net.runelite.mapping.ObfuscatedName; + +@ObfuscatedName("cc") +public class class98 { + @ObfuscatedName("m") + int field1306; + @ObfuscatedName("f") + int field1303; + @ObfuscatedName("q") + int[] field1304; + @ObfuscatedName("w") + int[] field1305; + @ObfuscatedName("o") + float[][] field1302; + @ObfuscatedName("u") + int[] field1307; + + class98() { + MusicSample.method2352(24); + this.field1306 = MusicSample.method2352(16); + this.field1303 = MusicSample.method2352(24); + this.field1304 = new int[this.field1303]; + boolean var1 = MusicSample.method2338() != 0; + int var2; + int var3; + int var5; + if(var1) { + var2 = 0; + + for(var3 = MusicSample.method2352(5) + 1; var2 < this.field1303; ++var3) { + int var4 = MusicSample.method2352(WorldMapCacheName.method634(this.field1303 - var2)); + + for(var5 = 0; var5 < var4; ++var5) { + this.field1304[var2++] = var3; + } + } + } else { + boolean var14 = MusicSample.method2338() != 0; + + for(var3 = 0; var3 < this.field1303; ++var3) { + if(var14 && MusicSample.method2338() == 0) { + this.field1304[var3] = 0; + } else { + this.field1304[var3] = MusicSample.method2352(5) + 1; + } + } + } + + this.method2311(); + var2 = MusicSample.method2352(4); + if(var2 > 0) { + float var15 = MusicSample.method2357(MusicSample.method2352(32)); + float var16 = MusicSample.method2357(MusicSample.method2352(32)); + var5 = MusicSample.method2352(4) + 1; + boolean var6 = MusicSample.method2338() != 0; + int var7; + if(var2 == 1) { + var7 = method2310(this.field1303, this.field1306); + } else { + var7 = this.field1303 * this.field1306; + } + + this.field1305 = new int[var7]; + + int var8; + for(var8 = 0; var8 < var7; ++var8) { + this.field1305[var8] = MusicSample.method2352(var5); + } + + this.field1302 = new float[this.field1303][this.field1306]; + float var9; + int var10; + int var11; + if(var2 == 1) { + for(var8 = 0; var8 < this.field1303; ++var8) { + var9 = 0.0F; + var10 = 1; + + for(var11 = 0; var11 < this.field1306; ++var11) { + int var12 = var8 / var10 % var7; + float var13 = (float)this.field1305[var12] * var16 + var15 + var9; + this.field1302[var8][var11] = var13; + if(var6) { + var9 = var13; + } + + var10 *= var7; + } + } + } else { + for(var8 = 0; var8 < this.field1303; ++var8) { + var9 = 0.0F; + var10 = var8 * this.field1306; + + for(var11 = 0; var11 < this.field1306; ++var11) { + float var17 = (float)this.field1305[var10] * var16 + var15 + var9; + this.field1302[var8][var11] = var17; + if(var6) { + var9 = var17; + } + + ++var10; + } + } + } + } + + } + + @ObfuscatedName("f") + void method2311() { + int[] var1 = new int[this.field1303]; + int[] var2 = new int[33]; + + int var3; + int var4; + int var5; + int var6; + int var7; + int var8; + int var10; + for(var3 = 0; var3 < this.field1303; ++var3) { + var4 = this.field1304[var3]; + if(var4 != 0) { + var5 = 1 << 32 - var4; + var6 = var2[var4]; + var1[var3] = var6; + int var12; + if((var6 & var5) != 0) { + var7 = var2[var4 - 1]; + } else { + var7 = var6 | var5; + + for(var8 = var4 - 1; var8 >= 1; --var8) { + var12 = var2[var8]; + if(var12 != var6) { + break; + } + + var10 = 1 << 32 - var8; + if((var12 & var10) != 0) { + var2[var8] = var2[var8 - 1]; + break; + } + + var2[var8] = var12 | var10; + } + } + + var2[var4] = var7; + + for(var8 = var4 + 1; var8 <= 32; ++var8) { + var12 = var2[var8]; + if(var12 == var6) { + var2[var8] = var7; + } + } + } + } + + this.field1307 = new int[8]; + int var11 = 0; + + for(var3 = 0; var3 < this.field1303; ++var3) { + var4 = this.field1304[var3]; + if(var4 != 0) { + var5 = var1[var3]; + var6 = 0; + + for(var7 = 0; var7 < var4; ++var7) { + var8 = Integer.MIN_VALUE >>> var7; + if((var5 & var8) != 0) { + if(this.field1307[var6] == 0) { + this.field1307[var6] = var11; + } + + var6 = this.field1307[var6]; + } else { + ++var6; + } + + if(var6 >= this.field1307.length) { + int[] var9 = new int[this.field1307.length * 2]; + + for(var10 = 0; var10 < this.field1307.length; ++var10) { + var9[var10] = this.field1307[var10]; + } + + this.field1307 = var9; + } + + var8 >>>= 1; + } + + this.field1307[var6] = ~var3; + if(var6 >= var11) { + var11 = var6 + 1; + } + } + } + + } + + @ObfuscatedName("q") + int method2306() { + int var1; + for(var1 = 0; this.field1307[var1] >= 0; var1 = MusicSample.method2338() != 0?this.field1307[var1]:var1 + 1) { + ; + } + + return ~this.field1307[var1]; + } + + @ObfuscatedName("w") + float[] method2307() { + return this.field1302[this.method2306()]; + } + + @ObfuscatedName("m") + static int method2310(int var0, int var1) { + int var2; + for(var2 = (int)Math.pow((double)var0, 1.0D / (double)var1) + 1; class179.method3642(var2, var1) > var0; --var2) { + ; + } + + return var2; + } +} diff --git a/rs-client/src/main/java/net/runelite/rs/Opcodes.java b/rs-client/src/main/java/net/runelite/rs/Opcodes.java new file mode 100644 index 0000000000..317b2a8c42 --- /dev/null +++ b/rs-client/src/main/java/net/runelite/rs/Opcodes.java @@ -0,0 +1,4 @@ +package net.runelite.rs; + +public class Opcodes { +} diff --git a/rs-client/src/main/java/net/runelite/rs/Reflection.java b/rs-client/src/main/java/net/runelite/rs/Reflection.java new file mode 100644 index 0000000000..456b58a368 --- /dev/null +++ b/rs-client/src/main/java/net/runelite/rs/Reflection.java @@ -0,0 +1,315 @@ +/* + * Copyright (c) 2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.rs; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.math.BigInteger; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import net.runelite.mapping.ObfuscatedGetter; +import net.runelite.mapping.ObfuscatedName; +import net.runelite.mapping.ObfuscatedSignature; + +public class Reflection +{ + private static final boolean PRINT_DEBUG_MESSAGES = true; + + private static Map> classes = new HashMap<>(); + + static + { + try + { + Enumeration systemResources = ClassLoader.getSystemResources(""); + + while (systemResources.hasMoreElements()) + { + URL url = systemResources.nextElement(); + + Path path; + try + { + path = new File(url.toURI()) + .toPath(); + } + catch (URISyntaxException e) + { + path = new File(url.getPath()) + .toPath(); + } + + Files.walk(path) + .filter(Files::isRegularFile) + .forEach(f -> + { + String className = f + .getName(f.getNameCount() - 1) + .toString() + .replace(".class", ""); + + try + { + Class clazz = Class.forName(className); + + ObfuscatedName obfuscatedName = clazz + .getAnnotation(ObfuscatedName.class); + + if (obfuscatedName != null) + { + classes.put(obfuscatedName.value(), clazz); + } + } + catch (ClassNotFoundException ignore) + { + } + }); + } + } + catch (IOException e) + { + e.printStackTrace(); + } + } + + public static Class findClass(String name) throws ClassNotFoundException + { + Class clazz = classes.get(name); + + if (clazz != null) + { + return clazz; + } + + if (PRINT_DEBUG_MESSAGES) + { + System.out.println("Server requested dummy class " + name); + } + + return Class.forName(name); + } + + public static Field findField(Class clazz, String name) throws NoSuchFieldException + { + if (PRINT_DEBUG_MESSAGES) + { + System.out.println("Looking for field " + name + " in " + clazz); + } + + for (Field f : clazz.getDeclaredFields()) + { + ObfuscatedName annotation = f.getAnnotation(ObfuscatedName.class); + if (annotation != null && annotation.value().equals(name)) + { + return f; + } + } + + if (PRINT_DEBUG_MESSAGES) + { + System.out.println("Server requested dummy field " + name + " in " + clazz); + } + + return clazz.getDeclaredField(name); + } + + public static String getMethodName(Method method) + { + ObfuscatedName annotation = method.getAnnotation(ObfuscatedName.class); + if (annotation != null) + { + return annotation.value(); + } + else + { + return method.getName(); + } + } + + public static Class[] getParameterTypes(Method method) + { + ObfuscatedSignature sig = method.getAnnotation(ObfuscatedSignature.class); + Class[] types = method.getParameterTypes(); + + if (sig == null) + { + return types; + } + + String s = sig.signature(); + int i = s.lastIndexOf(')'); + char c = s.charAt(i - 1); + + Class last; + + switch (c) + { + case 'B': + last = byte.class; + break; + case 'I': + last = int.class; + break; + case 'S': + last = short.class; + break; + default: + throw new IllegalStateException(); + } + + types = Arrays.copyOf(types, types.length + 1); + types[types.length - 1] = last; + return types; + } + + public static int getInt(Field field, Object obj) throws IllegalArgumentException, IllegalAccessException + { + if (PRINT_DEBUG_MESSAGES) + { + System.out.println("Getting field " + field); + } + + boolean unset = false; + if ((field.getModifiers() & Modifier.PRIVATE) == 0) + { + // we're outside of the package so set it accessable + // to behave like we are in the package + field.setAccessible(true); + unset = true; + } + + int i; + try + { + i = field.getInt(obj); + } + catch (Exception ex) + { + if (PRINT_DEBUG_MESSAGES) + { + ex.printStackTrace(); + } + throw ex; + } + finally + { + if (unset) + { + field.setAccessible(false); + } + } + + ObfuscatedGetter og = field.getAnnotation(ObfuscatedGetter.class); + if (og != null) + { + int getter = og.intValue(); + int setter = modInverse(getter); + + // encrypt + i *= setter; + } + return i; + } + + public static void setInt(Field field, Object obj, int value) throws IllegalArgumentException, IllegalAccessException + { + if (PRINT_DEBUG_MESSAGES) + { + System.out.println("Setting field " + field + " to " + value); + } + + ObfuscatedGetter og = field.getAnnotation(ObfuscatedGetter.class); + if (og != null) + { + int getter = og.intValue(); + + // decrypt + value *= getter; + } + + boolean unset = false; + if ((field.getModifiers() & Modifier.PRIVATE) == 0) + { + // we're outside of the package so set it accessable + // to behave like we are in the package + field.setAccessible(true); + unset = true; + } + + try + { + field.setInt(obj, value); + } + finally + { + if (unset) + { + field.setAccessible(false); + } + } + } + + public static BigInteger modInverse(BigInteger val, int bits) + { + BigInteger shift = BigInteger.ONE.shiftLeft(bits); + return val.modInverse(shift); + } + + public static int modInverse(int val) + { + return modInverse(BigInteger.valueOf(val), 32).intValue(); + } + + public static Object invoke(Method method, Object object, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException + { + if (PRINT_DEBUG_MESSAGES) + { + System.out.println("Invoking " + method); + } + + try + { + return method.invoke(object, args); + } + catch (Throwable ex) + { + if (PRINT_DEBUG_MESSAGES) + { + ex.printStackTrace(); + } + throw ex; + } + } +} \ No newline at end of file From 49afdf7dc791b090c4113854b4f780b7d82cff59 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 8 Jun 2019 09:33:50 +0200 Subject: [PATCH 04/19] Injector, deob, mixins --- deobfuscator/pom.xml | 173 + .../main/java/net/runelite/asm/ClassFile.java | 420 + .../java/net/runelite/asm/ClassGroup.java | 110 + .../src/main/java/net/runelite/asm/Field.java | 163 + .../java/net/runelite/asm/Interfaces.java | 92 + .../main/java/net/runelite/asm/Method.java | 314 + .../src/main/java/net/runelite/asm/Type.java | 228 + .../runelite/asm/attributes/Annotations.java | 85 + .../net/runelite/asm/attributes/Code.java | 113 + .../runelite/asm/attributes/Exceptions.java | 48 +- .../asm/attributes/annotation/Annotation.java | 82 + .../asm/attributes/annotation/Element.java | 68 + .../asm/attributes/code/Exception.java | 111 + .../asm/attributes/code/Exceptions.java | 73 + .../asm/attributes/code/Instruction.java | 144 + .../asm/attributes/code/InstructionType.java | 348 + .../asm/attributes/code/Instructions.java | 189 + .../runelite/asm/attributes/code/Label.java | 128 + .../asm/attributes/code/LocalVariable.java | 77 + .../asm/attributes/code/Parameter.java | 58 + .../types/AdditionInstruction.java | 121 + .../code/instruction/types/ArrayLoad.java | 84 + .../types/ArrayStoreInstruction.java | 31 + .../types/ComparisonInstruction.java | 31 + .../types/ConversionInstruction.java | 31 + .../types/DivisionInstruction.java | 86 + .../instruction/types/DupInstruction.java | 51 + .../instruction/types/FieldInstruction.java | 36 + .../types/GetFieldInstruction.java | 30 + .../instruction/types/IntInstruction.java | 33 + .../instruction/types/InvokeInstruction.java | 39 + .../instruction/types/JumpingInstruction.java | 37 + .../instruction/types/LVTInstruction.java | 38 + .../instruction/types/LVTInstructionType.java | 46 + .../types/MappableInstruction.java | 38 + .../types/PushConstantInstruction.java | 34 + .../instruction/types/ReturnInstruction.java | 31 + .../types/SetFieldInstruction.java | 30 + .../types/SubtractionInstruction.java | 136 + .../instruction/types/TypeInstruction.java | 34 + .../attributes/code/instructions/AALoad.java | 75 + .../attributes/code/instructions/AAStore.java | 59 + .../code/instructions/AConstNull.java | 63 + .../attributes/code/instructions/ALoad.java | 104 + .../code/instructions/ANewArray.java | 103 + .../attributes/code/instructions/AStore.java | 102 + .../attributes/code/instructions/AThrow.java | 63 + .../code/instructions/ArrayLength.java | 62 + .../code/instructions/ArrayStore.java | 140 + .../attributes/code/instructions/BALoad.java | 63 + .../attributes/code/instructions/BAStore.java | 58 + .../attributes/code/instructions/BiPush.java | 106 + .../attributes/code/instructions/CALoad.java | 63 + .../attributes/code/instructions/CAStore.java | 58 + .../code/instructions/CheckCast.java | 110 + .../asm/attributes/code/instructions/D2F.java | 63 + .../asm/attributes/code/instructions/D2I.java | 63 + .../asm/attributes/code/instructions/D2L.java | 63 + .../attributes/code/instructions/DALoad.java | 63 + .../attributes/code/instructions/DAStore.java | 58 + .../attributes/code/instructions/DAdd.java | 73 + .../attributes/code/instructions/DCmpG.java | 77 + .../attributes/code/instructions/DCmpL.java | 77 + .../attributes/code/instructions/DDiv.java | 74 + .../attributes/code/instructions/DLoad.java | 107 + .../attributes/code/instructions/DMul.java | 72 + .../attributes/code/instructions/DNeg.java | 69 + .../attributes/code/instructions/DRem.java | 73 + .../attributes/code/instructions/DStore.java | 102 + .../attributes/code/instructions/DSub.java | 73 + .../asm/attributes/code/instructions/Dup.java | 127 + .../attributes/code/instructions/Dup2.java | 142 + .../attributes/code/instructions/Dup2_X1.java | 262 + .../attributes/code/instructions/Dup2_X2.java | 138 + .../attributes/code/instructions/Dup_X1.java | 152 + .../attributes/code/instructions/Dup_X2.java | 155 + .../asm/attributes/code/instructions/F2D.java | 62 + .../asm/attributes/code/instructions/F2I.java | 62 + .../asm/attributes/code/instructions/F2L.java | 62 + .../attributes/code/instructions/FALoad.java | 63 + .../attributes/code/instructions/FAStore.java | 58 + .../attributes/code/instructions/FAdd.java | 73 + .../attributes/code/instructions/FCmpG.java | 77 + .../attributes/code/instructions/FCmpL.java | 77 + .../attributes/code/instructions/FDiv.java | 74 + .../attributes/code/instructions/FLoad.java | 107 + .../attributes/code/instructions/FMul.java | 72 + .../attributes/code/instructions/FNeg.java | 69 + .../attributes/code/instructions/FRem.java | 73 + .../attributes/code/instructions/FStore.java | 102 + .../attributes/code/instructions/FSub.java | 73 + .../code/instructions/GetField.java | 145 + .../code/instructions/GetStatic.java | 139 + .../attributes/code/instructions/Goto.java | 124 + .../attributes/code/instructions/GotoW.java | 99 + .../asm/attributes/code/instructions/I2B.java | 62 + .../asm/attributes/code/instructions/I2C.java | 62 + .../asm/attributes/code/instructions/I2D.java | 62 + .../asm/attributes/code/instructions/I2F.java | 62 + .../asm/attributes/code/instructions/I2L.java | 67 + .../asm/attributes/code/instructions/I2S.java | 62 + .../attributes/code/instructions/IALoad.java | 63 + .../attributes/code/instructions/IAStore.java | 58 + .../attributes/code/instructions/IAdd.java | 78 + .../attributes/code/instructions/IAnd.java | 78 + .../attributes/code/instructions/IDiv.java | 79 + .../attributes/code/instructions/IInc.java | 110 + .../attributes/code/instructions/ILoad.java | 113 + .../attributes/code/instructions/IMul.java | 77 + .../attributes/code/instructions/INeg.java | 69 + .../asm/attributes/code/instructions/IOr.java | 72 + .../attributes/code/instructions/IRem.java | 73 + .../attributes/code/instructions/IShL.java | 72 + .../attributes/code/instructions/IShR.java | 72 + .../attributes/code/instructions/IStore.java | 102 + .../attributes/code/instructions/ISub.java | 73 + .../attributes/code/instructions/IUShR.java | 72 + .../attributes/code/instructions/IXor.java | 72 + .../asm/attributes/code/instructions/If.java | 341 + .../asm/attributes/code/instructions/If0.java | 230 + .../code/instructions/IfACmpEq.java | 90 + .../code/instructions/IfACmpNe.java | 90 + .../attributes/code/instructions/IfCmpGe.java | 69 + .../attributes/code/instructions/IfCmpGt.java | 69 + .../attributes/code/instructions/IfCmpLe.java | 69 + .../attributes/code/instructions/IfCmpLt.java | 69 + .../attributes/code/instructions/IfEq.java | 110 + .../attributes/code/instructions/IfGe.java | 69 + .../attributes/code/instructions/IfGt.java | 69 + .../code/instructions/IfICmpEq.java | 135 + .../code/instructions/IfICmpNe.java | 143 + .../attributes/code/instructions/IfLe.java | 69 + .../attributes/code/instructions/IfLt.java | 69 + .../attributes/code/instructions/IfNe.java | 117 + .../code/instructions/IfNonNull.java | 84 + .../attributes/code/instructions/IfNull.java | 84 + .../code/instructions/InstanceOf.java | 102 + .../code/instructions/InvokeDynamic.java | 114 + .../code/instructions/InvokeInterface.java | 331 + .../code/instructions/InvokeSpecial.java | 296 + .../code/instructions/InvokeStatic.java | 293 + .../code/instructions/InvokeVirtual.java | 414 + .../asm/attributes/code/instructions/L2D.java | 62 + .../asm/attributes/code/instructions/L2F.java | 62 + .../asm/attributes/code/instructions/L2I.java | 62 + .../attributes/code/instructions/LALoad.java | 63 + .../attributes/code/instructions/LAStore.java | 58 + .../attributes/code/instructions/LAdd.java | 73 + .../attributes/code/instructions/LAnd.java | 72 + .../attributes/code/instructions/LCmp.java | 176 + .../asm/attributes/code/instructions/LDC.java | 184 + .../attributes/code/instructions/LDiv.java | 74 + .../attributes/code/instructions/LLoad.java | 107 + .../attributes/code/instructions/LMul.java | 78 + .../attributes/code/instructions/LNeg.java | 69 + .../asm/attributes/code/instructions/LOr.java | 72 + .../attributes/code/instructions/LRem.java | 73 + .../attributes/code/instructions/LShL.java | 72 + .../attributes/code/instructions/LShR.java | 72 + .../attributes/code/instructions/LStore.java | 104 + .../attributes/code/instructions/LSub.java | 73 + .../attributes/code/instructions/LUShR.java | 72 + .../attributes/code/instructions/LXor.java | 72 + .../code/instructions/LookupSwitch.java | 153 + .../code/instructions/MonitorEnter.java | 54 + .../code/instructions/MonitorExit.java | 54 + .../code/instructions/MultiANewArray.java | 115 + .../asm/attributes/code/instructions/NOP.java | 56 + .../asm/attributes/code/instructions/New.java | 115 + .../code/instructions/NewArray.java | 120 + .../asm/attributes/code/instructions/Pop.java | 58 + .../attributes/code/instructions/Pop2.java | 66 + .../code/instructions/PutField.java | 275 + .../code/instructions/PutStatic.java | 200 + .../attributes/code/instructions/Return.java | 109 + .../attributes/code/instructions/SALoad.java | 63 + .../attributes/code/instructions/SAStore.java | 58 + .../attributes/code/instructions/SiPush.java | 106 + .../attributes/code/instructions/Swap.java | 89 + .../code/instructions/TableSwitch.java | 210 + .../attributes/code/instructions/VReturn.java | 63 + .../net/runelite/asm/execution/Execution.java | 345 + .../asm/execution/ExecutionVisitor.java | 31 + .../net/runelite/asm/execution/Frame.java | 432 + .../runelite/asm/execution/FrameVisitor.java | 31 + .../asm/execution/InstructionContext.java | 260 + .../runelite/asm/execution/MethodContext.java | 83 + .../asm/execution/MethodContextVisitor.java | 31 + .../execution/ParallellMappingExecutor.java | 254 + .../net/runelite/asm/execution/Stack.java | 93 + .../runelite/asm/execution/StackContext.java | 100 + .../runelite/asm/execution/StaticStep.java | 209 + .../net/runelite/asm/execution/Value.java | 164 + .../asm/execution/VariableContext.java | 112 + .../net/runelite/asm/execution/Variables.java | 56 + .../asm/execution/WeakInstructionContext.java | 83 + .../objectwebasm/NonloadingClassWriter.java | 100 + .../java/net/runelite/asm/pool/Class.java | 78 + .../java/net/runelite/asm/pool/Field.java | 106 + .../java/net/runelite/asm/pool/Method.java | 104 + .../net/runelite/asm/signature/Signature.java | 177 + .../asm/signature/util/VirtualMethods.java | 97 + .../asm/visitors/ClassAnnotationVisitor.java | 68 + .../asm/visitors/ClassFieldVisitor.java | 70 + .../asm/visitors/ClassFileVisitor.java | 87 + .../runelite/asm/visitors/CodeVisitor.java | 449 + .../asm/visitors/FieldAnnotationVisitor.java | 68 + .../asm/visitors/MethodAnnotationVisitor.java | 68 + .../src/main/java/net/runelite/deob/Deob.java | 225 + .../net/runelite/deob/DeobAnnotations.java | 144 + .../net/runelite/deob/DeobProperties.java | 41 + .../java/net/runelite/deob/Deobfuscator.java | 33 + .../java/net/runelite/deob/Transformer.java | 33 + .../runelite/deob/c2s/IsaacCipherFinder.java | 121 + .../net/runelite/deob/c2s/RWOpcodeFinder.java | 116 + .../deob/clientver/ClientVersion.java | 67 + .../deob/clientver/ClientVersionMain.java | 39 + .../deob/clientver/VersionClassVisitor.java | 58 + .../deob/clientver/VersionMethodVisitor.java | 46 +- .../runelite/deob/deobfuscators/CastNull.java | 93 + .../deob/deobfuscators/EnumDeobfuscator.java | 262 + .../deob/deobfuscators/FieldInliner.java | 178 + .../deobfuscators/IllegalStateExceptions.java | 165 + .../net/runelite/deob/deobfuscators/Lvt.java | 99 + .../runelite/deob/deobfuscators/Order.java | 206 + .../deobfuscators/PacketHandlerOrder.java | 693 + .../deob/deobfuscators/RenameUnique.java | 109 + .../runelite/deob/deobfuscators/Renamer.java | 339 + .../deob/deobfuscators/RuntimeExceptions.java | 81 + .../deob/deobfuscators/UnreachedCode.java | 113 + .../deob/deobfuscators/UnusedClass.java | 77 + .../deob/deobfuscators/UnusedFields.java | 85 + .../deob/deobfuscators/UnusedMethods.java | 119 + .../deob/deobfuscators/UnusedParameters.java | 316 + .../arithmetic/AssociatedConstant.java | 35 + .../deob/deobfuscators/arithmetic/DMath.java | 147 + .../arithmetic/DupDeobfuscator.java | 275 + .../deobfuscators/arithmetic/Encryption.java | 57 + .../deobfuscators/arithmetic/FieldInfo.java | 165 + .../deobfuscators/arithmetic/ModArith.java | 795 + .../MultiplicationDeobfuscator.java | 401 + .../arithmetic/MultiplicationExpression.java | 134 + .../arithmetic/MultiplyOneDeobfuscator.java | 129 + .../arithmetic/MultiplyZeroDeobfuscator.java | 142 + .../deob/deobfuscators/arithmetic/Pair.java | 56 + .../deob/deobfuscators/cfg/Block.java | 164 + .../cfg/ControlFlowDeobfuscator.java | 267 + .../deobfuscators/cfg/ControlFlowGraph.java | 160 + .../constparam/ConstantMethodParameter.java | 74 + .../constparam/ConstantParameter.java | 483 + .../exprargorder/ExprArgOrder.java | 544 + .../exprargorder/Expression.java | 100 + .../deob/deobfuscators/lvt/LVTType.java | 32 + .../deob/deobfuscators/lvt/MapKey.java | 75 + .../deob/deobfuscators/lvt/Mappings.java | 92 + .../mapping/AnnotationIntegrityChecker.java | 356 + .../mapping/AnnotationMapper.java | 161 + .../mapping/ClassGroupMapper.java | 69 + .../deobfuscators/mapping/ClassMapper.java | 85 + .../mapping/ConstructorMapper.java | 131 + .../mapping/ExecutionMapper.java | 69 + .../deob/deobfuscators/mapping/Mapper.java | 239 + .../deob/deobfuscators/mapping/Mapping.java | 99 + .../mapping/MappingExecutorUtil.java | 311 + .../mapping/MethodSignatureMapper.java | 72 + .../mapping/ParallelExecutorMapping.java | 420 + .../mapping/StaticInitializerIndexer.java | 92 + .../mapping/StaticMethodSignatureMapper.java | 87 + .../deobfuscators/menuaction/Comparison.java | 83 + .../menuaction/MenuActionDeobfuscator.java | 257 + .../packethandler/PacketLengthFinder.java | 155 + .../packethandler/PacketRead.java | 114 + .../packethandler/PacketTypeFinder.java | 115 + .../packetwrite/OpcodeReplacer.java | 99 + .../packetwrite/PacketWrite.java | 53 + .../packetwrite/PacketWriteDeobfuscator.java | 337 + .../transformers/ClientErrorTransformer.java | 105 + .../transformers/GetPathTransformer.java | 98 + .../transformers/MaxMemoryTransformer.java | 115 + .../transformers/OpcodesTransformer.java | 74 + .../transformers/ReflectionTransformer.java | 254 + .../RuneliteBufferTransformer.java | 217 + .../transformers/buffer/BufferFinder.java | 115 + .../buffer/BufferMethodInjector.java | 140 + .../buffer/BufferPayloadFinder.java | 73 + .../buffer/PacketFlushFinder.java | 119 + .../transformers/buffer/RuneliteBuffer.java | 198 + .../net/runelite/deob/s2c/HandlerFinder.java | 309 + .../net/runelite/deob/s2c/PacketHandler.java | 176 + .../net/runelite/deob/s2c/PacketHandlers.java | 70 + .../deob/updater/AnnotationCopier.java | 120 + .../deob/updater/AnnotationRenamer.java | 92 + .../deob/updater/ParameterRenamer.java | 59 + .../runelite/deob/updater/UpdateMappings.java | 96 + .../java/net/runelite/deob/util/IdGen.java | 36 + .../java/net/runelite/deob/util/JarUtil.java | 127 + .../net/runelite/deob/util/NameMappings.java | 74 + .../runelite/deob/util/PrimitiveUtils.java | 73 + .../test/java/net/runelite/asm/ClassUtil.java | 44 + .../asm/annotations/AnnotationTest.java | 81 + .../asm/annotations/MyAnnotation.java | 35 + .../runelite/asm/annotations/TestClass.java | 35 + .../code/instructions/IfEqTest.java | 117 + .../code/instructions/IfICmpEqTest.java | 74 + .../code/instructions/LCmpTest.java | 66 + .../runelite/asm/execution/ExecutionTest.java | 47 + .../ParallelMappingExecutorTest.java | 63 + .../ParallellMappingExecutorTest.java | 69 + .../asm/execution/mapper/StaticStepTest.java | 49 + .../asm/execution/tests/TableSwitch.java | 49 + .../runelite/asm/signature/SignatureTest.java | 40 + .../asm/visitors/ClassFileVisitorTest.java | 53 + .../net/runelite/deob/ClassGroupFactory.java | 91 + .../net/runelite/deob/DeobTestProperties.java | 63 + .../runelite/deob/TemporyFolderLocation.java | 48 + .../deob/clientver/ClientVersionTest.java | 46 + .../deob/deobfuscators/CastNullTest.java | 83 + .../deobfuscators/EnumDeobfuscatorTest.java | 68 + .../deob/deobfuscators/FieldInlinerTest.java | 68 + .../IllegalStateExceptionsTest.java | 68 + .../runelite/deob/deobfuscators/LvtTest.java | 111 + .../deob/deobfuscators/OrderTest.java | 69 + .../deobfuscators/PacketHandlerOrderTest.java | 69 + .../deob/deobfuscators/RenameUniqueTest.java | 118 + .../deobfuscators/RuntimeExceptionsTest.java | 68 + .../deob/deobfuscators/UnreachedCodeTest.java | 92 + .../deob/deobfuscators/UnusedClassTest.java | 91 + .../deob/deobfuscators/UnusedFieldsTest.java | 68 + .../deob/deobfuscators/UnusedMethodsTest.java | 68 + .../deobfuscators/UnusedParametersTest.java | 95 + .../arithmetic/DupDeobfuscatorTest.java | 177 + .../arithmetic/ModArithTest.java | 87 + .../MultiplicationDeobfuscatorTest.java | 919 + .../MultiplyOneDeobfuscatorTest.java | 253 + .../MultiplyZeroDeobfuscatorTest.java | 70 + .../arithmetic/SimpleModArithTest.java | 173 + .../cfg/ControlFlowDeobfuscatorTest.java | 68 + .../constparam/ConstantParameterTest.java | 69 + .../exprargorder/ExprArgOrderTest.java | 391 + .../deobfuscators/mapping/MappingDumper.java | 315 + .../MenuActionDeobfuscatorTest.java | 68 + .../packethandler/PacketTypeFinderTest.java | 62 + .../PacketWriteDeobfuscatorTest.java | 72 + .../ClientErrorTransformerTest.java | 75 + .../transformers/buffer/BufferFinderTest.java | 62 + .../buffer/RuneliteBufferTest.java | 61 + .../unreachedcode/UnreachableTest.java | 56 + .../deobfuscators/unusedclass/ClassA.java | 33 + .../deobfuscators/unusedclass/EmptyClass.java | 30 + .../unusedclass/EmptyInterface.java | 30 + .../deob/injection/TestingClassLoader.java | 68 + .../deob/updater/AnnotationCopierTest.java | 67 + .../deob/updater/AnnotationRenamerTest.java | 62 + .../deob/updater/UpdateMappingsTest.java | 221 + .../java/net/runelite/osb/HookImporter.java | 331 + .../net/runelite/osb/inject/ClassHook.java | 59 + .../net/runelite/osb/inject/FieldHook.java | 42 + .../net/runelite/osb/inject/MethodHook.java | 48 + .../net/runelite/runeloader/CheckExports.java | 129 + .../runelite/runeloader/CheckMappings.java | 150 + .../runelite/runeloader/MappingImporter.java | 210 + .../java/net/runelite/runeloader/Utils.java | 43 + .../inject/AddFieldInstruction.java | 17 + .../inject/AddInterfaceInstruction.java | 23 + .../inject/AddMethodInstruction.java | 25 + .../inject/GetterInjectInstruction.java | 64 + .../runelite/runeloader/inject/Injection.java | 19 + .../runeloader/inject/InjectionModscript.java | 62 + .../inject/InstructionDeserializer.java | 82 + .../inject/MethodModInstruction.java | 64 + .../inject/ReplaceNodeInstruction.java | 19 + .../inject/SuperChangeInstruction.java | 35 + .../TableJumpInstruction$TableJump.java | 18 + .../inject/TableJumpInstruction.java | 32 + .../net/runelite/runesuite/HookClass.java | 14 + .../net/runelite/runesuite/HookField.java | 15 + .../net/runelite/runesuite/HookImporter.java | 280 + .../net/runelite/runesuite/HookMethod.java | 19 + .../java/net/runelite/runesuite/hooks.json | 32344 ++++++++++++++++ .../src/test/resources/deob-test.properties | 3 + injected-client/pom.xml | 88 + injector-plugin/pom.xml | 104 + .../java/net/runelite/injector/Inject.java | 629 + .../runelite/injector/InjectConstruct.java | 171 + .../net/runelite/injector/InjectGetter.java | 155 + .../net/runelite/injector/InjectHook.java | 384 + .../runelite/injector/InjectHookMethod.java | 251 + .../net/runelite/injector/InjectInvoker.java | 291 + .../net/runelite/injector/InjectMojo.java | 155 + .../net/runelite/injector/InjectSetter.java | 159 + .../runelite/injector/InjectionException.java | 44 + .../java/net/runelite/injector/Injector.java | 76 + .../runelite/injector/InjectorValidator.java | 196 + .../net/runelite/injector/MixinInjector.java | 982 + .../injector/raw/ClearColorBuffer.java | 93 + .../injector/raw/DrawAfterWidgets.java | 287 + .../net/runelite/injector/raw/DrawMenu.java | 193 + .../runelite/injector/raw/RasterizerHook.java | 400 + .../net/runelite/injector/raw/RenderDraw.java | 92 + .../net/runelite/injector/raw/ScriptVM.java | 353 + .../injector/InjectConstructTest.java | 63 + .../injector/InjectHookMethodTest.java | 123 + .../runelite/injector/InjectSetterTest.java | 116 + .../net/runelite/injector/InjectTest.java | 74 + .../runelite/injector/MixinInjectorTest.java | 268 + .../injector/raw/DrawAfterWidgetsTest.java | 80 + pom.xml | 6 +- rs-client/pom.xml | 13 +- .../src/main/java/net/runelite/api/Actor.java | 4 +- .../main/java/net/runelite/api/Client.java | 4 +- .../java/net/runelite/api/CollisionData.java | 2 +- .../net/runelite/api/DecorativeObject.java | 2 +- .../runelite/api/EquipmentInventorySlot.java | 2 +- .../java/net/runelite/api/GameObject.java | 2 +- .../main/java/net/runelite/api/GraphicID.java | 1 + .../java/net/runelite/api/Perspective.java | 4 +- .../java/net/runelite/api/ScriptEvent.java | 4 +- .../java/net/runelite/api/WidgetNode.java | 2 +- .../java/net/runelite/api/coords/Angle.java | 8 +- .../net/runelite/api/coords/WorldArea.java | 2 +- .../net/runelite/api/coords/WorldPoint.java | 2 +- .../runelite/api/events/AnimationChanged.java | 2 +- .../api/events/BoostedLevelChanged.java | 2 +- .../api/events/ItemContainerChanged.java | 2 +- .../api/events/MenuOptionClicked.java | 2 +- .../api/events/SpotAnimationChanged.java | 2 +- .../net/runelite/api/events/WidgetLoaded.java | 2 +- .../api/events/WidgetMenuOptionClicked.java | 2 +- .../runelite/api/events/WidgetPositioned.java | 2 +- .../net/runelite/api/hooks/Callbacks.java | 2 +- .../java/net/runelite/api/kit/KitType.java | 4 +- .../java/net/runelite/api/widgets/Widget.java | 8 +- .../net/runelite/api/widgets/WidgetInfo.java | 2 +- .../net/runelite/api/widgets/WidgetItem.java | 2 +- .../net/runelite/client/game/ItemManager.java | 36 +- .../net/runelite/client/game/LootManager.java | 2 +- .../runelite/client/game/SpriteManager.java | 10 +- .../client/graphics/ModelOutlineRenderer.java | 4 +- .../runelite/client/menus/MenuManager.java | 14 +- .../client/plugins/ammo/AmmoPlugin.java | 8 +- .../plugins/banktags/BankTagsPlugin.java | 6 +- .../plugins/banktags/tabs/TabInterface.java | 10 +- .../plugins/barrows/BarrowsOverlay.java | 12 +- .../chatcommands/ChatCommandsPlugin.java | 4 +- .../plugins/cluescrolls/ClueScrollPlugin.java | 10 +- .../cluescrolls/clues/CrypticClue.java | 4 +- .../plugins/cluescrolls/clues/MapClue.java | 4 +- .../clues/emote/SingleItemRequirement.java | 4 +- .../plugins/combatcounter/CombatCounter.java | 6 +- .../client/plugins/cooking/CookingPlugin.java | 6 +- .../client/plugins/coxhelper/CoxOverlay.java | 14 +- .../client/plugins/coxhelper/CoxPlugin.java | 6 +- .../demonicgorilla/DemonicGorilla.java | 4 +- .../plugins/devtools/DevToolsOverlay.java | 12 +- .../plugins/devtools/DevToolsPlugin.java | 10 +- .../EquipmentInspectorPanel.java | 4 +- .../EquipmentInspectorPlugin.java | 8 +- .../plugins/equipmentinspector/ItemPanel.java | 4 +- .../client/plugins/examine/ExaminePlugin.java | 8 +- .../plugins/fightcave/NPCContainer.java | 4 +- .../plugins/fightcave/TimersOverlay.java | 4 +- .../fishing/FishingSpotMinimapOverlay.java | 2 +- .../plugins/fishing/FishingSpotOverlay.java | 2 +- .../freezetimers/FreezeTimersOverlay.java | 2 +- .../freezetimers/FreezeTimersPlugin.java | 10 +- .../plugins/freezetimers/PrayerTracker.java | 2 +- .../grandexchange/GrandExchangeOfferSlot.java | 4 +- .../GrandExchangeOffersPanel.java | 4 +- .../grandexchange/GrandExchangePlugin.java | 4 +- .../GrandExchangeSearchPanel.java | 4 +- .../grounditems/GroundItemsPlugin.java | 16 +- .../highalchemy/HighAlchemyOverlay.java | 4 +- .../idlenotifier/IdleNotifierPlugin.java | 12 +- .../plugins/implings/ImplingsOverlay.java | 8 +- .../instancemap/InstanceMapOverlay.java | 6 +- .../InterfaceStylesPlugin.java | 22 +- .../inventorygrid/InventoryGridOverlay.java | 116 - .../inventorysetups/InventorySetupPlugin.java | 6 +- .../InventoryViewerOverlay.java | 4 +- .../plugins/itemcharges/ItemChargePlugin.java | 8 +- .../plugins/itemprices/ItemPricesOverlay.java | 6 +- .../plugins/itemstats/ItemStatPlugin.java | 2 +- .../keptondeath/ActuallyTradeableItem.java | 2 +- .../keptondeath/KeptOnDeathPlugin.java | 14 +- .../loottracker/LootTrackerPlugin.java | 4 +- .../MenuEntrySwapperPlugin.java | 24 +- .../client/plugins/minimap/MinimapDot.java | 6 +- .../client/plugins/minimap/MinimapPlugin.java | 10 +- .../MultiIndicatorsPlugin.java | 4 +- .../musicindicator/MusicIndicatorPlugin.java | 6 +- .../plugins/npchighlight/MemorizedNpc.java | 4 +- .../plugins/npchighlight/NpcSceneOverlay.java | 4 +- .../npcunaggroarea/NpcAggroAreaPlugin.java | 4 +- .../ObjectIndicatorsPlugin.java | 8 +- .../PlayerIndicatorsOverlay.java | 12 +- .../client/plugins/poison/PoisonPlugin.java | 2 +- .../PrayAgainstPlayerOverlay.java | 6 +- .../plugins/prayagainstplayer/WeaponType.java | 6 +- .../plugins/pvptools/PvpToolsPlugin.java | 8 +- .../pyramidplunder/PyramidPlunderOverlay.java | 6 +- .../SkillCalculatorPlugin.java | 2 +- .../skillcalculator/banked/CriticalItem.java | 10 +- .../banked/ui/CriticalItemPanel.java | 12 +- .../client/plugins/slayer/SlayerPlugin.java | 10 +- .../plugins/slayer/TargetClickboxOverlay.java | 6 +- .../specialcounter/SpecialCounterPlugin.java | 4 +- .../plugins/statusbars/StatusBarsPlugin.java | 4 +- .../StonedLootTrackerPlugin.java | 8 +- .../SuppliesTrackerPlugin.java | 8 +- .../client/plugins/theatre/RoomHandler.java | 2 +- .../client/plugins/timers/TimersPlugin.java | 18 +- .../client/plugins/tmorph/TMorph.java | 76 +- .../whalewatchers/WhaleWatchersPlugin.java | 2 +- .../client/plugins/wiki/WikiPlugin.java | 10 +- .../net/runelite/client/rs/ClientLoader.java | 5 - .../client/ui/overlay/arrow/ArrowUtil.java | 6 +- .../net/runelite/client/util/ImageUtil.java | 6 +- .../net/runelite/client/util/PvPUtil.java | 4 +- .../plugins/bank/BankCalculationTest.java | 6 +- .../plugins/cooking/CookingPluginTest.java | 10 +- .../plugins/examine/ExaminePluginTest.java | 2 +- .../GrandExchangeOfferSlotTest.java | 4 +- .../idlenotifier/IdleNotifierPluginTest.java | 10 +- .../java/net/runelite/mixins/CameraMixin.java | 2 +- .../net/runelite/mixins/ClickboxMixin.java | 10 +- .../net/runelite/mixins/EntityHiderMixin.java | 16 +- .../java/net/runelite/mixins/MenuMixin.java | 42 +- .../net/runelite/mixins/MinimapMixin.java | 8 +- .../mixins/ProcessClientErrorMixin.java | 24 +- ...in.java => RSAbstractIndexCacheMixin.java} | 44 +- .../net/runelite/mixins/RSActorMixin.java | 106 +- .../mixins/RSBoundaryObjectMixin.java | 100 + .../net/runelite/mixins/RSCanvasMixin.java | 68 + ...fferMixin.java => RSChatChannelMixin.java} | 10 +- .../net/runelite/mixins/RSClanChatMixin.java | 47 + .../net/runelite/mixins/RSClanMateMixin.java | 24 + .../net/runelite/mixins/RSClientMixin.java | 177 +- .../runelite/mixins/RSDynamicObjectMixin.java | 4 +- .../mixins/RSEnumDefinitionMixin.java | 51 + .../mixins/RSFloorDecorationMixin.java | 61 + .../net/runelite/mixins/RSFriendMixin.java | 4 +- .../runelite/mixins/RSFriendSystemMixin.java | 24 + .../runelite/mixins/RSGameCanvasMixin.java | 93 - .../runelite/mixins/RSGameObjectMixin.java | 10 +- ...EngineMixin.java => RSGameShellMixin.java} | 12 +- .../mixins/RSGraphicsObjectMixin.java | 30 + ...SItemMixin.java => RSGroundItemMixin.java} | 34 +- .../mixins/RSGroundItemPileMixin.java | 34 + .../mixins/RSHealthBarDefinitionMixin.java | 89 + .../net/runelite/mixins/RSHealthBarMixin.java | 113 - .../net/runelite/mixins/RSIgnoredMixin.java | 25 + .../mixins/RSItemCompositionMixin.java | 92 - .../runelite/mixins/RSItemContainerMixin.java | 8 +- .../mixins/RSItemDefinitionMixin.java | 67 + .../runelite/mixins/RSKeyHandlerMixin.java | 71 + .../net/runelite/mixins/RSMessageMixin.java | 73 + .../net/runelite/mixins/RSModelDataMixin.java | 7 +- .../net/runelite/mixins/RSModelMixin.java | 38 +- ...putMixin.java => RSMouseHandlerMixin.java} | 32 +- .../mixins/RSMouseWheelHandlerMixin.java | 4 +- .../runelite/mixins/RSNPCDefinitionMixin.java | 50 + .../java/net/runelite/mixins/RSNPCMixin.java | 30 +- .../runelite/mixins/RSNodeHashTableMixin.java | 38 + .../java/net/runelite/mixins/RSNodeMixin.java | 2 +- .../mixins/RSPlayerAppearanceMixin.java | 34 + .../net/runelite/mixins/RSPlayerMixin.java | 64 +- .../runelite/mixins/RSProjectileMixin.java | 4 +- ...rMixin.java => RSRasterProviderMixin.java} | 34 +- ...r2DMixin.java => RSRasterizer2DMixin.java} | 28 +- .../net/runelite/mixins/RSSceneMixin.java | 42 +- ...in.java => RSSequenceDefinitionMixin.java} | 58 +- .../net/runelite/mixins/RSSpriteMixin.java | 112 + .../net/runelite/mixins/RSTextureMixin.java | 6 +- .../mixins/RSTextureProviderMixin.java | 4 +- .../java/net/runelite/mixins/RSTileMixin.java | 139 +- .../net/runelite/mixins/RSTileModelMixin.java | 60 + .../runelite/mixins/RSTileObjectMixin.java | 89 + .../net/runelite/mixins/RSTilePaintMixin.java | 60 + .../net/runelite/mixins/RSUserListMixin.java | 47 + .../net/runelite/mixins/RSVarcsMixin.java | 6 +- ...tMixin.java => RSWallDecorationMixin.java} | 42 +- .../net/runelite/mixins/RSWidgetMixin.java | 41 +- .../mixins/RSWorldMapManagerMixin.java | 34 + .../net/runelite/mixins/RSWorldMapMixin.java | 29 + .../net/runelite/mixins/RSWorldMixin.java | 6 +- .../net/runelite/mixins/ScriptVMMixin.java | 16 +- .../java/net/runelite/mixins/SpriteMixin.java | 51 +- .../mixins/StretchedModeMaxSizeMixin.java | 33 +- .../runelite/mixins/StretchedModeMixin.java | 27 +- .../net/runelite/mixins/TileObjectMixin.java | 113 - .../java/net/runelite/mixins/VarbitMixin.java | 50 +- .../runelite/mixins/WidgetSpriteMixin.java | 43 +- .../runelite/mixins/WorldHoppingMixin.java | 30 +- .../java/net/runelite/mapping/Export.java | 40 + .../java/net/runelite/mapping/Implements.java | 37 + .../runelite/mapping/ObfuscatedGetter.java | 39 + .../net/runelite/mapping/ObfuscatedName.java | 40 + .../runelite/mapping/ObfuscatedSignature.java | 42 + .../java/net/runelite/rs/api/RSClient.java | 2 +- 599 files changed, 84012 insertions(+), 1821 deletions(-) create mode 100644 deobfuscator/pom.xml create mode 100644 deobfuscator/src/main/java/net/runelite/asm/ClassFile.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/ClassGroup.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/Field.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/Interfaces.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/Method.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/Type.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/Annotations.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/Code.java rename runelite-mixins/src/main/java/net/runelite/mixins/RSHashTableMixin.java => deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java (65%) create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Annotation.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exception.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exceptions.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instructions.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/Label.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/LocalVariable.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/Parameter.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/AdditionInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayLoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayStoreInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ComparisonInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ConversionInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DivisionInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DupInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/GetFieldInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/IntInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/InvokeInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/JumpingInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/LVTInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/LVTInstructionType.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/MappableInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/PushConstantInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ReturnInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/SetFieldInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/SubtractionInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/TypeInstruction.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/AALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/AAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/AConstNull.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/ALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/ANewArray.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/AStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/AThrow.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/ArrayLength.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/ArrayStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/BALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/BAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/BiPush.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/CheckCast.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/D2F.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/D2I.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/D2L.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DAdd.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DCmpG.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DCmpL.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DDiv.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DLoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DMul.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DNeg.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DRem.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/DSub.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Dup.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Dup2.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Dup2_X1.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Dup2_X2.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Dup_X1.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Dup_X2.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/F2D.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/F2I.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/F2L.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FAdd.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FCmpG.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FCmpL.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FDiv.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FLoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FMul.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FNeg.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FRem.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/FSub.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/GetField.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/GetStatic.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Goto.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/GotoW.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/I2B.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/I2C.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/I2D.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/I2F.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/I2L.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/I2S.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IAdd.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IAnd.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IDiv.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IInc.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/ILoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IMul.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/INeg.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IOr.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IRem.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IShL.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IShR.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/ISub.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IUShR.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IXor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/If.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/If0.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfACmpEq.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfACmpNe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfCmpGe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfCmpGt.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfCmpLe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfCmpLt.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfEq.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfGe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfGt.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfICmpEq.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfICmpNe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfLe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfLt.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfNe.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfNonNull.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/IfNull.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/InstanceOf.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeDynamic.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeInterface.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeSpecial.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeStatic.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/InvokeVirtual.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/L2D.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/L2F.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/L2I.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LAdd.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LAnd.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LCmp.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LDC.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LDiv.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LLoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LMul.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LNeg.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LOr.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LRem.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LShL.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LShR.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LSub.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LUShR.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LXor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/LookupSwitch.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/MonitorEnter.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/MonitorExit.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/MultiANewArray.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/NOP.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/New.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/NewArray.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Pop.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Pop2.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/PutField.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/PutStatic.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Return.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/SALoad.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/SAStore.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/SiPush.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/Swap.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/TableSwitch.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/VReturn.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/Execution.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/ExecutionVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/Frame.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/FrameVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/InstructionContext.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/MethodContext.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/MethodContextVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/ParallellMappingExecutor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/Stack.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/StackContext.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/StaticStep.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/Value.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/VariableContext.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/Variables.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/execution/WeakInstructionContext.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/objectwebasm/NonloadingClassWriter.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/pool/Class.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/pool/Field.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/pool/Method.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/signature/Signature.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/signature/util/VirtualMethods.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/visitors/ClassAnnotationVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/visitors/ClassFieldVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/visitors/ClassFileVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/visitors/CodeVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/visitors/FieldAnnotationVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/asm/visitors/MethodAnnotationVisitor.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/Deob.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/DeobAnnotations.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/DeobProperties.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/Deobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/Transformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/c2s/IsaacCipherFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/c2s/RWOpcodeFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersion.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersionMain.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/clientver/VersionClassVisitor.java rename runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerCompositionMixin.java => deobfuscator/src/main/java/net/runelite/deob/clientver/VersionMethodVisitor.java (69%) create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/CastNull.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/EnumDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/FieldInliner.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/IllegalStateExceptions.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/Lvt.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/Order.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/PacketHandlerOrder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/RenameUnique.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/Renamer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/RuntimeExceptions.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/UnreachedCode.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/UnusedClass.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/UnusedFields.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/UnusedMethods.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/AssociatedConstant.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/DMath.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/DupDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/Encryption.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/FieldInfo.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/ModArith.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationExpression.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplyOneDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/MultiplyZeroDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/arithmetic/Pair.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/cfg/Block.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/cfg/ControlFlowDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/cfg/ControlFlowGraph.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/constparam/ConstantMethodParameter.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/constparam/ConstantParameter.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/exprargorder/ExprArgOrder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/exprargorder/Expression.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/LVTType.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/MapKey.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/Mappings.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/AnnotationIntegrityChecker.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/AnnotationMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ClassGroupMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ClassMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ConstructorMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ExecutionMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/Mapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/Mapping.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/MappingExecutorUtil.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/MethodSignatureMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ParallelExecutorMapping.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/StaticInitializerIndexer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/StaticMethodSignatureMapper.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/menuaction/Comparison.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/menuaction/MenuActionDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/packethandler/PacketLengthFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/packethandler/PacketRead.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/packethandler/PacketTypeFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/packetwrite/OpcodeReplacer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/packetwrite/PacketWrite.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/packetwrite/PacketWriteDeobfuscator.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/ClientErrorTransformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/GetPathTransformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/MaxMemoryTransformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/OpcodesTransformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/ReflectionTransformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/RuneliteBufferTransformer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/buffer/BufferFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/buffer/BufferMethodInjector.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/buffer/BufferPayloadFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/buffer/PacketFlushFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/deobfuscators/transformers/buffer/RuneliteBuffer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/s2c/HandlerFinder.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/s2c/PacketHandler.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/s2c/PacketHandlers.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/updater/AnnotationCopier.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/updater/AnnotationRenamer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/updater/ParameterRenamer.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/updater/UpdateMappings.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/util/IdGen.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/util/JarUtil.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/util/NameMappings.java create mode 100644 deobfuscator/src/main/java/net/runelite/deob/util/PrimitiveUtils.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/ClassUtil.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/annotations/AnnotationTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/annotations/MyAnnotation.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/annotations/TestClass.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/attributes/code/instructions/IfEqTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/attributes/code/instructions/IfICmpEqTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/attributes/code/instructions/LCmpTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/execution/ExecutionTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/execution/ParallelMappingExecutorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/execution/ParallellMappingExecutorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/execution/mapper/StaticStepTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/execution/tests/TableSwitch.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/signature/SignatureTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/asm/visitors/ClassFileVisitorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/ClassGroupFactory.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/DeobTestProperties.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/TemporyFolderLocation.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/clientver/ClientVersionTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/CastNullTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/EnumDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/FieldInlinerTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/IllegalStateExceptionsTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/LvtTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/OrderTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/PacketHandlerOrderTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/RenameUniqueTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/RuntimeExceptionsTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/UnreachedCodeTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/UnusedClassTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/UnusedFieldsTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/UnusedMethodsTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/UnusedParametersTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/arithmetic/DupDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/arithmetic/ModArithTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplicationDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplyOneDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/arithmetic/MultiplyZeroDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/arithmetic/SimpleModArithTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/cfg/ControlFlowDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/constparam/ConstantParameterTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/exprargorder/ExprArgOrderTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/mapping/MappingDumper.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/menuaction/MenuActionDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/packethandler/PacketTypeFinderTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/packetwrite/PacketWriteDeobfuscatorTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/transformers/ClientErrorTransformerTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/transformers/buffer/BufferFinderTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/transformers/buffer/RuneliteBufferTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unreachedcode/UnreachableTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/ClassA.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyClass.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyInterface.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/injection/TestingClassLoader.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/updater/AnnotationCopierTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/updater/AnnotationRenamerTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/deob/updater/UpdateMappingsTest.java create mode 100644 deobfuscator/src/test/java/net/runelite/osb/HookImporter.java create mode 100644 deobfuscator/src/test/java/net/runelite/osb/inject/ClassHook.java create mode 100644 deobfuscator/src/test/java/net/runelite/osb/inject/FieldHook.java create mode 100644 deobfuscator/src/test/java/net/runelite/osb/inject/MethodHook.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/CheckExports.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/CheckMappings.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/MappingImporter.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/Utils.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/AddFieldInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/AddInterfaceInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/AddMethodInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/GetterInjectInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/Injection.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/InjectionModscript.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/InstructionDeserializer.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/MethodModInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/ReplaceNodeInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/SuperChangeInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/TableJumpInstruction$TableJump.java create mode 100644 deobfuscator/src/test/java/net/runelite/runeloader/inject/TableJumpInstruction.java create mode 100644 deobfuscator/src/test/java/net/runelite/runesuite/HookClass.java create mode 100644 deobfuscator/src/test/java/net/runelite/runesuite/HookField.java create mode 100644 deobfuscator/src/test/java/net/runelite/runesuite/HookImporter.java create mode 100644 deobfuscator/src/test/java/net/runelite/runesuite/HookMethod.java create mode 100644 deobfuscator/src/test/java/net/runelite/runesuite/hooks.json create mode 100644 deobfuscator/src/test/resources/deob-test.properties create mode 100644 injected-client/pom.xml create mode 100644 injector-plugin/pom.xml create mode 100644 injector-plugin/src/main/java/net/runelite/injector/Inject.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectConstruct.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectGetter.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectHook.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectHookMethod.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectInvoker.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectMojo.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectSetter.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectionException.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/Injector.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/InjectorValidator.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/MixinInjector.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/raw/ClearColorBuffer.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/raw/DrawAfterWidgets.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/raw/DrawMenu.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/raw/RasterizerHook.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/raw/RenderDraw.java create mode 100644 injector-plugin/src/main/java/net/runelite/injector/raw/ScriptVM.java create mode 100644 injector-plugin/src/test/java/net/runelite/injector/InjectConstructTest.java create mode 100644 injector-plugin/src/test/java/net/runelite/injector/InjectHookMethodTest.java create mode 100644 injector-plugin/src/test/java/net/runelite/injector/InjectSetterTest.java create mode 100644 injector-plugin/src/test/java/net/runelite/injector/InjectTest.java create mode 100644 injector-plugin/src/test/java/net/runelite/injector/MixinInjectorTest.java create mode 100644 injector-plugin/src/test/java/net/runelite/injector/raw/DrawAfterWidgetsTest.java delete mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridOverlay.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSIndexDataBaseMixin.java => RSAbstractIndexCacheMixin.java} (60%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSBoundaryObjectMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSCanvasMixin.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSChatLineBufferMixin.java => RSChatChannelMixin.java} (89%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSClanChatMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSClanMateMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSEnumDefinitionMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSFloorDecorationMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSFriendSystemMixin.java delete mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSGameCanvasMixin.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSGameEngineMixin.java => RSGameShellMixin.java} (93%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSGraphicsObjectMixin.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSItemMixin.java => RSGroundItemMixin.java} (52%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSGroundItemPileMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java delete mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSIgnoredMixin.java delete mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSItemCompositionMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSItemDefinitionMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSKeyHandlerMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSMessageMixin.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSMouseInputMixin.java => RSMouseHandlerMixin.java} (67%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSNPCDefinitionMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSNodeHashTableMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerAppearanceMixin.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSMainBufferProviderMixin.java => RSRasterProviderMixin.java} (54%) rename runelite-mixins/src/main/java/net/runelite/mixins/{Rasterizer2DMixin.java => RSRasterizer2DMixin.java} (78%) rename runelite-mixins/src/main/java/net/runelite/mixins/{RSSequenceMixin.java => RSSequenceDefinitionMixin.java} (72%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSSpriteMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSTileModelMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSTileObjectMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSTilePaintMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSUserListMixin.java rename runelite-mixins/src/main/java/net/runelite/mixins/{RSDecorativeObjectMixin.java => RSWallDecorationMixin.java} (57%) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMapManagerMixin.java create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMapMixin.java delete mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java create mode 100644 runescape-api/src/main/java/net/runelite/mapping/Export.java create mode 100644 runescape-api/src/main/java/net/runelite/mapping/Implements.java create mode 100644 runescape-api/src/main/java/net/runelite/mapping/ObfuscatedGetter.java create mode 100644 runescape-api/src/main/java/net/runelite/mapping/ObfuscatedName.java create mode 100644 runescape-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java diff --git a/deobfuscator/pom.xml b/deobfuscator/pom.xml new file mode 100644 index 0000000000..a4e14d1261 --- /dev/null +++ b/deobfuscator/pom.xml @@ -0,0 +1,173 @@ + + + + 4.0.0 + + + net.runelite + runelite-parent + 1.5.27-SNAPSHOT + + + deobfuscator + Deobfuscator + + + + net.runelite + runelite-api + 1.5.27-SNAPSHOT + + + net.runelite + fernflower + 20171017 + + + + com.google.guava + guava + 27.1-jre + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-simple + 1.7.12 + + + com.google.code.gson + gson + 2.8.5 + + + org.ow2.asm + asm-debug-all + 5.2 + + + + net.runelite.rs + rs-client + 1.5.27-SNAPSHOT + test + + + net.runelite.rs + runescape-api + 1.5.27-SNAPSHOT + + + net.runelite.rs + vanilla + ${rs.version} + test + + + junit + junit + 4.12 + test + + + org.mockito + mockito-all + 1.10.19 + test + + + + + + + src/main/resources + true + + + + + src/test/resources + true + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.3 + + + generate-sources + + + properties + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.16 + + true + -Xmx2048m + + + + maven-assembly-plugin + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + + diff --git a/deobfuscator/src/main/java/net/runelite/asm/ClassFile.java b/deobfuscator/src/main/java/net/runelite/asm/ClassFile.java new file mode 100644 index 0000000000..dcbbd91bac --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/ClassFile.java @@ -0,0 +1,420 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm; + +import java.util.ArrayList; +import java.util.List; +import net.runelite.asm.attributes.Annotations; +import net.runelite.asm.attributes.annotation.Annotation; +import net.runelite.asm.pool.Class; +import net.runelite.asm.signature.Signature; +import org.objectweb.asm.AnnotationVisitor; +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.FieldVisitor; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; + +public class ClassFile +{ + private ClassGroup group; + + private ClassFile parent; // super class + private final List children = new ArrayList<>(); // classes which inherit from this + + private int version; + private int access; + private Class name; + private Class super_class; + private String source; + private final Interfaces interfaces; + private final List fields = new ArrayList<>(); + private final List methods = new ArrayList<>(); + private final Annotations annotations; + + public ClassFile(ClassGroup group) + { + this.group = group; + + interfaces = new Interfaces(this); + annotations = new Annotations(); + } + + public ClassFile() + { + this(null); + } + + @Override + public String toString() + { + return "ClassFile{" + "name=" + name + '}'; + } + + public int getVersion() + { + return version; + } + + public void setVersion(int version) + { + this.version = version; + } + + public int getAccess() + { + return access; + } + + public void setAccess(int access) + { + this.access = access; + } + + public void accept(ClassVisitor visitor) + { + String[] ints = interfaces.getInterfaces().stream().map(i -> i.getName()).toArray(String[]::new); + + visitor.visit(version, access, name.getName(), null, super_class.getName(), ints); + visitor.visitSource(source, null); + + for (Annotation annotation : annotations.getAnnotations()) + { + AnnotationVisitor av = visitor.visitAnnotation(annotation.getType().toString(), true); + annotation.accept(av); + } + + for (Field field : fields) + { + FieldVisitor fv = visitor.visitField(field.getAccessFlags(), field.getName(), field.getType().toString(), null, field.getValue()); + field.accept(fv); + } + + for (Method method : methods) + { + String[] exceptions = method.getExceptions().getExceptions().stream().map(cl -> cl.getName()).toArray(String[]::new); + if (exceptions.length == 0) + { + exceptions = null; + } + + MethodVisitor mv = visitor.visitMethod(method.getAccessFlags(), method.getName(), method.getDescriptor().toString(), null, exceptions); + method.accept(mv); + } + + visitor.visitEnd(); + } + + public ClassGroup getGroup() + { + return group; + } + + public void setGroup(ClassGroup group) + { + this.group = group; + } + + public Interfaces getInterfaces() + { + return interfaces; + } + + public List getFields() + { + return fields; + } + + public void addField(Field field) + { + fields.add(field); + } + + public void removeField(Field field) + { + fields.remove(field); + } + + public List getMethods() + { + return methods; + } + + public void addMethod(Method method) + { + methods.add(method); + } + + public void removeMethod(Method method) + { + methods.remove(method); + } + + public Annotations getAnnotations() + { + return annotations; + } + + public String getName() + { + return name.getName(); + } + + public void setName(String name) + { + // Must be removed from the class group map first + assert group == null || this.name == null || group.findClass(this.name.getName()) == null; + + this.name = new Class(name); + } + + public String getClassName() + { + String n = getName(); + int i = n.lastIndexOf('/'); + return n.substring(i + 1); + } + + public String getSuperName() + { + return super_class.getName(); + } + + public void setSuperName(String name) + { + super_class = new Class(name); + } + + public String getSource() + { + return source; + } + + public void setSource(String source) + { + this.source = source; + } + + public Class getParentClass() + { + return this.super_class; + } + + public void setParentClass(Class c) + { + super_class = c; + } + + public ClassFile getParent() + { + return parent; + } + + public List getChildren() + { + return children; + } + + public Field findField(String name, Type type) + { + for (Field f : fields) + { + if (f.getName().equals(name) && f.getType().equals(type)) + { + return f; + } + } + return null; + } + + public Field findField(String name) + { + for (Field f : fields) + { + if (f.getName().equals(name)) + { + return f; + } + } + return null; + } + + public Class getPoolClass() + { + return name; + } + + public Field findFieldDeep(String name, Type type) + { + Field f = findField(name, type); + if (f != null) + { + return f; + } + + ClassFile parent = getParent(); + if (parent != null) + { + return parent.findFieldDeep(name, type); + } + + return null; + } + + public Method findMethod(String name, Signature type) + { + for (Method m : methods) + { + if (m.getName().equals(name) && m.getDescriptor().equals(type)) + { + return m; + } + } + return null; + } + + public Method findMethod(String name) + { + for (Method m : methods) + { + if (m.getName().equals(name)) + { + return m; + } + } + return null; + } + + public Method findMethodDeep(String name, Signature type) + { + Method m = findMethod(name, type); + if (m != null) + { + return m; + } + + ClassFile parent = getParent(); + if (parent != null) + { + return parent.findMethodDeep(name, type); + } + + return null; + } + + public Method findMethodDeepStatic(String name, Signature type) + { + Method m = findMethod(name, type); + if (m != null && m.isStatic()) + { + return m; + } + + ClassFile parent = getParent(); + if (parent != null) + { + return parent.findMethodDeepStatic(name, type); + } + + return null; + } + + public Method findMethodDeep(String name) + { + Method m = findMethod(name); + if (m != null) + { + return m; + } + + ClassFile parent = getParent(); + if (parent != null) + { + return parent.findMethodDeep(name); + } + + return null; + } + + public void clearClassGraph() + { + parent = null; + children.clear(); + } + + public void buildClassGraph() + { + ClassFile other = group.findClass(super_class.getName()); + if (other != null) + { + this.parent = other; + parent.children.add(this); + } + + for (ClassFile i : interfaces.getMyInterfaces()) + { + i.children.add(this); + } + } + + public boolean instanceOf(ClassFile other) + { + return this == other || interfaces.instanceOf(other) || (getParent() != null && getParent().instanceOf(other)); + } + + public boolean isAbstract() + { + return (this.access & Opcodes.ACC_ABSTRACT) != 0; + } + + public boolean isFinal() + { + return (this.access & Opcodes.ACC_FINAL) != 0; + } + + public boolean isInterface() + { + return (this.access & Opcodes.ACC_INTERFACE) != 0; + } + + public boolean isEnum() + { + return (this.access & Opcodes.ACC_ENUM) != 0; + } + + public void setEnum() + { + this.access |= Opcodes.ACC_ENUM; + } + + public void clearFinal() + { + this.access &= ~Opcodes.ACC_FINAL; + } + + public void clearAbstract() + { + this.access &= ~Opcodes.ACC_ABSTRACT; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/ClassGroup.java b/deobfuscator/src/main/java/net/runelite/asm/ClassGroup.java new file mode 100644 index 0000000000..2c6ba531a5 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/ClassGroup.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.runelite.asm.attributes.Code; + +public class ClassGroup +{ + private final List classes = new ArrayList<>(); // to keep order + private final Map classMap = new HashMap<>(); + + public void addClass(ClassFile cf) + { + assert cf.getGroup() == this || cf.getGroup() == null; + cf.setGroup(this); + + classes.add(cf); + classMap.put(cf.getName(), cf); + } + + public void removeClass(ClassFile cf) + { + classes.remove(cf); + classMap.remove(cf.getName()); + } + + public void renameClass(ClassFile cf, String newName) + { + assert classes.contains(cf); + assert classMap.get(cf.getName()) == cf; + + classMap.remove(cf.getName()); + cf.setName(newName); + classMap.put(cf.getName(), cf); + } + + public List getClasses() + { + return Collections.unmodifiableList(classes); + } + + public ClassFile findClass(String name) + { + return classMap.get(name); + } + + public void initialize() + { + buildClassGraph(); + lookup(); + } + + public void buildClassGraph() + { + for (ClassFile c : classes) + { + c.clearClassGraph(); + } + + for (ClassFile c : classes) + { + c.buildClassGraph(); + } + } + + public void lookup() + { + for (ClassFile cf : this.getClasses()) + { + for (Method m : cf.getMethods()) + { + Code code = m.getCode(); + + if (code == null) + { + continue; + } + + code.getInstructions().lookup(); + } + } + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/Field.java b/deobfuscator/src/main/java/net/runelite/asm/Field.java new file mode 100644 index 0000000000..8d70053adb --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/Field.java @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm; + +import net.runelite.asm.attributes.Annotations; +import net.runelite.asm.attributes.annotation.Annotation; +import org.objectweb.asm.AnnotationVisitor; +import org.objectweb.asm.FieldVisitor; +import org.objectweb.asm.Opcodes; + +import static org.objectweb.asm.Opcodes.ACC_PRIVATE; +import static org.objectweb.asm.Opcodes.ACC_PROTECTED; +import static org.objectweb.asm.Opcodes.ACC_PUBLIC; + +public class Field +{ + public static final int ACCESS_MODIFIERS = ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED; + + private final ClassFile classFile; + + private int accessFlags; + private String name; + private Type type; + private Object value; // ConstantValue + private final Annotations annotations; + + public Field(ClassFile classFile, String name, Type type) + { + this.classFile = classFile; + this.name = name; + this.type = type; + + annotations = new Annotations(); + } + + public void accept(FieldVisitor visitor) + { + for (Annotation annotation : annotations.getAnnotations()) + { + AnnotationVisitor av = visitor.visitAnnotation(annotation.getType().toString(), true); + annotation.accept(av); + } + + visitor.visitEnd(); + } + + public ClassFile getClassFile() + { + return classFile; + } + + public int getAccessFlags() + { + return accessFlags; + } + + public void setAccessFlags(int accessFlags) + { + this.accessFlags = accessFlags; + } + + public boolean isPublic() + { + return (accessFlags & Opcodes.ACC_PUBLIC) != 0; + } + + public void setPublic() + { + accessFlags = (short) ((accessFlags & ~ACCESS_MODIFIERS) | ACC_PUBLIC); + } + + public boolean isStatic() + { + return (accessFlags & Opcodes.ACC_STATIC) != 0; + } + + public void setStatic() + { + accessFlags |= Opcodes.ACC_STATIC; + } + + public boolean isSynthetic() + { + return (accessFlags & Opcodes.ACC_SYNTHETIC) != 0; + } + + public void setEnum() + { + accessFlags |= Opcodes.ACC_ENUM; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public Type getType() + { + return type; + } + + public void setType(Type type) + { + this.type = type; + } + + public Object getValue() + { + return value; + } + + public void setValue(Object value) + { + this.value = value; + } + + public Annotations getAnnotations() + { + return annotations; + } + + public net.runelite.asm.pool.Field getPoolField() + { + return new net.runelite.asm.pool.Field( + new net.runelite.asm.pool.Class(classFile.getName()), + this.getName(), + this.getType() + ); + } + + @Override + public String toString() + { + return (this.isStatic() ? "static " : "") + this.type + " " + classFile.getName() + "." + this.getName(); + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/Interfaces.java b/deobfuscator/src/main/java/net/runelite/asm/Interfaces.java new file mode 100644 index 0000000000..a372f9d68c --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/Interfaces.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import net.runelite.asm.pool.Class; + +public class Interfaces +{ + private final ClassFile classFile; + + private final List interfaces = new ArrayList<>(); + + Interfaces(ClassFile c) + { + classFile = c; + } + + public void addInterface(Class clazz) + { + if (!interfaces.contains(clazz)) + { + interfaces.add(clazz); + } + } + + public List getInterfaces() + { + return interfaces; + } + + public void clear() + { + interfaces.clear(); + } + + public List getMyInterfaces() + { + List l = new ArrayList<>(); + for (Class clazz : interfaces) + { + ClassFile iface = classFile.getGroup().findClass(clazz.getName()); + if (iface != null) + { + l.add(iface); + } + } + return l; + } + + public List getNonMyInterfaces() + { + return interfaces.stream().filter(clazz -> classFile.getGroup().findClass(clazz.getName()) == null).collect(Collectors.toList()); + } + + public boolean instanceOf(ClassFile cf) + { + for (Class clazz : interfaces) + { + ClassFile iface = classFile.getGroup().findClass(clazz.getName()); + if (iface.instanceOf(cf)) + { + return true; + } + } + return false; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/Method.java b/deobfuscator/src/main/java/net/runelite/asm/Method.java new file mode 100644 index 0000000000..bc2c8b305b --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/Method.java @@ -0,0 +1,314 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm; + +import java.util.ArrayList; +import java.util.List; +import net.runelite.asm.attributes.Annotations; +import net.runelite.asm.attributes.Code; +import net.runelite.asm.attributes.Exceptions; +import net.runelite.asm.attributes.annotation.Annotation; +import net.runelite.asm.attributes.code.Instruction; +import net.runelite.asm.attributes.code.LocalVariable; +import net.runelite.asm.attributes.code.Parameter; +import net.runelite.asm.attributes.code.instruction.types.LVTInstruction; +import net.runelite.asm.signature.Signature; +import org.objectweb.asm.AnnotationVisitor; +import org.objectweb.asm.Label; +import org.objectweb.asm.MethodVisitor; +import static org.objectweb.asm.Opcodes.ACC_FINAL; +import static org.objectweb.asm.Opcodes.ACC_NATIVE; +import static org.objectweb.asm.Opcodes.ACC_PRIVATE; +import static org.objectweb.asm.Opcodes.ACC_PROTECTED; +import static org.objectweb.asm.Opcodes.ACC_PUBLIC; +import static org.objectweb.asm.Opcodes.ACC_STATIC; +import static org.objectweb.asm.Opcodes.ACC_SYNCHRONIZED; + +public class Method +{ + public static final int ACCESS_MODIFIERS = ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED; + + private final ClassFile classFile; + + private int accessFlags; + private String name; + private Signature arguments; + private Exceptions exceptions; + private Annotations annotations; + private List parameters; + private Code code; + + public Method(ClassFile classFile, String name, Signature signature) + { + this.classFile = classFile; + this.name = name; + this.arguments = signature; + exceptions = new Exceptions(); + annotations = new Annotations(); + parameters = new ArrayList<>(); + } + + public ClassFile getClassFile() + { + return classFile; + } + + @Override + public String toString() + { + return (this.isStatic() ? "static " : "") + classFile.getName() + "." + this.name + this.arguments; + } + + public void accept(MethodVisitor visitor) + { + //This is required to name unused parameters + for (Parameter p : parameters) + { + visitor.visitParameter(p.getName(), p.getAccess()); + } + + for (Annotation annotation : annotations.getAnnotations()) + { + AnnotationVisitor av = visitor.visitAnnotation(annotation.getType().toString(), true); + annotation.accept(av); + } + + if (code != null) + { + code.getInstructions().rebuildLabels(); + + visitor.visitCode(); + + net.runelite.asm.attributes.code.Exceptions exceptions = code.getExceptions(); + for (net.runelite.asm.attributes.code.Exception exception : exceptions.getExceptions()) + { + assert exception.getStart().getLabel() != null; + assert exception.getEnd().getLabel() != null; + assert exception.getHandler().getLabel() != null; + + int idxStart = code.getInstructions().getInstructions().indexOf(exception.getStart()); + int idxEnd = code.getInstructions().getInstructions().indexOf(exception.getEnd()); + + assert idxStart != -1; + assert idxEnd != -1; + assert code.getInstructions().getInstructions().contains(exception.getHandler()); + + assert idxEnd > idxStart; + + visitor.visitTryCatchBlock( + exception.getStart().getLabel(), + exception.getEnd().getLabel(), + exception.getHandler().getLabel(), + exception.getCatchType() != null ? exception.getCatchType().getName() : null + ); + } + + for (Instruction i : code.getInstructions().getInstructions()) + { + i.accept(visitor); + } + + //Find first and last label for this method + if (parameters.size() > 0) + { + Label startLabel = null; + Label endLabel = null; + for (Instruction i : code.getInstructions().getInstructions()) + { + if (i instanceof net.runelite.asm.attributes.code.Label) + { + if (startLabel == null) + { + startLabel = ((net.runelite.asm.attributes.code.Label) i).getLabel(); + } + endLabel = ((net.runelite.asm.attributes.code.Label) i).getLabel(); + } + } + + for (Parameter p : parameters) + { + LocalVariable lv = p.getLocalVariable(); + if (lv != null) + { + visitor.visitLocalVariable(lv.getName(), lv.getDesc(), lv.getSignature(), startLabel, endLabel, lv.getIndex()); + } + } + } + + visitor.visitMaxs(code.getMaxStack(), code.getMaxLocals()); + } + + visitor.visitEnd(); + } + + public int getAccessFlags() + { + return accessFlags; + } + + public void setAccessFlags(int accessFlags) + { + this.accessFlags = accessFlags; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public Signature getDescriptor() + { + return arguments; + } + + public void setDescriptor(Signature signature) + { + this.arguments = signature; + } + + public boolean isNative() + { + return (accessFlags & ACC_NATIVE) != 0; + } + + public boolean isStatic() + { + return (accessFlags & ACC_STATIC) != 0; + } + + public void setStatic() + { + accessFlags |= ACC_STATIC; + } + + public boolean isSynchronized() + { + return (accessFlags & ACC_SYNCHRONIZED) != 0; + } + + public boolean isFinal() + { + return (accessFlags & ACC_FINAL) != 0; + } + + public void setFinal(boolean f) + { + if (f) + { + accessFlags |= ACC_FINAL; + } + else + { + accessFlags &= ~ACC_FINAL; + } + } + + public boolean isPrivate() + { + return (accessFlags & ACC_PRIVATE) != 0; + } + + public void setPrivate() + { + accessFlags = (short) ((accessFlags & ~ACCESS_MODIFIERS) | ACC_PRIVATE); + } + + public void setPublic() + { + accessFlags = (short) ((accessFlags & ~ACCESS_MODIFIERS) | ACC_PUBLIC); + } + + public Exceptions getExceptions() + { + return exceptions; + } + + public Code getCode() + { + return code; + } + + public void setCode(Code code) + { + this.code = code; + } + + public Annotations getAnnotations() + { + return annotations; + } + + @SuppressWarnings("unchecked") + public List findLVTInstructionsForVariable(int index) + { + List list = new ArrayList<>(); + + if (getCode() == null) + { + return null; + } + + for (Instruction ins : getCode().getInstructions().getInstructions()) + { + if (ins instanceof LVTInstruction) + { + LVTInstruction lv = (LVTInstruction) ins; + + if (lv.getVariableIndex() != index) + { + continue; + } + + list.add((T) ins); + } + } + + return list; + } + + public net.runelite.asm.pool.Method getPoolMethod() + { + return new net.runelite.asm.pool.Method( + new net.runelite.asm.pool.Class(classFile.getName()), + name, + arguments + ); + } + + public List getParameters() + { + return parameters; + } + + public void setParameters(List parameters) + { + this.parameters = parameters; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/Type.java b/deobfuscator/src/main/java/net/runelite/asm/Type.java new file mode 100644 index 0000000000..68ba6960d4 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/Type.java @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm; + +import net.runelite.asm.pool.Class; + +/** + * Created by Kyle Fricilone on 8/20/2017 + */ +public class Type +{ + + public static final Type VOID = new Type("V"); + public static final Type BOOLEAN = new Type("Z"); + public static final Type CHAR = new Type("C"); + public static final Type BYTE = new Type("B"); + public static final Type SHORT = new Type("S"); + public static final Type INT = new Type("I"); + public static final Type FLOAT = new Type("F"); + public static final Type LONG = new Type("J"); + public static final Type DOUBLE = new Type("D"); + public static final Type OBJECT = new Type("Ljava/lang/Object;"); + public static final Type STRING = new Type("Ljava/lang/String;"); + public static final Type THROWABLE = new Type("Ljava/lang/Throwable;"); + public static final Type EXCEPTION = new Type("Ljava/lang/Exception;"); + + private final String type; + + public Type(String type) + { + this.type = type; + } + + public boolean isPrimitive() + { + return this.equals(BOOLEAN) || this.equals(BYTE) || this.equals(SHORT) || this.equals(CHAR) || this.equals(INT) + || this.equals(VOID) || this.equals(LONG) || this.equals(FLOAT) || this.equals(DOUBLE); + } + + public boolean isObject() + { + return this.equals(OBJECT); + } + + public boolean isArray() + { + return getDimensions() > 0; + } + + public boolean isStackInt() + { + return this.equals(BOOLEAN) || this.equals(BYTE) || this.equals(SHORT) || this.equals(CHAR) || this.equals(INT); + } + + public int getSize() + { + if (this.equals(LONG) || this.equals(DOUBLE)) + { + return 2; + } + + if (this.equals(VOID)) + { + return 0; + } + + return 1; + } + + public int getDimensions() + { + return getDimensions(type); + } + + public Type getSubtype() + { + if (!type.startsWith("[")) + { + throw new IllegalStateException(type + " is not an array"); + } + return new Type(type.substring(1)); + } + + public String getInternalName() + { + String s = type; + while (s.startsWith("[")) + { + s = s.substring(1); + } + if (s.startsWith("L")) + { + return s.substring(1, s.length() - 1); + } + else + { + return s; + } + } + + @Override + public boolean equals(Object o) + { + if (!(o instanceof Type)) + { + return false; + } + + Type other = (Type) o; + return type.equals(other.type); + } + + @Override + public int hashCode() + { + return type.hashCode(); + } + + @Override + public String toString() + { + return type; + } + + public String toAsmString() + { + if (type.startsWith("L") && type.endsWith(";")) + { + return type.substring(1, type.length() - 1); + } + else + { + return type; + } + } + + public static Type fromAsmString(String str) + { + if (str.startsWith("[")) + { + // array type + return new Type(str); + } + else + { + // object type + return new Type("L" + str + ";"); + } + } + + private static int getDimensions(String type) + { + if (!type.startsWith("[")) + { + return 0; + } + + return (int) type.chars().filter(i -> i == '[').count(); + } + + public static Type getType(String type, int dims) + { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < dims; i++) + { + builder.append('['); + } + return new Type(builder.append(type).toString()); + } + + public static Type getType(Object object) + { + Type type; + + if (object instanceof Double) + { + type = DOUBLE; + } + else if (object instanceof Float) + { + type = FLOAT; + } + else if (object instanceof Integer) + { + type = INT; + } + else if (object instanceof Long) + { + type = LONG; + } + else if (object instanceof String) + { + type = STRING; + } + else if (object instanceof Class) + { + type = new Type("L" + ((Class) object).getName() + ";"); + } + else + { + throw new IllegalArgumentException("Unexpected object type: " + object.getClass()); + } + + return type; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/Annotations.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/Annotations.java new file mode 100644 index 0000000000..b14d761c28 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/Annotations.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes; + +import java.util.ArrayList; +import java.util.List; + +import net.runelite.asm.Type; +import net.runelite.asm.attributes.annotation.Annotation; +import net.runelite.asm.attributes.annotation.Element; + +public class Annotations +{ + private final List annotations = new ArrayList<>(); + + public List getAnnotations() + { + return annotations; + } + + public void addAnnotation(Annotation annotation) + { + annotations.add(annotation); + } + + public void removeAnnotation(Annotation annotation) + { + annotations.remove(annotation); + } + + public void clearAnnotations() + { + annotations.clear(); + } + + public Annotation find(Type type) + { + for (Annotation a : annotations) + if (a.getType().equals(type)) + return a; + return null; + } + + public int size() + { + return annotations.size(); + } + + public Annotation addAnnotation(Type type, String name, Object value) + { + Annotation annotation = new Annotation(this); + annotation.setType(type); + addAnnotation(annotation); + + Element element = new Element(annotation); + element.setName(name); + element.setValue(value); + annotation.addElement(element); + + return annotation; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/Code.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/Code.java new file mode 100644 index 0000000000..2a3f08126c --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/Code.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes; + +import net.runelite.asm.Method; +import net.runelite.asm.attributes.code.Exceptions; +import net.runelite.asm.attributes.code.Instruction; +import net.runelite.asm.attributes.code.Instructions; +import net.runelite.asm.attributes.code.instruction.types.LVTInstruction; +import net.runelite.asm.signature.Signature; + +public class Code +{ + private Method method; + private int maxStack; + private Instructions instructions; + private final Exceptions exceptions; + + public Code(Method method) + { + this.method = method; + + exceptions = new Exceptions(this); + instructions = new Instructions(this); + } + + public Method getMethod() + { + return method; + } + + public int getMaxStack() + { + return maxStack; + } + + public void setMaxStack(int maxStack) + { + this.maxStack = maxStack; + } + + private int getMaxLocalsFromSig() + { + Method m = getMethod(); + int num = m.isStatic() ? 0 : 1; + Signature sig = m.getDescriptor(); + for (int i = 0; i < sig.size(); ++i) + num += sig.getTypeOfArg(i).getSize(); + return num; + } + + /** + * calculates the size of the lvt required for this method + * @return + */ + public int getMaxLocals() + { + int max = -1; + + for (Instruction ins : instructions.getInstructions()) + { + if (ins instanceof LVTInstruction) + { + LVTInstruction lvt = (LVTInstruction) ins; + + int sizeRequired = lvt.getVariableIndex() + lvt.type().getSlots(); + if (sizeRequired > max) + { + max = sizeRequired; + } + } + } + + int fromSig = getMaxLocalsFromSig(); + if (fromSig > max) + max = fromSig; + + return max; + } + + public Exceptions getExceptions() + { + return exceptions; + } + + public Instructions getInstructions() + { + return instructions; + } +} diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSHashTableMixin.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java similarity index 65% rename from runelite-mixins/src/main/java/net/runelite/mixins/RSHashTableMixin.java rename to deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java index ae82420438..0b12c513fd 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSHashTableMixin.java +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java @@ -22,42 +22,38 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package net.runelite.mixins; + +package net.runelite.asm.attributes; import java.util.ArrayList; -import java.util.Collection; import java.util.List; -import net.runelite.api.Node; -import net.runelite.api.mixins.Inject; -import net.runelite.api.mixins.Mixin; -import net.runelite.rs.api.RSHashTable; -import net.runelite.rs.api.RSNode; +import net.runelite.asm.ClassFile; +import net.runelite.asm.pool.Class; -@Mixin(RSHashTable.class) -public abstract class RSHashTableMixin implements RSHashTable +public class Exceptions { - @Inject - @Override - public Collection getNodes() + private final List classes = new ArrayList<>(); + + public void addException(Class cl) { - // Copied in RSWidgetMixin.getParentId to reduce allocations - List nodes = new ArrayList(); + classes.add(cl); + } - RSNode[] buckets = getBuckets(); - for (int i = 0; i < buckets.length; ++i) + public List getExceptions() + { + return classes; + } + + public void renameClass(ClassFile cf, String name) + { + for (Class c : new ArrayList<>(classes)) { - Node node = buckets[i]; - - // It looks like the first node in the bucket is always - // a sentinel - Node cur = node.getNext(); - while (cur != node) + if (c.getName().equals(cf.getName())) { - nodes.add(cur); - cur = cur.getNext(); + int idx = classes.indexOf(c); + classes.remove(idx); + classes.add(idx, new Class(name)); } } - - return nodes; } } diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Annotation.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Annotation.java new file mode 100644 index 0000000000..7c727eb788 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Annotation.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.annotation; + +import java.util.ArrayList; +import java.util.List; + +import net.runelite.asm.Type; +import net.runelite.asm.attributes.Annotations; +import org.objectweb.asm.AnnotationVisitor; + +public class Annotation +{ + private final Annotations annotations; + private Type type; + private final List elements = new ArrayList<>(); + + public Annotation(Annotations annotations) + { + this.annotations = annotations; + } + + public Annotations getAnnotations() + { + return annotations; + } + + public void setType(Type type) + { + this.type = type; + } + + public Type getType() + { + return type; + } + + public List getElements() + { + return elements; + } + + public Element getElement() + { + return elements.get(0); + } + + public void addElement(Element element) + { + elements.add(element); + } + + public void accept(AnnotationVisitor visitor) + { + for (Element element : elements) + visitor.visit(element.getName(), element.getValue()); + visitor.visitEnd(); + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java new file mode 100644 index 0000000000..18fdfa33f4 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.annotation; + +public class Element +{ + private final Annotation annotation; + private String name; + private Object value; + + public Element(Annotation annotation) + { + this.annotation = annotation; + } + + public Annotation getAnnotation() + { + return annotation; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public Object getValue() + { + return value; + } + + public void setValue(Object value) + { + this.value = value; + } + + public String getString() + { + return value.toString(); + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exception.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exception.java new file mode 100644 index 0000000000..b1209a6631 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exception.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code; + +import net.runelite.asm.ClassFile; +import net.runelite.asm.pool.Class; + +public class Exception implements Cloneable +{ + private Exceptions exceptions; + + private Label start, end, handler; + private Class catchType; + + public Exception(Exceptions exceptions) + { + this.exceptions = exceptions; + } + + @Override + public Exception clone() + { + try + { + return (Exception) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(); + } + } + + public Exceptions getExceptions() + { + return exceptions; + } + + public void setExceptions(Exceptions exceptions) + { + this.exceptions = exceptions; + } + + public Label getStart() + { + return start; + } + + public void setStart(Label ins) + { + start = ins; + } + + public Label getEnd() + { + return end; + } + + public void setEnd(Label end) + { + this.end = end; + } + + public Label getHandler() + { + return handler; + } + + public void setHandler(Label handler) + { + this.handler = handler; + } + + public Class getCatchType() + { + return catchType; + } + + public void setCatchType(Class catchType) + { + this.catchType = catchType; + } + + public void renameClass(ClassFile cf, String name) + { + if (catchType != null && cf.getName().equals(catchType.getName())) + catchType = new Class(name); + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exceptions.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exceptions.java new file mode 100644 index 0000000000..30b00a0115 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Exceptions.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code; + +import java.util.ArrayList; +import java.util.List; +import net.runelite.asm.ClassFile; +import net.runelite.asm.attributes.Code; + +public class Exceptions +{ + private Code code; + private List exceptions = new ArrayList(); + + public Exceptions(Code code) + { + this.code = code; + } + + public void add(Exception e) + { + exceptions.add(e); + } + + public void remove(Exception e) + { + exceptions.remove(e); + } + + public void clear() + { + exceptions.clear(); + } + + public Code getCode() + { + return code; + } + + public List getExceptions() + { + return exceptions; + } + + public void renameClass(ClassFile cf, String name) + { + for (Exception e : exceptions) + e.renameClass(cf, name); + } +} \ No newline at end of file diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instruction.java new file mode 100644 index 0000000000..bf8e64535e --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instruction.java @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code; + +import net.runelite.asm.Method; +import net.runelite.asm.execution.Frame; +import net.runelite.asm.execution.InstructionContext; +import org.objectweb.asm.MethodVisitor; + +public abstract class Instruction implements Cloneable +{ + private Instructions instructions; + private InstructionType type; + + public Instruction(Instructions instructions, InstructionType type) + { + this.instructions = instructions; + this.type = type; + } + + @Override + public String toString() + { + if (this.getInstructions() != null) + { + Method m = this.getInstructions().getCode().getMethod(); + return super.toString() + " in " + m;// + " at pc 0x" + Integer.toHexString(this.getPc()); + } + else + { + return super.toString() + " "; + } + } + + @Override + public Instruction clone() + { + Instruction i; + try + { + i = (Instruction) super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException(ex); + } + + return i; + } + + protected void remove() + { + Exceptions exceptions = instructions.getCode().getExceptions(); + for (Exception e : exceptions.getExceptions()) + { + assert this != e.getStart(); + assert this != e.getEnd(); + assert this != e.getHandler(); + } + } + + public boolean removeStack() + { + assert instructions != null; + + this.getInstructions().remove(this); // calls remove() + + return true; + } + + // resolve jumps + public void resolve() + { + } + + public void accept(MethodVisitor visitor) + { + visitor.visitInsn(this.getType().getCode()); + } + + public Instructions getInstructions() + { + return instructions; + } + + public void setInstructions(Instructions instructions) + { + this.instructions = instructions; + } + + public InstructionType getType() + { + return type; + } + + protected void setType(InstructionType type) + { + this.type = type; + } + + public abstract InstructionContext execute(Frame e); + + /* does this terminate a block? */ + public boolean isTerminal() + { + return false; + } + + // look up symbols from pool + public void lookup() + { + } + + // instructions keep resolved method/field/class names, this updates the pool value (if the underlying resolved object changes) + public void regeneratePool() + { + } + + public void renameClass(String oldName, String newName) + { + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java new file mode 100644 index 0000000000..0c347d4809 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java @@ -0,0 +1,348 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code; + +import net.runelite.asm.attributes.code.instructions.AALoad; +import net.runelite.asm.attributes.code.instructions.AAStore; +import net.runelite.asm.attributes.code.instructions.AConstNull; +import net.runelite.asm.attributes.code.instructions.ALoad; +import net.runelite.asm.attributes.code.instructions.ANewArray; +import net.runelite.asm.attributes.code.instructions.AStore; +import net.runelite.asm.attributes.code.instructions.AThrow; +import net.runelite.asm.attributes.code.instructions.ArrayLength; +import net.runelite.asm.attributes.code.instructions.BALoad; +import net.runelite.asm.attributes.code.instructions.BAStore; +import net.runelite.asm.attributes.code.instructions.BiPush; +import net.runelite.asm.attributes.code.instructions.CALoad; +import net.runelite.asm.attributes.code.instructions.CAStore; +import net.runelite.asm.attributes.code.instructions.CheckCast; +import net.runelite.asm.attributes.code.instructions.D2F; +import net.runelite.asm.attributes.code.instructions.D2I; +import net.runelite.asm.attributes.code.instructions.D2L; +import net.runelite.asm.attributes.code.instructions.DALoad; +import net.runelite.asm.attributes.code.instructions.DAStore; +import net.runelite.asm.attributes.code.instructions.DAdd; +import net.runelite.asm.attributes.code.instructions.DCmpG; +import net.runelite.asm.attributes.code.instructions.DCmpL; +import net.runelite.asm.attributes.code.instructions.DDiv; +import net.runelite.asm.attributes.code.instructions.DLoad; +import net.runelite.asm.attributes.code.instructions.DMul; +import net.runelite.asm.attributes.code.instructions.DNeg; +import net.runelite.asm.attributes.code.instructions.DRem; +import net.runelite.asm.attributes.code.instructions.DStore; +import net.runelite.asm.attributes.code.instructions.DSub; +import net.runelite.asm.attributes.code.instructions.Dup; +import net.runelite.asm.attributes.code.instructions.Dup2; +import net.runelite.asm.attributes.code.instructions.Dup2_X1; +import net.runelite.asm.attributes.code.instructions.Dup2_X2; +import net.runelite.asm.attributes.code.instructions.Dup_X1; +import net.runelite.asm.attributes.code.instructions.Dup_X2; +import net.runelite.asm.attributes.code.instructions.F2D; +import net.runelite.asm.attributes.code.instructions.F2I; +import net.runelite.asm.attributes.code.instructions.F2L; +import net.runelite.asm.attributes.code.instructions.FALoad; +import net.runelite.asm.attributes.code.instructions.FAStore; +import net.runelite.asm.attributes.code.instructions.FAdd; +import net.runelite.asm.attributes.code.instructions.FCmpG; +import net.runelite.asm.attributes.code.instructions.FCmpL; +import net.runelite.asm.attributes.code.instructions.FDiv; +import net.runelite.asm.attributes.code.instructions.FLoad; +import net.runelite.asm.attributes.code.instructions.FMul; +import net.runelite.asm.attributes.code.instructions.FNeg; +import net.runelite.asm.attributes.code.instructions.FRem; +import net.runelite.asm.attributes.code.instructions.FStore; +import net.runelite.asm.attributes.code.instructions.FSub; +import net.runelite.asm.attributes.code.instructions.GetField; +import net.runelite.asm.attributes.code.instructions.GetStatic; +import net.runelite.asm.attributes.code.instructions.Goto; +import net.runelite.asm.attributes.code.instructions.GotoW; +import net.runelite.asm.attributes.code.instructions.I2B; +import net.runelite.asm.attributes.code.instructions.I2C; +import net.runelite.asm.attributes.code.instructions.I2D; +import net.runelite.asm.attributes.code.instructions.I2F; +import net.runelite.asm.attributes.code.instructions.I2L; +import net.runelite.asm.attributes.code.instructions.I2S; +import net.runelite.asm.attributes.code.instructions.IALoad; +import net.runelite.asm.attributes.code.instructions.IAStore; +import net.runelite.asm.attributes.code.instructions.IAdd; +import net.runelite.asm.attributes.code.instructions.IAnd; +import net.runelite.asm.attributes.code.instructions.IDiv; +import net.runelite.asm.attributes.code.instructions.IInc; +import net.runelite.asm.attributes.code.instructions.ILoad; +import net.runelite.asm.attributes.code.instructions.IMul; +import net.runelite.asm.attributes.code.instructions.INeg; +import net.runelite.asm.attributes.code.instructions.IOr; +import net.runelite.asm.attributes.code.instructions.IRem; +import net.runelite.asm.attributes.code.instructions.IShL; +import net.runelite.asm.attributes.code.instructions.IShR; +import net.runelite.asm.attributes.code.instructions.IStore; +import net.runelite.asm.attributes.code.instructions.ISub; +import net.runelite.asm.attributes.code.instructions.IUShR; +import net.runelite.asm.attributes.code.instructions.IXor; +import net.runelite.asm.attributes.code.instructions.IfACmpEq; +import net.runelite.asm.attributes.code.instructions.IfACmpNe; +import net.runelite.asm.attributes.code.instructions.IfCmpGe; +import net.runelite.asm.attributes.code.instructions.IfCmpGt; +import net.runelite.asm.attributes.code.instructions.IfCmpLe; +import net.runelite.asm.attributes.code.instructions.IfCmpLt; +import net.runelite.asm.attributes.code.instructions.IfEq; +import net.runelite.asm.attributes.code.instructions.IfGe; +import net.runelite.asm.attributes.code.instructions.IfGt; +import net.runelite.asm.attributes.code.instructions.IfICmpEq; +import net.runelite.asm.attributes.code.instructions.IfICmpNe; +import net.runelite.asm.attributes.code.instructions.IfLe; +import net.runelite.asm.attributes.code.instructions.IfLt; +import net.runelite.asm.attributes.code.instructions.IfNe; +import net.runelite.asm.attributes.code.instructions.IfNonNull; +import net.runelite.asm.attributes.code.instructions.IfNull; +import net.runelite.asm.attributes.code.instructions.InstanceOf; +import net.runelite.asm.attributes.code.instructions.InvokeDynamic; +import net.runelite.asm.attributes.code.instructions.InvokeInterface; +import net.runelite.asm.attributes.code.instructions.InvokeSpecial; +import net.runelite.asm.attributes.code.instructions.InvokeStatic; +import net.runelite.asm.attributes.code.instructions.InvokeVirtual; +import net.runelite.asm.attributes.code.instructions.L2D; +import net.runelite.asm.attributes.code.instructions.L2F; +import net.runelite.asm.attributes.code.instructions.L2I; +import net.runelite.asm.attributes.code.instructions.LALoad; +import net.runelite.asm.attributes.code.instructions.LAStore; +import net.runelite.asm.attributes.code.instructions.LAdd; +import net.runelite.asm.attributes.code.instructions.LAnd; +import net.runelite.asm.attributes.code.instructions.LCmp; +import net.runelite.asm.attributes.code.instructions.LDC; +import net.runelite.asm.attributes.code.instructions.LDiv; +import net.runelite.asm.attributes.code.instructions.LLoad; +import net.runelite.asm.attributes.code.instructions.LMul; +import net.runelite.asm.attributes.code.instructions.LNeg; +import net.runelite.asm.attributes.code.instructions.LOr; +import net.runelite.asm.attributes.code.instructions.LRem; +import net.runelite.asm.attributes.code.instructions.LShL; +import net.runelite.asm.attributes.code.instructions.LShR; +import net.runelite.asm.attributes.code.instructions.LStore; +import net.runelite.asm.attributes.code.instructions.LSub; +import net.runelite.asm.attributes.code.instructions.LUShR; +import net.runelite.asm.attributes.code.instructions.LXor; +import net.runelite.asm.attributes.code.instructions.LookupSwitch; +import net.runelite.asm.attributes.code.instructions.MonitorEnter; +import net.runelite.asm.attributes.code.instructions.MonitorExit; +import net.runelite.asm.attributes.code.instructions.MultiANewArray; +import net.runelite.asm.attributes.code.instructions.NOP; +import net.runelite.asm.attributes.code.instructions.New; +import net.runelite.asm.attributes.code.instructions.NewArray; +import net.runelite.asm.attributes.code.instructions.Pop; +import net.runelite.asm.attributes.code.instructions.Pop2; +import net.runelite.asm.attributes.code.instructions.PutField; +import net.runelite.asm.attributes.code.instructions.PutStatic; +import net.runelite.asm.attributes.code.instructions.Return; +import net.runelite.asm.attributes.code.instructions.SALoad; +import net.runelite.asm.attributes.code.instructions.SAStore; +import net.runelite.asm.attributes.code.instructions.SiPush; +import net.runelite.asm.attributes.code.instructions.Swap; +import net.runelite.asm.attributes.code.instructions.TableSwitch; +import net.runelite.asm.attributes.code.instructions.VReturn; + +public enum InstructionType +{ + NOP(0x00, "nop", NOP.class), + ACONST_NULL(0x01, "aconst_null", AConstNull.class), + BIPUSH(0x10, "bipush", BiPush.class), + SIPUSH(0x11, "sipush", SiPush.class), + LDC(-1, "ldc", LDC.class), + ILOAD(0x15, "iload", ILoad.class), + LLOAD(0x16, "lload", LLoad.class), + FLOAD(0x17, "fload", FLoad.class), + DLOAD(0x18, "dload", DLoad.class), + ALOAD(0x19, "aload", ALoad.class), + IALOAD(0x2e, "iaload", IALoad.class), + LALOAD(0x2f, "laload", LALoad.class), + FALOAD(0x30, "faload", FALoad.class), + DALOAD(0x31, "daload", DALoad.class), + AALOAD(0x32, "aaload", AALoad.class), + BALOAD(0x33, "baload", BALoad.class), + CALOAD(0x34, "caload", CALoad.class), + SALOAD(0x35, "saload", SALoad.class), + ISTORE(0x36, "istore", IStore.class), + LSTORE(0x37, "lstore", LStore.class), + FSTORE(0x38, "fstore", FStore.class), + DSTORE(0x39, "dstore", DStore.class), + ASTORE(0x3a, "astore", AStore.class), + IASTORE(0x4f, "iastore", IAStore.class), + LASTORE(0x50, "lastore", LAStore.class), + FASTORE(0x51, "fastore", FAStore.class), + DASTORE(0x52, "dastore", DAStore.class), + AASTORE(0x53, "aastore", AAStore.class), + BASTORE(0x54, "bastore", BAStore.class), + CASTORE(0x55, "castore", CAStore.class), + SASTORE(0x56, "sastore", SAStore.class), + POP(0x57, "pop", Pop.class), + POP2(0x58, "pop2", Pop2.class), + DUP(0x59, "dup", Dup.class), + DUP_X1(0x5a, "dup_x1", Dup_X1.class), + DUP_X2(0x5b, "dup_x2", Dup_X2.class), + DUP2(0x5c, "dup2", Dup2.class), + DUP2_X1(0x5d, "dup2_x1", Dup2_X1.class), + DUP2_X2(0x5e, "dup2_x2", Dup2_X2.class), + SWAP(0x5f, "swap", Swap.class), + IADD(0x60, "iadd", IAdd.class), + LADD(0x61, "ladd", LAdd.class), + FADD(0x62, "fadd", FAdd.class), + DADD(0x63, "dadd", DAdd.class), + ISUB(0x64, "isub", ISub.class), + LSUB(0x65, "lsub", LSub.class), + FSUB(0x66, "fsub", FSub.class), + DSUB(0x67, "dsub", DSub.class), + IMUL(0x68, "imul", IMul.class), + LMUL(0x69, "lmul", LMul.class), + FMUL(0x6a, "fmul", FMul.class), + DMUL(0x6b, "dmul", DMul.class), + IDIV(0x6c, "idiv", IDiv.class), + LDIV(0x6d, "ldiv", LDiv.class), + FDIV(0x6e, "fdiv", FDiv.class), + DDIV(0x6f, "ddiv", DDiv.class), + IREM(0x70, "irem", IRem.class), + LREM(0x71, "lrem", LRem.class), + FREM(0x72, "frem", FRem.class), + DREM(0x73, "drem", DRem.class), + INEG(0x74, "ineg", INeg.class), + LNEG(0x75, "lneg", LNeg.class), + FNEG(0x76, "fneg", FNeg.class), + DNEG(0x77, "dneg", DNeg.class), + ISHL(0x78, "ishl", IShL.class), + LSHL(0x79, "lshl", LShL.class), + ISHR(0x7a, "ishr", IShR.class), + LSHR(0x7b, "lshr", LShR.class), + IUSHR(0x7c, "iushr", IUShR.class), + LUSHR(0x7d, "lushr", LUShR.class), + IAND(0x7e, "iand", IAnd.class), + LAND(0x7f, "land", LAnd.class), + IOR(0x80, "ior", IOr.class), + LOR(0x81, "lor", LOr.class), + IXOR(0x82, "ixor", IXor.class), + LXOR(0x83, "lxor", LXor.class), + IINC(0x84, "iinc", IInc.class), + I2L(0x85, "i2l", I2L.class), + I2F(0x86, "i2f", I2F.class), + I2D(0x87, "i2d", I2D.class), + L2I(0x88, "l2i", L2I.class), + L2F(0x89, "l2f", L2F.class), + L2D(0x8a, "l2d", L2D.class), + F2I(0x8b, "f2i", F2I.class), + F2L(0x8c, "f2l", F2L.class), + F2D(0x8d, "f2d", F2D.class), + D2I(0x8e, "d2i", D2I.class), + D2L(0x8f, "d2l", D2L.class), + D2F(0x90, "d2f", D2F.class), + I2B(0x91, "i2b", I2B.class), + I2C(0x92, "i2c", I2C.class), + I2S(0x93, "i2s", I2S.class), + LCMP(0x94, "lcmp", LCmp.class), + FCMPL(0x95, "fcmpl", FCmpL.class), + FCMPG(0x96, "fcmpg", FCmpG.class), + DCMPL(0x97, "dcmpl", DCmpL.class), + DCMPG(0x98, "dcmpg", DCmpG.class), + IFEQ(0x99, "ifeq", IfEq.class), + IFNE(0x9a, "ifne", IfNe.class), + IFLT(0x9b, "iflt", IfLt.class), + IFGE(0x9c, "ifge", IfGe.class), + IFGT(0x9d, "ifgt", IfGt.class), + IFLE(0x9e, "ifle", IfLe.class), + IF_ICMPEQ(0x9f, "if_icmpeq", IfICmpEq.class), + IF_ICMPNE(0xa0, "if_icmpne", IfICmpNe.class), + IF_ICMPLT(0xa1, "if_cmplt", IfCmpLt.class), + IF_ICMPGE(0xa2, "if_icmpge", IfCmpGe.class), + IF_ICMPGT(0xa3, "if_icmpgt", IfCmpGt.class), + IF_ICMPLE(0xa4, "if_icmple", IfCmpLe.class), + IF_ACMPEQ(0xa5, "if_acmpeq", IfACmpEq.class), + IF_ACMPNE(0xa6, "if_acmpne", IfACmpNe.class), + GOTO(0xa7, "goto", Goto.class), + TABLESWITCH(0xaa, "tableswitch", TableSwitch.class), + LOOKUPSWITCH(0xab, "lookupswitch", LookupSwitch.class), + IRETURN(0xac, "ireturn", Return.class), + LRETURN(0xad, "lreturn", Return.class), + FRETURN(0xae, "freturn", Return.class), + DRETURN(0xaf, "dreturn", Return.class), + ARETURN(0xb0, "areturn", Return.class), + RETURN(0xb1, "return", VReturn.class), + GETSTATIC(0xb2, "getstatic", GetStatic.class), + PUTSTATIC(0xb3, "putstatic", PutStatic.class), + GETFIELD(0xb4, "getfield", GetField.class), + PUTFIELD(0xb5, "putfield", PutField.class), + INVOKEVIRTUAL(0xb6, "invokevirtual", InvokeVirtual.class), + INVOKESPECIAL(0xb7, "invokespecial", InvokeSpecial.class), + INVOKESTATIC(0xb8, "invokestatic", InvokeStatic.class), + INVOKEINTERFACE(0xb9, "invokeinterface", InvokeInterface.class), + INVOKEDYNAMIC(0xba, "invokedynamic", InvokeDynamic.class), + NEW(0xbb, "new", New.class), + NEWARRAY(0xbc, "newarray", NewArray.class), + ANEWARRAY(0xbd, "anewarray", ANewArray.class), + ARRAYLENGTH(0xbe, "arraylength", ArrayLength.class), + ATHROW(0xbf, "athrow", AThrow.class), + CHECKCAST(0xc0, "checkcast", CheckCast.class), + INSTANCEOf(0xc1, "instanceof", InstanceOf.class), + MONITORENTER(0xc2, "monitorenter", MonitorEnter.class), + MONITOREXIT(0xc3, "monitorexit", MonitorExit.class), + MULTIANEWARRAY(0xc5, "multianewarray", MultiANewArray.class), + IFNULL(0xc6, "ifnull", IfNull.class), + IFNONNULL(0xc7, "ifnonnull", IfNonNull.class), + GOTO_W(0xc8, "goto_w", GotoW.class); + + private final int code; + private final String name; + private final Class clazz; + + InstructionType(int op, String name, Class clazz) + { + this.code = op; + this.name = name; + this.clazz = clazz; + } + + public int getCode() + { + return code; + } + + public String getName() + { + return name; + } + + public Class getInstructionClass() + { + return clazz; + } + + public static InstructionType findInstructionFromCode(int code) + { + for (InstructionType t : InstructionType.values()) + { + if (t.getCode() == code) + { + return t; + } + } + return null; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instructions.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instructions.java new file mode 100644 index 0000000000..a528950d0a --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Instructions.java @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.runelite.asm.attributes.Code; + +public class Instructions +{ + private final Code code; + private final List instructions = new ArrayList<>(); + private final Map labelMap = new HashMap<>(); + + public Instructions(Code code) + { + this.code = code; + } + + public Label createLabelFor(Instruction target) + { + return createLabelFor(target, false); + } + + public Label createLabelFor(Instruction target, boolean forceCreate) + { + assert target.getInstructions() == this; + assert instructions.contains(target); + + if (target instanceof Label) + { + return (Label) target; + } + + int i = instructions.indexOf(target); + if (i > 0) + { + Instruction before = instructions.get(i - 1); + + if (!forceCreate && before instanceof Label) + { + return (Label) before; + } + } + + Label label = new Label(this); + label.setLabel(new org.objectweb.asm.Label()); + instructions.add(i, label); + labelMap.put(label.getLabel(), label); + return label; + } + + public Label findLabel(org.objectweb.asm.Label l) + { + Label label = labelMap.get(l); + assert label != null; + return label; + } + + public Label findOrCreateLabel(org.objectweb.asm.Label l) + { + Label label = labelMap.get(l); + if (label != null) + { + return label; + } + + label = new Label(this, l); + labelMap.put(l, label); + + return label; + } + + public void rebuildLabels() + { + labelMap.clear(); + + // ow2 asm requires new Labels each time you write out a class + // with ClassWriter, or else it crytpically fails + for (Instruction i : instructions) + { + if (i instanceof Label) + { + org.objectweb.asm.Label label = new org.objectweb.asm.Label(); + ((Label) i).setLabel(label); + + labelMap.put(label, (Label) i); + } + } + } + + public List getInstructions() + { + return instructions; + } + + public void addInstruction(Instruction i) + { + assert i.getInstructions() == this; + instructions.add(i); + } + + public void addInstruction(int idx, Instruction i) + { + assert i.getInstructions() == this; + instructions.add(idx, i); + } + + public void remove(Instruction ins) + { + assert ins.getInstructions() == this; + ins.remove(); + instructions.remove(ins); + ins.setInstructions(null); + } + + public void clear() + { + for (Instruction ins : instructions) + { + ins.remove(); + ins.setInstructions(null); + } + instructions.clear(); + } + + public Code getCode() + { + return code; + } + + public void lookup() + { + for (Instruction i : instructions) + { + i.lookup(); + } + } + + public void regeneratePool() + { + for (Instruction i : instructions) + { + i.regeneratePool(); + } + } + + public int replace(Instruction oldi, Instruction newi) + { + assert oldi != newi; + + assert oldi.getInstructions() == this; + assert newi.getInstructions() == this; + + assert instructions.contains(oldi); + assert !instructions.contains(newi); + + int i = instructions.indexOf(oldi); + instructions.remove(oldi); + oldi.setInstructions(null); + instructions.add(i, newi); + + return i; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Label.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Label.java new file mode 100644 index 0000000000..7f2cd70ffd --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Label.java @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code; + +import net.runelite.asm.attributes.code.instructions.NOP; +import org.objectweb.asm.MethodVisitor; + +public class Label extends NOP +{ + private org.objectweb.asm.Label label; + private Integer lineNumber; + + public Label(Instructions instructions) + { + super(instructions); + } + + public Label(Instructions instructions, org.objectweb.asm.Label label) + { + super(instructions); + this.label = label; + } + + @Override + public String toString() + { + String string; + + if (this.getInstructions() == null) + { + string = "label "; + } + else + { + Instruction next = next(); + + if (next == null) + { + string = "label with no next instruction"; + } + else + { + string = "label " + next.toString(); + } + } + + if (lineNumber != null) + { + string += " on line number " + lineNumber; + } + + return string; + } + + @Override + public Instruction clone() + { + Label l = (Label) super.clone(); + l.label = new org.objectweb.asm.Label(); + l.lineNumber = lineNumber; + return l; + } + + @Override + public void accept(MethodVisitor visitor) + { + visitor.visitLabel(label); + + if (lineNumber != null) + { + visitor.visitLineNumber(lineNumber, label); + } + } + + public org.objectweb.asm.Label getLabel() + { + return label; + } + + public void setLabel(org.objectweb.asm.Label label) + { + this.label = label; + } + + public void setLineNumber(Integer lineNumber) + { + this.lineNumber = lineNumber; + } + + public Instruction next() + { + Instructions ins = this.getInstructions(); + int i = ins.getInstructions().indexOf(this); + assert i != -1; + + Instruction next; + do + { + next = ins.getInstructions().get(i + 1); + ++i; + } + while (next instanceof Label); + + return next; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/LocalVariable.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/LocalVariable.java new file mode 100644 index 0000000000..3956b453d1 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/LocalVariable.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2018 Morgan Lewis + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code; + +import org.objectweb.asm.Label; + +public class LocalVariable +{ + private final String name; + private final String desc; + private final String signature; + private final Label start; + private final Label end; + private final int index; + + public LocalVariable(String name, String desc, String signature, Label start, Label end, int index) + { + this.name = name; + this.desc = desc; + this.signature = signature; + this.start = start; + this.end = end; + this.index = index; + } + + public String getName() + { + return name; + } + + public String getDesc() + { + return desc; + } + + public String getSignature() + { + return signature; + } + + public Label getStart() + { + return start; + } + + public Label getEnd() + { + return end; + } + + public int getIndex() + { + return index; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Parameter.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Parameter.java new file mode 100644 index 0000000000..b42a41a4b5 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/Parameter.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2018 Morgan Lewis + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code; + +public class Parameter +{ + private final String name; + private final int access; + private LocalVariable localVariable; + + public Parameter(String name, int access) + { + this.name = name; + this.access = access; + } + + public String getName() + { + return name; + } + + public int getAccess() + { + return access; + } + + public LocalVariable getLocalVariable() + { + return localVariable; + } + + public void setLocalVariable(LocalVariable localVariable) + { + this.localVariable = localVariable; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/AdditionInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/AdditionInstruction.java new file mode 100644 index 0000000000..0fbb69ab1d --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/AdditionInstruction.java @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code.instruction.types; + +import net.runelite.asm.Field; +import net.runelite.asm.attributes.code.Instruction; +import net.runelite.asm.execution.InstructionContext; +import net.runelite.asm.execution.StackContext; +import net.runelite.deob.deobfuscators.mapping.MappingExecutorUtil; +import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping; + +public interface AdditionInstruction extends MappableInstruction +{ + default InstructionContext findArrayLoad(InstructionContext ic1, InstructionContext ic2) + { + Instruction i1 = ic1.getInstruction(); + Instruction i2 = ic2.getInstruction(); + + if (i1 instanceof ArrayLoad && !(i2 instanceof ArrayLoad)) + { + return ic1; + } + if (i2 instanceof ArrayLoad && !(i1 instanceof ArrayLoad)) + { + return ic2; + } + + return null; + } + + @Override + default void map(ParallelExecutorMapping mappings, InstructionContext ctx, InstructionContext other) + { + /* lhs/rhs of addition instructions are randomally swapped, but + * we still map if each side is recognizable + * + * N.B. since the lhs/rhs of nested iadds can be swapped, and + * the mapper maps the first that it encounters, this can certainly + * attempt to map the wrong instructions even when mapping the correct + * method, so be careful. + */ + StackContext ctx1 = ctx.getPops().get(0); + StackContext ctx2 = ctx.getPops().get(1); + + StackContext other1 = other.getPops().get(0); + StackContext other2 = other.getPops().get(1); + + InstructionContext rc1 = ctx1.getPushed().resolve(ctx1); + InstructionContext rc2 = ctx2.getPushed().resolve(ctx2); //iaload + + InstructionContext ro1 = other1.getPushed().resolve(other1); + InstructionContext ro2 = other2.getPushed().resolve(other2); //iaload + + // There are a couple static final arrays that are only ever read from 1 or 2 places.. and never written + InstructionContext al1 = findArrayLoad(rc1, rc2); + InstructionContext al2 = findArrayLoad(ro1, ro2); + + if (al1 == null || al2 == null) + { + return; + } + + StackContext array1 = al1.getPops().get(1); + StackContext array2 = al2.getPops().get(1); + + InstructionContext field1 = array1.getPushed().resolve(array1); + InstructionContext field2 = array2.getPushed().resolve(array2); + + if (!(field1.getInstruction() instanceof GetFieldInstruction) || !(field2.getInstruction() instanceof GetFieldInstruction)) + { + return; + } + + GetFieldInstruction gf1 = (GetFieldInstruction) field1.getInstruction(); + GetFieldInstruction gf2 = (GetFieldInstruction) field2.getInstruction(); + + Field f1 = gf1.getMyField(); + Field f2 = gf2.getMyField(); + + if (f1 == null || f2 == null || !MappingExecutorUtil.isMaybeEqual(f1, f2)) + { + return; + } + + mappings.map((Instruction) this, f1, f2); + } + + @Override + default boolean isSame(InstructionContext thisIc, InstructionContext otherIc) + { + return this.getClass() == otherIc.getInstruction().getClass(); + } + + @Override + default boolean canMap(InstructionContext thisIc) + { + return true; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayLoad.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayLoad.java new file mode 100644 index 0000000000..da196f0056 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayLoad.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code.instruction.types; + +import net.runelite.asm.attributes.code.Instruction; +import net.runelite.asm.execution.InstructionContext; +import net.runelite.asm.execution.StackContext; +import net.runelite.deob.deobfuscators.mapping.MappingExecutorUtil; +import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping; + +public interface ArrayLoad extends MappableInstruction +{ + @Override + default void map(ParallelExecutorMapping mappings, InstructionContext ctx, InstructionContext other) + { + StackContext index1 = ctx.getPops().get(0), + index2 = other.getPops().get(0); + + InstructionContext ctx1 = MappingExecutorUtil.resolve(index1.getPushed(), index1), + ctx2 = MappingExecutorUtil.resolve(index2.getPushed(), index2); + + assert ctx1.getInstruction() instanceof GetFieldInstruction; + assert ctx2.getInstruction() instanceof GetFieldInstruction; + + GetFieldInstruction gf1 = (GetFieldInstruction) ctx1.getInstruction(); + GetFieldInstruction gf2 = (GetFieldInstruction) ctx2.getInstruction(); + mappings.map((Instruction) this, gf1.getMyField(), gf2.getMyField()); + } + + @Override + default boolean isSame(InstructionContext thisIc, InstructionContext otherIc) + { + if (thisIc.getInstruction().getType() != otherIc.getInstruction().getType()) + { + return false; + } + + StackContext index1 = thisIc.getPops().get(0), + index2 = otherIc.getPops().get(0); + + InstructionContext ctx1 = MappingExecutorUtil.resolve(index1.getPushed(), index1), + ctx2 = MappingExecutorUtil.resolve(index2.getPushed(), index2); + + assert ctx1.getInstruction() instanceof GetFieldInstruction; + assert ctx2.getInstruction() instanceof GetFieldInstruction; + + GetFieldInstruction gf1 = (GetFieldInstruction) ctx1.getInstruction(); + GetFieldInstruction gf2 = (GetFieldInstruction) ctx2.getInstruction(); + + return MappingExecutorUtil.isMaybeEqual(gf1.getMyField(), gf2.getMyField()); + } + + @Override + default boolean canMap(InstructionContext thisIc) + { + // assume that obfuscation can't remove a load with a variable + // index. map field access. + StackContext index = thisIc.getPops().get(0); + InstructionContext ctx = MappingExecutorUtil.resolve(index.getPushed(), index); + return ctx.getInstruction() instanceof GetFieldInstruction; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayStoreInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayStoreInstruction.java new file mode 100644 index 0000000000..de019ce9e0 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ArrayStoreInstruction.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +public interface ArrayStoreInstruction extends MappableInstruction +{ + +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ComparisonInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ComparisonInstruction.java new file mode 100644 index 0000000000..25e0cdf1da --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ComparisonInstruction.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +public interface ComparisonInstruction +{ + +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ConversionInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ConversionInstruction.java new file mode 100644 index 0000000000..099b281725 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ConversionInstruction.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +public interface ConversionInstruction +{ + +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DivisionInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DivisionInstruction.java new file mode 100644 index 0000000000..f682748a65 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DivisionInstruction.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +import net.runelite.asm.Field; +import net.runelite.asm.attributes.code.Instruction; +import net.runelite.asm.execution.InstructionContext; +import net.runelite.asm.execution.StackContext; +import net.runelite.deob.deobfuscators.mapping.MappingExecutorUtil; +import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping; + +public interface DivisionInstruction extends MappableInstruction +{ + @Override + default void map(ParallelExecutorMapping mappings, InstructionContext ctx, InstructionContext other) + { + StackContext s1 = ctx.getPops().get(0), + s2 = ctx.getPops().get(1); + + StackContext o1 = other.getPops().get(0), + o2 = other.getPops().get(1); + + InstructionContext i1 = MappingExecutorUtil.resolve(s1.getPushed(), s1); + InstructionContext i2 = MappingExecutorUtil.resolve(s2.getPushed(), s2); + + InstructionContext io1 = MappingExecutorUtil.resolve(o1.getPushed(), o1); + InstructionContext io2 = MappingExecutorUtil.resolve(o2.getPushed(), o2); + + if (i1.getInstruction() instanceof GetFieldInstruction && io1.getInstruction() instanceof GetFieldInstruction) + { + GetFieldInstruction f1 = (GetFieldInstruction) i1.getInstruction(); + GetFieldInstruction f2 = (GetFieldInstruction) io1.getInstruction(); + + Field fi1 = f1.getMyField(), fi2 = f2.getMyField(); + + if (fi1 != null && fi2 != null) + mappings.map((Instruction) this, fi1, fi2); + } + + if (i2.getInstruction() instanceof GetFieldInstruction && io2.getInstruction() instanceof GetFieldInstruction) + { + GetFieldInstruction f1 = (GetFieldInstruction) i2.getInstruction(); + GetFieldInstruction f2 = (GetFieldInstruction) io2.getInstruction(); + + Field fi1 = f1.getMyField(), fi2 = f2.getMyField(); + + if (fi1 != null && fi2 != null) + mappings.map((Instruction) this, fi1, fi2); + } + } + + @Override + default boolean isSame(InstructionContext thisIc, InstructionContext otherIc) + { + return this.getClass() == otherIc.getInstruction().getClass(); + } + + @Override + default boolean canMap(InstructionContext thisIc) + { + return true; + } +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DupInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DupInstruction.java new file mode 100644 index 0000000000..93ccb70e45 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DupInstruction.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +import java.util.List; +import net.runelite.asm.execution.InstructionContext; +import net.runelite.asm.execution.StackContext; + +public interface DupInstruction +{ + StackContext getOriginal(StackContext sctx); + + StackContext getOtherBranch(StackContext sctx); + + /** + * get the duplicated stackcontexts (which is popped from this) + * @param ictx instruction context for this instruction + * @return + */ + List getDuplicated(InstructionContext ictx); + + /** + * get the copied stackcontexts (pushed from this) + * @param ictx + * @return + */ + List getCopies(InstructionContext ictx); +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java new file mode 100644 index 0000000000..e9ed4999ff --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code.instruction.types; + +import net.runelite.asm.pool.Field; + +public interface FieldInstruction +{ + Field getField(); + + void setField(Field field); + + net.runelite.asm.Field getMyField(); +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/GetFieldInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/GetFieldInstruction.java new file mode 100644 index 0000000000..f5a5af480a --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/GetFieldInstruction.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +public interface GetFieldInstruction extends FieldInstruction +{ +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/IntInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/IntInstruction.java new file mode 100644 index 0000000000..2bc361ef44 --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/IntInstruction.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package net.runelite.asm.attributes.code.instruction.types; + +public interface IntInstruction +{ + int getOperand(); + + void setOperand(int operand); +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/InvokeInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/InvokeInstruction.java new file mode 100644 index 0000000000..9396f974de --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/InvokeInstruction.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code.instruction.types; + +import java.util.List; +import net.runelite.asm.Method; + +public interface InvokeInstruction extends MappableInstruction +{ + void removeParameter(int idx); + + net.runelite.asm.pool.Method getMethod(); + + void setMethod(net.runelite.asm.pool.Method method); + + List getMethods(); +} diff --git a/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/JumpingInstruction.java b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/JumpingInstruction.java new file mode 100644 index 0000000000..fc1dda4b3a --- /dev/null +++ b/deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/JumpingInstruction.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.asm.attributes.code.instruction.types; + +import java.util.List; +import net.runelite.asm.attributes.code.Label; + +public interface JumpingInstruction +{ + List