Make interface styles not replace entire override map

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-09-07 18:29:05 +02:00
parent ac5ef045b7
commit 172812dc06

View File

@@ -32,8 +32,6 @@ import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber; import java.awt.image.PixelGrabber;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -80,13 +78,7 @@ public class InterfaceStylesPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
clientThread.invoke(() -> clientThread.invoke(this::updateAllOverrides);
{
overrideSprites();
overrideWidgetSprites();
restoreWidgetDimensions();
adjustWidgetDimensions();
});
} }
@Override @Override
@@ -104,14 +96,7 @@ public class InterfaceStylesPlugin extends Plugin
{ {
if (config.getGroup().equals("interfaceStyles")) if (config.getGroup().equals("interfaceStyles"))
{ {
clientThread.invoke(() -> clientThread.invoke(this::updateAllOverrides);
{
removeGameframe();
overrideSprites();
overrideWidgetSprites();
restoreWidgetDimensions();
adjustWidgetDimensions();
});
} }
} }
@@ -121,10 +106,17 @@ public class InterfaceStylesPlugin extends Plugin
adjustWidgetDimensions(); adjustWidgetDimensions();
} }
private void updateAllOverrides()
{
removeGameframe();
overrideSprites();
overrideWidgetSprites();
restoreWidgetDimensions();
adjustWidgetDimensions();
}
private void overrideSprites() private void overrideSprites()
{ {
Map<Integer, SpritePixels> overrides = new HashMap<>();
for (SpriteOverride spriteOverride : SpriteOverride.values()) for (SpriteOverride spriteOverride : SpriteOverride.values())
{ {
for (Skin skin : spriteOverride.getSkin()) for (Skin skin : spriteOverride.getSkin())
@@ -139,21 +131,25 @@ public class InterfaceStylesPlugin extends Plugin
} }
else else
{ {
overrides.put(spriteOverride.getSpriteID(), spritePixels); client.getSpriteOverrides().put(spriteOverride.getSpriteID(), spritePixels);
} }
} }
} }
} }
}
private void restoreSprites()
{
client.getWidgetSpriteCache().reset(); client.getWidgetSpriteCache().reset();
client.getSpriteOverrides().clear();
client.getSpriteOverrides().putAll(overrides); for (SpriteOverride spriteOverride : SpriteOverride.values())
{
client.getSpriteOverrides().remove(spriteOverride.getSpriteID());
}
} }
private void overrideWidgetSprites() private void overrideWidgetSprites()
{ {
Map<Integer, SpritePixels> widgetOverrides = new HashMap<>();
for (WidgetOverride widgetOverride : WidgetOverride.values()) for (WidgetOverride widgetOverride : WidgetOverride.values())
{ {
if (widgetOverride.getSkin() == config.skin()) if (widgetOverride.getSkin() == config.skin())
@@ -164,14 +160,22 @@ public class InterfaceStylesPlugin extends Plugin
{ {
for (WidgetInfo widgetInfo : widgetOverride.getWidgetInfo()) for (WidgetInfo widgetInfo : widgetOverride.getWidgetInfo())
{ {
widgetOverrides.put(widgetInfo.getPackedId(), spritePixels); client.getWidgetSpriteOverrides().put(widgetInfo.getPackedId(), spritePixels);
} }
} }
} }
} }
}
client.getWidgetSpriteOverrides().clear(); private void restoreWidgetSprites()
client.getWidgetSpriteOverrides().putAll(widgetOverrides); {
for (WidgetOverride widgetOverride : WidgetOverride.values())
{
for (WidgetInfo widgetInfo : widgetOverride.getWidgetInfo())
{
client.getWidgetSpriteOverrides().remove(widgetInfo.getPackedId());
}
}
} }
private SpritePixels getFileSpritePixels(String file, String subfolder) private SpritePixels getFileSpritePixels(String file, String subfolder)
@@ -295,8 +299,8 @@ public class InterfaceStylesPlugin extends Plugin
private void removeGameframe() private void removeGameframe()
{ {
client.getSpriteOverrides().clear(); restoreSprites();
client.getWidgetSpriteOverrides().clear(); restoreWidgetSprites();
BufferedImage compassImage = spriteManager.getSprite(SpriteID.COMPASS_TEXTURE, 0); BufferedImage compassImage = spriteManager.getSprite(SpriteID.COMPASS_TEXTURE, 0);