movement and viewports kinda fixed, ready for playstore update

master
JanEhehalt 4 years ago
parent ee66afd2c4
commit b823edd931

@ -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);
}
}

@ -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<Integer> clicked = gs.click(screenX,screenY);
ArrayList<Integer> 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<Integer> e = gs.click(screenX,screenY);
if(e.contains(0)){
ArrayList<Integer> 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);

@ -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<Integer> 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<Integer> 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<Integer> clicks = new ArrayList();

@ -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
}

@ -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

@ -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
}

@ -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);
}
}

Loading…
Cancel
Save