Browse Source

fixed some things

quantumde1 2 months ago
parent
commit
fd7ba7e2cd

+ 5 - 2
conf/settings.conf

@@ -1,7 +1,10 @@
-SCRIPT:scripts/SA00.lua
 TITLE:Remember11 - Self Chapter
 TITLE:Remember11 - Self Chapter
+SCRIPT:scripts/SA00.lua
 DIALOG_END_INDICATOR:res/misc/circle.png
 DIALOG_END_INDICATOR:res/misc/circle.png
 DIALOG_BOX:res/misc/TEX#win_01b.PNG
 DIALOG_BOX:res/misc/TEX#win_01b.PNG
 CHOICE_BOX:res/misc/TEX#win_00b.PNG
 CHOICE_BOX:res/misc/TEX#win_00b.PNG
 FALLBACK_FONT:res/font_en.png
 FALLBACK_FONT:res/font_en.png
-ICON:res/icon.png
+ICON:res/icon.png
+DEFAULT_SCREEN_WIDTH:1344
+DEFAULT_SCREEN_HEIGHT:1008
+DEFAULT_FULLSCREEN:false

+ 0 - 9
source/app.d

@@ -1,17 +1,8 @@
 // quantumde1 developed software, licensed under MIT license.
 // quantumde1 developed software, licensed under MIT license.
 import raylib;
 import raylib;
 
 
-import std.stdio;
-
 //local imports
 //local imports
 import graphics.engine;
 import graphics.engine;
