dialogue interaction between player and Npc possible (E)

master
GammelJAN 5 years ago
parent a34723c5e9
commit 8a81aa9408

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

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

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

@ -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(){

@ -29,6 +29,7 @@ public class Textbox extends Actor{
int printLine;
int printChar;
ArrayList<String> 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

Loading…
Cancel
Save