diff --git a/android/src/com/dungeoncrawler/control/AndroidLauncher.java b/android/src/com/dungeoncrawler/control/AndroidLauncher.java index 6560ced..91b8d8c 100644 --- a/android/src/com/dungeoncrawler/control/AndroidLauncher.java +++ b/android/src/com/dungeoncrawler/control/AndroidLauncher.java @@ -12,6 +12,8 @@ public class AndroidLauncher extends AndroidApplication { super.onCreate(savedInstanceState); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.hideStatusBar = true; + config.numSamples = 0; + config.useImmersiveMode = true; initialize(new Controller(), config); } } diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index b50a83f..cfe3dc3 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -18,7 +18,9 @@ import com.badlogic.gdx.maps.MapObjects; import com.badlogic.gdx.maps.objects.RectangleMapObject; import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.viewport.FitViewport; import com.badlogic.gdx.utils.viewport.StretchViewport; import com.badlogic.gdx.utils.viewport.Viewport; import com.dungeoncrawler.view.*; @@ -36,6 +38,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ float GAME_WORLD_WIDTH; float GAME_WORLD_HEIGHT; + boolean shotFrame = false; + final boolean TOUCH = true; // CAMERA @@ -95,7 +99,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2, GAME_WORLD_HEIGHT / 2, 0); @@ -154,6 +158,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public void run() { if(gs != null){ + shotFrame = false; if(gs.player.getAttackState() == 2){ playerAttack(d.getCurrentEntities(), d.getPlayer(), d.getPlayer().getDirection()); } @@ -344,7 +349,6 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public void render(){ Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - if(end){ if(es == null){ isPaused = true; @@ -356,7 +360,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2, GAME_WORLD_HEIGHT / 2, 0); @@ -969,7 +973,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2 - 170, GAME_WORLD_HEIGHT / 2 + 20, 0); @@ -990,7 +994,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2 - 170, GAME_WORLD_HEIGHT / 2 + 20, 0); @@ -1008,7 +1012,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2, GAME_WORLD_HEIGHT / 2, 0); @@ -1074,7 +1078,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(gs != null){ if(!d.getPlayer().isToDelete()) { - ArrayList clicked = gs.click(screenX,screenY); + ArrayList clicked = gs.click(screenX,screenY, viewport); + d.getPlayer().setMovementX(0); + d.getPlayer().setMovementY(0); for (Integer i : clicked) { switch (i) { // -1: nix, 0: left, 1: up, 2: right, 3: down, 4: attackLeft, 5: attackUp, 6: attackRight, 7: attackDown, 8: pickUp case 0: @@ -1096,6 +1102,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ case 4: if(TOUCH) if (!gs.getIsLoading() && !d.getPlayer().isToDelete()) { + shotFrame = true; Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos() - 1, (int) d.getPlayer().getyPos()); for (int k = 5; k < d.getCurrentEntities().length; k++) { @@ -1112,6 +1119,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ case 5: if(TOUCH) if (!gs.getIsLoading() && !d.getPlayer().isToDelete()) { + shotFrame = true; Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos() + 1); for (int k = 5; k < d.getCurrentEntities().length; k++) { @@ -1127,6 +1135,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ case 6: if(TOUCH) if (!gs.getIsLoading() && !d.getPlayer().isToDelete()) { + shotFrame = true; Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos() + 1, (int) d.getPlayer().getyPos()); for (int k = 5; k < d.getCurrentEntities().length; k++) { @@ -1142,6 +1151,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ case 7: if(TOUCH) if (!gs.getIsLoading() && !d.getPlayer().isToDelete()) { + shotFrame = true; Entity lol = d.getPlayer().shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos() - 1); for (int k = 5; k < d.getCurrentEntities().length; k++) { @@ -1254,13 +1264,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ return es.click(x, y); } if(ps != null){ - return ps.click(x,y); + return ps.click(x,y, viewport); } if(mm != null && !mm.getHidden()){ - return mm.click(x, y); + return mm.click(x, y, viewport); } if(ss != null){ - return ss.click(x, y); + return ss.click(x, y, viewport); } if(cs != null){ return cs.click(x, y); @@ -1272,19 +1282,25 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public boolean touchUp(int screenX, int screenY, int i2, int i3) { if(gs != null){ - ArrayList e = gs.click(screenX,screenY); - if(e.contains(0)){ + ArrayList e = gs.click(screenX,screenY, viewport); + Vector2 mov = new Vector2(d.getPlayer().getMovementX(), d.getPlayer().getMovementY()); + if(e.contains(0) && !shotFrame){ d.getPlayer().setMovementX(0); } - if(e.contains(1)){ + if(e.contains(1) && !shotFrame){ d.getPlayer().setMovementY(0); } - if(e.contains(2)){ + if(e.contains(2) && !shotFrame){ d.getPlayer().setMovementX(0); } - if(e.contains(3)){ + if(e.contains(3) && !shotFrame){ d.getPlayer().setMovementY(0); } + if(shotFrame){ + d.getPlayer().setMovementX(mov.x); + d.getPlayer().setMovementY(mov.y); + } + /* for (Integer i : gs.click(screenX,screenY)) { switch (i) { // -1: nix, 0: left, 1: up, 2: right, 3: down, 4: attackLeft, 5: attackUp, 6: attackRight, 7: attackDown case 0: @@ -1359,6 +1375,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } + */ } return true; } @@ -1368,13 +1385,13 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(gs != null && TOUCH){ if(!d.getPlayer().isToDelete()) { - if(!gs.click(screenX,screenY).contains(0) && !gs.click(screenX,screenY).contains(2)) { + if(!gs.click(screenX,screenY, viewport).contains(0) && !gs.click(screenX,screenY, viewport).contains(2)) { d.getPlayer().setMovementX(0); } - if(!gs.click(screenX,screenY).contains(1) && !gs.click(screenX,screenY).contains(3)) { + if(!gs.click(screenX,screenY, viewport).contains(1) && !gs.click(screenX,screenY, viewport).contains(3)) { d.getPlayer().setMovementY(0); } - for (Integer i : gs.click(screenX,screenY)) { + for (Integer i : gs.click(screenX,screenY, viewport)) { switch (i) { // -1: nix, 0: left, 1: up, 2: right, 3: down, 4: attackLeft, 5: attackUp, 6: attackRight, 7: attackDown case 0: d.getPlayer().setMovementX(-d.getPlayer().getMovementSpeed()); @@ -1481,7 +1498,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2, GAME_WORLD_HEIGHT / 2, 0); @@ -1495,7 +1512,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ viewport = null; camera = new OrthographicCamera(); camera.update(); - viewport = new StretchViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); + viewport = new FitViewport(GAME_WORLD_WIDTH, GAME_WORLD_HEIGHT, camera); viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); viewport.apply(); camera.position.set(GAME_WORLD_WIDTH / 2 - 170, GAME_WORLD_HEIGHT / 2 + 20, 0); diff --git a/core/src/com/dungeoncrawler/view/GameScreen.java b/core/src/com/dungeoncrawler/view/GameScreen.java index 6d1ca66..1a216fe 100644 --- a/core/src/com/dungeoncrawler/view/GameScreen.java +++ b/core/src/com/dungeoncrawler/view/GameScreen.java @@ -17,7 +17,9 @@ import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.badlogic.gdx.math.Circle; import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Timer; +import com.badlogic.gdx.utils.viewport.Viewport; import com.dungeoncrawler.model.Dungeon; import com.dungeoncrawler.model.Entity; import com.dungeoncrawler.model.entities.*; @@ -56,8 +58,8 @@ public class GameScreen { int mapX = 10; int mapY = 310; int gap = 2; - int rectWidth = 15; - int rectHeight = 10; + int rectWidth = 12; + int rectHeight = 7; float alpha = 0.5f; Timer animations; @@ -211,10 +213,10 @@ public class GameScreen { controls.add(new Button("sprites/controls/arrowUp.png", 600-170, 125, 5)); controls.add(new Button("sprites/controls/arrowRight.png", 650-170, 75, 6)); controls.add(new Button("sprites/controls/arrowDown.png", 600-170, 25, 7)); - controls.add(new Button("sprites/controls/pickUp.png", 160-110, 30, 8)); - controls.add(new Button("sprites/controls/equip1.png", 160-110, 120, 9)); - controls.add(new Button("sprites/controls/drop.png", 160+110, 30, 10)); - controls.add(new Button("sprites/controls/equip2.png", 160+110, 120, 11)); + controls.add(new Button("sprites/controls/pickUp.png", 160-110-40, 30, 8)); + controls.add(new Button("sprites/controls/equip1.png", 160-110-40, 120, 9)); + controls.add(new Button("sprites/controls/drop.png", 160+110+40, 30, 10)); + controls.add(new Button("sprites/controls/equip2.png", 160+110+40, 120, 11)); controls.add(new Button("sprites/controls/use.png", 600-170, 200, 12)); // INVENTORY controls.add(new Button("sprites/controls/inventorySlot.png", -118, 334, 20)); //0 @@ -623,9 +625,10 @@ public class GameScreen { } } } - public ArrayList click(int x, int y){ - x = (int)(((float)x) / (float)Gdx.graphics.getWidth() * 700f) -170; - y = 380- (int)(((float)y) / (float)Gdx.graphics.getHeight() * 380f)+ 25; + public ArrayList click(int x, int y, Viewport viewport){ + x = (int)viewport.unproject(new Vector2(x,y)).x; + y = (int)viewport.unproject(new Vector2(x,y)).y; + Circle r = new Circle(x,y,5); mouseX = x; mouseY = y; ArrayList clicks = new ArrayList(); diff --git a/core/src/com/dungeoncrawler/view/MainMenuScreen.java b/core/src/com/dungeoncrawler/view/MainMenuScreen.java index f81b776..528631b 100644 --- a/core/src/com/dungeoncrawler/view/MainMenuScreen.java +++ b/core/src/com/dungeoncrawler/view/MainMenuScreen.java @@ -10,9 +10,12 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.math.Circle; import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Timer; +import com.badlogic.gdx.utils.viewport.Viewport; public class MainMenuScreen{ @@ -27,6 +30,8 @@ public class MainMenuScreen{ Sprite maleButton; Sprite femaleButton; BitmapFont font; + + Vector2 lastMousePos = new Vector2(0,0); boolean hidden; @@ -52,7 +57,7 @@ public class MainMenuScreen{ Sprite buttonLeft; String gender; - + Texture cursor; public MainMenuScreen(float volume) { @@ -64,7 +69,8 @@ public class MainMenuScreen{ gender = "m"; font = new BitmapFont(); hidden = false; - + + cursor = new Texture("sprites/cursor.png"); Texture backgroundTexture = new Texture("sprites/MAINSCREEN.png"); Texture startButtonTexture = new Texture("sprites/startButton.png"); Texture quitButtonTexture = new Texture("sprites/quitButton.png"); @@ -152,7 +158,7 @@ public class MainMenuScreen{ public void render (SpriteBatch batch) { - + batch.begin(); //batch.setProjectionMatrix(camera.combined); if(hidden == false){ @@ -168,7 +174,7 @@ public class MainMenuScreen{ playerSprite.draw(batch); - + batch.draw(cursor, lastMousePos.x, lastMousePos.y); if(gender.equals("m")){ maleButton.draw(batch); @@ -183,11 +189,15 @@ public class MainMenuScreen{ } - public int click(int x, int y){ // prueft ob cursor mit button (START) ueberlappt + public int click(int x, int y, Viewport viewport){ // prueft ob cursor mit button (START) ueberlappt if(hidden == false){ - - Rectangle r = new Rectangle(); - r.set(x, h-y, 1, 1); + + //x = (int)((Gdx.graphics.getWidth() - viewport.getWorldWidth()) / 2f) + (int)(((float)x/(float)Gdx.graphics.getWidth()) * 1600) ; + //x -= (int)(x*((float)x/(float)Gdx.graphics.getWidth())); + x = (int)viewport.unproject(new Vector2(x,y)).x; + y = (int)h-y; + lastMousePos = new Vector2(x,y); + Circle r = new Circle(x,y,10); if(Intersector.overlaps(r, startButtonSprite.getBoundingRectangle())){ return 0; //go ingame } diff --git a/core/src/com/dungeoncrawler/view/PauseScreen.java b/core/src/com/dungeoncrawler/view/PauseScreen.java index b24e830..583a087 100644 --- a/core/src/com/dungeoncrawler/view/PauseScreen.java +++ b/core/src/com/dungeoncrawler/view/PauseScreen.java @@ -15,8 +15,11 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.math.Circle; import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.viewport.Viewport; /** * @@ -25,7 +28,8 @@ import com.badlogic.gdx.math.Rectangle; public class PauseScreen{ float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); - + + Vector2 lastMousePos = new Vector2(0,0); BitmapFont font; @@ -36,7 +40,9 @@ public class PauseScreen{ Texture backButtonTexture; Texture quitButtonTexture; Texture controlsButtonTexture; - + + Texture cursor; + Sprite controlsButtonSprite; Sprite volumeButtonSprite; Sprite volumeUpSprite; @@ -56,7 +62,8 @@ public class PauseScreen{ float wc = w/2; showControls = false; font = new BitmapFont(); - + + cursor = new Texture("sprites/cursor.png"); controlsButtonTexture = new Texture("sprites/controlsButton.png"); volumeButtonTexture = new Texture("sprites/volumeButton.png"); volumeUpTexture = new Texture("sprites/volumeUpButton.png"); @@ -87,7 +94,7 @@ public class PauseScreen{ public void render (SpriteBatch batch, float volume, OrthographicCamera camera) { - + float n = 0; @@ -119,6 +126,7 @@ public class PauseScreen{ backButtonSprite.draw(batch); controlsButtonSprite.draw(batch); //quitButtonSprite.draw(batch); + batch.draw(cursor, lastMousePos.x, lastMousePos.y); if(showControls){ @@ -158,12 +166,13 @@ public class PauseScreen{ } - public int click(int x, int y){ // prueft ob cursor mit button (START) ueberlappt - - - - Rectangle r = new Rectangle(); - r.set(x, h-y, 1600, 900); + public int click(int x, int y, Viewport viewport){ // prueft ob cursor mit button (START) ueberlappt + + + x = (int)viewport.unproject(new Vector2(x,y)).x; + y = (int)h-y; + lastMousePos = new Vector2(x, y); + Circle r = new Circle(x,y,10); /* if(Intersector.overlaps(r, quitButtonSprite.getBoundingRectangle())){ return 11; //restart Game diff --git a/core/src/com/dungeoncrawler/view/SettingsScreen.java b/core/src/com/dungeoncrawler/view/SettingsScreen.java index 480031e..eed2738 100644 --- a/core/src/com/dungeoncrawler/view/SettingsScreen.java +++ b/core/src/com/dungeoncrawler/view/SettingsScreen.java @@ -11,8 +11,11 @@ import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.math.Circle; import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.viewport.Viewport; /** * @@ -101,12 +104,12 @@ public class SettingsScreen { } - public int click(int x, int y){ // prueft ob cursor mit button (START) ueberlappt - - - - Rectangle r = new Rectangle(); - r.set(x, h-y, 1, 1); + public int click(int x, int y, Viewport viewport){ // prueft ob cursor mit button (START) ueberlappt + + + x = (int)viewport.unproject(new Vector2(x,y)).x; + y = (int)h-y; + Circle r = new Circle(x,y,10); if(Intersector.overlaps(r, controlsButtonSprite.getBoundingRectangle())){ return 3; //ControlsScreen } diff --git a/desktop/src/com/dungeoncrawler/control/desktop/DesktopLauncher.java b/desktop/src/com/dungeoncrawler/control/desktop/DesktopLauncher.java index bb43a77..7df5037 100644 --- a/desktop/src/com/dungeoncrawler/control/desktop/DesktopLauncher.java +++ b/desktop/src/com/dungeoncrawler/control/desktop/DesktopLauncher.java @@ -9,6 +9,7 @@ public class DesktopLauncher { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.width = 1600; config.height = 900; + config.samples = 0; new LwjglApplication(new Controller(), config); } }