-import graphics.playback;
-import variables;
-import std.file;
-import std.string;
-import system.abstraction;
-import system.config;
-import std.conv;
 
 
 void main(string[] args)
 void main(string[] args)
 {
 {

+ 15 - 18
source/dialogs/dialogbox.d

@@ -2,10 +2,7 @@ module dialogs.dialogbox;
 
 
 import raylib;
 import raylib;
 import std.string;
 import std.string;
-import std.stdio;
-import std.conv;
 import std.uni;
 import std.uni;
-import std.typecons;
 import std.algorithm;
 import std.algorithm;
 import variables;
 import variables;
 
 
@@ -18,8 +15,8 @@ bool textFullyDisplayed = false;
 float circleRotationAngle = 0.0f;
 float circleRotationAngle = 0.0f;
 
 
 // Border sizes for 9-slice scaling
 // Border sizes for 9-slice scaling
-const int DIALOG_BORDER = 32; // Border that won't be stretched
-const int CHOICE_BORDER = 32; // Choice window border
+immutable int DIALOG_BORDER = 32; // Border that won't be stretched
+immutable int CHOICE_BORDER = 32; // Choice window border
 
 
 // Draws a texture with 9-slice scaling
 // Draws a texture with 9-slice scaling
 void draw9SliceTexture(Texture2D tex, Rectangle dest, int borderSize, Color tint) {
 void draw9SliceTexture(Texture2D tex, Rectangle dest, int borderSize, Color tint) {
@@ -73,9 +70,9 @@ void displayDialog(string[] pages, string[] choices, ref int selectedChoice,
                    ref float textSpeed, Texture2D circle, 
                    ref float textSpeed, Texture2D circle, 
                    Texture2D dialogBackgroundTex, Texture2D choiceWindowTex) {
                    Texture2D dialogBackgroundTex, Texture2D choiceWindowTex) {
     
     
-    const screenWidth = GetScreenWidth();
-    const screenHeight = GetScreenHeight();
-    const screenPadding = 10;
+    immutable int screenWidth = systemSettings.defaultScreenWidth;
+    immutable int screenHeight = systemSettings.defaultScreenHeight;
+    immutable int screenPadding = 10;
     
     
     // Dialog background rectangle with padding
     // Dialog background rectangle with padding
     Rectangle dialogRect = Rectangle(
     Rectangle dialogRect = Rectangle(
@@ -88,12 +85,12 @@ void displayDialog(string[] pages, string[] choices, ref int selectedChoice,
     draw9SliceTexture(dialogBackgroundTex, dialogRect, DIALOG_BORDER, Colors.WHITE);
     draw9SliceTexture(dialogBackgroundTex, dialogRect, DIALOG_BORDER, Colors.WHITE);
     
     
     // Text layout parameters
     // Text layout parameters
-    const float textLeftMargin = 33.0f;
-    const float textTopMargin = 20.0f;
-    const float textRightMargin = 33.0f;
-    const float textWidth = dialogRect.width - textLeftMargin - textRightMargin;
-    const float fontSize = 40.0f;
-    const float spacing = 1.0f;
+    immutable float textLeftMargin = 33.0f;
+    immutable float textTopMargin = 20.0f;
+    immutable float textRightMargin = 33.0f;
+    immutable float textWidth = dialogRect.width - textLeftMargin - textRightMargin;
+    immutable float fontSize = 40.0f;
+    immutable float spacing = 1.0f;
     string name;
     string name;
     
     
     // Text display logic
     // Text display logic
@@ -174,7 +171,7 @@ void displayDialog(string[] pages, string[] choices, ref int selectedChoice,
     }
     }
     
     
     // Draw text lines with shadow effect
     // Draw text lines with shadow effect
-    const float lineHeight = MeasureTextEx(dialogFont, "A", fontSize, spacing).y * 1.4;
+    immutable float lineHeight = MeasureTextEx(dialogFont, "A", fontSize, spacing).y * 1.4;
     foreach(i, line; lines) {
     foreach(i, line; lines) {
         Vector2 pos = Vector2(dialogRect.x + textLeftMargin, dialogRect.y + textTopMargin + i*lineHeight);
         Vector2 pos = Vector2(dialogRect.x + textLeftMargin, dialogRect.y + textTopMargin + i*lineHeight);
         DrawTextEx(dialogFont, line.toStringz(), pos + Vector2(3, 3), fontSize, spacing, Colors.BLACK);
         DrawTextEx(dialogFont, line.toStringz(), pos + Vector2(3, 3), fontSize, spacing, Colors.BLACK);
@@ -203,9 +200,9 @@ void displayDialog(string[] pages, string[] choices, ref int selectedChoice,
     
     
     // Choice selection logic
     // Choice selection logic
     if (textFullyDisplayed && (currentPage == choicePage)) {
     if (textFullyDisplayed && (currentPage == choicePage)) {
-        const choiceHeight = 50;
-        const choiceSpacing = 10;
-        const verticalPadding = 30;
+        immutable choiceHeight = 50;
+        immutable choiceSpacing = 10;
+        immutable verticalPadding = 30;
         
         
         Rectangle choiceWindow = Rectangle(
         Rectangle choiceWindow = Rectangle(
             (screenWidth - screenWidth/2)/2,
             (screenWidth - screenWidth/2)/2,

+ 2 - 5
source/graphics/effects.d

@@ -5,9 +5,6 @@ import std.stdio;
 import variables;
 import variables;
 import std.string;
 import std.string;
 import system.abstraction;
 import system.abstraction;
-import system.config;
-import std.algorithm;
-import system.abstraction;
 import std.file;
 import std.file;
 
 
 int screenWidth;
 int screenWidth;
@@ -15,8 +12,8 @@ int screenHeight;
 
 
 Texture2D[] loadAnimationFramesUI(const string fileDir, const string animationFileName)
 Texture2D[] loadAnimationFramesUI(const string fileDir, const string animationFileName)
 {
 {
-    screenWidth = GetScreenWidth();
-    screenHeight = GetScreenHeight();
+    screenWidth = systemSettings.defaultScreenWidth;
+    screenHeight = systemSettings.defaultScreenHeight;
     Texture2D[] frames;
     Texture2D[] frames;
     uint frameIndex = 1;
     uint frameIndex = 1;
     while (true)
     while (true)

+ 6 - 14
source/graphics/engine.d

@@ -5,17 +5,10 @@ import raylib;
 
 
 //dlang imports
 //dlang imports
 import std.stdio;
 import std.stdio;
-import std.math;
-import std.file;
-import std.array;
 import std.string;
 import std.string;
 import std.conv;
 import std.conv;
-import std.typecons;
-import std.random;
-import std.datetime;
 
 
 //graphics
 //graphics
-import graphics.playback;
 import graphics.gamelogic;
 import graphics.gamelogic;
 import ui.menu;
 import ui.menu;
 
 
@@ -31,20 +24,19 @@ import system.abstraction;
 import variables;
 import variables;
 import system.cleanup;
 import system.cleanup;
 
 
-//C bindings
-import core.stdc.stdlib;
-import core.stdc.time;
-
 void engine_loader()
 void engine_loader()
 {
 {
-    int screenWidth = 1344;
-    int screenHeight = 1008;
+    systemSettings = loadSettingsFromConfigFile("conf/settings.conf");
+    int screenWidth = systemSettings.defaultScreenWidth;
+    int screenHeight = systemSettings.defaultScreenHeight;
     // Initialization
     // Initialization
     SetExitKey(0);
     SetExitKey(0);
-    systemSettings = loadSettingsFromConfigFile();
     Image icon = LoadImage(systemSettings.iconPath.toStringz());
     Image icon = LoadImage(systemSettings.iconPath.toStringz());
     // Window and Audio Initialization
     // Window and Audio Initialization
     InitWindow(screenWidth, screenHeight, systemSettings.windowTitle.toStringz());
     InitWindow(screenWidth, screenHeight, systemSettings.windowTitle.toStringz());
+    if (systemSettings.defaultFullscreen == true) {
+        ToggleFullscreen();
+    }
     SetWindowIcon(icon);
     SetWindowIcon(icon);
     UnloadImage(icon);
     UnloadImage(icon);
     //ToggleFullscreen();
     //ToggleFullscreen();

+ 1 - 11
source/graphics/gamelogic.d

@@ -3,19 +3,11 @@ module graphics.gamelogic;
 import raylib;
 import raylib;
 import bindbc.lua;
 import bindbc.lua;
 import variables;
 import variables;
-import core.stdc.stdlib;
-import core.stdc.time;
-import graphics.engine;
-import scripts.lua;
-import std.stdio;
-import std.conv;
 import graphics.effects;
 import graphics.effects;
 import std.string;
 import std.string;
 import std.math;
 import std.math;
 import dialogs.dialogbox;
 import dialogs.dialogbox;
 import system.abstraction;
 import system.abstraction;
-import system.config;
-import std.file;
 
 
 /** 
 /** 
  * this module contains game logic, which was removed from engine.d for better readability.
  * this module contains game logic, which was removed from engine.d for better readability.
@@ -65,9 +57,7 @@ void texturesLogic(TextureEngine[] textures) {
     }
     }
 }
 }
 
 
-void effectsLogic()
-{
-    UpdateMusicStream(music);
+void effectsLogic() {
     if (isCameraMoving) {
     if (isCameraMoving) {
         float delta = GetFrameTime() * cameraMoveSpeed;
         float delta = GetFrameTime() * cameraMoveSpeed;
         camera.target.x += (cameraTargetX - camera.target.x) * delta;
         camera.target.x += (cameraTargetX - camera.target.x) * delta;

+ 0 - 1
source/graphics/playback.d

@@ -9,7 +9,6 @@ import core.stdc.string;
 import core.thread;
 import core.thread;
 import variables;
 import variables;
 import core.sync.mutex;
 import core.sync.mutex;
-import std.array;
 import std.file;
 import std.file;
 import system.abstraction;
 import system.abstraction;
 
 

+ 0 - 2
source/scripts/lua.d

@@ -12,8 +12,6 @@ import std.string;
 import graphics.engine;
 import graphics.engine;
 import graphics.playback;
 import graphics.playback;
 import std.file;
 import std.file;
-import std.array;
-import std.algorithm;
 
 
 /* 
 /* 
  * This module provides Lua bindings for various engine functionalities.
  * This module provides Lua bindings for various engine functionalities.

+ 16 - 12
source/system/config.d

@@ -8,8 +8,7 @@ import variables;
 import std.conv;
 import std.conv;
 import system.abstraction;
 import system.abstraction;
 
 
-nothrow auto parseConf(string type)(string filename)
-{
+nothrow string parseConf(string type, string filename) {
     try
     try
     {
     {
         auto file = File(filename);
         auto file = File(filename);
@@ -22,7 +21,10 @@ nothrow auto parseConf(string type)(string filename)
             "dialog_end_indicator": "DIALOG_END_INDICATOR:",
             "dialog_end_indicator": "DIALOG_END_INDICATOR:",
             "dialog_box": "DIALOG_BOX:",
             "dialog_box": "DIALOG_BOX:",
             "choice_box": "CHOICE_BOX:",
             "choice_box": "CHOICE_BOX:",
-            "fallback_font": "FALLBACK_FONT:"
+            "fallback_font": "FALLBACK_FONT:",
+            "default_screen_width": "DEFAULT_SCREEN_WIDTH:",
+            "default_screen_height": "DEFAULT_SCREEN_HEIGHT:",
+            "default_fullscreen": "DEFAULT_FULLSCREEN:"
         ];
         ];
 
 
         if (type in typeMap)
         if (type in typeMap)
@@ -47,15 +49,17 @@ nothrow auto parseConf(string type)(string filename)
     return "";
     return "";
 }
 }
 
 
-SystemSettings loadSettingsFromConfigFile()
-{
+SystemSettings loadSettingsFromConfigFile(string confName) {
     return SystemSettings(
     return SystemSettings(
-        parseConf!"script"("conf/settings.conf"),
-        parseConf!"title"("conf/settings.conf"),
-        parseConf!"icon"("conf/settings.conf"),
-        parseConf!"dialog_end_indicator"("conf/settings.conf"),
-        parseConf!"dialog_box"("conf/settings.conf"),
-        parseConf!"choice_box"("conf/settings.conf"),
-        parseConf!"fallback_font"("conf/settings.conf")
+        parseConf("script", confName),
+        parseConf("title", confName),
+        parseConf("icon", confName),
+        parseConf("dialog_end_indicator", confName),
+        parseConf("dialog_box", confName),
+        parseConf("choice_box", confName),
+        parseConf("fallback_font", confName),
+        parseConf("default_screen_width", confName).to!int,
+        parseConf("default_screen_height", confName).to!int,
+        parseConf("default_fullscreen", confName).to!bool
     );
     );
 }
 }

+ 1 - 9
source/ui/menu.d

@@ -4,17 +4,9 @@ import raylib;
 import variables;
 import variables;
 import std.stdio;
 import std.stdio;
 import system.abstraction;
 import system.abstraction;
-import system.config;
-import core.time;
-import core.thread;
-import std.string;
-import graphics.engine;
 import graphics.playback;
 import graphics.playback;
-import std.file;
 import scripts.lua;
 import scripts.lua;
-import std.conv;
 import graphics.gamelogic;
 import graphics.gamelogic;
-import system.cleanup;
 
 
 void fadeEffect(float alpha, bool fadeIn, void delegate(float alpha) renderer)
 void fadeEffect(float alpha, bool fadeIn, void delegate(float alpha) renderer)
 {
 {
@@ -72,7 +64,7 @@ int showMainMenu() {
     int luaExecutionCode = luaInit("scripts/menu.lua");
     int luaExecutionCode = luaInit("scripts/menu.lua");
     if (luaExecutionCode != EngineExitCodes.EXIT_OK) {
     if (luaExecutionCode != EngineExitCodes.EXIT_OK) {
         writeln("[ERROR] Engine stops execution according to error code: ", 
         writeln("[ERROR] Engine stops execution according to error code: ", 
-        luaExecutionCode.to!EngineExitCodes);
+        luaExecutionCode);
         currentGameState = GameState.Exit;
         currentGameState = GameState.Exit;
         return luaExecutionCode;
         return luaExecutionCode;
     }
     }

+ 3 - 0
source/variables.d

@@ -33,6 +33,9 @@ struct SystemSettings {
     string dialogBoxImage;
     string dialogBoxImage;
     string choiceBoxImage;
     string choiceBoxImage;
     string fallbackFont;
     string fallbackFont;
+    int defaultScreenWidth;
+    int defaultScreenHeight;
+    bool defaultFullscreen;
 }
 }
 
 
 struct TextureEngine {
 struct TextureEngine {