From 24228f86feb8e2840b2fc4505683ecc63ac7a340 Mon Sep 17 00:00:00 2001 From: Lucas Date: Fri, 21 Jun 2019 18:50:32 +0200 Subject: [PATCH] Fix healthbar stuff, remove double constant --- .../main/java/net/runelite/api/Client.java | 6 +- .../main/java/net/runelite/api/Constants.java | 13 ++-- .../net/runelite/client/game/ItemManager.java | 6 +- .../client/plugins/bank/BankCalculation.java | 1 - .../chatcommands/ChatCommandsPlugin.java | 1 - .../client/plugins/examine/ExaminePlugin.java | 1 - .../grounditems/GroundItemsPlugin.java | 1 - .../net/runelite/mixins/RSClientMixin.java | 4 -- .../mixins/RSHealthBarDefinitionMixin.java | 63 ------------------- .../net/runelite/mixins/RSHealthBarMixin.java | 50 --------------- .../java/net/runelite/rs/api/RSClient.java | 4 +- .../java/net/runelite/rs/api/RSHealthBar.java | 19 +----- .../rs/api/RSHealthBarDefinition.java | 4 ++ 13 files changed, 17 insertions(+), 156 deletions(-) delete mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarMixin.java 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 22303a5d51..6d4e38235b 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -934,7 +934,7 @@ public interface Client extends GameShell * * @return all projectiles */ - java.util.List getProjectiles(); + List getProjectiles(); /** * Gets a list of all graphics objects currently drawn. @@ -1631,7 +1631,7 @@ public interface Client extends GameShell void draw2010Menu(); - NodeCache getHealthBarCache(); + void resetHealthBarCaches(); void setRenderSelf(boolean enabled); @@ -1655,6 +1655,4 @@ public interface Client extends GameShell String getSelectedSpellName(); boolean getIsSpellSelected(); - - void resetHealthBarCaches(); } diff --git a/runelite-api/src/main/java/net/runelite/api/Constants.java b/runelite-api/src/main/java/net/runelite/api/Constants.java index 0b078e6449..bdcb8f6374 100644 --- a/runelite-api/src/main/java/net/runelite/api/Constants.java +++ b/runelite-api/src/main/java/net/runelite/api/Constants.java @@ -99,9 +99,11 @@ public class Constants public static final int GAME_TICK_LENGTH = 600; /** - * Used when getting High Alchemy value - multiplied by general store price. + * High alchemy = shop price * HIGH_ALCHEMY_MULTIPLIER + * + * @see ItemDefinition#getPrice */ - public static final float HIGH_ALCHEMY_CONSTANT = 0.6f; + public static final float HIGH_ALCHEMY_MULTIPLIER = 0.6f; /** * Width of a standard item sprite @@ -112,11 +114,4 @@ public class Constants * Height of a standard item sprite */ public static final int ITEM_SPRITE_HEIGHT = 32; - - /** - * High alchemy = shop price * HIGH_ALCHEMY_MULTIPLIER - * - * @see ItemComposition#getPrice - */ - public static final float HIGH_ALCHEMY_MULTIPLIER = .6f; } diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java index 73bf521739..02f5a8785d 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java @@ -46,7 +46,7 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.Constants; import static net.runelite.api.Constants.CLIENT_DEFAULT_ZOOM; -import static net.runelite.api.Constants.HIGH_ALCHEMY_CONSTANT; +import static net.runelite.api.Constants.HIGH_ALCHEMY_MULTIPLIER; import net.runelite.api.GameState; import net.runelite.api.ItemDefinition; import net.runelite.api.ItemID; @@ -424,7 +424,7 @@ public class ItemManager return 1000; } - return (int) Math.max(1, composition.getPrice() * HIGH_ALCHEMY_CONSTANT); + return (int) Math.max(1, composition.getPrice() * HIGH_ALCHEMY_MULTIPLIER); } public int getAlchValue(int itemID) @@ -438,7 +438,7 @@ public class ItemManager return 1000; } - return (int) Math.max(1, getItemDefinition(itemID).getPrice() * HIGH_ALCHEMY_CONSTANT); + return (int) Math.max(1, getItemDefinition(itemID).getPrice() * HIGH_ALCHEMY_MULTIPLIER); } /** diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankCalculation.java b/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankCalculation.java index e8d1401503..13398e22f7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankCalculation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/bank/BankCalculation.java @@ -34,7 +34,6 @@ import javax.inject.Inject; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; -import net.runelite.api.Constants; import net.runelite.api.InventoryID; import net.runelite.api.Item; import net.runelite.api.ItemContainer; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index 77af32ec73..269c116c76 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -37,7 +37,6 @@ import lombok.Value; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; -import net.runelite.api.Constants; import net.runelite.api.Experience; import net.runelite.api.IconID; import net.runelite.api.ItemDefinition; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java index bb6907b44b..1a795af452 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java @@ -36,7 +36,6 @@ import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; -import net.runelite.api.Constants; import net.runelite.api.ItemDefinition; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.GameStateChanged; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java index 4be768e28f..6093650b1b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java @@ -49,7 +49,6 @@ import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import net.runelite.api.Client; -import net.runelite.api.Constants; import net.runelite.api.GameState; import net.runelite.api.Item; import net.runelite.api.ItemDefinition; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index a25f42d117..8e48c50cad 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -32,7 +32,6 @@ import net.runelite.api.GameState; import net.runelite.api.GrandExchangeOffer; import net.runelite.api.GraphicsObject; import net.runelite.api.HashTable; -import net.runelite.api.HealthBarOverride; import net.runelite.api.HintArrowType; import net.runelite.api.Ignore; import net.runelite.api.IndexDataBase; @@ -190,9 +189,6 @@ public abstract class RSClientMixin implements RSClient .maximumSize(64) .build(); - @Inject - private static HealthBarOverride healthBarOverride; - @Inject private static boolean printMenuActions; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java index 33337f3d79..f6f31abdf6 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java @@ -1,83 +1,20 @@ package net.runelite.mixins; -import net.runelite.api.HealthBarOverride; import net.runelite.api.events.PostHealthBar; -import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.MethodHook; import net.runelite.api.mixins.Mixin; -import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Shadow; import net.runelite.rs.api.RSBuffer; import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSHealthBarDefinition; -import net.runelite.rs.api.RSSprite; @Mixin(RSHealthBarDefinition.class) public abstract class RSHealthBarDefinitionMixin implements RSHealthBarDefinition { - // Larger values are used for bosses like Corporeal Beast - private static final int DEFAULT_HEALTH_SCALE = 30; - @Shadow("client") private static RSClient client; - @Shadow("healthBarOverride") - private static HealthBarOverride healthBarOverride; - - @Copy("getSprite2") - abstract RSSprite rs$getHealthBarBackSprite(); - - @Replace("getSprite2") - public RSSprite rl$getHealthBarBackSprite() - { - /* - * If this combat info already uses sprites for health bars, - * use those instead, and don't override. - */ - RSSprite pixels = rs$getHealthBarBackSprite(); - if (pixels != null) - { - return pixels; - } - - if (healthBarOverride == null) - { - return null; - } - - return getHealthScale() == DEFAULT_HEALTH_SCALE - ? (RSSprite) healthBarOverride.backSprite - : (RSSprite) healthBarOverride.backSpriteLarge; - } - - @Copy("getSprite1") - abstract RSSprite rs$getHealthBarFrontSprite(); - - @Replace("getSprite1") - public RSSprite rl$getHealthBarFrontSprite() - { - /* - * If this combat info already uses sprites for health bars, - * use those instead, and don't override. - */ - RSSprite pixels = rs$getHealthBarFrontSprite(); - if (pixels != null) - { - return pixels; - } - - if (healthBarOverride == null) - { - return null; - } - - // 30 is the default size, large is for bosses like Corporeal Beast - return getHealthScale() == DEFAULT_HEALTH_SCALE - ? (RSSprite) healthBarOverride.frontSprite - : (RSSprite) healthBarOverride.frontSpriteLarge; - } - @MethodHook(value = "read", end = true) @Inject public void onRead(RSBuffer buffer) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarMixin.java deleted file mode 100644 index 65a7e976a4..0000000000 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarMixin.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019, 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.mixins; - -import net.runelite.api.events.PostHealthBar; -import net.runelite.api.mixins.Inject; -import net.runelite.api.mixins.MethodHook; -import net.runelite.api.mixins.Mixin; -import net.runelite.api.mixins.Shadow; -import net.runelite.rs.api.RSBuffer; -import net.runelite.rs.api.RSClient; -import net.runelite.rs.api.RSHealthBar; - -@Mixin(RSHealthBar.class) -public abstract class RSHealthBarMixin implements RSHealthBar -{ - @Shadow("client") - private static RSClient client; - - @MethodHook(value = "get", end = true) - @Inject - public void onRead(RSBuffer buffer) - { - PostHealthBar postHealthBar = new PostHealthBar(); - postHealthBar.setHealthBar(this); - client.getCallbacks().post(postHealthBar); - } -} 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 de72b2ef83..dc52ced619 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 @@ -986,9 +986,11 @@ public interface RSClient extends RSGameShell, Client void rasterizerDrawCircle(int x, int y, int r, int rgb); @Import("HealthBarDefinition_cached") - @Override RSEvictingDualNodeHashTable getHealthBarCache(); + @Import("HealthBarDefinition_cachedSprites") + RSEvictingDualNodeHashTable getHealthBarSpriteCache(); + @Import("renderSelf") @Override void setRenderSelf(boolean enabled); 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 99162fce1b..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,29 +1,12 @@ package net.runelite.rs.api; -import net.runelite.api.HealthBar; import net.runelite.mapping.Import; -public interface RSHealthBar extends RSNode, HealthBar +public interface RSHealthBar extends RSNode { @Import("updates") RSIterableNodeDeque getUpdates(); // "combatinfolist" but only thing it has is getNode so this works @Import("definition") RSHealthBarDefinition getDefinition(); - - @Import("healthBarFrontSpriteId") - @Override - int getHealthBarFrontSpriteId(); - - @Import("getHealthBarFrontSprite") - @Override - RSSprite getHealthBarFrontSprite(); - - @Import("getHealthBarBackSprite") - @Override - RSSprite getHealthBarBackSprite(); - - @Import("healthBarPadding") - @Override - void setPadding(int padding); } 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 index 377a0934a1..110ce49826 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarDefinition.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSHealthBarDefinition.java @@ -8,6 +8,10 @@ public interface RSHealthBarDefinition extends RSDualNode, HealthBar @Import("width") int getHealthScale(); + @Import("spriteId1") + @Override + int getHealthBarFrontSpriteId(); + @Import("getSprite1") RSSprite getHealthBarFrontSprite();