chore: added some javadoc
chore: trimmed some whitespaces
This commit is contained in:
parent
52b0b8f957
commit
b7f6b5bd69
12
README.md
Normal file
12
README.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
# TODO-list
|
||||
|
||||
0. do a better README
|
||||
1. player turn
|
||||
2. kill player
|
||||
3. move freely camera
|
||||
4. lerp camera arrow
|
||||
5. event based shit
|
||||
6. menus test
|
||||
7. améliorer trajectoires arrows en simulant tout n'univers
|
||||
8. rotating planets and moons (on themselves)
|
||||
9. faire des sous-packages, sgittarius.modele, sagittarius.view, saggitarius.control ...
|
|
@ -14,8 +14,8 @@ class Arrow extends Entity {
|
|||
private Vector2 velocity = new Vector2();
|
||||
private Vector2 acceleration = new Vector2();
|
||||
private Vector2 force = new Vector2();
|
||||
|
||||
float TTL = 20;
|
||||
|
||||
protected float TTL = 20;
|
||||
private final float length = 100;
|
||||
|
||||
private boolean active = true;
|
||||
|
@ -24,6 +24,13 @@ class Arrow extends Entity {
|
|||
|
||||
// ---------- CONSTRUCTORs ----------
|
||||
|
||||
/**
|
||||
* Constructs an Arrow using its initial conditions.
|
||||
*
|
||||
* @param angle initial angle of the Arrow (in degrees).
|
||||
* @param power power given to the Arrow a Bow.
|
||||
* @param shooter Bow's shooter.
|
||||
*/
|
||||
Arrow(float angle, float power, Player shooter) {
|
||||
super(shooter.position, 1);
|
||||
this.velocity = new Vector2(power, 0).setAngleDeg(angle);
|
||||
|
@ -32,7 +39,11 @@ class Arrow extends Entity {
|
|||
}
|
||||
|
||||
// ---------- METHODs ----------
|
||||
|
||||
|
||||
/**
|
||||
* Computes the {@link Arrow#force} exerted on the Arrow,
|
||||
* according to the other weighted entities.
|
||||
*/
|
||||
private Vector2 computeForce() {
|
||||
Vector2 force = new Vector2();
|
||||
for (Planet attractor : SagittariusGame.planetList) {
|
||||
|
@ -48,6 +59,9 @@ class Arrow extends Entity {
|
|||
return force;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify whether or not the Arrow contacts an Entity.
|
||||
*/
|
||||
private void verifyActivity() {
|
||||
for (Planet planet : SagittariusGame.planetList) {
|
||||
if (this.distanceTo(planet) < planet.getRadius()) {
|
||||
|
@ -65,6 +79,12 @@ class Arrow extends Entity {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the physical attributes of the Arrow,
|
||||
* must be called in the main update loop.
|
||||
*
|
||||
* @param deltaTime time elapsed between 2 frames.
|
||||
*/
|
||||
void update(float deltaTime) {
|
||||
|
||||
if (this.active) {
|
||||
|
@ -77,9 +97,15 @@ class Arrow extends Entity {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the next position of the Arrow
|
||||
* according to its physical attributes
|
||||
* using the Verlet integration scheme.
|
||||
*
|
||||
* @param deltaTime time difference used in the integration.
|
||||
* @see <a href="https://gamedev.stackexchange.com/a/41917">https://gamedev.stackexchange.com/a/41917</a>.
|
||||
*/
|
||||
private void integrationVerlet(float deltaTime) {
|
||||
// Verlet integration
|
||||
// https://gamedev.stackexchange.com/questions/15708/how-can-i-implement-gravity/41917#41917
|
||||
|
||||
this.acceleration = this.force.cpy();
|
||||
|
||||
|
@ -92,6 +118,8 @@ class Arrow extends Entity {
|
|||
this.velocity.y += deltaTime * ( this.acceleration.y + this.force.y ) / 2;
|
||||
}
|
||||
|
||||
// ---------- GRAPHICAL METHODs ----------
|
||||
|
||||
void render(ShapeRenderer shapeRenderer) {
|
||||
Vector2 tail = new Vector2(-this.length, 0).rotateDeg(this.angle).add(this.position);
|
||||
shapeRenderer.line(this.position, tail);
|
||||
|
@ -99,7 +127,7 @@ class Arrow extends Entity {
|
|||
|
||||
void renderDebug(Batch batch, BitmapFont font) {
|
||||
|
||||
// TODO : dirty, do it in an other way
|
||||
// TODO : dirty, do it in an other way ?
|
||||
if (active) {
|
||||
font.draw(batch, "TTL = " + this.TTL, this.position.x, this.position.y + font.getCapHeight()*5);
|
||||
font.draw(batch, "pos = " + this.position, this.position.x, this.position.y + font.getCapHeight()*4);
|
||||
|
@ -112,6 +140,13 @@ class Arrow extends Entity {
|
|||
|
||||
// ---------- STATIC METHODs ----------
|
||||
|
||||
/** // TODO : pass directly an Arrow instead of 3 arguments
|
||||
* Computes the trajectory of an Arrow,
|
||||
* given its initial conditions.
|
||||
*
|
||||
* @param iterations number of iterations for the integration.
|
||||
* @param timeStep time period used for the integration.
|
||||
*/
|
||||
static float[] traj(float angle, float power, Player shooter, int iterations, float timeStep) {
|
||||
ArrayList<Float> path = new ArrayList<Float>();
|
||||
Arrow dummyArrow = new Arrow(angle, power, shooter);
|
||||
|
@ -124,6 +159,7 @@ class Arrow extends Entity {
|
|||
}
|
||||
|
||||
// TODO : optimize, lots of useless stuff + change name
|
||||
// or ignore and use adapters
|
||||
|
||||
final float[] arr = new float[path.size()];
|
||||
int index = 0;
|
||||
|
|
|
@ -17,7 +17,7 @@ class Bow {
|
|||
|
||||
private Vector2 anchor;
|
||||
private Vector2 aim;
|
||||
|
||||
|
||||
private float power;
|
||||
|
||||
// ---------- CONSTRUCTORs ----------
|
||||
|
|
|
@ -4,11 +4,11 @@ import com.badlogic.gdx.graphics.Color;
|
|||
import com.badlogic.gdx.math.Vector2;
|
||||
|
||||
abstract class Entity {
|
||||
|
||||
|
||||
// ---------- ATTRIBUTs ----------
|
||||
|
||||
protected Vector2 position;
|
||||
|
||||
|
||||
protected float mass = 1.0f;
|
||||
protected float angle;
|
||||
protected Color color = Color.WHITE;
|
||||
|
|
|
@ -26,7 +26,7 @@ class GameScreen extends ScreenAdapter {
|
|||
private BitmapFont font;
|
||||
|
||||
// camera stuff
|
||||
private Viewport viewport;
|
||||
private Viewport viewport; // TODO : useless ?
|
||||
protected static Camera camera;
|
||||
|
||||
// TODO: categorize better ?
|
||||
|
@ -66,7 +66,7 @@ class GameScreen extends ScreenAdapter {
|
|||
for (Moon moon : SagittariusGame.moonList) {
|
||||
moon.renderDebug(batch, font);
|
||||
}
|
||||
|
||||
|
||||
// players
|
||||
for (Player player : SagittariusGame.playerList) {
|
||||
player.renderDebug(batch, font);
|
||||
|
@ -132,6 +132,7 @@ class GameScreen extends ScreenAdapter {
|
|||
camera.update();
|
||||
batch.setProjectionMatrix(camera.combined);
|
||||
shapeRenderer.setProjectionMatrix(camera.combined);
|
||||
hud.resize();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package sagittarius;
|
||||
|
||||
import com.badlogic.gdx.Game;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
|
@ -23,14 +24,14 @@ class HUD implements Disposable {
|
|||
|
||||
void render() {
|
||||
batch.begin();
|
||||
|
||||
|
||||
// framerate
|
||||
font.draw(batch, frameRate + " fps", 3, Gdx.graphics.getHeight() - 3);
|
||||
|
||||
|
||||
// cursor positions, oui c'est dégueu
|
||||
font.draw(batch, "x_r = " + (int) SagittariusGame.screenCursor.x + ", y_r = " + (int) SagittariusGame.screenCursor.y, SagittariusGame.screenCursor.x + 5, Gdx.graphics.getHeight() - SagittariusGame.screenCursor.y + 5);
|
||||
font.draw(batch, "x_g = " + (int) SagittariusGame.worldCursor.x + ", y_g = " + (int) SagittariusGame.worldCursor.y, SagittariusGame.screenCursor.x + 5, Gdx.graphics.getHeight() - SagittariusGame.screenCursor.y + 20);
|
||||
|
||||
|
||||
batch.end();
|
||||
}
|
||||
|
||||
|
@ -40,4 +41,8 @@ class HUD implements Disposable {
|
|||
font.dispose();
|
||||
}
|
||||
|
||||
public void resize() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import com.badlogic.gdx.math.Vector2;
|
|||
class Planet extends Entity {
|
||||
|
||||
// ---------- ATTRIBUTEs ----------
|
||||
|
||||
|
||||
private float radius = 10;
|
||||
|
||||
// ---------- CONSTRUCTORs ----------
|
||||
|
@ -21,7 +21,7 @@ class Planet extends Entity {
|
|||
|
||||
Planet(Vector2 position, float mass, float radius, Color color) {
|
||||
this(position, mass, radius);
|
||||
this.color = color;
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
// ---------- METHODs ----------
|
||||
|
@ -32,6 +32,7 @@ class Planet extends Entity {
|
|||
}
|
||||
|
||||
void renderDebug(Batch batch, BitmapFont font) {
|
||||
font.draw(batch, "mass = " + mass, position.x, position.y + 15);
|
||||
font.draw(batch, "x = " + (int) position.x + ", y = " + (int) position.y, position.x, position.y);
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ class Player extends Entity {
|
|||
this.bow = new Bow(this, false);
|
||||
this.angle = 45; // TODO : tmp
|
||||
}
|
||||
|
||||
|
||||
// ---------- METHODs ----------
|
||||
|
||||
void render(ShapeRenderer shapeRenderer) {
|
||||
|
|
|
@ -25,26 +25,32 @@ public class SagittariusGame extends Game {
|
|||
static ArrayList<Moon> moonList;
|
||||
static ArrayList<Player> playerList;
|
||||
static ArrayList<Arrow> arrowList;
|
||||
|
||||
// TODO : fix this shit, too many for loops
|
||||
|
||||
// ---------- METHODs ----------
|
||||
|
||||
@Override
|
||||
public void create() {
|
||||
setScreen(new GameScreen());
|
||||
|
||||
|
||||
planetList = new ArrayList<Planet>();
|
||||
planetList.add( new Planet(new Vector2(400, 400), 1000, 50) );
|
||||
planetList.add( new Planet(new Vector2(1000, 400), 1000, 100, Color.CYAN) );
|
||||
planetList.add( new Planet(new Vector2(1400, 700), 1000, 100, Color.CYAN) );
|
||||
|
||||
moonList = new ArrayList<Moon>();
|
||||
moonList.add( new Moon(planetList.get(1), 100, 20, 300) );
|
||||
|
||||
playerList = new ArrayList<Player>();
|
||||
playerList.add( new Player(planetList.get(0)) );
|
||||
|
||||
|
||||
arrowList = new ArrayList<Arrow>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Main update loop.
|
||||
*
|
||||
* @param deltaTime time elapsed between 2 frames.
|
||||
*/
|
||||
static void update(float deltaTime) {
|
||||
|
||||
// cursors
|
||||
|
@ -70,7 +76,7 @@ public class SagittariusGame extends Game {
|
|||
it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue