Textboxes can be invoked by player

master
Jonathan Hager 5 years ago
parent 25453d2cf6
commit f9a0040b11

@ -11,7 +11,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
*/ */
public class AnimatedSprite { public class AnimatedSprite {
private final static int[] rowLengths = {7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 6, 6, 12, 12, 12, 12, 6}; private final static int[] ROWLENGTHS = {7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 6, 6, 12, 12, 12, 12, 6};
private Sprite sprite; private Sprite sprite;
private TextureRegion[][] texture; private TextureRegion[][] texture;
@ -34,7 +34,7 @@ public class AnimatedSprite {
if(this.delta >= 0.1f) { if(this.delta >= 0.1f) {
this.delta = 0; this.delta = 0;
if(getFrame() >= rowLengths[getRow()] - 1){ if(getFrame() >= ROWLENGTHS[getRow()] - 1){
setFrame(0); setFrame(0);
} }
else{ else{

@ -10,6 +10,9 @@ public class Main extends Game{
/** /**
* TODO: set final Value for World * TODO: set final Value for World
*/ */
// 0: normal game world, 1: dialogue, 2: fight
public static int gamestate = 0;
@Override @Override
public void create () { public void create () {

@ -49,22 +49,31 @@ public class Player extends Actor{
@Override @Override
public void act(float delta) { public void act(float delta) {
if(Gdx.input.isKeyPressed(Input.Keys.D)){ if(Main.gamestate == 0) {
movementX = speed; if(Gdx.input.isKeyPressed(Input.Keys.D)){
facing = 3; movementX = speed;
} facing = 3;
if(Gdx.input.isKeyPressed(Input.Keys.A)){ }
movementX = -speed; if(Gdx.input.isKeyPressed(Input.Keys.A)){
facing = 1; movementX = -speed;
} facing = 1;
if(Gdx.input.isKeyPressed(Input.Keys.W)){ }
movementY = speed; if(Gdx.input.isKeyPressed(Input.Keys.W)){
facing = 0; movementY = speed;
} facing = 0;
if(Gdx.input.isKeyPressed(Input.Keys.S)){ }
movementY = -speed; if(Gdx.input.isKeyPressed(Input.Keys.S)){
facing = 2; movementY = -speed;
} facing = 2;
}
if(Gdx.input.isKeyJustPressed(Input.Keys.E)) {
Main.gamestate = 1;
getStage().addActor(new Textbox("Dies ist eine coole Test Textbox", "Feier ich", "Ehre"));
}
}
else if(Main.gamestate == 1) {
// Input handled by invoked textbox
}
/** /**
* return * return
* 0: only vertical movement available * 0: only vertical movement available

@ -103,8 +103,6 @@ public class Textbox extends Actor{
@Override @Override
public void draw(Batch batch, float parentAlpha) { public void draw(Batch batch, float parentAlpha) {
if(!batch.isDrawing()){
batch.begin();}
if(state == 0){ if(state == 0){
for(int i = 0; i < splitted.size(); i++){ for(int i = 0; i < splitted.size(); i++){
if(i == printLine){ if(i == printLine){
@ -130,7 +128,6 @@ public class Textbox extends Actor{
font.draw(batch, asw2, 0.6f * r.getWidth(), getX() + getHeight() - splitted.size() * 1.2f * getTextHeight("A")); font.draw(batch, asw2, 0.6f * r.getWidth(), getX() + getHeight() - splitted.size() * 1.2f * getTextHeight("A"));
font.setColor(Color.BLACK); font.setColor(Color.BLACK);
} }
batch.end();
super.draw(batch, parentAlpha); super.draw(batch, parentAlpha);
} }

@ -38,8 +38,6 @@ public abstract class AbstractScreen implements Screen{
Gdx.input.setInputProcessor(stage); Gdx.input.setInputProcessor(stage);
} }
public abstract void setTextbox(Textbox t);
@Override @Override
public abstract void show(); public abstract void show();

@ -19,6 +19,8 @@ import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
import com.trs.main.Main;
import com.trs.main.MapCollisionObject;
import com.trs.main.Player; import com.trs.main.Player;
import com.trs.main.Textbox; import com.trs.main.Textbox;
import java.util.ArrayList; import java.util.ArrayList;
@ -29,8 +31,6 @@ import java.util.ArrayList;
*/ */
public class GameScreen extends AbstractScreen{ public class GameScreen extends AbstractScreen{
boolean textbox = false;
TmxMapLoader maploader; TmxMapLoader maploader;
TiledMap map; TiledMap map;
OrthogonalTiledMapRenderer renderer; OrthogonalTiledMapRenderer renderer;
@ -50,16 +50,10 @@ public class GameScreen extends AbstractScreen{
for(MapObject object : map.getLayers().get(2).getObjects().getByType(RectangleMapObject.class)){ for(MapObject object : map.getLayers().get(2).getObjects().getByType(RectangleMapObject.class)){
Rectangle rect = ((RectangleMapObject) object).getRectangle(); Rectangle rect = ((RectangleMapObject) object).getRectangle();
stage.addActor(new com.trs.main.MapCollisionObject((int)rect.getX(), (int)rect.getY(), (int)rect.getWidth(), (int)rect.getHeight())); stage.addActor(new MapCollisionObject((int)rect.getX(), (int)rect.getY(), (int)rect.getWidth(), (int)rect.getHeight()));
} }
} }
@Override
public void setTextbox(Textbox t) {
stage.addActor(t);
textbox = true;
}
@Override @Override
public void show() { public void show() {
} }
@ -69,21 +63,18 @@ public class GameScreen extends AbstractScreen{
renderer.render(); renderer.render();
if(!textbox){ stage.act(f);
stage.act(f); stage.draw();
stage.draw();
} if(Main.gamestate == 1) {
else{
Textbox t = null; Textbox t = null;
for(Actor a : stage.getActors()){ for(Actor a : stage.getActors()){
if(a.getName().equals("textbox")){ if(a.getName().equals("textbox")){
a.act(f);
a.draw(stage.getBatch(), CAMERA_WIDTH);
t = (Textbox)a; t = (Textbox)a;
if(t.getState() == 2){ if(t.getState() == 2){
a.remove(); a.remove();
Main.gamestate = 0;
t.getSelectedAsw(); // DO STUFF NICENICE t.getSelectedAsw(); // DO STUFF NICENICE
textbox = false;
} }
} }
} }

Loading…
Cancel
Save