Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // some common classes and rendering interfaces
- class Transform {
- Vector2 position;
- float rotation;
- float scale;
- }
- interface Scene {
- void drawImage(ImageData image, Transform transform);
- }
- interface ImageData {
- byte[] getData();
- float getWidth();
- float getHeight();
- }
- // Scene implementations
- class SwingScene implements Scene {
- @Override
- void drawImage(ImageData image, Transform transform) {
- g2d.drawImage(new ImageIconOrWhatever(image.getData()), transform.x, transform.y, ..);
- }
- }
- class SlickScene implements Scene {
- @Override
- void drawImage(ImageData image, Transform transform) {
- g.translate(transform.x, transform.y);
- g.rotate(transform.rotation);
- g.draw(new ImageOrWhatever(image.getData()), image.getWidth(), image.getHeight());
- }
- }
- // guice module
- SwingRenderingModule extends AbstractModule {
- public void configure() {
- // now when we ask the injector for a Scene instance, we get a SwingScene instance
- bind(Scene.class).to(SwingScene.class);
- .. more bindings ..
- }
- }
- SlickRenderingModule extends AbstractModule {
- public void configure() {
- // now when we ask the injector for a Scene instance, we get a SlickScene instance
- bind(Scene.class).to(SlickScene.class);
- .. more bindings ..
- }
- }
- // instantiate stuff with Swing
- Injector injector = Guice.createInjector(
- new SwingRenderingModule(),
- .. more modules ..
- );
- Scene scene = injector.getInstance(Scene.class);
- scene.drawImage(new Image([0, 4, 8, 2, 48]), somewhere);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement