diff --git a/CMake/Packaging-2.cmake b/CMake/Packaging-2.cmake index 2e1183190..c6e501c73 100644 --- a/CMake/Packaging-2.cmake +++ b/CMake/Packaging-2.cmake @@ -22,7 +22,7 @@ endif() if (CPACK_GENERATOR MATCHES "Bundle") set(CPACK_BUNDLE_NAME "soh") - set(CPACK_BUNDLE_PLIST "../soh/macosx/Info.plist") + set(CPACK_BUNDLE_PLIST "macosx/Info.plist") set(CPACK_BUNDLE_ICON "macosx/soh.icns") set(CPACK_BUNDLE_STARTUP_COMMAND "../soh/macosx/soh-macos.sh") set(CPACK_BUNDLE_APPLE_CERT_APP "-") diff --git a/CMakeLists.txt b/CMakeLists.txt index 436872372..db2ccbc0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,11 +6,10 @@ set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE) -project(Ship C CXX) - -set(PROJECT_VERSION_MAJOR "4") -set(PROJECT_VERSION_MINOR "0") -set(PROJECT_VERSION_PATCH "1") +project(Ship LANGUAGES C CXX + VERSION 4.0.1) +set(PROJECT_BUILD_NAME "ZHORA BRAVO" CACHE STRING "") +set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "") set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh) add_compile_options($<$:/MP>) diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index 7fbb80a73..372e64d80 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -95,6 +95,8 @@ set(PROJECT_NAME soh) ################################################################################ # Source groups ################################################################################ +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/src/boot/build.c.in ${CMAKE_BINARY_DIR}/build.c @ONLY) + set(Header_Files "resource.h" ) @@ -395,7 +397,7 @@ endif() set(Source_Files__src__boot "src/boot/assert.c" "src/boot/boot_main.c" - "src/boot/build.c" + "${CMAKE_BINARY_DIR}/build.c" "src/boot/idle.c" "src/boot/is_debug.c" "src/boot/logutils.c" @@ -2039,6 +2041,7 @@ find_program(CURL NAMES curl DOC "Path to the curl program. Used to download fi execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt -o ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt OUTPUT_VARIABLE RESULT) if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/macosx/Info.plist.in ${CMAKE_BINARY_DIR}/macosx/Info.plist @ONLY) INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION ../MacOS COMPONENT ship) elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS") INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION . COMPONENT ship) @@ -2057,8 +2060,8 @@ if(CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch") nx_generate_nacp(Ship.nacp NAME "Ship of Harkinian" - AUTHOR "Harbour Masters" - VERSION "4.0.0" + AUTHOR "${PROJECT_TEAM}" + VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" ) nx_create_nro(soh @@ -2075,7 +2078,7 @@ wut_create_rpx(${PROJECT_NAME}) wut_create_wuhb(${PROJECT_NAME} NAME "Ship of Harkinian" SHORTNAME "SoH" - AUTHOR "Harbour Masters" + AUTHOR "${PROJECT_TEAM}" ICON ${CMAKE_CURRENT_SOURCE_DIR}/icon.jpg ) diff --git a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1.xml b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1.xml index 517c02780..bb1b31e2f 100644 --- a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1.xml +++ b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1.xml @@ -1,4 +1,5 @@ + diff --git a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1a.xml b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1a.xml index fb20482dd..c750ce20d 100644 --- a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1a.xml +++ b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri1a.xml @@ -1,4 +1,5 @@ + diff --git a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2.xml b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2.xml index a23d9060c..785b85857 100644 --- a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2.xml +++ b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2.xml @@ -1,4 +1,5 @@ + diff --git a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2a.xml b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2a.xml index 282fd267f..ad1bb4d5f 100644 --- a/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2a.xml +++ b/soh/assets/xml/GC_MQ_D/objects/object_mori_hineri2a.xml @@ -1,4 +1,5 @@ + diff --git a/soh/assets/xml/GC_MQ_D/objects/object_mori_objects.xml b/soh/assets/xml/GC_MQ_D/objects/object_mori_objects.xml index bef9686f5..58ea8c085 100644 --- a/soh/assets/xml/GC_MQ_D/objects/object_mori_objects.xml +++ b/soh/assets/xml/GC_MQ_D/objects/object_mori_objects.xml @@ -1,4 +1,5 @@ + diff --git a/soh/assets/xml/GC_MQ_D/objects/object_mori_tex.xml b/soh/assets/xml/GC_MQ_D/objects/object_mori_tex.xml index ad4ba38e3..b1a4b803c 100644 --- a/soh/assets/xml/GC_MQ_D/objects/object_mori_tex.xml +++ b/soh/assets/xml/GC_MQ_D/objects/object_mori_tex.xml @@ -1,5 +1,30 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/macosx/Info.plist b/soh/macosx/Info.plist.in similarity index 88% rename from soh/macosx/Info.plist rename to soh/macosx/Info.plist.in index 800d42eeb..b44948b36 100644 --- a/soh/macosx/Info.plist +++ b/soh/macosx/Info.plist.in @@ -9,7 +9,7 @@ CFBundleExecutable soh CFBundleGetInfoString - 4.0.1 + @CMAKE_PROJECT_VERSION@ CFBundleIconFile soh.icns CFBundleIdentifier @@ -22,11 +22,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 4.0.1 + @CMAKE_PROJECT_VERSION@ CFBundleSignature ZOoT CFBundleVersion - 4.0.1 + @CMAKE_PROJECT_VERSION@ NSHumanReadableCopyright Copyright 2022 HarbourMasters. LSMinimumSystemVersion diff --git a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h index 50541e33c..fc7e4c8f6 100644 --- a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h +++ b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.h @@ -74,8 +74,8 @@ static CosmeticsColorIndividual Navi_Npc_Inner = { "Navi NPC (Primary)", "Inner static CosmeticsColorIndividual Navi_Npc_Outer = { "Navi NPC (Secondary)", "Outer color for Navi (when Navi fly around NPCs)", "gNavi_NPC_Outer", navi_npc_o_col, ImVec4(150, 150, 255, 255), false, false, false }; static CosmeticsColorIndividual Navi_Enemy_Inner = { "Navi Enemy (Primary)", "Inner color for Navi (when Navi fly around Enemies or Bosses)", "gNavi_Enemy_Inner", navi_enemy_i_col, ImVec4(255, 255, 0, 255), false, false, false }; static CosmeticsColorIndividual Navi_Enemy_Outer = { "Navi Enemy (Secondary)", "Outer color for Navi (when Navi fly around Enemies or Bosses)", "gNavi_Enemy_Outer", navi_enemy_o_col, ImVec4(220, 155, 0, 255), false, false, false }; -static CosmeticsColorIndividual Navi_Prop_Inner = { "Navi Enemy (Primary)", "Inner color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Inner", navi_prop_i_col, ImVec4(0, 255, 0, 255), false, false, false }; -static CosmeticsColorIndividual Navi_Prop_Outer = { "Navi Enemy (Secondary)", "Outer color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Outer", navi_prop_o_col, ImVec4(0, 255, 0, 255), false, false, false }; +static CosmeticsColorIndividual Navi_Prop_Inner = { "Navi Props (Primary)", "Inner color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Inner", navi_prop_i_col, ImVec4(0, 255, 0, 255), false, false, false }; +static CosmeticsColorIndividual Navi_Prop_Outer = { "Navi Props (Secondary)", "Outer color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Outer", navi_prop_o_col, ImVec4(0, 255, 0, 255), false, false, false }; //Keese static CosmeticsColorIndividual Keese1_prim = { "Fire Primary color", "Affects the primary color of the Fire itself of the Keese", "gKeese1_Ef_Prim", Keese1_primcol, ImVec4(255, 255, 100, 255), true, false, false }; diff --git a/soh/soh/Enhancements/randomizer/randomizerTypes.h b/soh/soh/Enhancements/randomizer/randomizerTypes.h index c2a18a4ac..fc77fa75d 100644 --- a/soh/soh/Enhancements/randomizer/randomizerTypes.h +++ b/soh/soh/Enhancements/randomizer/randomizerTypes.h @@ -1049,7 +1049,7 @@ typedef struct ScrubIdentity { RandomizerCheck randomizerCheck; GetItemID getItemId; int32_t itemPrice; - bool isShuffled; + uint8_t isShuffled; } ScrubIdentity; typedef struct ShopItemIdentity { diff --git a/soh/src/boot/build.c b/soh/src/boot/build.c deleted file mode 100644 index 0fb6d64ad..000000000 --- a/soh/src/boot/build.c +++ /dev/null @@ -1,4 +0,0 @@ -const char gBuildVersion[] = "ZHORA BRAVO (4.0.1)"; -const char gBuildTeam[] = "github.com/harbourmasters"; -const char gBuildDate[] = __DATE__ " " __TIME__; -const char gBuildMakeOption[] = ""; diff --git a/soh/src/boot/build.c.in b/soh/src/boot/build.c.in new file mode 100644 index 000000000..6bf50e39f --- /dev/null +++ b/soh/src/boot/build.c.in @@ -0,0 +1,5 @@ +const char gBuildVersion[] = "@PROJECT_BUILD_NAME@ (@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@)"; +const char gBuildTeam[] = "@PROJECT_TEAM@"; +const char gBuildDate[] = __DATE__ " " __TIME__; +const char gBuildMakeOption[] = ""; + diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c index 1c87ed859..d3dbf9216 100644 --- a/soh/src/code/z_actor.c +++ b/soh/src/code/z_actor.c @@ -335,8 +335,10 @@ void func_8002BE98(TargetContext* targetCtx, s32 actorCategory, GlobalContext* g void func_8002BF60(TargetContext* targetCtx, Actor* actor, s32 actorCategory, GlobalContext* globalCtx) { NaviColor* naviColor = &sNaviColorList[actorCategory]; + Color_RGB8 customInnerNaviColor; + Color_RGB8 customOuterNaviColor; - if (CVar_GetS32("gUseNaviCol",0) != 1 ) { + if (!CVar_GetS32("gUseNaviCol",0)) { if (actorCategory == ACTORCAT_PLAYER) { naviColor->inner.r = 255; naviColor->inner.g = 255; naviColor->inner.b = 255; naviColor->outer.r = 0; naviColor->outer.g = 0; naviColor->outer.b = 255; @@ -355,21 +357,27 @@ void func_8002BF60(TargetContext* targetCtx, Actor* actor, s32 actorCategory, Gl } } else { if (actorCategory == ACTORCAT_PLAYER) { - naviColor->inner = CVar_GetRGBA("gNavi_Idle_Inner", naviColor->inner); - naviColor->outer = CVar_GetRGBA("gNavi_Idle_Outer", naviColor->outer); + customInnerNaviColor = CVar_GetRGB("gNavi_Idle_Inner", (Color_RGB8){ 0, 0, 0 }); + customOuterNaviColor = CVar_GetRGB("gNavi_Idle_Outer", (Color_RGB8){ 0, 0, 0 }); } if (actorCategory == ACTORCAT_NPC) { - naviColor->inner = CVar_GetRGBA("gNavi_NPC_Inner", naviColor->inner); - naviColor->outer = CVar_GetRGBA("gNavi_NPC_Outer", naviColor->outer); + customInnerNaviColor = CVar_GetRGB("gNavi_NPC_Inner", (Color_RGB8){ 0, 0, 0 }); + customOuterNaviColor = CVar_GetRGB("gNavi_NPC_Outer", (Color_RGB8){ 0, 0, 0 }); } if (actorCategory == ACTORCAT_BOSS || actorCategory == ACTORCAT_ENEMY) { - naviColor->inner = CVar_GetRGBA("gNavi_Enemy_Inner", naviColor->inner); - naviColor->outer = CVar_GetRGBA("gNavi_Enemy_Outer", naviColor->outer); + customInnerNaviColor = CVar_GetRGB("gNavi_Enemy_Inner", (Color_RGB8){ 0, 0, 0 }); + customOuterNaviColor = CVar_GetRGB("gNavi_Enemy_Outer", (Color_RGB8){ 0, 0, 0 }); } if (actorCategory == ACTORCAT_PROP) { - naviColor->inner = CVar_GetRGBA("gNavi_Prop_Inner", naviColor->inner); - naviColor->outer = CVar_GetRGBA("gNavi_Prop_Outer", naviColor->outer); + customInnerNaviColor = CVar_GetRGB("gNavi_Prop_Inner", (Color_RGB8){ 0, 0, 0 }); + customOuterNaviColor = CVar_GetRGB("gNavi_Prop_Outer", (Color_RGB8){ 0, 0, 0 }); } + naviColor->inner.r = customInnerNaviColor.r; + naviColor->inner.g = customInnerNaviColor.g; + naviColor->inner.b = customInnerNaviColor.b; + naviColor->outer.r = customOuterNaviColor.r; + naviColor->outer.g = customOuterNaviColor.g; + naviColor->outer.b = customOuterNaviColor.b; } targetCtx->naviRefPos.x = actor->focus.pos.x; diff --git a/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c index 5b6f097d0..419e443d0 100644 --- a/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/soh/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -172,7 +172,7 @@ void EnDns_Init(Actor* thisx, GlobalContext* globalCtx) { s16 respawnData = gSaveContext.respawn[RESPAWN_MODE_RETURN].data & ((1 << 8) - 1); this->scrubIdentity = Randomizer_IdentifyScrub(globalCtx->sceneNum, this->actor.params, respawnData); - if (Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 1 || Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 3 && this->scrubIdentity.itemPrice != -1) { + if ((Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 1 || Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 3) && this->scrubIdentity.itemPrice != -1) { this->dnsItemEntry->itemPrice = this->scrubIdentity.itemPrice; } diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index 79987cb34..0ce1ddaf9 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -11178,7 +11178,7 @@ s16 func_8084ABD8(GlobalContext* globalCtx, Player* this, s32 arg2, s16 arg3) { if (!func_8002DD78(this) && !func_808334B4(this) && (arg2 == 0)) { if (!CVar_GetS32("gDisableAutoCenterView", 0)) { - temp2 = sControlInput->rel.stick_y * 240.0f * (CVar_GetS32("gInvertYAxis", 1) ? -1 : 1); + temp2 = sControlInput->rel.stick_y * 240.0f * (CVar_GetS32("gInvertYAxis", 1) ? 1 : -1); Math_SmoothStepToS(&this->actor.focus.rot.x, temp2, 14, 4000, 30); temp2 = sControlInput->rel.stick_x * -16.0f * (CVar_GetS32("gInvertXAxis", 0) ? -1 : 1); diff --git a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index ba7cc64c5..14b01760f 100644 --- a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -1618,8 +1618,8 @@ void FileChoose_LoadGame(GameState* thisx) { Randomizer_LoadSettings(""); Randomizer_LoadHintLocations(""); - Randomizer_LoadMerchantMessages(""); Randomizer_LoadItemLocations("", true); + Randomizer_LoadMerchantMessages(""); gSaveContext.respawn[0].entranceIndex = -1; gSaveContext.respawnFlag = 0;