From 0fc05028ccfe809c569b1b84c0bb87f382b0bf34 Mon Sep 17 00:00:00 2001 From: baxlek <115663151+baxlek@users.noreply.github.com> Date: Sun, 9 Aug 2026 23:14:17 -0500 Subject: [PATCH] Add Aiming Reticle for Bow and Slingshot (#2290) * Change sight drawing flag to on in arrow logic * Refactor setBowSight for PC targeting and reticle logic * Add Aiming Reticle option to settings Add option for Aiming Reticle in settings. * Add aiming reticle setting to game preferences * Add aiming reticle to user settings registration * Add aimingReticle configuration variable * Fix syntax error in settings.cpp * Add aiming reticle check to bow charge condition * Refactor bow charge sight position logic Removed redundant sight position handling when aiming reticle is not displayed. * Refactor setBowSight for Dusk targeting * Clarify aiming reticle option description * Refactor bow sight logic in setBowSight function Removed dusk condition from bow sight check and adjusted sight drawing logic. * Refactor sight drawing logic in d_a_alink_bow.inc Remove redundant call to offDrawFlg() when aiming reticle is enabled. --- src/d/actor/d_a_alink_bow.inc | 2 +- src/dusk/settings.cpp | 2 ++ src/dusk/settings.h | 1 + src/dusk/ui/settings.cpp | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/d/actor/d_a_alink_bow.inc b/src/d/actor/d_a_alink_bow.inc index 600dcae2f4..aae80e8b88 100644 --- a/src/d/actor/d_a_alink_bow.inc +++ b/src/d/actor/d_a_alink_bow.inc @@ -551,7 +551,7 @@ void daAlink_c::setBowSight() { getArrowFlyData(&dist, &speed, TRUE); checkSightLine(dist, &sight_pos); mSight.setPos(&sight_pos); - mSight.offDrawFlg(); + DUSK_IF_ELSE(dusk::getSettings().game.aimingReticle ? mSight.onDrawFlg() : mSight.offDrawFlg(), mSight.offDrawFlg()); } else { mSight.offDrawFlg(); } diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index e2a2169485..00191c3015 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -51,6 +51,7 @@ UserSettings g_userSettings = { .sunsSong {"game.sunsSong", false}, .autoSave {"game.autoSave", false}, .enhancedMapMenus {"game.enhancedMapMenus", false}, + .aimingReticle {"game.aimingReticle", false}, // Preferences .enableMirrorMode {"game.enableMirrorMode", false}, @@ -255,6 +256,7 @@ void registerSettings() { Register(g_userSettings.game.sunsSong); Register(g_userSettings.game.autoSave); Register(g_userSettings.game.enhancedMapMenus); + Register(g_userSettings.game.aimingReticle); Register(g_userSettings.game.enableMirrorMode); Register(g_userSettings.game.invertCameraXAxis); Register(g_userSettings.game.invertCameraYAxis); diff --git a/src/dusk/settings.h b/src/dusk/settings.h index 326f7f321c..19aad6ee09 100644 --- a/src/dusk/settings.h +++ b/src/dusk/settings.h @@ -183,6 +183,7 @@ struct UserSettings { ConfigVar sunsSong; ConfigVar autoSave; ConfigVar enhancedMapMenus; + ConfigVar aimingReticle; // Preferences ConfigVar enableMirrorMode; diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 43321d4879..f425fb5425 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -1225,6 +1225,8 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { "Allows Wolf Link to howl and change the time of day."); addOption("Quick Transform (R+Y)", getSettings().game.enableQuickTransform, "Transform instantly by pressing R and Y simultaneously."); + addOption("Aiming Reticle", getSettings().game.aimingReticle, + "Shows the aiming reticle for bow and slingshot."); leftPane.add_section("Speedrunning"); config_bool_select(leftPane, rightPane, getSettings().game.speedrunMode,