User:Chase-san/DelegatingRobot

From Robowiki
Jump to navigation Jump to search

In case anyone ever has the need for this kind of delegating robot framework. No license, you can use this however you want.

Delegator

package cs.bot;

import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.util.ArrayList;
import robocode.BattleEndedEvent;
import robocode.BulletHitBulletEvent;
import robocode.BulletHitEvent;
import robocode.BulletMissedEvent;
import robocode.CustomEvent;
import robocode.DeathEvent;
import robocode.HitByBulletEvent;
import robocode.HitRobotEvent;
import robocode.HitWallEvent;
import robocode.MessageEvent;
import robocode.RateControlRobot;
import robocode.RobotDeathEvent;
import robocode.RoundEndedEvent;
import robocode.ScannedRobotEvent;
import robocode.SkippedTurnEvent;
import robocode.StatusEvent;
import robocode.WinEvent;

public abstract class DelegatingRobot extends RateControlRobot {
	protected ArrayList<Delegate> delegates = new ArrayList<Delegate>();
	
	public void addDelegate(Delegate del) {
		delegates.add(del);
		del.setBase(this);
	}

	@Override
	public void onMessageReceived(MessageEvent event) {
		for(Delegate w : delegates)
			w.onMessageReceived(event);
	}

	@Override
	public void onCustomEvent(CustomEvent event) {
		for(Delegate w : delegates)
			w.onCustomEvent(event);
	}

	@Override
	public void onDeath(DeathEvent event) {
		for(Delegate w : delegates)
			w.onDeath(event);
	}

	@Override
	public void onSkippedTurn(SkippedTurnEvent event) {
		for(Delegate w : delegates)
			w.onSkippedTurn(event);
	}

	@Override
	public void onBattleEnded(BattleEndedEvent event) {
		for(Delegate w : delegates)
			w.onBattleEnded(event);
	}

	@Override
	public void onBulletHit(BulletHitEvent event) {
		for(Delegate w : delegates)
			w.onBulletHit(event);
	}

	@Override
	public void onBulletHitBullet(BulletHitBulletEvent event) {
		for(Delegate w : delegates)
			w.onBulletHitBullet(event);
	}

	@Override
	public void onBulletMissed(BulletMissedEvent event) {
		for(Delegate w : delegates)
			w.onBulletMissed(event);
	}

	@Override
	public void onHitByBullet(HitByBulletEvent event) {
		for(Delegate w : delegates)
			w.onHitByBullet(event);
	}

	@Override
	public void onHitRobot(HitRobotEvent event) {
		for(Delegate w : delegates)
			w.onHitRobot(event);
	}

	@Override
	public void onHitWall(HitWallEvent event) {
		for(Delegate w : delegates)
			w.onHitWall(event);
	}

	@Override
	public void onKeyPressed(KeyEvent e) {
		for(Delegate w : delegates)
			w.onKeyPressed(e);
	}

	@Override
	public void onKeyReleased(KeyEvent e) {
		for(Delegate w : delegates)
			w.onKeyReleased(e);
	}

	@Override
	public void onKeyTyped(KeyEvent e) {
		for(Delegate w : delegates)
			w.onKeyTyped(e);
	}

	@Override
	public void onMouseClicked(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMouseClicked(e);
	}

	@Override
	public void onMouseDragged(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMouseDragged(e);
	}

	@Override
	public void onMouseEntered(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMouseEntered(e);
	}

	@Override
	public void onMouseExited(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMouseExited(e);
	}

	@Override
	public void onMouseMoved(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMouseMoved(e);
	}

	@Override
	public void onMousePressed(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMousePressed(e);
	}

	@Override
	public void onMouseReleased(MouseEvent e) {
		for(Delegate w : delegates)
			w.onMouseReleased(e);
	}

	@Override
	public void onMouseWheelMoved(MouseWheelEvent e) {
		for(Delegate w : delegates)
			w.onMouseWheelMoved(e);
	}

	@Override
	public void onPaint(Graphics2D g) {
		for(Delegate w : delegates)
			w.onPaint(g);
	}

	@Override
	public void onRobotDeath(RobotDeathEvent event) {
		for(Delegate w : delegates)
			w.onRobotDeath(event);
	}

	@Override
	public void onRoundEnded(RoundEndedEvent event) {
		for(Delegate w : delegates)
			w.onRoundEnded(event);
	}

	@Override
	public void onScannedRobot(ScannedRobotEvent event) {
		for(Delegate w : delegates)
			w.onScannedRobot(event);
	}

	@Override
	public void onStatus(StatusEvent e) {
		for(Delegate w : delegates)
			w.onStatus(e);
	}

