runelite-client: allow plugins to have multiple overlays, fix top down renderer right
This commit is contained in:
@@ -22,10 +22,12 @@
|
||||
* (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.client.plugins;
|
||||
|
||||
import com.google.common.util.concurrent.AbstractIdleService;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
|
||||
public abstract class Plugin extends AbstractIdleService
|
||||
@@ -34,4 +36,10 @@ public abstract class Plugin extends AbstractIdleService
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public Collection<Overlay> getOverlays()
|
||||
{
|
||||
Overlay overlay = getOverlay();
|
||||
return overlay != null ? Arrays.asList(overlay) : Collections.EMPTY_LIST;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
* (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.client.ui.overlay;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
@@ -40,24 +39,20 @@ public class OverlayRenderer
|
||||
|
||||
for (Plugin plugin : RuneLite.getRunelite().getPluginManager().getPlugins())
|
||||
{
|
||||
Overlay overlay = plugin.getOverlay();
|
||||
|
||||
if (overlay == null)
|
||||
for (Overlay overlay : plugin.getOverlays())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (overlay.getPosition())
|
||||
{
|
||||
case TOP_RIGHT:
|
||||
tdr.add(overlay);
|
||||
break;
|
||||
case TOP_LEFT:
|
||||
tdl.add(overlay);
|
||||
break;
|
||||
case DYNAMIC:
|
||||
dr.add(overlay);
|
||||
break;
|
||||
switch (overlay.getPosition())
|
||||
{
|
||||
case TOP_RIGHT:
|
||||
tdr.add(overlay);
|
||||
break;
|
||||
case TOP_LEFT:
|
||||
tdl.add(overlay);
|
||||
break;
|
||||
case DYNAMIC:
|
||||
dr.add(overlay);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public class TopDownRendererLeft implements Renderer
|
||||
|
||||
for (Overlay overlay : overlays)
|
||||
{
|
||||
BufferedImage image = clientBuffer.getSubimage(BORDER_LEFT, y, clientBuffer.getWidth() - BORDER_LEFT, clientBuffer.getHeight() - y);//(int) dimension.getWidth(), (int) dimension.getHeight());
|
||||
BufferedImage image = clientBuffer.getSubimage(BORDER_LEFT, y, clientBuffer.getWidth() - BORDER_LEFT, clientBuffer.getHeight() - y);
|
||||
Graphics2D graphics = image.createGraphics();
|
||||
Renderer.setAntiAliasing(graphics);
|
||||
Dimension dimension = overlay.render(graphics);
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
* (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.client.ui.overlay;
|
||||
|
||||
import java.awt.Dimension;
|
||||
@@ -51,18 +50,29 @@ public class TopDownRendererRight implements Renderer
|
||||
{
|
||||
Client client = RuneLite.getClient();
|
||||
overlays.sort((o1, o2) -> o2.getPriority().compareTo(o1.getPriority()));
|
||||
|
||||
int y = BORDER_TOP;
|
||||
int clientWidth = client.getClientWidth();
|
||||
int clientHeight = client.getClientHeight();
|
||||
|
||||
for (Overlay overlay : overlays)
|
||||
{
|
||||
BufferedImage image = clientBuffer.getSubimage(BORDER_RIGHT, y, client.getClientWidth(), 25);
|
||||
BufferedImage image = new BufferedImage(clientWidth, clientHeight, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D graphics = image.createGraphics();
|
||||
Renderer.setAntiAliasing(graphics);
|
||||
Dimension dimension = overlay.render(graphics);
|
||||
graphics.dispose();
|
||||
|
||||
if (dimension == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
image = image.getSubimage(0, 0, (int) dimension.getWidth(), (int) dimension.getHeight());
|
||||
|
||||
graphics = clientBuffer.createGraphics();
|
||||
graphics.drawImage(image, clientWidth - BORDER_RIGHT - (int) dimension.getWidth(), y, null);
|
||||
graphics.dispose();
|
||||
|
||||
y += dimension.getHeight() + PADDING;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user