summaryrefslogtreecommitdiff
path: root/core/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org')
-rw-r--r--core/src/main/java/org/snoopdesigns/endless/EndlessGame.java64
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);
+ }
}