Added functions to link gamepad inputs (as recognized by the engine) and the inputs defined in the gameplay classes.

This commit is contained in:
no
2021-06-02 16:00:20 +02:00
5 changed files with 156 additions and 16 deletions

View File

@ -1,9 +1,18 @@
package gameplay.match;
import engine.Engine;
import engine.input.Button;
import engine.input.GamepadInput;
import engine.input.InputConst;
import engine.object.ObjectGl;
import gameplay.input.InputBuffer;
import gameplay.entities.*;
import gameplay.entities.Character;
import engine.Engine;
import java.util.ArrayList;
import java.util.List;
import static org.lwjgl.glfw.GLFW.*;
/**
* Main class that describes the base structure of the match, with characters, timer and such
@ -39,18 +48,92 @@ public class match {
this.roundsWonP2 = 0;
}
public static void main(String[] args) throws Exception {
/*
Engine engine = new Engine(800, 600, 3.0f / 4.0f);
engine.init();
/**
* Main function of a match. Contains the main gameplay loop.
* @param args arguments
*/
public static void main(String args[]) {
Character p1 = new Character(); //TODO : change to not a blank
Character p2 = new Character(); //TODO : same as above
match match = new match(p1,p2);
String path = "textures/zangief_sprite.png";
ObjectGl zangief = new ObjectGl(0f, 60f, 80f, 10f, path, null);
zangief.setTextureWrap(58, 0, 62, 84, ObjectGl.STICK_TOP);
engine.add_objectGl(zangief);
long timer = System.currentTimeMillis();
long lastFrame;
int frame = 0;
boolean nextFrame = false;
boolean Joystick1Present = glfwJoystickPresent(GLFW_JOYSTICK_1);
GamepadInput gamepad1 = null;
Button jump = null;
if (Joystick1Present) {
gamepad1 = new GamepadInput(GLFW_JOYSTICK_1);
gamepad1.inputRefresh();
List<Integer> listJump = new ArrayList<>();
listJump.add(InputConst.buttonA);
jump = new Button("jump", listJump, gamepad1);
}
while (engine.isRunning()) {
lastFrame = System.currentTimeMillis();
// Game logic should fit here
if (Joystick1Present) {
gamepad1.inputRefresh();
System.out.println(gamepad1.getAxisDiscreet(GLFW_GAMEPAD_AXIS_LEFT_X));
// Check si le personnage a sauté
if (jump.isButtonPressed()) {
// Le personnage saute
System.out.println(" JE SAUTE ");
}
}
engine.update();
engine.render();
frame++;
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
System.out.println("FPS: " + frame);
frame = 0;
}
while (!nextFrame) {
nextFrame = System.currentTimeMillis() - lastFrame >= 16.66f;
}
nextFrame = false;
if (engine.shouldClose()) engine.setRunning(false);
} */
long framestart = System.currentTimeMillis();
long frameend = System.currentTimeMillis();
int frame = 0;
boolean goToNextFrame = true;
boolean Joystick1Present = glfwJoystickPresent(GLFW_JOYSTICK_1);
GamepadInput gamepad1 = null;
match match = new match(new Character(),new Character());
if (Joystick1Present) {
gamepad1 = new GamepadInput(GLFW_JOYSTICK_1);
gamepad1.inputRefresh();
}
while(goToNextFrame) {
framestart = System.currentTimeMillis();
frame++;
gamepad1.inputRefresh();
match.inputsP1.recordInputsFromGamepad(gamepad1);
System.out.println("Frame " + frame + " " + match.inputsP1.getLatestInputs().toString());
frameend = System.currentTimeMillis();
while(frameend-framestart < (1000/60)) {
frameend = System.currentTimeMillis();
}
}
}
}