package com.angelde.gdxremote.shadow;
import com.angelde.gdxremote.RemoteController;
import com.angelde.gdxremote.RemoteControllerListener;
import com.angelde.gdxremote.RemoteServer;
import com.angelde.gdxremote.Util;
import net.fourbytes.shadow.ParticleType;
import net.fourbytes.shadow.Shadow;
import net.fourbytes.shadow.mod.AMod;
/**
* The GDXRemoteMapping Module is a module / extension for Shadow Engine (/ games based on SE)
* wrapping and housing a GDXRemoteMapping server. Running on separate threads,
* working almost* as if usual controllers would connect and using LibGDX's
* network classes, it's fit for use with Shadow Engine.
* <br><br>
* (* adds Shadow.controllerHelper as controller listener manually due to ControllerManager limitations)
* @author maik
*/
public class GDXRemoteMod extends AMod implements RemoteControllerListener {
public RemoteServer server;
public GDXRemoteMod() {
super();
}
@Override
public String modName() {
return "GDXRemote Wrapper";
}
@Override
public String modAuthor() {
return "AngelDE98";
}
@Override
public String modVersion() {
return "GDXRemoteMod: 0.0.0 beta 0; GDXRemoteMapping: "+ Util.VERSION_STR;
}
@Override
public void create() {
server = new RemoteServer();
server.listeners.add(this);
server.start();
}
@Override
public void dispose() {
if (server != null) {
server.stop();
server = null;
}
}
@Override
public void controllerConnected(RemoteController remoteController) {
Shadow.controllerHelper.connected(remoteController);
GDXRemoteMapping.map(Shadow.controllerHelper, remoteController);
}
@Override
public void controllerDisconnected(RemoteController remoteController) {
Shadow.controllerHelper.disconnected(remoteController);
}
}