	@Override
	public void onWin(WinEvent event) {
		for(Delegate w : delegates)
			w.onWin(event);
	}	
}

Delegate

package cs.bot;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.Vector;
import robocode.BattleEndedEvent;
import robocode.Bullet;
import robocode.BulletHitBulletEvent;
import robocode.BulletHitEvent;
import robocode.BulletMissedEvent;
import robocode.Condition;
import robocode.CustomEvent;
import robocode.DeathEvent;
import robocode.Event;
import robocode.HitByBulletEvent;
import robocode.HitRobotEvent;
import robocode.HitWallEvent;
import robocode.MessageEvent;
import robocode.RobotDeathEvent;
import robocode.RoundEndedEvent;
import robocode.ScannedRobotEvent;
import robocode.SkippedTurnEvent;
import robocode.StatusEvent;
import robocode.WinEvent;

public abstract class Delegate {
	protected DelegatingRobot base;
	protected void setBase(DelegatingRobot base) {
		this.base = base;
	}

	public void execute() {
		base.execute();
	}

	public double getGunRotationRate() {
		return base.getGunRotationRate();
	}

	public double getGunRotationRateRadians() {
		return base.getGunRotationRateRadians();
	}

	public double getRadarRotationRate() {
		return base.getRadarRotationRate();
	}

	public double getRadarRotationRateRadians() {
		return base.getRadarRotationRateRadians();
	}

	public double getTurnRate() {
		return base.getTurnRate();
	}

	public double getTurnRateRadians() {
		return base.getTurnRateRadians();
	}

	public double getVelocityRate() {
		return base.getVelocityRate();
	}

	public void setGunRotationRate(double gunRotationRate) {
		base.setGunRotationRate(gunRotationRate);
	}

	public void setGunRotationRateRadians(double gunRotationRate) {
		base.setGunRotationRateRadians(gunRotationRate);
	}

	public void setRadarRotationRate(double radarRotationRate) {
		base.setRadarRotationRate(radarRotationRate);
	}

	public void setRadarRotationRateRadians(double radarRotationRate) {
		base.setRadarRotationRateRadians(radarRotationRate);
	}

	public void setTurnRate(double turnRate) {
		base.setTurnRate(turnRate);
	}

	public void setTurnRateRadians(double turnRate) {
		base.setTurnRateRadians(turnRate);
	}

	public void setVelocityRate(double velocityRate) {
		base.setVelocityRate(velocityRate);
	}

	public void broadcastMessage(Serializable message) throws IOException {
		base.broadcastMessage(message);
	}

	public Vector<MessageEvent> getMessageEvents() {
		return base.getMessageEvents();
	}

	public String[] getTeammates() {
		return base.getTeammates();
	}

	public boolean isTeammate(String name) {
		return base.isTeammate(name);
	}

	public void sendMessage(String name, Serializable message) throws IOException {
		base.sendMessage(name, message);
	}

	public void addCustomEvent(Condition condition) {
		base.addCustomEvent(condition);
	}

	public void clearAllEvents() {
		base.clearAllEvents();
	}

	public Vector<Event> getAllEvents() {
		return base.getAllEvents();
	}

	public Vector<BulletHitBulletEvent> getBulletHitBulletEvents() {
		return base.getBulletHitBulletEvents();
	}

	public Vector<BulletHitEvent> getBulletHitEvents() {
		return base.getBulletHitEvents();
	}

	public Vector<BulletMissedEvent> getBulletMissedEvents() {
		return base.getBulletMissedEvents();
	}

	public File getDataDirectory() {
		return base.getDataDirectory();
	}

	public File getDataFile(String filename) {
		return base.getDataFile(filename);
	}

	public long getDataQuotaAvailable() {
		return base.getDataQuotaAvailable();
	}

	public double getDistanceRemaining() {
		return base.getDistanceRemaining();
	}

	public int getEventPriority(String eventClass) {
		return base.getEventPriority(eventClass);
	}

	public double getGunHeadingRadians() {
		return base.getGunHeadingRadians();
	}

	public double getGunTurnRemaining() {
		return base.getGunTurnRemaining();
	}

	public double getGunTurnRemainingRadians() {
		return base.getGunTurnRemainingRadians();
	}

	public double getHeadingRadians() {
		return base.getHeadingRadians();
	}

	public Vector<HitByBulletEvent> getHitByBulletEvents() {
		return base.getHitByBulletEvents();
	}

	public Vector<HitRobotEvent> getHitRobotEvents() {
		return base.getHitRobotEvents();
	}

	public Vector<HitWallEvent> getHitWallEvents() {
		return base.getHitWallEvents();
	}

