Skip to content

Commit

Permalink
use new/old properties instead of map and override type
Browse files Browse the repository at this point in the history
  • Loading branch information
raiyni committed Jun 11, 2024
1 parent 656aeba commit 632f409
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 41 deletions.
83 changes: 57 additions & 26 deletions src/main/java/melky/resourcepacks/ResourcePacksManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
import melky.resourcepacks.event.ResourcePacksChanged;
import melky.resourcepacks.hub.ResourcePackManifest;
import melky.resourcepacks.hub.ResourcePacksClient;
import melky.resourcepacks.overrides.OverrideKey;
import melky.resourcepacks.overrides.Overrides;
import melky.resourcepacks.overrides.WidgetOverride;
import net.runelite.api.Client;
Expand Down Expand Up @@ -309,10 +308,11 @@ public void setSelectedHubPack(String internalName)
clientThread.invokeLater(() ->
{
adjustWidgetDimensions(false);
overrides.clear();
resetWidgetOverrides();
resetLoginScreen();
removeGameframe();
resetCrossSprites();
resetOverlayColor();
});
}
}
Expand Down Expand Up @@ -813,25 +813,26 @@ private void applyWidgetOverrides()

for (WidgetOverride widgetOverride : overrides.values())
{
addPropertyToWidget(widgetOverride);
addPropertyToWidget(widgetOverride, false);
}
}

public void resetWidgetOverrides()
{
overrides.buildOverrides("");
log.debug("resetting widget overrides");

for (WidgetOverride widgetOverride : overrides.values())
{
addPropertyToWidget(widgetOverride);
addPropertyToWidget(widgetOverride, true);
}

overrides.clear();
}

public void addPropertyToWidget(WidgetOverride widgetOverride)
public void addPropertyToWidget(WidgetOverride widgetOverride, boolean reset)
{
int property = (Integer) widgetOverride.getProperties().get(OverrideKey.COLOR);
int oldColor = widgetOverride.getColor();
int newColor = widgetOverride.getNewColor();

Widget widgetToOverride = client.getWidget(widgetOverride.getInterfaceId(), widgetOverride.getChildId());
if (widgetToOverride == null)
Expand All @@ -844,35 +845,65 @@ public void addPropertyToWidget(WidgetOverride widgetOverride)
for (var arrayId : widgetOverride.getDynamicChildren())
{
Widget arrayWidget = widgetToOverride.getChild(arrayId);
if (arrayWidget == null || arrayWidget.getTextColor() == -1 || arrayWidget.getTextColor() == property)
if (arrayWidget == null)
{
continue;
}

if ((widgetOverride.getType() == -1 || arrayWidget.getType() == widgetOverride.getType()) &&
widgetOverride.checkVarbit(client))
{
arrayWidget.setTextColor(property);

if (widgetOverride.getOpactity() > -1)
{
arrayWidget.setOpacity(widgetOverride.getOpactity());
}
}
applyWidgetProperties(arrayWidget, widgetOverride, reset);
}
}
else
{
if ((widgetToOverride.getTextColor() != -1 || widgetToOverride.getTextColor() != property) &&
(widgetOverride.getType() == -1 || widgetToOverride.getType() == widgetOverride.getType()) &&
widgetOverride.checkVarbit(client))
applyWidgetProperties(widgetToOverride, widgetOverride, reset);
}
}

