Это решается, выполнив следующие действия:
Положите вашу платформу специальный код в класс, который реализует ваш интерфейс и ваш класс Game принимает интерфейс в качестве параметра в конструктор.
Итак, в базовом проекте у вас есть свой игровой класс;
public class GameInstance extends Game {
private NetworkState networkState;
public GameInstance(NetworkState networkState) {
this.networkState = networkState;
}
// override methods go below
...
}
Кроме того, вы кладете интерфейс NetworkState в ядре:
public interface NetworkState {
public int getNetworkState();
}
В вашем Android проекта вы положили реализацию;
public AndroidNetworkState implements NetworkState {
public int getNetworkState() {
return 1;
}
}
И тогда в вашем AndroidLauncher вы создаете объект игры и передать его реализацию интерфейса:
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
NetworkState networkState = new AndroidNetworkState(); // or whatever you called the class
initialize(new Game(networkState), config);
}
И тогда вы можете просто вызвать метод интерфейса в своем основном проекте:
...
int networkStateResult = this.networkState.getNetworkState();
...
Обязательно представьте реализацию для других платформ, если вы поддерживаете другие платформы.
Мой класс в основном будет MainMenu. MainMenu.NetworkState networkState = new MainMenu.NetworkState(); Он говорит, что он абстрактный, не может быть создан. –
Почему это абстрактный класс? –
Что это значит? Это «нормально» .... Он говорит, что this.networkState не может решить. –