aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-12-22 16:38:12 -0700
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-12-22 16:38:12 -0700
commit797381def454d1556f82a81e6452c7b8ee6d1bad (patch)
treee729f9da706aab789e7e3e7db8392de9036144f1
parentb321781f066608ad4c0c5f91096cbe103003825d (diff)
Some more info about entities drawn on the preview
-rw-r--r--src/screens/infoScreen.c45
-rw-r--r--src/screens/infoScreen.h10
2 files changed, 46 insertions, 9 deletions
diff --git a/src/screens/infoScreen.c b/src/screens/infoScreen.c
index 02476c4..58a19ed 100644
--- a/src/screens/infoScreen.c
+++ b/src/screens/infoScreen.c
@@ -54,6 +54,7 @@ void initInfoScreen(Game * game) {
infoScreen->goBackButton = (Rectangle){0.0, 25.0, 100.0, 50.0};
+ // Camera.
infoScreen->camera = (Camera3D){
.position = (Vector3){0.0, 0.0, infoScreenEntityInfo[0].cameraDistance},
.target = Vector3Zero(),
@@ -70,6 +71,8 @@ void initInfoScreen(Game * game) {
// Set distances.
for (int i = 0; i < ENTITY_USER_INFO_MSG_MAX; ++i)
infoScreen->distances[i] = infoScreenEntityInfo[i].cameraDistance;
+
+ resizeInfoScreen(game, infoScreen);
}
void updateInfoScreenCameraControls(Game * game, InfoScreen * infoScreen) {
@@ -77,6 +80,7 @@ void updateInfoScreenCameraControls(Game * game, InfoScreen * infoScreen) {
Camera3D * camera = &infoScreen->camera;
int currentEntity = infoScreen->currentEntity;
+ // Reset mouse.
if (infoScreen->resetMouse) {
infoScreen->resetMouse = false;
SetMousePosition(0, 0);
@@ -110,7 +114,40 @@ void updateInfoScreenCamera(Game * game, InfoScreen * infoScreen) {
Camera3D * camera = &infoScreen->camera;
int currentEntity = infoScreen->currentEntity;
- camera->position = (Vector3){infoScreen->distances[currentEntity], infoScreen->distances[currentEntity], infoScreen->distances[currentEntity]};
+ camera->position = (Vector3){0.0, 0.0, infoScreen->distances[currentEntity]};
+}
+
+void drawInfoScreenUI(Game * game, InfoScreen * infoScreen) {
+ int currentEntity = infoScreen->currentEntity;
+
+ // Back button.
+ if (GuiButton(infoScreen->goBackButton, "Back"))
+ game->screenId = SCREEN_MAIN_MENU;
+
+ // Draw ship name.
+ EntityType type = infoScreenEntityInfo[currentEntity].type;
+ const char * name = entityTypeInfo[type].name;
+ size_t nameSize = strnlen(name, ENTITY_TYPE_INFO_NAME_MAX);
+
+ DrawText(
+ name,
+ GetScreenWidth() / 2.0 - ((nameSize + 1) * (ENTITY_INFO_NAME_FONT_SIZE / 2.0) / 2.0),
+ 10.0,
+ ENTITY_INFO_NAME_FONT_SIZE,
+ GREEN
+ );
+
+ // Draw entity info.
+ const char * msg = infoScreenEntityInfo[currentEntity].msg;
+ size_t msgSize = strnlen(msg, ENTITY_USER_INFO_MSG_MAX);
+
+ DrawText(
+ msg,
+ GetScreenWidth() / 2.0 - ((msgSize + 1) * (ENTITY_INFO_FONT_SIZE / 2.0) / 2.0),
+ ENTITY_INFO_NAME_FONT_SIZE + 10,
+ ENTITY_INFO_FONT_SIZE,
+ GREEN
+ );
}
void updateInfoScreen(Game * game) {
@@ -140,9 +177,7 @@ void updateInfoScreen(Game * game) {
if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) {
updateInfoScreenCameraControls(game, infoScreen);
} else {
- // Back button.
- if (GuiButton(infoScreen->goBackButton, "Back"))
- game->screenId = SCREEN_MAIN_MENU;
+ drawInfoScreenUI(game, infoScreen);
}
EntityUserInfo info = infoScreenEntityInfo[currentEntity];
@@ -156,8 +191,6 @@ void updateInfoScreen(Game * game) {
game->assets.models[info.assetId].transform = QuaternionToMatrix(infoScreen->rotation);
DrawModelWires(game->assets.models[info.assetId], Vector3Zero(), 1.0, GREEN);
- //DrawGrid(32, 5.0);
-
EndMode3D();
}
diff --git a/src/screens/infoScreen.h b/src/screens/infoScreen.h
index 071eea6..0c2f93d 100644
--- a/src/screens/infoScreen.h
+++ b/src/screens/infoScreen.h
@@ -5,9 +5,12 @@
#ifndef INFO_SCREEN_H
#define INFO_SCREEN_H
-#define ENTITY_USER_INFO_MSG_MAX 100
+#define ENTITY_USER_INFO_MSG_MAX 70
#define INFO_SCREEN_ENTITY_COUNT 7
+#define ENTITY_INFO_NAME_FONT_SIZE 30
+#define ENTITY_INFO_FONT_SIZE 18
+
typedef struct EntityUserInfo {
EntityType type;
AssetId assetId;
@@ -19,14 +22,15 @@ extern const EntityUserInfo infoScreenEntityInfo[INFO_SCREEN_ENTITY_COUNT];
typedef struct InfoScreen {
Rectangle goBackButton;
+
Camera3D camera;
+ float distances[ENTITY_USER_INFO_MSG_MAX];
+
int currentEntity;
Vector2 lastMouse;
Quaternion rotation;
bool resetMouse;
-
- float distances[ENTITY_USER_INFO_MSG_MAX];
} InfoScreen;
void initInfoScreen(Game * game);