	public double getRadarHeadingRadians() {
		return base.getRadarHeadingRadians();
	}

	public double getRadarTurnRemaining() {
		return base.getRadarTurnRemaining();
	}

	public double getRadarTurnRemainingRadians() {
		return base.getRadarTurnRemainingRadians();
	}

	public Vector<RobotDeathEvent> getRobotDeathEvents() {
		return base.getRobotDeathEvents();
	}

	public Vector<ScannedRobotEvent> getScannedRobotEvents() {
		return base.getScannedRobotEvents();
	}

	public Vector<StatusEvent> getStatusEvents() {
		return base.getStatusEvents();
	}

	public double getTurnRemaining() {
		return base.getTurnRemaining();
	}

	public double getTurnRemainingRadians() {
		return base.getTurnRemainingRadians();
	}

	public boolean isAdjustGunForRobotTurn() {
		return base.isAdjustGunForRobotTurn();
	}

	public boolean isAdjustRadarForGunTurn() {
		return base.isAdjustRadarForGunTurn();
	}

	public boolean isAdjustRadarForRobotTurn() {
		return base.isAdjustRadarForRobotTurn();
	}

	public void removeCustomEvent(Condition condition) {
		base.removeCustomEvent(condition);
	}

	public void setAhead(double distance) {
		base.setAhead(distance);
	}

	public void setBack(double distance) {
		base.setBack(distance);
	}

	public void setEventPriority(String eventClass, int priority) {
		base.setEventPriority(eventClass, priority);
	}

	public void setFire(double power) {
		base.setFire(power);
	}

	public Bullet setFireBullet(double power) {
		return base.setFireBullet(power);
	}

	public void setInterruptible(boolean interruptible) {
		base.setInterruptible(interruptible);
	}

	public void setMaxTurnRate(double newMaxTurnRate) {
		base.setMaxTurnRate(newMaxTurnRate);
	}

	public void setMaxVelocity(double newMaxVelocity) {
		base.setMaxVelocity(newMaxVelocity);
	}

	public void setResume() {
		base.setResume();
	}

	public void setStop() {
		base.setStop();
	}

	public void setStop(boolean overwrite) {
		base.setStop(overwrite);
	}

	public void setTurnGunLeft(double degrees) {
		base.setTurnGunLeft(degrees);
	}

	public void setTurnGunLeftRadians(double radians) {
		base.setTurnGunLeftRadians(radians);
	}

	public void setTurnGunRight(double degrees) {
		base.setTurnGunRight(degrees);
	}

	public void setTurnGunRightRadians(double radians) {
		base.setTurnGunRightRadians(radians);
	}

	public void setTurnLeft(double degrees) {
		base.setTurnLeft(degrees);
	}

	public void setTurnLeftRadians(double radians) {
		base.setTurnLeftRadians(radians);
	}

	public void setTurnRadarLeft(double degrees) {
		base.setTurnRadarLeft(degrees);
	}

	public void setTurnRadarLeftRadians(double radians) {
		base.setTurnRadarLeftRadians(radians);
	}

	public void setTurnRadarRight(double degrees) {
		base.setTurnRadarRight(degrees);
	}

	public void setTurnRadarRightRadians(double radians) {
		base.setTurnRadarRightRadians(radians);
	}

	public void setTurnRight(double degrees) {
		base.setTurnRight(degrees);
	}

	public void setTurnRightRadians(double radians) {
		base.setTurnRightRadians(radians);
	}

	public void turnGunLeftRadians(double radians) {
		base.turnGunLeftRadians(radians);
	}

	public void turnGunRightRadians(double radians) {
		base.turnGunRightRadians(radians);
	}

	public void turnLeftRadians(double radians) {
		base.turnLeftRadians(radians);
	}

	public void turnRadarLeftRadians(double radians) {
		base.turnRadarLeftRadians(radians);
	}

	public void turnRadarRightRadians(double radians) {
		base.turnRadarRightRadians(radians);
	}

	public void turnRightRadians(double radians) {
		base.turnRightRadians(radians);
	}

	public void waitFor(Condition condition) {
		base.waitFor(condition);
	}

	public void ahead(double distance) {
		base.ahead(distance);
	}

	public void back(double distance) {
		base.back(distance);
	}

	public void doNothing() {
		base.doNothing();
	}

	public void fire(double power) {
		base.fire(power);
	}

	public Bullet fireBullet(double power) {
		return base.fireBullet(power);
	}

	public double getBattleFieldHeight() {
		return base.getBattleFieldHeight();
	}

	public double getBattleFieldWidth() {
		return base.getBattleFieldWidth();
	}

	public double getEnergy() {
		return base.getEnergy();
	}

