aboutsummaryrefslogtreecommitdiff
path: root/src/screens/infoScreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/screens/infoScreen.c')
-rw-r--r--src/screens/infoScreen.c45
1 files changed, 39 insertions, 6 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();
}