diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-22 15:52:02 -0700 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-22 15:52:02 -0700 |
commit | b321781f066608ad4c0c5f91096cbe103003825d (patch) | |
tree | aa62cd7bfddcf369b1e3dfb726af73496c0e2416 /src | |
parent | 4fa5a5374ae5062d9070b136bf873a50b7d8546f (diff) |
Distance thing in preview
Diffstat (limited to 'src')
-rw-r--r-- | src/screens/infoScreen.c | 27 | ||||
-rw-r--r-- | src/screens/infoScreen.h | 3 |
2 files changed, 24 insertions, 6 deletions
diff --git a/src/screens/infoScreen.c b/src/screens/infoScreen.c index 512ea42..02476c4 100644 --- a/src/screens/infoScreen.c +++ b/src/screens/infoScreen.c @@ -66,12 +66,16 @@ void initInfoScreen(Game * game) { infoScreen->rotation = QuaternionIdentity(); infoScreen->resetMouse = true; - infoScreen->distance = infoScreenEntityInfo[0].cameraDistance; + + // Set distances. + for (int i = 0; i < ENTITY_USER_INFO_MSG_MAX; ++i) + infoScreen->distances[i] = infoScreenEntityInfo[i].cameraDistance; } -void updateInfoScreenCamera(Game * game, InfoScreen * infoScreen) { +void updateInfoScreenCameraControls(Game * game, InfoScreen * infoScreen) { double t = GetFrameTime(); Camera3D * camera = &infoScreen->camera; + int currentEntity = infoScreen->currentEntity; if (infoScreen->resetMouse) { infoScreen->resetMouse = false; @@ -100,20 +104,30 @@ void updateInfoScreenCamera(Game * game, InfoScreen * infoScreen) { Quaternion rotationSpeed = QuaternionFromAxisAngle(angle.axis, angle.angle * t); infoScreen->rotation = QuaternionMultiply(infoScreen->rotation, rotationSpeed); infoScreen->rotation = QuaternionNormalize(infoScreen->rotation); +} + +void updateInfoScreenCamera(Game * game, InfoScreen * infoScreen) { + Camera3D * camera = &infoScreen->camera; + int currentEntity = infoScreen->currentEntity; - camera->position = (Vector3){0.0, 0.0, infoScreenEntityInfo[infoScreen->currentEntity].cameraDistance}; + camera->position = (Vector3){infoScreen->distances[currentEntity], infoScreen->distances[currentEntity], infoScreen->distances[currentEntity]}; } void updateInfoScreen(Game * game) { InfoScreen * infoScreen = &game->infoScreen; + int currentEntity = infoScreen->currentEntity; ClearBackground(BLACK); // Reset. if (IsKeyPressed(KEY_R)) { infoScreen->resetMouse = true; infoScreen->rotation = QuaternionIdentity(); + infoScreen->distances[currentEntity] = infoScreenEntityInfo[currentEntity].cameraDistance; } + // Change distance. + infoScreen->distances[currentEntity] += GetMouseWheelMove(); + // Handling hidding cursor and shit. if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) { DisableCursor(); @@ -124,14 +138,17 @@ void updateInfoScreen(Game * game) { // Switching modes. if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) { - updateInfoScreenCamera(game, infoScreen); + updateInfoScreenCameraControls(game, infoScreen); } else { // Back button. if (GuiButton(infoScreen->goBackButton, "Back")) game->screenId = SCREEN_MAIN_MENU; } - EntityUserInfo info = infoScreenEntityInfo[infoScreen->currentEntity]; + EntityUserInfo info = infoScreenEntityInfo[currentEntity]; + + // Update camera. + updateInfoScreenCamera(game, infoScreen); // Draw shit. BeginMode3D(infoScreen->camera); diff --git a/src/screens/infoScreen.h b/src/screens/infoScreen.h index 4113420..071eea6 100644 --- a/src/screens/infoScreen.h +++ b/src/screens/infoScreen.h @@ -25,7 +25,8 @@ typedef struct InfoScreen { Vector2 lastMouse; Quaternion rotation; bool resetMouse; - float distance; + + float distances[ENTITY_USER_INFO_MSG_MAX]; } InfoScreen; void initInfoScreen(Game * game); |