package gameEngine.scenes;
import gameEngine.entites.GameObject;
import gameEngine.entites.gameComponents.ColorController;
import gameEngine.entites.gameComponents.Mesh;
import gameEngine.input.Input;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.glClearColor;
public class GameScene extends Scene {
private boolean isCreateObject = false;
private boolean isAddComponent = false;
public GameScene() {
System.out.println("Active Game scene");
glClearColor(1, 1, 1, 0);
gameObjects.put(0, new GameObject());
gameObjects.get(0).addComponent(new ColorController());
gameObjects.get(0).setName("ColorController");
gameObjects.put(1, new GameObject());
gameObjects.get(1).addComponent(new Mesh(gameObjects.get(1), Mesh.MeshType.SPRITE, "test.png"));
gameObjects.get(1).setName("Player");
}
@Override
public void update(float dt) {
if(isCreateObject)
{
createGameObject();
isCreateObject = false;
}
if (Input.GetKey(GLFW_KEY_W)) {
float y = gameObjects.get(1).transform.position.y;
gameObjects.get(1).transform.setPosition(gameObjects.get(1).transform.position.x, y - 1, 0);
}
if (Input.GetKey(GLFW_KEY_A)) {
float x = gameObjects.get(1).transform.position.x;
gameObjects.get(1).transform.setPosition(x - 1, gameObjects.get(1).transform.position.y, 0);
}
if (Input.GetKey(GLFW_KEY_S)) {
float y = gameObjects.get(1).transform.position.y;
gameObjects.get(1).transform.setPosition(gameObjects.get(1).transform.position.x, y + 1, 0);
}
if (Input.GetKey(GLFW_KEY_D)) {
float x = gameObjects.get(1).transform.position.x;
gameObjects.get(1).transform.setPosition(x + 1, gameObjects.get(1).transform.position.y, 0);
}
if (Input.GetKey(GLFW_KEY_LEFT)) {
float rotation = gameObjects.get(1).transform.rotation.z;
gameObjects.get(1).transform.setRotation(0, 0, rotation - 1); // 左回転
}
if (Input.GetKey(GLFW_KEY_RIGHT)) {
float rotation = gameObjects.get(1).transform.rotation.z;
gameObjects.get(1).transform.setRotation(0, 0, rotation + 1); // 右回転
}
}
public void CreateNewObject(){
if(isCreateObject) return;
isCreateObject = true;
}
public void AddComponent(){
if(isAddComponent) return;
isAddComponent = true;
}
private void createGameObject(){
int newId = gameObjects.size();
gameObjects.put(newId, new GameObject());
gameObjects.get(newId).addComponent(new Mesh(gameObjects.get(newId), Mesh.MeshType.SPRITE, "test.png"));
gameObjects.get(newId).setName("Player" + newId);
}
private void addComponent(){
gameObjects.get(0).addComponent(new ColorController());
}
}