Files
Parabot/src/main/java/org/parabot/environment/servers/ServerProvider.java
T

166 lines
3.7 KiB
Java

package org.parabot.environment.servers;
import org.objectweb.asm.Opcodes;
import org.parabot.core.Context;
import org.parabot.core.asm.hooks.HookFile;
import org.parabot.core.asm.interfaces.Injectable;
import org.parabot.core.parsers.hooks.HookParser;
import org.parabot.environment.input.Keyboard;
import org.parabot.environment.input.Mouse;
import org.parabot.environment.scripts.Script;
import javax.swing.*;
import java.applet.Applet;
import java.applet.AppletStub;
import java.awt.*;
import java.net.URL;
/**
* Provides a server to the bot
*
* @author Everel
*/
public abstract class ServerProvider implements Opcodes {
/**
* Get the game/applet dimensions
*
* @return game/applet dimensions
*/
public Dimension getGameDimensions() {
return new Dimension(765, 503);
}
/**
* Hooks to parse
*
* @return URL to hooks file
*
* @deprecated use getHookFile() now
*/
@Deprecated
public URL getHooks() {
return null;
}
/**
* Get hook file to parse
*
* @return hook file
*/
public HookFile getHookFile() {
return null;
}
/**
* Jar to parse
*
* @return URL to client jar
*/
public abstract URL getJar();
public abstract Applet fetchApplet();
public String getAccessorsPackage() {
return null;
}
public void injectHooks() {
HookFile hookFile = fetchHookFile();
if (hookFile == null) {
return;
}
HookParser parser = hookFile.getParser();
Injectable[] injectables = parser.getInjectables();
if (injectables == null) {
return;
}
for (Injectable inj : injectables) {
inj.inject();
}
Context.getInstance().setHookParser(parser);
}
private HookFile fetchHookFile() {
HookFile hookFile = getHookFile();
if (hookFile != null) {
return hookFile;
}
URL hookLocation = getHooks();
if (hookLocation == null) {
return null;
}
return new HookFile(hookLocation, HookFile.TYPE_XML);
}
/**
* Add custom items to the bot menu bar
*
* @param bar menu bar to add items on
*/
public void addMenuItems(JMenuBar bar) {
}
public AppletStub getStub() {
return null;
}
public void setClientInstance(Object client) {
Context.getInstance().setClientInstance(client);
}
public void parseJar() {
Context.getInstance().getClassPath().addJar(getJar());
}
public void initScript(Script script) {
}
public void init() {
}
public void initMouse() {
final Context context = Context.getInstance();
final Applet applet = context.getApplet();
final Mouse mouse = new Mouse(applet);
applet.addMouseListener(mouse);
applet.addMouseMotionListener(mouse);
context.setMouse(mouse);
}
public void initKeyboard() {
final Context context = Context.getInstance();
final Applet applet = context.getApplet();
final Keyboard keyboard = new Keyboard(applet);
applet.addKeyListener(keyboard);
context.setKeyboard(keyboard);
}
public void unloadScript(Script script) {
}
/**
* Called in Context.setApplet before applet.init() is called. Exclusively used for manipulating the Frame attached
* to the applet of Roatpkz.
*/
public void preAppletInit() {
}
/**
* Called in Context.setApplet before after applet.start() and applet.init() are called. Exclusively used for manipulating the Frame attached
* to the applet of Roatpkz.
*/
public void postAppletStart() {
}
}