diff --git a/src/OpenSHC/Map/WallAndPitchState/addWallPlacementInfoForTile.cpp b/src/OpenSHC/Map/WallAndPitchState/addWallPlacementInfoForTile.cpp new file mode 100644 index 000000000..c2be908a8 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/addWallPlacementInfoForTile.cpp @@ -0,0 +1,28 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Game/GameMode2.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500D60 + void WallAndPitchState::addWallPlacementInfoForTile(int tile) + { + if (((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) + && (this->index < 100)) { + this->wallPlacementInfoArray[this->index].tile_OR_pitchID = tile; + this->wallPlacementInfoArray[this->index].height = DAT_TileMapState::instance.HeightLayer[tile]; + this->wallPlacementInfoArray[this->index].logic = DAT_TileMapState::instance.LogicLayer[tile] & 0x470b00; + this->wallPlacementInfoArray[this->index].damage = DAT_TileMapState::instance.DamageLayer[tile]; + this->index += 1; + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/confirmAndQueueDestructionCommand.cpp b/src/OpenSHC/Map/WallAndPitchState/confirmAndQueueDestructionCommand.cpp new file mode 100644 index 000000000..24536bcd4 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/confirmAndQueueDestructionCommand.cpp @@ -0,0 +1,77 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Commands::GameCommandType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x005118C0 + void WallAndPitchState::confirmAndQueueDestructionCommand() + { + if (this->countdown != 0) { + this->countdown += 1; + MACRO_CALL_MEMBER(OpenSHC::Map::WallAndPitchState_Func::updateDestructionConfirmationCountdown, this)(); + if (this->countdown != 0) { + switch (this->state) { + case 0: { + int id = this->id; + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = id; + int uid = DAT_BuildingsState::instance.buildings[id].uid; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = 100; + DAT_GameSynchronyState::instance.DAT_GameCommandParam2 = uid; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)(OpenSHC::Commands::GCT_DESTROY_BUILDING); + break; + } + case 1: { + int id = this->id; + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = 1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = id; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)((GameCommandType)75); + break; + } + case 2: { + int id = this->id; + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = 2; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = id; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)((GameCommandType)75); + break; + } + case 3: { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = this->index; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = this->counter; + DAT_GameSynchronyState::instance.DAT_GameCommandParam2 = this->flag; + DAT_GameSynchronyState::instance.DAT_GameCommandParam3 = 3; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)((GameCommandType)76); + break; + } + case 4: { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = this->index; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = this->counter; + DAT_GameSynchronyState::instance.DAT_GameCommandParam2 = this->flag; + DAT_GameSynchronyState::instance.DAT_GameCommandParam3 = 4; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)((GameCommandType)76); + break; + } + } + } + } + this->countdown = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/destroyPitch.cpp b/src/OpenSHC/Map/WallAndPitchState/destroyPitch.cpp new file mode 100644 index 000000000..4acabbce8 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/destroyPitch.cpp @@ -0,0 +1,30 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" +#include "OpenSHC/UI/MinimapViewState.func.hpp" +#include "OpenSHC/Game/Resources/ResourceType.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_MinimapViewState.hpp" +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::Resources::ResourceType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500EE0 + void WallAndPitchState::destroyPitch(int playerID, int count, int amount, int param_4) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::processResourceGain, DAT_BuildingsState::ptr)( + playerID, OpenSHC::Game::Resources::RT_PITCH, amount / 4); + for (int i = 0; i < count; i++) { + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::destroyPitchDitch, DAT_TileMapState::ptr)( + this->receivedWallPlacementInfoArray[i].tile_OR_pitchID); + } + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::triggerMinimapRedraw, DAT_MinimapViewState::ptr)(1); + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/destroyWall.cpp b/src/OpenSHC/Map/WallAndPitchState/destroyWall.cpp new file mode 100644 index 000000000..a78bf9903 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/destroyWall.cpp @@ -0,0 +1,46 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" +#include "OpenSHC/UI/MinimapViewState.func.hpp" +#include "OpenSHC/Game/Resources/ResourceType.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_MinimapViewState.hpp" +#include "OpenSHC/Globals/DAT_PathFindingState.hpp" +#include "OpenSHC/Globals/DAT_TileMapState.hpp" +#include "OpenSHC/Globals/DAT_ViewportRenderState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::Resources::ResourceType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500E20 + void WallAndPitchState::destroyWall(int playerID, int count, int amount, int param_4) + { + if (param_4 == 0) { + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::processResourceGain, + DAT_BuildingsState::ptr)(playerID, OpenSHC::Game::Resources::RT_STONE, amount); + } else { + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::processResourceGain, + DAT_BuildingsState::ptr)(playerID, OpenSHC::Game::Resources::RT_WOOD, amount); + } + for (int i = 0; i < count; i++) { + int _tile = this->receivedWallPlacementInfoArray[i].tile_OR_pitchID; + int _y = (int)DAT_ViewportRenderState::instance.tileTranslationMatrix_YComponent[_tile]; + DAT_TileMapState::instance.DamageLayer[_tile] = this->receivedWallPlacementInfoArray[i].damage; + DAT_TileMapState::instance.HeightLayer[_tile] = this->receivedWallPlacementInfoArray[i].height; + DAT_TileMapState::instance.LogicLayer[_tile] &= 0xffb8f4ff; + DAT_TileMapState::instance.LogicLayer[_tile] |= this->receivedWallPlacementInfoArray[i].logic; + int _tileDelta = _tile - DAT_ViewportRenderState::instance.translationMatrix[_y].addXgetTile; + MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::updatePathLinkagesInAllEightDirections, + DAT_PathFindingState::ptr)(_y, _tile); + MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::updateWalkAndPathLayer, + DAT_PathFindingState::ptr)(9, (uint)_tileDelta, _y); + } + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::triggerMinimapRedraw, DAT_MinimapViewState::ptr)(1); + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/placePitchDitch.cpp b/src/OpenSHC/Map/WallAndPitchState/placePitchDitch.cpp new file mode 100644 index 000000000..cc6de55ea --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/placePitchDitch.cpp @@ -0,0 +1,32 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Game/GameMode2.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500DD0 + void WallAndPitchState::placePitchDitch(int pitchID) + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + if (this->countdown == 0) { + this->countdown = 400; + this->index = 0; + this->counter = 0; + } + if (this->index < 100) { + this->wallPlacementInfoArray[this->index].tile_OR_pitchID = pitchID; + this->index += 1; + this->counter += 1; + this->countdown = 400; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp b/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp index 2cd7df980..c749f00e0 100644 --- a/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp +++ b/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/Map/WallAndPitchState.func.hpp" +#include "../WallAndPitchState.func.hpp" + #include "OpenSHC/Game/GameMode2.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -14,15 +15,14 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500C80 void WallAndPitchState::resetWallAndPitchState() { - if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER - || DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SIEGE_THAT) { - return; + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + this->state = 4; + this->countdown = 400; + this->index = 0; + this->counter = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; } - this->state = 4; - this->countdown = 400; - this->index = 0; - this->counter = 0; - DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; } } diff --git a/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp b/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp index 806f75997..53507efc7 100644 --- a/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp +++ b/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/Map/WallAndPitchState.func.hpp" +#include "../WallAndPitchState.func.hpp" + #include "OpenSHC/Game/GameMode2.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -14,15 +15,14 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500D30 void WallAndPitchState::resetWallPlacementInfo() { - if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER - || DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SIEGE_THAT) { - return; + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + this->state = 3; + this->countdown = 400; + this->index = 0; + this->counter = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; } - this->state = 3; - this->countdown = 400; - this->index = 0; - this->counter = 0; - DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; } } diff --git a/src/OpenSHC/Map/WallAndPitchState/startBuildingDestructionConfirmation.cpp b/src/OpenSHC/Map/WallAndPitchState/startBuildingDestructionConfirmation.cpp new file mode 100644 index 000000000..edf6f3adb --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/startBuildingDestructionConfirmation.cpp @@ -0,0 +1,36 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Game/GameMode2.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500C20 + void WallAndPitchState::startBuildingDestructionConfirmation(int buildingID) + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + int buildingType = DAT_BuildingsState::instance.buildings[buildingID].buildingType; + if (buildingType >= OpenSHC::Map::Buildings::BT_MANORHOUSE + && buildingType <= OpenSHC::Map::Buildings::BT_KEEPFIVE) { + this->countdown = 0; + return; + } + this->state = 0; + this->countdown = 400; + this->id = buildingID; + this->uid = DAT_BuildingsState::instance.buildings[buildingID].uid; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/startEntityDestructionConfirmation.cpp b/src/OpenSHC/Map/WallAndPitchState/startEntityDestructionConfirmation.cpp new file mode 100644 index 000000000..ee60e03b6 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/startEntityDestructionConfirmation.cpp @@ -0,0 +1,30 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Game/GameMode2.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_EntityState.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500CB0 + void WallAndPitchState::startEntityDestructionConfirmation(int entityID) + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + this->id = entityID; + this->state = 1; + this->countdown = 400; + this->uid = DAT_EntityState::instance.entityArray[entityID].uid; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/startUnitDestructionConfirmation.cpp b/src/OpenSHC/Map/WallAndPitchState/startUnitDestructionConfirmation.cpp new file mode 100644 index 000000000..bf606af15 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/startUnitDestructionConfirmation.cpp @@ -0,0 +1,30 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Game/GameMode2.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500CF0 + void WallAndPitchState::startUnitDestructionConfirmation(int unitID) + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + this->id = unitID; + this->state = 2; + this->countdown = 400; + this->uid = DAT_UnitsState::instance.units[unitID].uid; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/updateDestructionConfirmationCountdown.cpp b/src/OpenSHC/Map/WallAndPitchState/updateDestructionConfirmationCountdown.cpp new file mode 100644 index 000000000..5589d5c88 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/updateDestructionConfirmationCountdown.cpp @@ -0,0 +1,98 @@ +#include "../WallAndPitchState.func.hpp" + +#include "OpenSHC/Game/GameMode2.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_TileMapState.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500F40 + void WallAndPitchState::updateDestructionConfirmationCountdown() + { + if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) { + this->countdown = 0; + } + if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SIEGE_THAT) { + this->countdown = 0; + return; + } + if (this->countdown == 0) { + return; + } + this->countdown -= 1; + switch (this->state) { + case 0: + if (DAT_BuildingsState::instance.buildings[this->id].uid != this->uid) { + this->countdown = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + return; + } + if (DAT_BuildingsState::instance.buildings[this->id].currentHealth + != DAT_BuildingsState::instance.buildings[this->id].maxHealth) { + this->countdown = 0; + } + for (int i = 0; i != 25; i++) { + if (DAT_BuildingsState::instance.buildings[this->id].resources[i] != 0) { + this->countdown = 0; + } + } + break; + case 2: + if (DAT_UnitsState::instance.units[this->id].uid != this->uid) { + this->countdown = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + return; + } + if (DAT_UnitsState::instance.units[this->id] + .digTileX__OR__countCurrentlyManningEnginers__OR__forCowsRandomBelow300 + != 0) { + this->countdown = 0; + } + if (DAT_UnitsState::instance.units[this->id].health != DAT_UnitsState::instance.units[this->id].maxHealth) { + this->countdown = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + return; + } + break; + case 3: + if (this->index == 0) { + this->countdown = 0; + } + for (int i = 0; i < this->index; i++) { + int _tile = this->wallPlacementInfoArray[i].tile_OR_pitchID; + if ((DAT_TileMapState::instance.LogicLayer[_tile] & 0x100) == 0) { + this->countdown = 0; + } + if (DAT_TileMapState::instance.DamageLayer[_tile] != 0) { + this->countdown = 0; + } + } + break; + case 4: + for (int i = 0; i < this->index; i++) { + if (this->wallPlacementInfoArray[i].tile_OR_pitchID == 0 + || (DAT_TileMapState::instance.LogicLayer[DAT_TileMapState::instance + .pitchDitches[this->wallPlacementInfoArray[i].tile_OR_pitchID] + .tile] + & 8) + == 0) { + this->countdown = 0; + } + } + } + if (this->countdown == 0) { + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + } + +} +} diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1a294c2d8..f6e47278b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41471,25 +41471,25 @@ SHC_3BB0A8C1_0x00500B50 | 0.0% | Pending SHC_3BB0A8C1_0x00500BB0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500C20 | 0.0% | Pending +SHC_3BB0A8C1_0x00500C20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500C80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500CB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00500CB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500CF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00500CF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500D30 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500D60 | 0.0% | Pending +SHC_3BB0A8C1_0x00500D60 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500DD0 | 0.0% | Pending +SHC_3BB0A8C1_0x00500DD0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500E20 | 0.0% | Pending +SHC_3BB0A8C1_0x00500E20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500EE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00500EE0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500F40 | 0.0% | Pending +SHC_3BB0A8C1_0x00500F40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00501070 | 0.0% | Pending @@ -44191,7 +44191,7 @@ SHC_3BB0A8C1_0x005116E0 | 0.0% | Pending SHC_3BB0A8C1_0x00511850 | 0.0% | Pending -SHC_3BB0A8C1_0x005118C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005118C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005119A4 | 0.0% | Pending