private void applyWidgetProperties(Widget widget, WidgetOverride widgetOverride, boolean reset)
{
if (widget == null || widget.getTextColor() == -1)
{
return;
}

int oldColor = widgetOverride.getColor();
int newColor = widgetOverride.getNewColor();

if (reset)
{
widget.setTextColor(oldColor);

if (widget.getType() == widgetOverride.getNewType())
{
widgetToOverride.setTextColor(property);
widget.setType(widgetOverride.getType());
}

if (widgetOverride.getOpactity() > -1)
{
widgetToOverride.setOpacity(widgetOverride.getOpactity());
}
if (widgetOverride.getOpacity() > -1)
{
widget.setOpacity(widgetOverride.getOpacity());
}

return;
}

if (widget.getTextColor() == newColor || !widgetOverride.checkVarbit(client))
{
return;
}

widget.setTextColor(widgetOverride.getNewColor());

if (widgetOverride.getNewOpacity() > -1)
{
widget.setOpacity(widgetOverride.getNewOpacity());
}

if (widgetOverride.getNewType() > -1)
{
widget.setType(widgetOverride.getNewType());
if (widgetOverride.getNewType() == 3)
{
widget.setFilled(true);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/melky/resourcepacks/ResourcePacksPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ public void onScriptPostFired(ScriptPostFired event)
{
for (var widgetOverride : overrides.get(event.getScriptId()))
{
resourcePacksManager.addPropertyToWidget(widgetOverride);
resourcePacksManager.addPropertyToWidget(widgetOverride, false);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public final class OverrideKey
public static final String OPACITY = "opacity";
public static final String COLOR = "color";
public static final String TYPE = "type";
public static final String NEW_TYPE = "newType";
public static final String VARBIT = "varbit";
public static final String VARBIT_VALUE = "varbitValue";

Expand Down
42 changes: 32 additions & 10 deletions src/main/java/melky/resourcepacks/overrides/Overrides.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import static melky.resourcepacks.overrides.OverrideKey.COLOR;
import static melky.resourcepacks.overrides.OverrideKey.DYNAMIC_CHILDREN;
import static melky.resourcepacks.overrides.OverrideKey.INTERFACE;
import static melky.resourcepacks.overrides.OverrideKey.NEW_TYPE;
import static melky.resourcepacks.overrides.OverrideKey.OPACITY;
import static melky.resourcepacks.overrides.OverrideKey.SCRIPTS;
import static melky.resourcepacks.overrides.OverrideKey.TYPE;
Expand Down Expand Up @@ -149,23 +150,31 @@ protected WidgetOverride walkChildren(WidgetOverride parent, TomlTable table, To
if (map.containsKey(TYPE))
{
node = node.withType(table.getLong(TYPE).intValue());
if (map.containsKey(NEW_TYPE))
{
node = node.withNewType(table.getLong(NEW_TYPE).intValue());
map.remove(NEW_TYPE);
}

map.remove(TYPE);
}

if (map.containsKey(COLOR))
{
int c = table.getLong(COLOR).intValue();
node = node.withColor(c);
if (pack.contains(OverrideKey.append(path, COLOR)))
{
var v = pack.get(OverrideKey.append(path, COLOR));
if (v instanceof Long)
{
c = ((Long)v).intValue();
node = node.withNewColor(((Long) v).intValue());
}
}

node = node.withProperties(new HashMap<>(node.getProperties()));
node.getProperties().put(COLOR, c);
else
{
node = node.withNewColor(c);
}

map.remove(COLOR);
}
Expand Down Expand Up @@ -198,42 +207,55 @@ protected WidgetOverride walkChildren(WidgetOverride parent, Map<String, Object>

if (map.containsKey(INTERFACE))
{
node = node.withInterfaceId(((Long)map.get(INTERFACE)).intValue());
node = node.withInterfaceId(((Long) map.get(INTERFACE)).intValue());
map.remove(INTERFACE);
}

if (map.containsKey(COLOR))
{
int c = ((Long) map.get(COLOR)).intValue();
node = node.withColor(c);
if (pack.contains(OverrideKey.append(path, COLOR)))
{
var v = pack.get(OverrideKey.append(path, COLOR));
if (v instanceof Long)
{
c = ((Long)v).intValue();
node = node.withNewColor(((Long) v).intValue());
}
}
else
{
node = node.withNewColor(c);
}

node = node.withProperties(new HashMap<>(node.getProperties()));
node.getProperties().put(COLOR, c);
map.remove(COLOR);
}

if (map.containsKey(TYPE))
{
node = node.withType(((Long) map.get(TYPE)).intValue());
if (map.containsKey(NEW_TYPE))
{
node = node.withNewType(((Long) map.get(NEW_TYPE)).intValue());
map.remove(NEW_TYPE);
}

map.remove(TYPE);
}

if (map.containsKey(OPACITY))
{
int o = ((Long) map.get(OPACITY)).intValue();
node = node.withOpacity(o);
if (pack.contains(OverrideKey.append(path, OPACITY)))
{
o = pack.getLong(OverrideKey.append(path, OPACITY)).intValue();
node = node.withNewOpacity(pack.getLong(OverrideKey.append(path, OPACITY)).intValue());
}
else
{
node = node.withNewOpacity(o);
}

node = node.withOpactity(o);
map.remove(OPACITY);
}

Expand Down
13 changes: 9 additions & 4 deletions src/main/java/melky/resourcepacks/overrides/WidgetOverride.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
package melky.resourcepacks.overrides;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.AllArgsConstructor;
Expand All @@ -46,19 +45,25 @@ public class WidgetOverride
int script = -1;
int interfaceId = -1;
int childId = -1;

int type = -1;
int opactity = -1;
int newType = -1;

int opacity = -1;
int newOpacity = -1;

int color = -1;
int newColor = -1;

List<Map.Entry<Integer, Integer>> varbits = new ArrayList<>();
List<Integer> dynamicChildren = new ArrayList<>();
HashMap<String, Object> properties = new HashMap<>();

public boolean isValid()
{
return script > -1 &&
interfaceId > -1 &&
childId > -1 &&
!properties.isEmpty();
color > -1;
}

public boolean checkVarbit(final Client client)
Expand Down

0 comments on commit 632f409

Please sign in to comment.