diff options
Diffstat (limited to 'src/screens/infoScreen.c')
-rw-r--r-- | src/screens/infoScreen.c | 27 |
1 files changed, 22 insertions, 5 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); |