diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 113 |
1 files changed, 73 insertions, 40 deletions
diff --git a/src/main.cpp b/src/main.cpp index f9d8095..d3481ad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,19 +2,28 @@ #include "raylib.h" #include "raymath.h" -#include "rfps_defines.h" -#include "rfps_utils.h" +#include "yabs_defines.h" +#include "yabs_utils.h" +#include "yabs_gameplay.h" -static Vector2 lastMousePos; -static Vector3 movement = {0, -0.2f, 0}; -static Vector3 rotation; +static yabs::gameState game_state; +static yabs::Scene3D sc3d { +// camera +{{5.0f, 5.0f, 5.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, 45.0f, 0}, +// movement +{0.0f, 0.0f}, +// rotation +{0.0f, -0.2f, 0.0f}, +// mouse +{0.0f, 0.0f} +}; int main(void) { // create window InitWindow(G_SCREENWIDTH, G_SCREENHEIGHT, G_TITLE); // create image - Image checked = GenImageChecked(2, 2, 1, 1, BLACK, RAYWHITE); + Image checked = GenImageChecked(2, 2, 1, 1, BLACK, GRAY); Texture2D texture = LoadTextureFromImage(checked); UnloadImage(checked); @@ -24,66 +33,90 @@ int main(void) { model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // setup camera - Camera camera = { - {5.0f, 5.0f, 5.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, 45.0f, 0}; - SetCameraMode(camera, CAMERA_FIRST_PERSON); // Set camera mode - camera.position = (Vector3){50.0f, 1.0f, 50.0f}; - camera.target = (Vector3){50.0f, 1.0f, 50.0f}; - camera.up = (Vector3){0.0f, 1.0f, 0.0f}; - camera.fovy = 60.0f; - camera.projection = CAMERA_PERSPECTIVE; + SetCameraMode(sc3d.camera, CAMERA_FIRST_PERSON); // Set camera mode + sc3d.camera.position = (Vector3){50.0f, 1.0f, 50.0f}; + sc3d.camera.target = (Vector3){50.0f, 1.0f, 50.0f}; + sc3d.camera.up = (Vector3){0.0f, 1.0f, 0.0f}; + sc3d.camera.fovy = 90.0f; + sc3d.camera.projection = CAMERA_PERSPECTIVE; - rotation = (Vector3){0.0f, 0.0f, 0.0f}; - lastMousePos = GetMousePosition(); + sc3d.rotation = (Vector3){0.0f, 0.0f, 0.0f}; + sc3d.lastMousePos = GetMousePosition(); SetTargetFPS(60); // game loop while (!WindowShouldClose()) { + switch (game_state) { + case (yabs::TITLE): + { + break; + } + case (yabs::PICK): + { + break; + } + case (yabs::DEATH): + { + break; + } + case (yabs::GAMEPLAY): + { + break; + } + case (yabs::NEXT): + { + break; + } + case (yabs::ENDING): + { + break; + } + } // mouse look Vector2 mouseMovement = - Vector2Subtract(GetMousePosition(), lastMousePos); - lastMousePos = GetMousePosition(); - rotation.x += (mouseMovement.x * -G_CAMERA_MOUSE_MOVE_SENSITIVITY); - rotation.y += (mouseMovement.y * -G_CAMERA_MOUSE_MOVE_SENSITIVITY); + Vector2Subtract(GetMousePosition(), sc3d.lastMousePos); + sc3d.lastMousePos = GetMousePosition(); + sc3d.rotation.x += (mouseMovement.x * -G_CAMERA_MOUSE_MOVE_SENSITIVITY); + sc3d.rotation.y += (mouseMovement.y * -G_CAMERA_MOUSE_MOVE_SENSITIVITY); // direction array bool direction[4] = {IsKeyDown(KEY_W), IsKeyDown(KEY_S), IsKeyDown(KEY_D), IsKeyDown(KEY_A)}; // compute movement - movement = (Vector3){0, 0, 0}; - movement.x = - (sinf(rotation.x) * direction[1] - sinf(rotation.x) * direction[0] - - cosf(rotation.x) * direction[3] + - cosf(rotation.x) * direction[2]) / + sc3d.movement = (Vector3){0, 0, 0}; + sc3d.movement.x = + (sinf(sc3d.rotation.x) * direction[1] - sinf(sc3d.rotation.x) * direction[0] - + cosf(sc3d.rotation.x) * direction[3] + + cosf(sc3d.rotation.x) * direction[2]) / G_PLAYER_MOVEMENT_SENSITIVITY; - movement.z = - (cosf(rotation.x) * direction[1] - cosf(rotation.x) * direction[0] + - sinf(rotation.x) * direction[3] - - sinf(rotation.x) * direction[2]) / + sc3d.movement.z = + (cosf(sc3d.rotation.x) * direction[1] - cosf(sc3d.rotation.x) * direction[0] + + sinf(sc3d.rotation.x) * direction[3] - + sinf(sc3d.rotation.x) * direction[2]) / G_PLAYER_MOVEMENT_SENSITIVITY; // elevation if (IsKeyDown(KEY_SPACE)) - movement.y -= 0.12f; + sc3d.movement.y += 0.12f; if (IsKeyDown(KEY_LEFT_CONTROL)) - movement.y += 0.12f; + sc3d.movement.y -= 0.12f; // apply movement - camera.position.x += movement.x / G_PLAYER_MOVEMENT_SENSITIVITY; - camera.position.y += movement.y; - camera.position.z += movement.z / G_PLAYER_MOVEMENT_SENSITIVITY; + sc3d.camera.position.x += sc3d.movement.x / G_PLAYER_MOVEMENT_SENSITIVITY; + sc3d.camera.position.y += sc3d.movement.y; + sc3d.camera.position.z += sc3d.movement.z / G_PLAYER_MOVEMENT_SENSITIVITY; Matrix translation = MatrixTranslate(0, 0, (10)); Matrix rotation2 = MatrixRotateXYZ( - (Vector3){PI * 2 - rotation.y, PI * 2 - rotation.x, 0}); + (Vector3){DOUBLEPI - sc3d.rotation.y, DOUBLEPI - sc3d.rotation.x, 0}); Matrix transform = MatrixMultiply(translation, rotation2); // apply camera rotation - camera.target.x = camera.position.x - transform.m12; - camera.target.y = camera.position.y - transform.m13; - camera.target.z = camera.position.z - transform.m14; + sc3d.camera.target.x = sc3d.camera.position.x - transform.m12; + sc3d.camera.target.y = sc3d.camera.position.y - transform.m13; + sc3d.camera.target.z = sc3d.camera.position.z - transform.m14; BeginDrawing(); - ClearBackground(RAYWHITE); - BeginMode3D(camera); + ClearBackground(GRAY); + BeginMode3D(sc3d.camera); // draw checkerboard model for (int x = 0; x < 50; x++) { |