Package org.rsbot.event.impl

Source Code of org.rsbot.event.impl.DrawBoundaries

package org.rsbot.event.impl;

import org.rsbot.bot.Bot;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.script.methods.MethodContext;
import org.rsbot.script.wrappers.RSTile;

import java.awt.*;

public class DrawBoundaries implements PaintListener {
  private final Point[][] minimapPoints = new Point[105][105];
  private final Point[][] screenPoints = new Point[105][105];

  private final MethodContext ctx;

  public DrawBoundaries(final Bot bot) {
    ctx = bot.getMethodContext();
  }

  public void onRepaint(final Graphics render) {
    if (!ctx.game.isLoggedIn()) {
      return;
    }
    final int blocks[][] = ctx.client.getRSGroundDataArray()[ctx.client.getPlane()].getBlocks();
    final int baseX = ctx.client.getBaseX();
    final int baseY = ctx.client.getBaseY();
    for (int i = 0; i < screenPoints.length; i++) {
      for (int j = 0; j < screenPoints[i].length; j++) {
        final int x = i + baseX - 1;
        final int y = j + baseY - 1;
        Point mini = ctx.calc.worldToMinimap(x - 0.5, y - 0.5);
        if (mini.x == -1 || mini.y == -1) {
          mini = null;
        }
        minimapPoints[i][j] = mini;
        Point screen = ctx.calc.tileToScreen(new RSTile(x, y), 0, 0, 0);
        if (screen.x == -1 || screen.y == -1) {
          screen = null;
        }
        screenPoints[i][j] = screen;
      }
    }

    render.setColor(Color.YELLOW);
    for (int i = 1; i < 104; i++) {
      for (int j = 1; j < 104; j++) {
        final int curBlock = blocks[i][j];
        final Point miniBL = minimapPoints[i][j];
        final Point miniBR = minimapPoints[i][j + 1];
        final Point miniTL = minimapPoints[i + 1][j];
        final Point miniTR = minimapPoints[i + 1][j + 1];
        final Point bl = screenPoints[i][j];
        final Point br = screenPoints[i][j + 1];
        final Point tl = screenPoints[i + 1][j];
        final Point tr = screenPoints[i + 1][j + 1];
        if ((curBlock & 0x1280100) != 0) {
          render.setColor(Color.black);
          if (tl != null && br != null && tr != null && bl != null) {
            render.fillPolygon(new int[]{bl.x, br.x, tr.x, tl.x}, new int[]{bl.y, br.y, tr.y, tl.y}, 4);
          }
          if (miniBL != null && miniBR != null && miniTR != null && miniTL != null) {
            render.fillPolygon(new int[]{miniBL.x, miniBR.x, miniTR.x, miniTL.x},
                new int[]{miniBL.y, miniBR.y, miniTR.y, miniTL.y}, 4);
          }
        }
        if ((blocks[i][j - 1] & 0x1280102) != 0 || (curBlock & 0x1280120) != 0) {
          render.setColor(Color.RED);
          if (tl != null && bl != null) {
            render.drawLine(bl.x, bl.y, tl.x, tl.y);
          }
          if (miniBL != null && miniTL != null) {
            render.drawLine(miniBL.x, miniBL.y, miniTL.x, miniTL.y);
          }
        }
        if ((blocks[i - 1][j] & 0x1280108) != 0 || (curBlock & 0x1280180) != 0) {
          render.setColor(Color.RED);
          if (br != null && bl != null) {
            render.drawLine(bl.x, bl.y, br.x, br.y);
          }
          if (miniBR != null && miniBL != null) {
            render.drawLine(miniBL.x, miniBL.y, miniBR.x, miniBR.y);
          }
        }
        /*
         * render.setColor(Color.cyan); if ((curBlock & (1<<20)) != 0) {
         * if (miniBL != null && miniBR != null && miniTR != null &&
         * miniTL != null) { render.fillPolygon(new
         * int[]{miniBL.x,miniBR.x,miniTR.x,miniTL.x}, new
         * int[]{miniBL.y,miniBR.y,miniTR.y,miniTL.y},4); } if (tl !=
         * null && br != null && tr != null && bl != null) {
         * render.fillPolygon(new int[]{bl.x,br.x,tr.x,tl.x}, new
         * int[]{bl.y,br.y,tr.y,tl.y},4); } }
         */
        // Point miniCent = Calculations.worldToMinimap(i+ baseX, j+
        // baseY);
        // Point cent = Calculations.tileToScreen(i+ baseX, j+ baseY,
        // 0.5,0.5, 0);
        /*
         * if (cent.x != -1 && cent.y != -1) {
         * render.setColor(Color.yellow); render.drawString("" +
         * Calculations.getRealDistanceTo(cur.getX()-baseX,
         * cur.getY()-baseY, i, j, false), (int)cent.getX(),
         * (int)cent.getY()); }
         */
      }
    }
    final Point mini = ctx.players.getMyPlayer().getMinimapLocation();
    render.setColor(Color.red);
    render.fillRect((int) mini.getX() - 1, (int) mini.getY() - 1, 2, 2);
  }
}
TOP

Related Classes of org.rsbot.event.impl.DrawBoundaries

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.