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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.runelite.client.plugins;
|
package net.runelite.client.plugins;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.AbstractIdleService;
|
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;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
|
|
||||||
public abstract class Plugin extends AbstractIdleService
|
public abstract class Plugin extends AbstractIdleService
|
||||||
@@ -34,4 +36,10 @@ public abstract class Plugin extends AbstractIdleService
|
|||||||
{
|
{
|
||||||
return null;
|
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
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.runelite.client.ui.overlay;
|
package net.runelite.client.ui.overlay;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
@@ -40,24 +39,20 @@ public class OverlayRenderer
|
|||||||
|
|
||||||
for (Plugin plugin : RuneLite.getRunelite().getPluginManager().getPlugins())
|
for (Plugin plugin : RuneLite.getRunelite().getPluginManager().getPlugins())
|
||||||
{
|
{
|
||||||
Overlay overlay = plugin.getOverlay();
|
for (Overlay overlay : plugin.getOverlays())
|
||||||
|
|
||||||
if (overlay == null)
|
|
||||||
{
|
{
|
||||||
continue;
|
switch (overlay.getPosition())
|
||||||
}
|
{
|
||||||
|
case TOP_RIGHT:
|
||||||
switch (overlay.getPosition())
|
tdr.add(overlay);
|
||||||
{
|
break;
|
||||||
case TOP_RIGHT:
|
case TOP_LEFT:
|
||||||
tdr.add(overlay);
|
tdl.add(overlay);
|
||||||
break;
|
break;
|
||||||
case TOP_LEFT:
|
case DYNAMIC:
|
||||||
tdl.add(overlay);
|
dr.add(overlay);
|
||||||
break;
|
break;
|
||||||
case DYNAMIC:
|
}
|
||||||
dr.add(overlay);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class TopDownRendererLeft implements Renderer
|
|||||||
|
|
||||||
for (Overlay overlay : overlays)
|
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();
|
Graphics2D graphics = image.createGraphics();
|
||||||
Renderer.setAntiAliasing(graphics);
|
Renderer.setAntiAliasing(graphics);
|
||||||
Dimension dimension = overlay.render(graphics);
|
Dimension dimension = overlay.render(graphics);
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.runelite.client.ui.overlay;
|
package net.runelite.client.ui.overlay;
|
||||||
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
@@ -51,18 +50,29 @@ public class TopDownRendererRight implements Renderer
|
|||||||
{
|
{
|
||||||
Client client = RuneLite.getClient();
|
Client client = RuneLite.getClient();
|
||||||
overlays.sort((o1, o2) -> o2.getPriority().compareTo(o1.getPriority()));
|
overlays.sort((o1, o2) -> o2.getPriority().compareTo(o1.getPriority()));
|
||||||
|
|
||||||
int y = BORDER_TOP;
|
int y = BORDER_TOP;
|
||||||
|
int clientWidth = client.getClientWidth();
|
||||||
|
int clientHeight = client.getClientHeight();
|
||||||
|
|
||||||
for (Overlay overlay : overlays)
|
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();
|
Graphics2D graphics = image.createGraphics();
|
||||||
Renderer.setAntiAliasing(graphics);
|
Renderer.setAntiAliasing(graphics);
|
||||||
Dimension dimension = overlay.render(graphics);
|
Dimension dimension = overlay.render(graphics);
|
||||||
graphics.dispose();
|
graphics.dispose();
|
||||||
|
|
||||||
if (dimension == null)
|
if (dimension == null)
|
||||||
|
{
|
||||||
continue;
|
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;
|
y += dimension.getHeight() + PADDING;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user