diff options
Diffstat (limited to 'core/src/main/java/org')
| -rw-r--r-- | core/src/main/java/org/snoopdesigns/endless/EndlessGame.java | 64 | 
1 files changed, 62 insertions, 2 deletions
diff --git a/core/src/main/java/org/snoopdesigns/endless/EndlessGame.java b/core/src/main/java/org/snoopdesigns/endless/EndlessGame.java index 53884dd..1453a6e 100644 --- a/core/src/main/java/org/snoopdesigns/endless/EndlessGame.java +++ b/core/src/main/java/org/snoopdesigns/endless/EndlessGame.java @@ -1,32 +1,92 @@  package org.snoopdesigns.endless;  import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Input; +import com.badlogic.gdx.graphics.OrthographicCamera;  import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Sprite;  import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.math.MathUtils;  import com.badlogic.gdx.utils.ScreenUtils;  public class EndlessGame extends ApplicationAdapter { +    private static final int WORLD_WIDTH = 100; +    private static final int WORLD_HEIGHT = 100; + +    private static final int DEFAULT_VIEWPORT_WIDTH = 30; +    private static final int DEFAULT_VIEWPORT_HEIGHT = 30; + +    private OrthographicCamera cam;      private SpriteBatch batch; +    private Sprite imageSprite;      private Texture image;      @Override      public void create() {          batch = new SpriteBatch(); -        image = new Texture("libgdx.png"); +        image = new Texture("sc_map.png"); +        imageSprite = new Sprite(image); +        imageSprite.setPosition(0, 0); +        imageSprite.setSize(WORLD_WIDTH, WORLD_HEIGHT); + +        float graphicsWidth = Gdx.graphics.getWidth(); +        float graphicsHeight = Gdx.graphics.getHeight(); + +        cam = new OrthographicCamera( +                DEFAULT_VIEWPORT_WIDTH, +                DEFAULT_VIEWPORT_HEIGHT * (graphicsHeight / graphicsWidth)); +        cam.position.set(cam.viewportWidth / 2f, cam.viewportHeight / 2f, 0); +        cam.update();      }      @Override      public void render() { +        handleInput(); +        cam.update(); +        batch.setProjectionMatrix(cam.combined); +          ScreenUtils.clear(0.15f, 0.15f, 0.2f, 1f); +          batch.begin(); -        batch.draw(image, 140, 210); +        imageSprite.draw(batch);          batch.end();      }      @Override      public void dispose() { +        imageSprite.getTexture().dispose();          batch.dispose();          image.dispose();      } + +    private void handleInput() { +        if (Gdx.input.isKeyPressed(Input.Keys.A)) { +            cam.zoom += 0.02; +        } +        if (Gdx.input.isKeyPressed(Input.Keys.Q)) { +            cam.zoom -= 0.02; +        } +        if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) { +            cam.translate(-3, 0, 0); +        } +        if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) { +            cam.translate(3, 0, 0); +        } +        if (Gdx.input.isKeyPressed(Input.Keys.DOWN)) { +            cam.translate(0, -3, 0); +        } +        if (Gdx.input.isKeyPressed(Input.Keys.UP)) { +            cam.translate(0, 3, 0); +        } + +        cam.zoom = MathUtils.clamp(cam.zoom, 0.1f, 100 / cam.viewportWidth); + +        float effectiveViewportWidth = cam.viewportWidth * cam.zoom; +        float effectiveViewportHeight = cam.viewportHeight * cam.zoom; + +        cam.position.x = MathUtils.clamp(cam.position.x, effectiveViewportWidth / 2f, 100 - effectiveViewportWidth / 2f); +        cam.position.y = MathUtils.clamp(cam.position.y, effectiveViewportHeight / 2f, 100 - effectiveViewportHeight / 2f); +    }  }  | 
