Skip to content
Snippets Groups Projects
Commit b7390eac authored by timeo's avatar timeo
Browse files

texture basique sans animation, manque de joyau

parent 376a88c4
Branches
No related tags found
No related merge requests found
......@@ -26,13 +26,15 @@ public class PlatVenture extends ApplicationAdapter {
private OrthographicCamera cam;
private OrthographicCamera hudCam;
private InputProcessorPerso ipp;
private GameStateManager gsm;
public static Content res;
@Override
public void create () {
Gdx.input.setInputProcessor(new InputProcessorPerso());
ipp = new InputProcessorPerso();
Gdx.input.setInputProcessor(ipp);
batch = new SpriteBatch();
res = new Content();
cam = new OrthographicCamera();
......@@ -52,6 +54,7 @@ public class PlatVenture extends ApplicationAdapter {
gsm.update(STEP);
gsm.render();
InputPerso.update();
ipp.update(STEP);
}
}
......
......@@ -5,6 +5,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
......@@ -21,6 +22,7 @@ import body.Panneau;
import body.Platform;
import body.Water;
import handlers.ContactListenerPerso;
import handlers.Content;
import handlers.GameStateManager;
import handlers.InputPerso;
......@@ -31,6 +33,7 @@ public class Play extends GameState {
private int largeur;
private int hauteur;
private int temps;
private char[][] map;
private ContactListenerPerso cl;
private int score = 0;
private float totalTimeSinceAction = 0;
......@@ -38,9 +41,12 @@ public class Play extends GameState {
private boolean isChangingLevel = false;
private float timeDoubleTap = 0f;
private Content res;
private Body player;
private OrthographicCamera b2dCam;
private OrthographicCamera textCam;
public Play(GameStateManager gsm){
super(gsm);
......@@ -49,18 +55,25 @@ public class Play extends GameState {
world.setContactListener(cl);
b2dr = new Box2DDebugRenderer();
res = new Content();
loadLevel(level);
createPlayer();
//Init b2dCam
b2dCam = new OrthographicCamera();
textCam = new OrthographicCamera();
b2dCam.setToOrtho(false, PlatVenture.largeur /PPM, PlatVenture.hauteur/PPM);
textCam.setToOrtho(false, Gdx.graphics.getWidth() / PPM, Gdx.graphics.getHeight() / PPM);
//textCam.position.set(Gdx.graphics.getWidth() / PPM / 2, 0, 0);
loadTexture();
}
public void handleInput() {
if (InputPerso.isPressed(0)) {
if (cl.isPlayerOnGround()) {
player.applyForceToCenter(0, 2f / PPM, true);
player.applyForceToCenter(0, 3f / PPM, true);
}
}
......@@ -76,17 +89,9 @@ public class Play extends GameState {
}
}
if (InputPerso.isDown()) {
if (InputPerso.x <= Gdx.graphics.getWidth() / 2) {
if (cl.isPlayerOnGround()) {
player.setLinearVelocity(-1 * 0.6f, player.getLinearVelocity().y);
}
} else {
if (cl.isPlayerOnGround()) {
player.setLinearVelocity(0.6f, player.getLinearVelocity().y);
}
}
}
/*TODO echap pour quitter */
/*TODO saut écouteur tactile*/
}
@Override
......@@ -124,7 +129,9 @@ public class Play extends GameState {
}
if (isInside()) {
cl.setTriggerEndLevel(false);
// Bouger la caméra en x
/* TODO bloquer la caméra à droite */
if (player.getPosition().x * PPM > (float) (PlatVenture.largeur / 2) && player.getPosition().y * PPM <= (float) (PlatVenture.hauteur / 2)
&& largeur > 16) {
b2dCam.position.set(player.getPosition().x, PlatVenture.hauteur / PPM / 2, 0);
......@@ -144,6 +151,7 @@ public class Play extends GameState {
}
b2dCam.update();
textCam.update();
/*TODO remettre à 1 quand j'aurai bien compris, on a pas besoin d'autant de précisions
*/
......@@ -154,6 +162,11 @@ public class Play extends GameState {
public void render() {
//Clear l'écran
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(b2dCam.combined);
batch.begin();
drawWorld();
batch.draw(res.getTexture("idle_001"), player.getPosition().x - 5f/PPM, player.getPosition().y - 2f/PPM, 1/10f, 1/10f);
batch.end();
//dessine le monde box2d
b2dr.render(world, b2dCam.combined);
}
......@@ -172,11 +185,12 @@ public class Play extends GameState {
hauteur = Integer.parseInt(premiereLigne[1]);
temps = Integer.parseInt(premiereLigne[2]);
map = new char[hauteur][largeur];
for (int i = hauteur; i > 0; i--){
for (int j = 0; j < largeur; j++){
System.out.print(ligne[i].charAt(j));
char current = ligne[i].charAt(j);
map[i-1][j] = current;
switch (current){
case 'K':
new Platform((j*10)/PPM, ((hauteur-i)*10)/PPM, "rectangle", world);
......@@ -265,11 +279,13 @@ public class Play extends GameState {
}
private void death(float dt){
/*TODO vérifier pourquoi pas de mort niveau 2*/
if (totalTimeSinceAction > 2){
player.setLinearVelocity(0, 0);
player.setTransform(15/PPM, 20/PPM, 0);
score = 0; // reset du score
totalTimeSinceAction = 0;
b2dCam.position.set(PlatVenture.largeur / PPM / 2, PlatVenture.hauteur / PPM / 2, 0);
} else{
totalTimeSinceAction += dt;
// player.setLinearVelocity(0, 0);
......@@ -290,6 +306,11 @@ public class Play extends GameState {
if (!world.isLocked())
world.destroyBody(bodies.get(i));
}
// Si on sort du niveau 3 on revient au niveau 1
if (level == 3){
level = 0;
}
level++; // Incrémente le level
loadLevel(level);
createPlayer();
......@@ -303,4 +324,59 @@ public class Play extends GameState {
totalTimeSinceAction += dt;
}
}
private void drawWorld(){
batch.draw(res.getTexture("back"), 0, 0, largeur/10f, hauteur/10f);
String key;
for (int i = hauteur; i > 0; i--){
for (int j = 0; j < largeur; j++) {
switch (map[i-1][j]){
case 'J':
batch.draw(res.getTexture("platJ"), (j*10)/PPM, ((hauteur-i) * 10)/PPM + 2/PPM, 1/10f, 1/12f);
break;
case 'K':
batch.draw(res.getTexture("platK"), (j*10)/PPM, ((hauteur-i) * 10)/PPM + 2/PPM, 1/10f, 1/12f);
break;
case 'L':
batch.draw(res.getTexture("platL"), (j*10)/PPM, ((hauteur-i) * 10)/PPM + 2/PPM, 1/10f, 1/12f);
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
key = "brick" + map[i-1][j];
batch.draw(res.getTexture(key), (j*10)/PPM, ((hauteur-i) * 10)/PPM, 1/10f, 1/10f);
break;
case 'Z':
batch.draw(res.getTexture("exit"), (j*10)/PPM, ((hauteur-i) * 10)/PPM, 1/10f, 1/10f);
}
}
// System.out.println();
}
}
private void loadTexture(){
res.loadTexture("assets/Platform_J.png", "platJ");
res.loadTexture("assets/Platform_K.png", "platK");
res.loadTexture("assets/Platform_L.png", "platL");
res.loadTexture("assets/Brick_A.png", "brickA");
res.loadTexture("assets/Brick_B.png", "brickB");
res.loadTexture("assets/Brick_C.png", "brickC");
res.loadTexture("assets/Brick_D.png", "brickD");
res.loadTexture("assets/Brick_E.png", "brickE");
res.loadTexture("assets/Brick_F.png", "brickF");
res.loadTexture("assets/Brick_G.png", "brickG");
res.loadTexture("assets/Brick_H.png", "brickH");
res.loadTexture("assets/Brick_I.png", "brickI");
res.loadTexture("assets/Exit_Z.png", "exit");
res.loadTexture("assets/Back.png", "back");
res.loadTexture("assets/Idle__000.png", "idle_001");
//res.getTexture("platJ");
}
}
package handlers;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputAdapter;
public class InputProcessorPerso extends InputAdapter {
private float timeTap;
private boolean tapOnRight;
public InputProcessorPerso(){
super();
timeTap = 0;
}
public boolean touchDragged(int x, int y, int pointer) {
InputPerso.x = x;
InputPerso.y = y;
......@@ -16,12 +26,32 @@ public class InputProcessorPerso extends InputAdapter {
InputPerso.x = x;
InputPerso.y = y;
InputPerso.down = true;
if (timeTap < 0.3f){
if (tapOnRight && InputPerso.x > Gdx.graphics.getWidth() / 2){
InputPerso.setKey(InputPerso.BUTTON1, true);
}
if (!tapOnRight && InputPerso.x <= Gdx.graphics.getWidth() / 2){
InputPerso.setKey(InputPerso.BUTTON1, true);
}
}
if (InputPerso.x <= Gdx.graphics.getWidth() / 2) {
InputPerso.setKey(InputPerso.BUTTON2, true);
tapOnRight = false;
}
if (InputPerso.x > Gdx.graphics.getWidth() / 2) {
tapOnRight = true;
InputPerso.setKey(InputPerso.BUTTON3, true);
}
return true;
}
public boolean touchUp(int x, int y, int pointer, int button) {
InputPerso.x = x;
InputPerso.y = y;
InputPerso.setKey(InputPerso.BUTTON3, false);
InputPerso.setKey(InputPerso.BUTTON2, false);
InputPerso.setKey(InputPerso.BUTTON1, false);
timeTap = 0;
InputPerso.down = false;
return true;
}
......@@ -53,4 +83,8 @@ public class InputProcessorPerso extends InputAdapter {
}
return true;
}
public void update(float dt){
timeTap += dt;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment