diff --git a/core/src/com/trs/main/Main.java b/core/src/com/trs/main/Main.java index d4a9fcb..7232ca1 100644 --- a/core/src/com/trs/main/Main.java +++ b/core/src/com/trs/main/Main.java @@ -35,6 +35,7 @@ public class Main extends Game{ Gdx.gl.glClearColor(0f, (0), (0), 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); screen.render(Gdx.graphics.getDeltaTime()); + //Gdx.app.exit(); } @Override diff --git a/core/src/com/trs/main/MapContainer.java b/core/src/com/trs/main/MapContainer.java index 6397dd3..499f65c 100644 --- a/core/src/com/trs/main/MapContainer.java +++ b/core/src/com/trs/main/MapContainer.java @@ -14,7 +14,11 @@ import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.viewport.FitViewport; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; public class MapContainer { @@ -39,7 +43,7 @@ public class MapContainer { p.setPosition(64, 64); stage.addActor(p); - stage.addActor(new MovingNpc(new Rectangle(20,20,400,400), 64, 64)); + stage.addActor(new MovingNpc(new Rectangle(320,320,80,80), 340, 340)); //CREATION OF TILEDMAP maploader = new TmxMapLoader(); @@ -63,12 +67,19 @@ public class MapContainer { //System.out.println("ID: " + props.get("ID", Integer.class)); //System.out.println("ID: " + props.get("y")); } + } public void render(float f){ renderer.setView((OrthographicCamera)stage.getCamera()); renderer.render(); + Actor[] old = stage.getActors().toArray(); + stage.clear(); + for(Actor a : sort(old)){ + stage.addActor(a); + } + stage.act(f); stage.draw(); if(Main.gamestate == 1) { @@ -108,5 +119,21 @@ public class MapContainer { System.out.println("OLD MAP DIDNT FIND PLAYER"); return null; } + + public Actor[] sort(Actor[] unsorted){ + // TODO: Textboxes to the end of the Array to draw them last + for(int j = 0; j < unsorted.length-1; j++){ + for(int i = unsorted.length-1; i >= 0; i--){ + if(i > 0 && unsorted[i].getY() > unsorted[i-1].getY()){ + Actor temp = unsorted[i-1]; + unsorted[i-1] = unsorted[i]; + unsorted[i] = temp; + } + } + } + + return unsorted; + } + } diff --git a/core/src/com/trs/main/MovingNpc.java b/core/src/com/trs/main/MovingNpc.java index 0ffd05c..8a6e741 100644 --- a/core/src/com/trs/main/MovingNpc.java +++ b/core/src/com/trs/main/MovingNpc.java @@ -40,6 +40,13 @@ public class MovingNpc extends Actor{ collisionRect = new Rectangle(xPos + 16, yPos, 32, 48); this.area = area; speed = 1f; + + movementX = 0; + movementY = 0; + + String[] ans = {"Antwort1", "Antwort2"}; + this.t = new Textbox("Frage", ans, getX()+getWidth()/2, getY()+getHeight()/2, Main.CAMERA_WIDTH, Main.CAMERA_HEIGHT); + setBounds(xPos, yPos, animatedSprite.getSprite().getWidth(), animatedSprite.getSprite().getHeight()); } @@ -140,4 +147,8 @@ public class MovingNpc extends Actor{ return value; } + public Textbox getTextbox(){ + return t; + } + } diff --git a/core/src/com/trs/main/Player.java b/core/src/com/trs/main/Player.java index f71e131..0916663 100644 --- a/core/src/com/trs/main/Player.java +++ b/core/src/com/trs/main/Player.java @@ -36,7 +36,6 @@ public class Player extends Actor{ Rectangle collisionRect; public Player(int xPos, int yPos){ - setName("player"); t = new Texture(Gdx.files.internal("player.png")); playerSprite = new AnimatedSprite(t, 64, 64); @@ -74,11 +73,14 @@ public class Player extends Actor{ facing = 2; } if(Gdx.input.isKeyJustPressed(Input.Keys.E)) { - Main.gamestate = 1; - String[] ans = {"Antwort1", "Antwort2"}; - getStage().addActor(new Textbox("Frage", ans, getX()+getWidth()/2, getY()+getHeight()/2, Main.CAMERA_WIDTH, Main.CAMERA_HEIGHT)); - movementX = 0; - movementY = 0; + Actor a = collidingActor(); + if(a != null && a instanceof MovingNpc){ + Main.gamestate = 1; + Textbox t = ((MovingNpc)a).getTextbox(); + getStage().addActor(new Textbox(t, getX()+32, getY()+32)); + movementX = 0; + movementY = 0; + } } } else if(Main.gamestate == 1) { @@ -92,7 +94,6 @@ public class Player extends Actor{ * 3: no movement available */ if(movementX == 0 && movementY == 0){ - System.out.println(collidingWithMapCollisionObject()); } else if(movementX == 0 && movementY != 0){ setY(getY()+movementY); @@ -183,6 +184,19 @@ public class Player extends Actor{ } } } + + public Actor collidingActor(){ + for(Actor a : getStage().getActors()){ + if(a.getName().equals("npc")){ + Rectangle p = new Rectangle(getX(), getY(), getWidth(), getHeight()); + Rectangle npc = new Rectangle(a.getX(), a.getY(), a.getWidth(), a.getHeight()); + if(Intersector.overlaps(p, npc)){ + return a; + } + } + } + return null; + } /* public int getMovementAvailable(){ diff --git a/core/src/com/trs/main/Textbox.java b/core/src/com/trs/main/Textbox.java index 210de38..d4dfd62 100644 --- a/core/src/com/trs/main/Textbox.java +++ b/core/src/com/trs/main/Textbox.java @@ -29,6 +29,7 @@ public class Textbox extends Actor{ int printLine; int printChar; ArrayList splitted; + String toPring; ShapeRenderer renderer; @@ -55,10 +56,26 @@ public class Textbox extends Actor{ font.setColor(Color.BLACK); state = 0; splitted = getSplitted(toPrint, (int)getWidth()); - for(String s : splitted){ - System.out.println(s); - } + } + + public Textbox(Textbox t, float xPos, float yPos){ + splitted = t.splitted; + r = new Rectangle(xPos - Main.CAMERA_WIDTH/2 + 20, yPos - Main.CAMERA_HEIGHT/2 + 20, Main.CAMERA_WIDTH - 40, Main.CAMERA_HEIGHT/5); + + renderer = new ShapeRenderer(); + printLine = 0; + printChar = 0; + this.ans = t.ans; + setName("textbox"); + font = new BitmapFont(); + setBounds(r.getX(), r.getY(), r.getWidth(), r.getHeight()); + FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("font.ttf")); + FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); + parameter.size = 21; + font = generator.generateFont(parameter); + generator.dispose(); + font.setColor(Color.BLACK); } @Override