	public Graphics2D getGraphics() {
		return base.getGraphics();
	}

	public double getGunCoolingRate() {
		return base.getGunCoolingRate();
	}

	public double getGunHeading() {
		return base.getGunHeading();
	}

	public double getGunHeat() {
		return base.getGunHeat();
	}

	public double getHeading() {
		return base.getHeading();
	}

	public double getHeight() {
		return base.getHeight();
	}

	public String getName() {
		return base.getName();
	}

	public int getNumRounds() {
		return base.getNumRounds();
	}

	public int getOthers() {
		return base.getOthers();
	}

	public double getRadarHeading() {
		return base.getRadarHeading();
	}

	public int getRoundNum() {
		return base.getRoundNum();
	}

	public long getTime() {
		return base.getTime();
	}

	public double getVelocity() {
		return base.getVelocity();
	}

	public double getWidth() {
		return base.getWidth();
	}

	public double getX() {
		return base.getX();
	}

	public double getY() {
		return base.getY();
	}

	public void resume() {
		base.resume();
	}

	public void scan() {
		base.scan();
	}

	public void setAdjustGunForRobotTurn(boolean independent) {
		base.setAdjustGunForRobotTurn(independent);
	}

	public void setAdjustRadarForGunTurn(boolean independent) {
		base.setAdjustRadarForGunTurn(independent);
	}

	public void setAdjustRadarForRobotTurn(boolean independent) {
		base.setAdjustRadarForRobotTurn(independent);
	}

	public void setAllColors(Color color) {
		base.setAllColors(color);
	}

	public void setBodyColor(Color color) {
		base.setBodyColor(color);
	}

	public void setBulletColor(Color color) {
		base.setBulletColor(color);
	}

	public void setColors(Color bodyColor, Color gunColor, Color radarColor) {
		base.setColors(bodyColor, gunColor, radarColor);
	}

	public void setColors(Color bodyColor, Color gunColor, Color radarColor, Color bulletColor, Color scanArcColor) {
		base.setColors(bodyColor, gunColor, radarColor, bulletColor, scanArcColor);
	}

	public void setDebugProperty(String key, String value) {
		base.setDebugProperty(key, value);
	}

	public void setGunColor(Color color) {
		base.setGunColor(color);
	}

	public void setRadarColor(Color color) {
		base.setRadarColor(color);
	}

	public void setScanColor(Color color) {
		base.setScanColor(color);
	}

	public void stop() {
		base.stop();
	}

	public void stop(boolean overwrite) {
		base.stop(overwrite);
	}

	public void turnGunLeft(double degrees) {
		base.turnGunLeft(degrees);
	}

	public void turnGunRight(double degrees) {
		base.turnGunRight(degrees);
	}

	public void turnLeft(double degrees) {
		base.turnLeft(degrees);
	}

	public void turnRadarLeft(double degrees) {
		base.turnRadarLeft(degrees);
	}

	public void turnRadarRight(double degrees) {
		base.turnRadarRight(degrees);
	}

	public void turnRight(double degrees) {
		base.turnRight(degrees);
	}

	public void onMessageReceived(MessageEvent event) {}

	public void onCustomEvent(CustomEvent event) {}

	public void onDeath(DeathEvent event) {}

	public void onSkippedTurn(SkippedTurnEvent event) {}

	public void onBattleEnded(BattleEndedEvent event) {}

	public void onBulletHit(BulletHitEvent event) {}

	public void onBulletHitBullet(BulletHitBulletEvent event) {}

	public void onBulletMissed(BulletMissedEvent event) {}

	public void onHitByBullet(HitByBulletEvent event) {}

	public void onHitRobot(HitRobotEvent event) {}

	public void onHitWall(HitWallEvent event) {}

	public void onKeyPressed(KeyEvent e) {}

	public void onKeyReleased(KeyEvent e) {}

	public void onKeyTyped(KeyEvent e) {}

	public void onMouseClicked(MouseEvent e) {}

	public void onMouseDragged(MouseEvent e) {}

	public void onMouseEntered(MouseEvent e) {}

	public void onMouseExited(MouseEvent e) {}

	public void onMouseMoved(MouseEvent e) {}

	public void onMousePressed(MouseEvent e) {}

	public void onMouseReleased(MouseEvent e) {}

	public void onMouseWheelMoved(MouseWheelEvent e) {}

	public void onPaint(Graphics2D g) {}

	public void onRobotDeath(RobotDeathEvent event) {}

	public void onRoundEnded(RoundEndedEvent event) {}

	public void onScannedRobot(ScannedRobotEvent event) {}

	public void onStatus(StatusEvent e) {}

	public void onWin(WinEvent event) {}
}