aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-12-22 15:52:02 -0700
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-12-22 15:52:02 -0700
commitb321781f066608ad4c0c5f91096cbe103003825d (patch)
treeaa62cd7bfddcf369b1e3dfb726af73496c0e2416
parent4fa5a5374ae5062d9070b136bf873a50b7d8546f (diff)
Distance thing in preview
-rw-r--r--src/screens/infoScreen.c27
-rw-r--r--src/screens/infoScreen.h3
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);