package com.badlogic.gdx.tests.lwjgl3;
import com.badlogic.gdx.*;
import com.badlogic.gdx.backends.lwjgl3.*;
import com.badlogic.gdx.graphics.Cursor;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.math.MathUtils;
public class MultiWindowCursorTest {
static class WindowWithCursorListener implements ApplicationListener {
ApplicationListener listener;
WindowWithCursorListener(ApplicationListener listener) {
this.listener = listener;
}
@Override
public void create() {
listener.create();
if (MathUtils.randomBoolean()) {
Cursor.SystemCursor[] systemCursors = Cursor.SystemCursor.values();
Cursor.SystemCursor systemCursor = systemCursors[MathUtils.random(systemCursors.length - 1)];
Gdx.graphics.setSystemCursor(systemCursor);
} else {
Pixmap pixmap;
if (MathUtils.randomBoolean()) {
pixmap = new Pixmap(Gdx.files.internal("data/particle-star.png"));
} else {
pixmap = new Pixmap(Gdx.files.internal("data/ps-bobargb8888-32x32.png"));
}
Cursor cursor = Gdx.graphics.newCursor(pixmap, pixmap.getWidth() / 2, pixmap.getHeight() / 2);
Gdx.graphics.setCursor(cursor);
pixmap.dispose();
}
}
@Override
public void resize(int width, int height) {
listener.resize(width, height);
}
@Override
public void render() {
listener.render();
}
@Override
public void pause() {
listener.pause();
}
@Override
public void resume() {
listener.resume();
}
@Override
public void dispose() {
listener.dispose();
}
}
public static class MainWindow extends MultiWindowTest.MainWindow {
@Override
public ApplicationListener createChildWindowClass(Class clazz) {
return new WindowWithCursorListener(super.createChildWindowClass(clazz));
}
}
public static void main(String[] argv) {
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
config.setTitle("Multi-window test with cursors");
new Lwjgl3Application(new MainWindow(), config);
}
}