projet-programmation-orient.../core/src/sagittarius/view/GameScreen.java

114 lines
3.2 KiB
Java
Raw Normal View History

package sagittarius.view;
2021-04-05 16:45:57 +00:00
import com.badlogic.gdx.Gdx;
2021-04-05 16:45:57 +00:00
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.scenes.scene2d.Group;
2021-04-05 16:45:57 +00:00
import sagittarius.model.*;
2021-04-05 16:45:57 +00:00
public class GameScreen extends BaseScreen {
2021-04-05 16:45:57 +00:00
// ---------- ATTRIBUTEs ----------
2021-04-05 16:45:57 +00:00
// Cursors
public static Vector2 screenCursor;
private static Vector3 unprojectedCursor;
public static Vector2 worldCursor;
// Groups // TODO: move this in SagittariusGame ?
public static Group attractors;
public static Group arrows;
2021-04-13 17:45:49 +00:00
public static Group players;
private int playerTurn;
2021-04-09 14:28:37 +00:00
// ---------- METHODs ----------
2021-04-05 16:45:57 +00:00
@Override
public void initialize() {
// planets & moons
attractors = new Group();
2021-04-13 19:24:36 +00:00
Planet planet1 = new Planet(new Vector2(400, 400), 1000, 50, Color.BLUE);
attractors.addActor(planet1);
2021-04-13 19:24:36 +00:00
Planet planet2 = new Planet(new Vector2(1400, 700), 1000, 100, Color.ORANGE);
attractors.addActor(planet2);
Moon moon2_1 = new Moon(planet2, 100, 10, 300, Color.MAGENTA);
attractors.addActor(moon2_1);
mainStage.addActor(attractors);
// players
2021-04-13 17:45:49 +00:00
players = new Group();
Player player1 = new Player(planet1, Color.WHITE);
2021-04-13 17:45:49 +00:00
players.addActor(player1);
Player player2 = new Player(planet2, Color.WHITE);
2021-04-13 17:45:49 +00:00
players.addActor(player2);
mainStage.addActor(players);
// arrows
arrows = new Group();
mainStage.addActor(arrows);
2021-04-13 19:55:14 +00:00
// The one and only Bow
Bow bow = new Bow(player1, true);
mainStage.addActor(bow);
// others
2021-04-13 19:08:25 +00:00
FPS fpsCounter = new FPS(uiStage);
uiStage.addActor(fpsCounter);
MouseInfo mouseInfo = new MouseInfo();
uiStage.addActor(mouseInfo);
2021-04-09 13:10:39 +00:00
2021-04-10 10:22:48 +00:00
mainStage.setDebugAll(true); // TODO: disable later
2021-04-13 19:08:25 +00:00
uiStage.setDebugAll(true); // TODO: disable later
2021-04-10 10:22:48 +00:00
2021-04-13 19:55:14 +00:00
// game turns
playerTurn = 0;
player1.setPlaying(true);
2021-04-05 16:45:57 +00:00
}
@Override
public void update(float dt) {
screenCursor = new Vector2(Gdx.input.getX(), Gdx.input.getY());
unprojectedCursor = mainStage.getCamera().unproject(new Vector3(screenCursor, 0));
worldCursor = new Vector2(unprojectedCursor.x, unprojectedCursor.y);
2021-04-13 17:45:49 +00:00
Player actualPlayer = (Player) players.getChild(playerTurn);
2021-04-13 19:55:14 +00:00
if (actualPlayer.isPlaying()) {
2021-04-13 19:24:36 +00:00
actualPlayer.setPlaying(true);
2021-04-13 17:45:49 +00:00
playerTurn++;
playerTurn %= players.getChildren().size;
actualPlayer = (Player) players.getChild(playerTurn);
2021-04-13 19:24:36 +00:00
actualPlayer.setPlaying(false);
2021-04-13 17:45:49 +00:00
}
2021-04-05 16:45:57 +00:00
}
2021-04-13 17:45:49 +00:00
public void removePlayer(Player player) {
int index = players.getChildren().indexOf(player, true);
if (index < playerTurn) {
players.removeActor(player);
playerTurn++;
playerTurn %= players.getChildren().size;
} else if (index == playerTurn) {
players.removeActor(player);
playerTurn %= players.getChildren().size;
Player actualPlayer = (Player) players.getChild(playerTurn);
2021-04-13 19:24:36 +00:00
actualPlayer.setPlaying(true);
2021-04-13 17:45:49 +00:00
} else {
players.removeActor(player);
}
}
}