package gui.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.maps.tiled.renderers.IsometricTiledMapRenderer;
import com.badlogic.gdx.scenes.scene2d.Stage;
import game.GamePlay;
import game.Hakd;
import game.Internet;
import game.gameplay.Character;
import game.gameplay.Player;
import gui.Room;
import gui.input.GameInput;
import gui.windows.device.DeviceScene;
public class GameScreen extends HakdScreen {
private String playerName;
private Character player;
private Room room;
private DeviceScene deviceScene = null;
private MapScreen map;
private IsometricTiledMapRenderer renderer; // it says this is experimental, but it was an old article
private GameInput input;
private boolean firstTimeShown = true;
private final Stage dialogStage = new Stage(); // TODO this will be the overlay
public GameScreen(Hakd game, String playerName) {
super(game);
this.playerName = playerName;
}
@Override
public void show() {
super.show();
// this should all be in the constructor, but there is a bug where the top right 1/4th of the screen is white and all textures are white, this somehow works
if (firstTimeShown) {
firstTimeShown = false;
for (short i = 1; i < 256; i++) {
Internet.ipNumbers.add(i);
}
GamePlay gamePlay = new GamePlay(this, playerName);
(game).setGamePlay(gamePlay);
cam = new OrthographicCamera();
((OrthographicCamera) cam).setToOrtho(false, room.getFloorLayer().getWidth(), room.getFloorLayer().getHeight());
cam.update();
renderer.setView((OrthographicCamera) cam);
cam.position.x = room.getFloorLayer().getWidth() / 2;
cam.position.y = 0;
map = new MapScreen(game, gamePlay.getInternet());
input = new GameInput(game, (OrthographicCamera) cam);
Gdx.input.setInputProcessor(input);
}
Gdx.gl.glClearColor(0, 0, 0, 0);
}
@Override
public void render(float delta) {
super.render(delta);
SpriteBatch rBatch = (SpriteBatch) renderer.getBatch();
renderer.setView((OrthographicCamera) cam);
renderer.render();
rBatch.begin();
for (Room.DeviceTile t : room.getDeviceTileMap().values()) {
t.getTile().draw(rBatch);
}
rBatch.end();
if (deviceScene != null) {
deviceScene.render();
}
dialogStage.act(Gdx.graphics.getDeltaTime());
dialogStage.draw();
}
@Override
public void dispose() {
super.dispose();
room.dispose();
game.getGamePlay().dispose();
game.setGamePlay(null);
}
@Override
public void hide() {
Gdx.input.setInputProcessor(null);
}
public Character getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
public Room getRoom() {
return room;
}
public void setRoom(Room room) {
this.room = room;
}
public IsometricTiledMapRenderer getRenderer() {
return renderer;
}
public DeviceScene getDeviceScene() {
return deviceScene;
}
public void setDeviceScene(DeviceScene deviceScene) {
this.deviceScene = deviceScene;
}
public MapScreen getMap() {
return map;
}
public GameInput getInput() {
return input;
}
public void setInput(GameInput input) {
this.input = input;
}
public void setRenderer(IsometricTiledMapRenderer renderer) {
this.renderer = renderer;
}
}