fix: turn system, kinda broken and ugly
This commit is contained in:
parent
eff5fc1f99
commit
715e5971ae
|
@ -55,7 +55,7 @@ public class Arrow extends BaseActor {
|
||||||
this.TTL -= dt;
|
this.TTL -= dt;
|
||||||
this.setRotation(this.velocity.angleDeg());
|
this.setRotation(this.velocity.angleDeg());
|
||||||
verifyLanding();
|
verifyLanding();
|
||||||
verifyHittingPlayer();
|
verifyHitting();
|
||||||
|
|
||||||
if (TTL <= 0) {
|
if (TTL <= 0) {
|
||||||
GameScreen.arrows.removeActor(this);
|
GameScreen.arrows.removeActor(this);
|
||||||
|
@ -86,13 +86,13 @@ public class Arrow extends BaseActor {
|
||||||
|
|
||||||
float dx = actor.getX() - this.getX();
|
float dx = actor.getX() - this.getX();
|
||||||
float dy = actor.getY() - this.getY();
|
float dy = actor.getY() - this.getY();
|
||||||
|
|
||||||
float len2 = dx*dx + dy*dy;
|
float len2 = dx*dx + dy*dy;
|
||||||
|
|
||||||
float coeff = SagittariusGame.G * ((Planet) actor).getMass() * (float) Math.pow(len2, -3/2);
|
float coeff = SagittariusGame.G * ((Planet) actor).getMass() * (float) Math.pow(len2, -3/2);
|
||||||
|
|
||||||
float gravityX = coeff * dx;
|
float gravityX = coeff * dx;
|
||||||
float gravityY = coeff * dy;
|
float gravityY = coeff * dy;
|
||||||
|
|
||||||
force.add(gravityX, gravityY);
|
force.add(gravityX, gravityY);
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ public class Arrow extends BaseActor {
|
||||||
*/
|
*/
|
||||||
private void verifyLanding() {
|
private void verifyLanding() {
|
||||||
for (Actor actor : GameScreen.attractors.getChildren()) {
|
for (Actor actor : GameScreen.attractors.getChildren()) {
|
||||||
|
|
||||||
Planet planet = (Planet) actor;
|
Planet planet = (Planet) actor;
|
||||||
float dist = this.getPosition().sub( planet.getPosition() ).len();
|
float dist = this.getPosition().sub( planet.getPosition() ).len();
|
||||||
|
|
||||||
|
@ -133,22 +133,23 @@ public class Arrow extends BaseActor {
|
||||||
landed = true;
|
landed = true;
|
||||||
this.crash = planet;
|
this.crash = planet;
|
||||||
this.offset = this.getPosition().sub( planet.getPosition() );
|
this.offset = this.getPosition().sub( planet.getPosition() );
|
||||||
Bow.changeShooter(GameScreen.nextTurn());
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void verifyHittingPlayer() {
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
|
private void verifyHitting() {
|
||||||
for (Actor actor : GameScreen.players.getChildren()) {
|
for (Actor actor : GameScreen.players.getChildren()) {
|
||||||
|
|
||||||
Player player = (Player) actor;
|
Player player = (Player) actor;
|
||||||
|
|
||||||
if (TTL < 19 && player.hitbox.contains(getX(), getY())) {
|
if (TTL < 19 && player.hitbox.contains(getX(), getY())) {
|
||||||
landed = true;
|
landed = true;
|
||||||
GameScreen.players.removeActor(player);
|
GameScreen.removePlayer(player);
|
||||||
GameScreen.arrows.removeActor(this);
|
GameScreen.arrows.removeActor(this);
|
||||||
Bow.changeShooter(GameScreen.nextTurn());
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ public class Bow extends Actor {
|
||||||
|
|
||||||
// ---------- ATTRIBUTEs ----------
|
// ---------- ATTRIBUTEs ----------
|
||||||
|
|
||||||
private static Player shooter;
|
private Player shooter;
|
||||||
private boolean aimAssist = false;
|
private boolean aimAssist = false;
|
||||||
private boolean pressed = false;
|
private boolean pressed = false;
|
||||||
private float angle;
|
private float angle;
|
||||||
|
@ -34,6 +34,9 @@ public class Bow extends Actor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void act(float dt) {
|
public void act(float dt) {
|
||||||
|
|
||||||
|
this.shooter = GameScreen.actualPlayer;
|
||||||
|
|
||||||
// TODO: probably can do better with an eventListener
|
// TODO: probably can do better with an eventListener
|
||||||
if (Gdx.input.isButtonJustPressed(Buttons.LEFT) && !pressed) {
|
if (Gdx.input.isButtonJustPressed(Buttons.LEFT) && !pressed) {
|
||||||
this.anchor = GameScreen.worldCursor.cpy();
|
this.anchor = GameScreen.worldCursor.cpy();
|
||||||
|
@ -43,6 +46,7 @@ public class Bow extends Actor {
|
||||||
} else if (pressed) {
|
} else if (pressed) {
|
||||||
pressed = false;
|
pressed = false;
|
||||||
GameScreen.arrows.addActor(getArrow());
|
GameScreen.arrows.addActor(getArrow());
|
||||||
|
GameScreen.nextPlayer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,8 +83,4 @@ public class Bow extends Actor {
|
||||||
return new Arrow(angle, power, shooter);
|
return new Arrow(angle, power, shooter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void changeShooter(Player newShooter) {
|
|
||||||
shooter = newShooter;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package sagittarius.model;
|
package sagittarius.model;
|
||||||
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
|
||||||
|
|
||||||
import sagittarius.view.GameScreen;
|
import sagittarius.view.GameScreen;
|
||||||
|
|
||||||
public class MouseInfo extends BaseActor {
|
public class MouseInfo extends BaseActor {
|
||||||
|
|
|
@ -24,6 +24,7 @@ public class GameScreen extends BaseScreen {
|
||||||
public static Group players;
|
public static Group players;
|
||||||
|
|
||||||
public static int playerTurn;
|
public static int playerTurn;
|
||||||
|
public static Player actualPlayer;
|
||||||
|
|
||||||
// ---------- METHODs ----------
|
// ---------- METHODs ----------
|
||||||
|
|
||||||
|
@ -76,7 +77,6 @@ public class GameScreen extends BaseScreen {
|
||||||
// game turns
|
// game turns
|
||||||
playerTurn = 0;
|
playerTurn = 0;
|
||||||
player1.setActive(true);
|
player1.setActive(true);
|
||||||
Bow.changeShooter(player1);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,40 +87,42 @@ public class GameScreen extends BaseScreen {
|
||||||
unprojectedCursor = mainStage.getCamera().unproject(new Vector3(screenCursor, 0));
|
unprojectedCursor = mainStage.getCamera().unproject(new Vector3(screenCursor, 0));
|
||||||
worldCursor = new Vector2(unprojectedCursor.x, unprojectedCursor.y);
|
worldCursor = new Vector2(unprojectedCursor.x, unprojectedCursor.y);
|
||||||
|
|
||||||
// Player actualPlayer = (Player) players.getChild(playerTurn);
|
actualPlayer = (Player) players.getChild(playerTurn);
|
||||||
// if (actualPlayer.isActive()) {
|
// if (actualPlayer.isActive()) {
|
||||||
// actualPlayer.setActive(true);
|
// actualPlayer.setActive(false);
|
||||||
// playerTurn++;
|
// playerTurn++;
|
||||||
// playerTurn %= players.getChildren().size;
|
// playerTurn %= players.getChildren().size;
|
||||||
// actualPlayer = (Player) players.getChild(playerTurn);
|
// actualPlayer = (Player) players.getChild(playerTurn);
|
||||||
// actualPlayer.setActive(false);
|
// actualPlayer.setActive(true);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Player nextTurn() {
|
/**
|
||||||
((Player) players.getChild(playerTurn++)).setActive(false);
|
* TODO
|
||||||
if ( playerTurn % players.getChildren().size == 0 ) {
|
* @param player
|
||||||
playerTurn = 0;
|
*/
|
||||||
|
public static 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;
|
||||||
|
actualPlayer = (Player) players.getChild(playerTurn);
|
||||||
|
actualPlayer.setActive(true);
|
||||||
|
} else {
|
||||||
|
players.removeActor(player);
|
||||||
}
|
}
|
||||||
Player newPlayer = (Player) players.getChild(playerTurn);
|
|
||||||
newPlayer.setActive(true);
|
|
||||||
return newPlayer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void removePlayer(Player player) {
|
public static void nextPlayer() {
|
||||||
// int index = players.getChildren().indexOf(player, true);
|
actualPlayer.setActive(false);
|
||||||
// if (index < playerTurn) {
|
playerTurn++;
|
||||||
// players.removeActor(player);
|
playerTurn %= players.getChildren().size;
|
||||||
// playerTurn++;
|
actualPlayer = (Player) players.getChild(playerTurn);
|
||||||
// playerTurn %= players.getChildren().size;
|
actualPlayer.setActive(true);
|
||||||
// } else if (index == playerTurn) {
|
}
|
||||||
// players.removeActor(player);
|
|
||||||
// playerTurn %= players.getChildren().size;
|
|
||||||
// Player actualPlayer = (Player) players.getChild(playerTurn);
|
|
||||||
// actualPlayer.setActive(true);
|
|
||||||
// } else {
|
|
||||||
// players.removeActor(player);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue