#4
Te contesto escribiendo el código directamente aquí, así que sin resaltado de sintaxis ni errores de compilación lo más probable es que algo esté mal, pero bueno la idea es que entiendas como funciona más que darte la solución lista para que la copies y pegues.
Salvo que haya cambiado mucho libgdx desde la última vez que lo usé, tendrás una clase que implementa ApplicationListener
public class MiJuego implements ApplicationListener {
//bla bla
}
La forma más directa de hacerlo (que no necesariamente la mejor) es usar inyección de dependencias y un método en la clase principal del juego:
//Todo esto en el proyecto core
public interface Twitter
{
void enviar Twitter(Strint texto);
}
public class MiJuego implements ApplicationListener {
private Twitter twitter;
static public MiJuego juego;
//Constructor
public MiJuego(Twitter twitter)
{
this.twitter = twitter;
}
public Twitter obtTwitter()
{
return twitter;
}
@Override
public void create() {
juego = this;
}
}
Ahora en tu proyecto android, tendrás una clase que hereda de AndroidApplication, donde creas una instancia de la clase MiJuego, pues bien, tienes que crear una clase TwitterAndroid que implemente la interfaz anterior, y que haga lo que tenga que hacer para enviar un Twitter en Android:
//Todo esto en el proyecto android
public class TwitterAndroid implements Twitter
{
void enviarTwitter(String texto)
{
//Lo que se apara enviar el Twitter
}
}
public class MainActivity extends AndroidApplication {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MiJuego juego = new MiJuego (new TwitterAndroid());
}
}
En tu proyecto de Escritorio haces lo mismo, pero con otra clase que envíe los twits como se haga desde ahí (o vacío si solo quieres que no pete):
public class TwitterEscritorio implements Twitter
{
void enviarTwitter(String texto)
{
//Lo que se apara enviar el Twitter
}
}
public class Main {
public static void main(String[] args) {
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
new LwjglApplication(new MiJuego(new TwitterEscritorio), cfg);
}
}
Luego es tan simple como que cada vez que quieras enviar un Twitter obtener una referencia a la clase actual mediante la variable estática:
//En cualquier sitio
MiJuego.juego.obtTwitter().enviarTwitter("texto");
Si quieres evitar usar una variable global para obtener la instancia actual del juego y de ahí la clase Twitter concreta que has metido mediante inyección de dependencias, tendrías que tirar de implementar el patrón service locator o algo similar.