diff --git a/src/OpenSHC/AI/AICState.func.hpp b/src/OpenSHC/AI/AICState.func.hpp index 0220d3d9e..42f3f8974 100644 --- a/src/OpenSHC/AI/AICState.func.hpp +++ b/src/OpenSHC/AI/AICState.func.hpp @@ -7,7 +7,6 @@ #include "OpenSHC/AI/AIUnitBehaviourType.hpp" #include "OpenSHC/AI/AIVUnitType.hpp" #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/Game/Resources/ResourceType.hpp" #include "OpenSHC/Map/Units/UnitType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -19,7 +18,6 @@ namespace AI { using OpenSHC::AI::AIUnitBehaviourType; using OpenSHC::AI::AIVUnitType; using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::Game::Resources::ResourceType; using OpenSHC::Map::Units::UnitType; using OpenSHC::WindowsHelper::Enums::BOOLEnum; @@ -122,11 +120,11 @@ namespace AI { getResourceRebuildDelay; MACRO_FUNCTION_RESOLVER( - int (AICState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004CB180, &AICState::aiFarmChoice) + int (AICState::*)(int), false, Address::SHC_3BB0A8C1_0x004CB180, &AICState::aiFarmChoice) aiFarmChoice; MACRO_FUNCTION_RESOLVER( - int (AICState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004CB1B0, &AICState::setNextFarmTypeToBuild) + int (AICState::*)(int), false, Address::SHC_3BB0A8C1_0x004CB1B0, &AICState::setNextFarmTypeToBuild) setNextFarmTypeToBuild; MACRO_FUNCTION_RESOLVER( @@ -138,7 +136,7 @@ namespace AI { aiShouldBuildWoodcutter; MACRO_FUNCTION_RESOLVER( - uint (AICState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004CB330, &AICState::aiShouldBuildQuarry) + uint (AICState::*)(int), false, Address::SHC_3BB0A8C1_0x004CB330, &AICState::aiShouldBuildQuarry) aiShouldBuildQuarry; MACRO_FUNCTION_RESOLVER( @@ -146,14 +144,14 @@ namespace AI { aiRequiresExtraOxtethers; MACRO_FUNCTION_RESOLVER( - uint (AICState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004CB4D0, &AICState::aiShouldBuildIronMine) + uint (AICState::*)(int), false, Address::SHC_3BB0A8C1_0x004CB4D0, &AICState::aiShouldBuildIronMine) aiShouldBuildIronMine; MACRO_FUNCTION_RESOLVER( - uint (AICState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004CB540, &AICState::aiShouldBuildPitchrig) + uint (AICState::*)(int), false, Address::SHC_3BB0A8C1_0x004CB540, &AICState::aiShouldBuildPitchrig) aiShouldBuildPitchrig; - MACRO_FUNCTION_RESOLVER(BOOLEnum (AICState::*)(PlayerID, MappersEnum), false, Address::SHC_3BB0A8C1_0x004CB5B0, + MACRO_FUNCTION_RESOLVER(BOOLEnum (AICState::*)(int, MappersEnum), false, Address::SHC_3BB0A8C1_0x004CB5B0, &AICState::shouldNotBeBuildingHovel) shouldNotBeBuildingHovel; @@ -784,7 +782,7 @@ namespace AI { &AICState::shouldNotBeBuildingGranary) shouldNotBeBuildingGranary; - MACRO_FUNCTION_RESOLVER(BOOLEnum (AICState::*)(PlayerID, MappersEnum), false, Address::SHC_3BB0A8C1_0x004ECA60, + MACRO_FUNCTION_RESOLVER(BOOLEnum (AICState::*)(int, MappersEnum), false, Address::SHC_3BB0A8C1_0x004ECA60, &AICState::shouldNotBeBuildingArmoury) shouldNotBeBuildingArmoury; diff --git a/src/OpenSHC/AI/AICState.hpp b/src/OpenSHC/AI/AICState.hpp index eb35578de..960c31f4d 100644 --- a/src/OpenSHC/AI/AICState.hpp +++ b/src/OpenSHC/AI/AICState.hpp @@ -14,7 +14,6 @@ #include "OpenSHC/AI/AIVUnitType.hpp" #include "OpenSHC/AI/TileDistancePair.hpp" #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/Game/Resources/ResourceType.hpp" #include "OpenSHC/Map/Units/UnitType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -28,7 +27,6 @@ namespace AI { using OpenSHC::AI::TileDistancePair; using OpenSHC::AI::AIC::AICSpecification; using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::Game::Resources::ResourceType; using OpenSHC::Map::Units::UnitType; using OpenSHC::WindowsHelper::Enums::BOOLEnum; @@ -104,23 +102,23 @@ namespace AI { int getResourceRebuildDelay(int param_1); - int aiFarmChoice(PlayerID playerID); + int aiFarmChoice(int playerID); - int setNextFarmTypeToBuild(PlayerID playerID); + int setNextFarmTypeToBuild(int playerID); BOOLEnum aiShouldBuildFarm(int playerID); BOOLEnum aiShouldBuildWoodcutter(int playerID); - uint aiShouldBuildQuarry(PlayerID playerID); + uint aiShouldBuildQuarry(int playerID); undefined4 aiRequiresExtraOxtethers(int playerID); - uint aiShouldBuildIronMine(PlayerID playerID); + uint aiShouldBuildIronMine(int playerID); - uint aiShouldBuildPitchrig(PlayerID param_1); + uint aiShouldBuildPitchrig(int playerID); - BOOLEnum shouldNotBeBuildingHovel(PlayerID playerID, MappersEnum param_2); + BOOLEnum shouldNotBeBuildingHovel(int playerID, MappersEnum param_2); BOOLEnum shouldWaitWithBuildingNegativeFearFactor(int param_1, MappersEnum param_2); @@ -438,7 +436,7 @@ namespace AI { BOOLEnum shouldNotBeBuildingGranary(int playerID, MappersEnum param_2); - BOOLEnum shouldNotBeBuildingArmoury(PlayerID playerID, MappersEnum param_2); + BOOLEnum shouldNotBeBuildingArmoury(int playerID, MappersEnum param_2); BOOLEnum shouldNotBuildKillingPits(int playerID, MappersEnum commandBuildingType); diff --git a/src/OpenSHC/AI/AIVState.func.hpp b/src/OpenSHC/AI/AIVState.func.hpp index 52040ac8d..df024a56d 100644 --- a/src/OpenSHC/AI/AIVState.func.hpp +++ b/src/OpenSHC/AI/AIVState.func.hpp @@ -6,7 +6,6 @@ #include "OpenSHC/AI/AIV/AIVBuildingType2.hpp" #include "OpenSHC/AI/AIVState.hpp" #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" namespace OpenSHC { namespace AI { @@ -15,7 +14,6 @@ namespace AI { using OpenSHC::AI::AIGridComputationResourceType; using OpenSHC::AI::AIV::AIVBuildingType2; using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::WindowsHelper::Enums::BOOLEnum; // Constructor @@ -56,18 +54,18 @@ namespace AI { rotateAIV; MACRO_FUNCTION_RESOLVER( - void (AIVState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004ED240, &AIVState::aiPlaceFlag) + void (AIVState::*)(int), false, Address::SHC_3BB0A8C1_0x004ED240, &AIVState::aiPlaceFlag) aiPlaceFlag; MACRO_FUNCTION_RESOLVER( - void (AIVState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004ED300, &AIVState::aiPlaceBrazier) + void (AIVState::*)(int), false, Address::SHC_3BB0A8C1_0x004ED300, &AIVState::aiPlaceBrazier) aiPlaceBrazier; MACRO_FUNCTION_RESOLVER(void (AIVState::*)(int, int), false, Address::SHC_3BB0A8C1_0x004ED3B0, &AIVState::incrementStructureHeatMapTile) incrementStructureHeatMapTile; - MACRO_FUNCTION_RESOLVER(BOOLEnum (AIVState::*)(PlayerID, int, int), false, Address::SHC_3BB0A8C1_0x004ED410, + MACRO_FUNCTION_RESOLVER(BOOLEnum (AIVState::*)(int, int, int), false, Address::SHC_3BB0A8C1_0x004ED410, &AIVState::aiPlaceAIVBuilding) aiPlaceAIVBuilding; @@ -83,7 +81,7 @@ namespace AI { int (AIVState::*)(), false, Address::SHC_3BB0A8C1_0x004EDD00, &AIVState::computeLargestSeparateArea) computeLargestSeparateArea; - MACRO_FUNCTION_RESOLVER(int (AIVState::*)(PlayerID, MappersEnum), false, Address::SHC_3BB0A8C1_0x004EDDF0, + MACRO_FUNCTION_RESOLVER(int (AIVState::*)(int, MappersEnum), false, Address::SHC_3BB0A8C1_0x004EDDF0, &AIVState::findSuitableFarmLocationAndPlaceFarm) findSuitableFarmLocationAndPlaceFarm; @@ -132,7 +130,7 @@ namespace AI { findSpotNearEngineersGuild; MACRO_FUNCTION_RESOLVER( - void (AIVState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004EFC30, &AIVState::aiPlaceAdditionalOxtether) + void (AIVState::*)(int), false, Address::SHC_3BB0A8C1_0x004EFC30, &AIVState::aiPlaceAdditionalOxtether) aiPlaceAdditionalOxtether; MACRO_FUNCTION_RESOLVER( @@ -147,7 +145,7 @@ namespace AI { void (AIVState::*)(int), false, Address::SHC_3BB0A8C1_0x004EFED0, &AIVState::aiPlaceQuarryAndOxtether) aiPlaceQuarryAndOxtether; - MACRO_FUNCTION_RESOLVER(BOOLEnum (AIVState::*)(PlayerID, int), false, Address::SHC_3BB0A8C1_0x004F0060, + MACRO_FUNCTION_RESOLVER(BOOLEnum (AIVState::*)(int, int), false, Address::SHC_3BB0A8C1_0x004F0060, &AIVState::executeDefaultCastleAIV) executeDefaultCastleAIV; @@ -164,7 +162,7 @@ namespace AI { tryPlaceAIVAndReturnFitPercentage; MACRO_FUNCTION_RESOLVER( - void (AIVState::*)(PlayerID), false, Address::SHC_3BB0A8C1_0x004F15C0, &AIVState::aiDecideOnNewBuildings) + void (AIVState::*)(int), false, Address::SHC_3BB0A8C1_0x004F15C0, &AIVState::aiDecideOnNewBuildings) aiDecideOnNewBuildings; MACRO_FUNCTION_RESOLVER(void (AIVState::*)(), false, Address::SHC_3BB0A8C1_0x004F1860, diff --git a/src/OpenSHC/AI/AIVState.hpp b/src/OpenSHC/AI/AIVState.hpp index 7b0ee2c74..521b22a96 100644 --- a/src/OpenSHC/AI/AIVState.hpp +++ b/src/OpenSHC/AI/AIVState.hpp @@ -14,7 +14,6 @@ #include "OpenSHC/AI/AIV/AIVBuildingType2Short.hpp" #include "OpenSHC/AI/AIV/AIVSpec.hpp" #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/Map/HeatMap.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -27,7 +26,6 @@ namespace AI { using OpenSHC::AI::AIV::AIVBuildingType2Short; using OpenSHC::AI::AIV::AIVSpec; using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::Map::HeatMap; using OpenSHC::WindowsHelper::Enums::BOOLEnum; @@ -100,13 +98,13 @@ namespace AI { void rotateAIV(int orientation); - void aiPlaceFlag(PlayerID playerID); + void aiPlaceFlag(int playerID); - void aiPlaceBrazier(PlayerID playerID); + void aiPlaceBrazier(int playerID); void incrementStructureHeatMapTile(int x, int y); - BOOLEnum aiPlaceAIVBuilding(PlayerID playerID, int step, int isPausing); + BOOLEnum aiPlaceAIVBuilding(int playerID, int step, int isPausing); void clearTheHeatmaps(); @@ -114,7 +112,7 @@ namespace AI { int computeLargestSeparateArea(); - int findSuitableFarmLocationAndPlaceFarm(PlayerID playerID, MappersEnum commandBuildingType); + int findSuitableFarmLocationAndPlaceFarm(int playerID, MappersEnum commandBuildingType); void findAppropriateWoodCutterGridLocation(int playerID); @@ -139,7 +137,7 @@ namespace AI { BOOLEnum findSpotNearEngineersGuild(int param_1); - void aiPlaceAdditionalOxtether(PlayerID playerID); + void aiPlaceAdditionalOxtether(int playerID); void aiPlacePitchrig(int playerID); @@ -147,7 +145,7 @@ namespace AI { void aiPlaceQuarryAndOxtether(int playerID); - BOOLEnum executeDefaultCastleAIV(PlayerID playerID, int param_2); + BOOLEnum executeDefaultCastleAIV(int playerID, int param_2); void recomputeHeatmaps(int initialize); @@ -155,7 +153,7 @@ namespace AI { int tryPlaceAIVAndReturnFitPercentage(int playerID, int castleID); - void aiDecideOnNewBuildings(PlayerID playerID); + void aiDecideOnNewBuildings(int playerID); void updateBuildingsStateAndUpdateAIBuildingDecisions(); }; diff --git a/src/OpenSHC/AI/AttackInfo/AttackInfoDefinedData.hpp b/src/OpenSHC/AI/AttackInfo/AttackInfoDefinedData.hpp index 124e57df4..9d2375f22 100644 --- a/src/OpenSHC/AI/AttackInfo/AttackInfoDefinedData.hpp +++ b/src/OpenSHC/AI/AttackInfo/AttackInfoDefinedData.hpp @@ -9,7 +9,6 @@ #pragma once #include "OpenSHC/AI/Tribes/AITribeTypeInt.hpp" -#include "OpenSHC/AI/Tribes/AITribeTypeShort.hpp" #include "OpenSHC/Commands/MappersEnum.hpp" namespace OpenSHC { @@ -17,40 +16,54 @@ namespace AI { namespace AttackInfo { using OpenSHC::AI::Tribes::AITribeTypeInt; - using OpenSHC::AI::Tribes::AITribeTypeShort; using OpenSHC::Commands::MappersEnum; #pragma pack(push, 1) // SIZE: 0x00000A34 typedef struct AttackInfoDefinedData { - int field0_0x0[10]; // 0x00000000 length: 40 - int field1_0x28[10]; // 0x00000028 length: 40 + int AICasDisThreshold[10]; // 0x00000000 length: 40 + int AIAttackWaveAdvanceDelay[10]; // 0x00000028 length: 40 int AttackWaveDurationPerAttacker[10]; // 0x00000050 length: 40 - int field3_0x78[10]; // 0x00000078 length: 40 - int field4_0xa0[10]; // 0x000000A0 length: 40 + int AIAttackWaveTargetDelay[10]; // 0x00000078 length: 40 + int AIReservedTroopBudget[10]; // 0x000000A0 length: 40 MappersEnum field5_0xc8[5]; // 0x000000C8 length: 20 int field6_0xdc; // 0x000000DC length: 4 int field7_0xe0; // 0x000000E0 length: 4 int field8_0xe4; // 0x000000E4 length: 4 int field9_0xe8; // 0x000000E8 length: 4 - short field10_0xec[16][2]; // 0x000000EC length: 64 - undefined1 padding_0x12c[240]; // 0x0000012C length: 240 - AITribeTypeInt field251_0x21c[20]; // 0x0000021C length: 80 - AITribeTypeInt field252_0x26c[20]; // 0x0000026C length: 80 - AITribeTypeInt field253_0x2bc[20]; // 0x000002BC length: 80 - AITribeTypeInt field254_0x30c[20]; // 0x0000030C length: 80 - AITribeTypeInt field255_0x35c[20]; // 0x0000035C length: 80 - AITribeTypeInt field256_0x3ac[20]; // 0x000003AC length: 80 - AITribeTypeInt field257_0x3fc[20]; // 0x000003FC length: 80 - undefined1 padding_0x44c[800]; // 0x0000044C length: 800 - AITribeTypeInt field1058_0x76c[20]; // 0x0000076C length: 80 - AITribeTypeInt field1059_0x7bc[20]; // 0x000007BC length: 80 - AITribeTypeShort field1060_0x80c[40]; // 0x0000080C length: 80 - undefined1 padding_0x85c[400]; // 0x0000085C length: 400 - int field1461_0x9ec[5]; // 0x000009EC length: 20 + short SiegeCrewPositionOffsets[16][2]; // 0x000000EC length: 64 + AITribeTypeInt field_0x12c[20]; // 0x0000012C length: 80 + AITribeTypeInt field_0x17c[20]; // 0x0000017C length: 80 + AITribeTypeInt field_0x1cc[20]; // 0x000001CC length: 80 + AITribeTypeInt field14_0x21c[20]; // 0x0000021C length: 80 + AITribeTypeInt field15_0x26c[20]; // 0x0000026C length: 80 + AITribeTypeInt field16_0x2bc[20]; // 0x000002BC length: 80 + AITribeTypeInt field17_0x30c[20]; // 0x0000030C length: 80 + AITribeTypeInt field18_0x35c[20]; // 0x0000035C length: 80 + AITribeTypeInt field19_0x3ac[20]; // 0x000003AC length: 80 + AITribeTypeInt field20_0x3fc[20]; // 0x000003FC length: 80 + AITribeTypeInt field_0x44c[20]; // 0x0000044C length: 80 + AITribeTypeInt field_0x49c[20]; // 0x0000049C length: 80 + AITribeTypeInt field_0x4ec[20]; // 0x000004EC length: 80 + AITribeTypeInt field_0x53c[20]; // 0x0000053C length: 80 + AITribeTypeInt field_0x58c[20]; // 0x0000058C length: 80 + AITribeTypeInt field_0x5dc[20]; // 0x000005DC length: 80 + AITribeTypeInt field_0x62c[20]; // 0x0000062C length: 80 + AITribeTypeInt field_0x67c[20]; // 0x0000067C length: 80 + AITribeTypeInt field_0x6cc[20]; // 0x000006CC length: 80 + AITribeTypeInt field_0x71c[20]; // 0x0000071C length: 80 + AITribeTypeInt field31_0x76c[20]; // 0x0000076C length: 80 + AITribeTypeInt field32_0x7bc[20]; // 0x000007BC length: 80 + AITribeTypeInt field33_0x80c[20]; // 0x0000080C length: 80 + AITribeTypeInt field_0x85c[20]; // 0x0000085C length: 80 + AITribeTypeInt field_0x8ac[20]; // 0x000008AC length: 80 + AITribeTypeInt field_0x8fc[20]; // 0x000008FC length: 80 + AITribeTypeInt field_0x94c[20]; // 0x0000094C length: 80 + AITribeTypeInt field_0x99c[20]; // 0x0000099C length: 80 + int field39_0x9ec[5]; // 0x000009EC length: 20 undefined1 padding_0xa00[12]; // 0x00000A00 length: 12 - int field1474_0xa0c; // 0x00000A0C length: 4 + int field52_0xa0c; // 0x00000A0C length: 4 undefined1 padding_0xa10[36]; // 0x00000A10 length: 36 } AttackInfoDefinedData; diff --git a/src/OpenSHC/AI/Siege/SiegeUnitCounts.hpp b/src/OpenSHC/AI/Siege/SiegeUnitCounts.hpp index e6eea5eac..fec669c47 100644 --- a/src/OpenSHC/AI/Siege/SiegeUnitCounts.hpp +++ b/src/OpenSHC/AI/Siege/SiegeUnitCounts.hpp @@ -17,23 +17,23 @@ namespace AI { typedef struct SiegeUnitCounts { int archers; // 0x00000000 length: 4 - int field1_0x4; // 0x00000004 length: 4 - int field2_0x8; // 0x00000008 length: 4 - int field3_0xc; // 0x0000000C length: 4 - int field4_0x10; // 0x00000010 length: 4 - int field5_0x14; // 0x00000014 length: 4 - int field6_0x18; // 0x00000018 length: 4 - int field7_0x1c; // 0x0000001C length: 4 - int field8_0x20; // 0x00000020 length: 4 - int field9_0x24; // 0x00000024 length: 4 - int field10_0x28; // 0x00000028 length: 4 - int field11_0x2c; // 0x0000002C length: 4 - int field12_0x30; // 0x00000030 length: 4 - int field13_0x34; // 0x00000034 length: 4 - int field14_0x38; // 0x00000038 length: 4 - int field15_0x3c; // 0x0000003C length: 4 - int field16_0x40; // 0x00000040 length: 4 - int field17_0x44; // 0x00000044 length: 4 + int crossbowmen; // 0x00000004 length: 4 + int spearmen; // 0x00000008 length: 4 + int pikemen; // 0x0000000C length: 4 + int macemen; // 0x00000010 length: 4 + int swordsmen; // 0x00000014 length: 4 + int knights; // 0x00000018 length: 4 + int laddermen; // 0x0000001C length: 4 + int engineers; // 0x00000020 length: 4 + int monks; // 0x00000024 length: 4 + int arabianArchers; // 0x00000028 length: 4 + int slaves; // 0x0000002C length: 4 + int slingers; // 0x00000030 length: 4 + int assassins; // 0x00000034 length: 4 + int horseArchers; // 0x00000038 length: 4 + int arabianSwordsmen; // 0x0000003C length: 4 + int fireThrowers; // 0x00000040 length: 4 + int fireBallistas; // 0x00000044 length: 4 int field18_0x48; // 0x00000048 length: 4 int field19_0x4c; // 0x0000004C length: 4 diff --git a/src/OpenSHC/Audio/MusicControl.hpp b/src/OpenSHC/Audio/MusicControl.hpp index 4127a272d..ee970802c 100644 --- a/src/OpenSHC/Audio/MusicControl.hpp +++ b/src/OpenSHC/Audio/MusicControl.hpp @@ -15,13 +15,13 @@ namespace Audio { // SIZE: 0x00000020 typedef struct MusicControl { - int field0_0x0; // 0x00000000 length: 4 + int musicState; // 0x00000000 length: 4 int field1_0x4; // 0x00000004 length: 4 int volumeLevel; // 0x00000008 length: 4 int musicTracker; // 0x0000000C length: 4 int troopValueLevel; // 0x00000010 length: 4 int incrementorUpTo4; // 0x00000014 length: 4 - int field6_0x18; // 0x00000018 length: 4 + int battleEndHandled; // 0x00000018 length: 4 int field7_0x1c; // 0x0000001C length: 4 } MusicControl; diff --git a/src/OpenSHC/Audio/SFX/AmbientSfx.hpp b/src/OpenSHC/Audio/SFX/AmbientSfx.hpp index a3bb0fca3..b112e5e00 100644 --- a/src/OpenSHC/Audio/SFX/AmbientSfx.hpp +++ b/src/OpenSHC/Audio/SFX/AmbientSfx.hpp @@ -16,10 +16,10 @@ namespace Audio { // SIZE: 0x00000048 typedef struct AmbientSfx { - int field0_0x0; // 0x00000000 length: 4 + int variationCount; // 0x00000000 length: 4 char* ambientWavs_0x8[8]; // 0x00000004 length: 32 int volumeUnk_0x28[8]; // 0x00000024 length: 32 - int field3_0x44; // 0x00000044 length: 4 + int variationIndex; // 0x00000044 length: 4 } AmbientSfx; #pragma pack(pop) diff --git a/src/OpenSHC/Audio/SFX/SFXDefinedData.hpp b/src/OpenSHC/Audio/SFX/SFXDefinedData.hpp index 91c38a673..9a64f2ff7 100644 --- a/src/OpenSHC/Audio/SFX/SFXDefinedData.hpp +++ b/src/OpenSHC/Audio/SFX/SFXDefinedData.hpp @@ -26,9 +26,9 @@ namespace Audio { MusicSfx Pointers[116]; // 0x00000004 length: 928 int field2_0x3a4[8][8]; // 0x000003A4 length: 256 int field3_0x4a4[8]; // 0x000004A4 length: 32 - uint field4_0x4c4[6]; // 0x000004C4 length: 24 + uint MusicDelays[6]; // 0x000004C4 length: 24 int lastUsedSpeechStream; // 0x000004DC length: 4 - int field6_0x4e0; // 0x000004E0 length: 4 + int speechStreamCursor; // 0x000004E0 length: 4 int field7_0x4e4; // 0x000004E4 length: 4 undefined1 padding_0x4e8[4]; // 0x000004E8 length: 4 diff --git a/src/OpenSHC/Audio/SoundEffectsHelperData1.hpp b/src/OpenSHC/Audio/SoundEffectsHelperData1.hpp index 1134c146c..5e4a1208c 100644 --- a/src/OpenSHC/Audio/SoundEffectsHelperData1.hpp +++ b/src/OpenSHC/Audio/SoundEffectsHelperData1.hpp @@ -26,21 +26,21 @@ namespace Audio { int DAT_NegativeCountdownMin1ToMin4Becomes0; // 0x00000000 length: 4 int DAT_Music_TotalTroopValue; // 0x00000004 length: 4 - int field2_0x8; // 0x00000008 length: 4 + int playerTroopValue; // 0x00000008 length: 4 MusicControl SEC_Section1079; // 0x0000000C length: 32 - int field4_0x2c; // 0x0000002C length: 4 + int enemyTroopValue; // 0x0000002C length: 4 undefined4 SND_SomeTimerResolution; // 0x00000030 length: 4 - undefined4 field6_0x34; // 0x00000034 length: 4 + undefined4 battleMoodState; // 0x00000034 length: 4 int DAT_NumberOfUsedSoundSamplePlaces; // 0x00000038 length: 4 int field8_0x3c; // 0x0000003C length: 4 int DAT_RandomVariationCurrentPlayingMusic_01; // 0x00000040 length: 4 int DAT_SomeSoundTime2; // 0x00000044 length: 4 int DAT_RandomVariationCurrentPlayingMusic_02; // 0x00000048 length: 4 - int field12_0x4c; // 0x0000004C length: 4 + int playerTroopValueBaseline; // 0x0000004C length: 4 int field13_0x50; // 0x00000050 length: 4 BOOLEnum field14_0x54; // 0x00000054 length: 4 BOOLEnum field15_0x58; // 0x00000058 length: 4 - int field16_0x5c; // 0x0000005C length: 4 + int musicDelayIndex; // 0x0000005C length: 4 int DAT_WinMusicVariation; // 0x00000060 length: 4 int field18_0x64; // 0x00000064 length: 4 int DAT_LossMusicVariation; // 0x00000068 length: 4 diff --git a/src/OpenSHC/Audio/Speech/SpeechDefinedData.hpp b/src/OpenSHC/Audio/Speech/SpeechDefinedData.hpp index bcfbb0842..59fb9001c 100644 --- a/src/OpenSHC/Audio/Speech/SpeechDefinedData.hpp +++ b/src/OpenSHC/Audio/Speech/SpeechDefinedData.hpp @@ -28,8 +28,8 @@ namespace Audio { undefined1 padding_0x0[4]; // 0x00000000 length: 4 char WavFileGroups[2][270][8][1000]; // 0x00000004 length: 4320000 - AmbientSfx field5_0x41eb04[10]; // 0x0041EB04 length: 720 - UnitSpeechData field6_0x41edd4[42]; // 0x0041EDD4 length: 6216 + AmbientSfx AmbientSounds[10]; // 0x0041EB04 length: 720 + UnitSpeechData UnitSpeech[42]; // 0x0041EDD4 length: 6216 SpeechEffectPath SpeechEffectPathArray[40]; // 0x0042061C length: 640 char SpeechEffectFileArray[65][1000]; // 0x0042089C length: 65000 NameSpeechPair LordNameToCall[223]; // 0x00430684 length: 446000 diff --git a/src/OpenSHC/Audio/mss/SoundSystem.hpp b/src/OpenSHC/Audio/mss/SoundSystem.hpp index 118f99fdc..bccdbd1a4 100644 --- a/src/OpenSHC/Audio/mss/SoundSystem.hpp +++ b/src/OpenSHC/Audio/mss/SoundSystem.hpp @@ -40,9 +40,9 @@ namespace Audio { int streamFileVolumeCurrentUnk_0x5c[5]; // 0x0000005C length: 20 int streamVolume[5]; // 0x00000070 length: 20 char currIdSoundFilenameUnk_0x84[200]; // 0x00000084 length: 200 - int mbr_0x14c; // 0x0000014C length: 4 + int musicVolumePercent; // 0x0000014C length: 4 int currIdSoundFileVolumeUnk_0x150; // 0x00000150 length: 4 - dword mbr_0x154; // 0x00000154 length: 4 + dword musicFadeState; // 0x00000154 length: 4 dword someSoundTime_0x158; // 0x00000158 length: 4 int streamPaused_0x15c[5]; // 0x0000015C length: 20 HSAMPLE musicSampleUnk_0x170; // 0x00000170 length: 4 @@ -65,7 +65,7 @@ namespace Audio { dword currentSoundIDVolumeUnk_0x327c; // 0x0000327C length: 4 dword mbr_0x3280; // 0x00003280 length: 4 int lastUsedSpeechStreamUnk_0x3284; // 0x00003284 length: 4 - dword mbr_0x3288; // 0x00003288 length: 4 + dword lastMusicChangeTime; // 0x00003288 length: 4 private: SoundSystem(SoundSystem const&); diff --git a/src/OpenSHC/Game/GameCore.hpp b/src/OpenSHC/Game/GameCore.hpp index e5eb9ab0c..926e93811 100644 --- a/src/OpenSHC/Game/GameCore.hpp +++ b/src/OpenSHC/Game/GameCore.hpp @@ -62,18 +62,18 @@ namespace Game { dword historicCampaignNumber; // 0x0000003C length: 4 int missionNumber1to20; // 0x00000040 length: 4 ScenarioProgress scenarioProgress; // 0x00000044 length: 16 - dword furthestMission; // 0x00000054 length: 4 + int furthestMission; // 0x00000054 length: 4 dword unlockAllHistoricalCampaigns; // 0x00000058 length: 4 dword unused1; // 0x0000005C length: 4 dword section1066; // 0x00000060 length: 4 - dword field22_0x64; // 0x00000064 length: 4 + dword gameSuspended; // 0x00000064 length: 4 GameMode2Int gameMode_2; // 0x00000068 length: 4 int field24_0x6c; // 0x0000006C length: 4 dword specialMultiplayerState; // 0x00000070 length: 4 dword field26_0x74; // 0x00000074 length: 4 int mapU4Int1; // 0x00000078 length: 4 int mapU4Int1_2; // 0x0000007C length: 4 - dword field29_0x80; // 0x00000080 length: 4 + dword viewedKeepIndex; // 0x00000080 length: 4 int battleLevel; // 0x00000084 length: 4 dword cowPoisonTrackerUnk; // 0x00000088 length: 4 int someSoundMatchTime_1; // 0x0000008C length: 4 @@ -83,15 +83,15 @@ namespace Game { dword section1127; // 0x0000009C length: 4 dword field37_0xa0; // 0x000000A0 length: 4 BOOLEnum currentlyInGameUnk_0xa4; // 0x000000A4 length: 4 - dword gameSpeedMultiplicator; // 0x000000A8 length: 4 + int gameSpeedMultiplicator; // 0x000000A8 length: 4 dword performedGameTicksThisLoop; // 0x000000AC length: 4 dword gameTicksThisLoop; // 0x000000B0 length: 4 dword gameTicksLastLoop; // 0x000000B4 length: 4 - dword averageTimePerGameTick; // 0x000000B8 length: 4 + int averageTimePerGameTick; // 0x000000B8 length: 4 dword timeBeforeRunningGameTicksThisLoop; // 0x000000BC length: 4 int countdown; // 0x000000C0 length: 4 int uniqueGameObjectTracker; // 0x000000C4 length: 4 - dword gameSpeedLevel; // 0x000000C8 length: 4 + int gameSpeedLevel; // 0x000000C8 length: 4 dword settingBubbleHelp; // 0x000000CC length: 4 BOOLEnum isTimeHalted; // 0x000000D0 length: 4 dword section1076; // 0x000000D4 length: 4 @@ -111,18 +111,18 @@ namespace Game { dword unknownAlwaysZero; // 0x0000010C length: 4 dword unknownAlwaysZero02; // 0x00000110 length: 4 int unknownAlwaysZero03; // 0x00000114 length: 4 - BOOLEnum unknownFlag_0x118; // 0x00000118 length: 4 - DWORD unknownTime_0x11c; // 0x0000011C length: 4 + BOOLEnum isNameEntryActive; // 0x00000118 length: 4 + DWORD nameEntryStartTime; // 0x0000011C length: 4 byte unused_0x120[8]; // 0x00000120 length: 8 int scribeAnimationFrameCopy; // 0x00000128 length: 4 int taxesSettingUnk; // 0x0000012C length: 4 - BOOLEnum unknownScribeRelatedFlag_0x130; // 0x00000130 length: 4 + int scribeAnimationPhase; // 0x00000130 length: 4 int scribeAnimationFrame; // 0x00000134 length: 4 int scribeAnimationFrame2; // 0x00000138 length: 4 int taxestimeUnk; // 0x0000013C length: 4 byte unused_0x140[4]; // 0x00000140 length: 4 - int field77_0x144; // 0x00000144 length: 4 - int field78_0x148; // 0x00000148 length: 4 + int popularityMessagePage; // 0x00000144 length: 4 + int popularityMessagePageCount; // 0x00000148 length: 4 dword isBinkVideoPlaying; // 0x0000014C length: 4 dword section1095; // 0x00000150 length: 4 dword newPlayerID; // 0x00000154 length: 4 @@ -144,7 +144,7 @@ namespace Game { byte unused_0x1141[1003]; // 0x00001141 length: 1003 int mapU4Int0; // 0x0000152C length: 4 int mapU4Int0_2; // 0x00001530 length: 4 - dword U2_mapType_singleOrMulti; // 0x00001534 length: 4 + int U2_mapType_singleOrMulti; // 0x00001534 length: 4 dword mapU2MiddleBytes[5]; // 0x00001538 length: 20 int mapU2PlayersCount; // 0x0000154C length: 4 int mapU4Int3_balanced; // 0x00001550 length: 4 @@ -159,7 +159,7 @@ namespace Game { int savedMapBalance; // 0x00001D8C length: 4 MapLockStateInt U3_mapLockedState; // 0x00001D90 length: 4 MapLockStateInt savedMapLocked; // 0x00001D94 length: 4 - dword field115_0x1d98; // 0x00001D98 length: 4 + dword mapLoadedForEditor; // 0x00001D98 length: 4 int mapU3EndInt; // 0x00001D9C length: 4 int savedMapEndInt2; // 0x00001DA0 length: 4 int canBeginMainLoop; // 0x00001DA4 length: 4 @@ -174,7 +174,7 @@ namespace Game { dword skirmishTrailYearReached; // 0x00001F8C length: 4 dword skirmishTrailStartDateMonths; // 0x00001F90 length: 4 BOOLEnum isSkirmishTrail; // 0x00001F94 length: 4 - dword skirmishTrailProgress; // 0x00001F98 length: 4 + int skirmishTrailProgress; // 0x00001F98 length: 4 TrailTypeInt currentTrailType; // 0x00001F9C length: 4 int furthestWarchestTrailMission; // 0x00001FA0 length: 4 int warchestTrailMonthsTakenOrChicken[50]; // 0x00001FA4 length: 200 @@ -182,7 +182,7 @@ namespace Game { dword warchestTrailYearReached; // 0x00002134 length: 4 dword warchestTrailStartDateMonths; // 0x00002138 length: 4 dword field137_0x213c; // 0x0000213C length: 4 - dword warchestTrailProgress; // 0x00002140 length: 4 + int warchestTrailProgress; // 0x00002140 length: 4 int furthestExtremeTrailMission; // 0x00002144 length: 4 int extremeTrailMonthsTakenOrChicken[50]; // 0x00002148 length: 200 int extremeTrailStartDatesInMonths[50]; // 0x00002210 length: 200 diff --git a/src/OpenSHC/Game/MissionAestheticsDefinedData.hpp b/src/OpenSHC/Game/MissionAestheticsDefinedData.hpp index 3be6a7a5f..cb99d1a56 100644 --- a/src/OpenSHC/Game/MissionAestheticsDefinedData.hpp +++ b/src/OpenSHC/Game/MissionAestheticsDefinedData.hpp @@ -19,21 +19,21 @@ namespace Game { // SIZE: 0x00005504 typedef struct MissionAestheticsDefinedData { - char** field0_0x0; // 0x00000000 length: 4 - char** field1_0x4; // 0x00000004 length: 4 - char** field2_0x8; // 0x00000008 length: 4 - char** field3_0xc; // 0x0000000C length: 4 - char** field4_0x10; // 0x00000010 length: 4 - char** field5_0x14; // 0x00000014 length: 4 - char** field6_0x18; // 0x00000018 length: 4 - char** field7_0x1c; // 0x0000001C length: 4 - char** field8_0x20; // 0x00000020 length: 4 - char** field9_0x24; // 0x00000024 length: 4 - char** field10_0x28; // 0x00000028 length: 4 - char** field11_0x2c; // 0x0000002C length: 4 - char** field12_0x30; // 0x00000030 length: 4 - char** field13_0x34; // 0x00000034 length: 4 - char** field14_0x38; // 0x00000038 length: 4 + char* RandomEvent1VideoName; // 0x00000000 length: 4 + char* RandomEvent2VideoName; // 0x00000004 length: 4 + char* RandomEvent3VideoName; // 0x00000008 length: 4 + char* RandomEvent4VideoName; // 0x0000000C length: 4 + char* RandomEvent5VideoName; // 0x00000010 length: 4 + char* RandomEvent6VideoName; // 0x00000014 length: 4 + char* RandomEvent7VideoName; // 0x00000018 length: 4 + char* RandomEvent8VideoName; // 0x0000001C length: 4 + char* RandomEvent9VideoName; // 0x00000020 length: 4 + char* RandomEvent10VideoName; // 0x00000024 length: 4 + char* RandomEvent11VideoName; // 0x00000028 length: 4 + char* RandomEvent12VideoName; // 0x0000002C length: 4 + char* RandomEvent13VideoName; // 0x00000030 length: 4 + char* RandomEvent14VideoName; // 0x00000034 length: 4 + char* RandomEvent15VideoName; // 0x00000038 length: 4 char** field15_0x3c; // 0x0000003C length: 4 char** field16_0x40; // 0x00000040 length: 4 char** field17_0x44; // 0x00000044 length: 4 @@ -78,7 +78,7 @@ namespace Game { char** field56_0xe0; // 0x000000E0 length: 4 char** field57_0xe4; // 0x000000E4 length: 4 char** field58_0xe8; // 0x000000E8 length: 4 - char** field59_0xec; // 0x000000EC length: 4 + char* field59_0xec; // 0x000000EC length: 4 char** field60_0xf0; // 0x000000F0 length: 4 char** field61_0xf4; // 0x000000F4 length: 4 char** field62_0xf8; // 0x000000F8 length: 4 @@ -1244,17 +1244,17 @@ namespace Game { int field1222_0x1328[7]; // 0x00001328 length: 28 int unknown3[914]; // 0x00001344 length: 3656 int field1224_0x218c[6]; // 0x0000218C length: 24 - int field1225_0x21a4[4]; // 0x000021A4 length: 16 + int MissionScoreByDifficulty[4]; // 0x000021A4 length: 16 int DifficultyEventMultipliers[4]; // 0x000021B4 length: 16 - int field1227_0x21c4[40]; // 0x000021C4 length: 160 - int field1228_0x2264[40]; // 0x00002264 length: 160 - int field1229_0x2304[40]; // 0x00002304 length: 160 - int field1230_0x23a4[40]; // 0x000023A4 length: 160 - byte field1231_0x2444[32][100]; // 0x00002444 length: 3200 + int EventConditionMinValue[40]; // 0x000021C4 length: 160 + int EventConditionMaxValue[40]; // 0x00002264 length: 160 + int EventConditionValueScale[40]; // 0x00002304 length: 160 + int EventConditionParamKind[40]; // 0x000023A4 length: 160 + byte EventConditionOptionValues[32][100]; // 0x00002444 length: 3200 int field1232_0x30c4[25]; // 0x000030C4 length: 100 int field1233_0x3128; // 0x00003128 length: 4 - int field1234_0x312c[174]; // 0x0000312C length: 696 - int field1235_0x33e4[25]; // 0x000033E4 length: 100 + int BuildingAvailabilityRowOrder[174]; // 0x0000312C length: 696 + int EventConditionOptionTextOffsets[25]; // 0x000033E4 length: 100 int field1236_0x3448[5]; // 0x00003448 length: 20 int field1237_0x345c[22]; // 0x0000345C length: 88 int field1238_0x34b4[40]; // 0x000034B4 length: 160 @@ -1265,9 +1265,9 @@ namespace Game { int BuildingAvailabilityStructIndexForNameArray[69]; // 0x000040CC length: 276 undefined1 padding_0x41e0[4]; // 0x000041E0 length: 4 char field1248_0x41e4[46][3][32]; // 0x000041E4 length: 4416 - int field1249_0x5324[40]; // 0x00005324 length: 160 - int field1250_0x53c4[40]; // 0x000053C4 length: 160 - int field1251_0x5464[40]; // 0x00005464 length: 160 + int TutorialStepActionCount[40]; // 0x00005324 length: 160 + int TutorialStepShowsContinueButton[40]; // 0x000053C4 length: 160 + int TutorialStepSpeechTrigger[40]; // 0x00005464 length: 160 } MissionAestheticsDefinedData; #pragma pack(pop) diff --git a/src/OpenSHC/Game/MissionDefinedData.hpp b/src/OpenSHC/Game/MissionDefinedData.hpp index c27d9f847..276d56ed5 100644 --- a/src/OpenSHC/Game/MissionDefinedData.hpp +++ b/src/OpenSHC/Game/MissionDefinedData.hpp @@ -39,26 +39,25 @@ namespace Game { char** field20_0x7c8; // 0x000007C8 length: 4 char** field21_0x7cc; // 0x000007CC length: 4 char** field22_0x7d0; // 0x000007D0 length: 4 - int field23_0x7d4[18][2]; // 0x000007D4 length: 144 - char field24_0x864[20][32]; // 0x00000864 length: 640 + int GreatestLordTextEntries[18][2]; // 0x000007D4 length: 144 + char MissionSpeechFileNames[20][32]; // 0x00000864 length: 640 int field25_0xae4[5]; // 0x00000AE4 length: 20 bool field26_0xaf8; // 0x00000AF8 length: 1 byte field27_0xaf9[3]; // 0x00000AF9 length: 3 - int field28_0xafc; // 0x00000AFC length: 4 - int field29_0xb00[20]; // 0x00000B00 length: 80 + int MissionHintCounts[21]; // 0x00000AFC length: 84 int sortColumn; // 0x00000B50 length: 4 - int field31_0xb54[26]; // 0x00000B54 length: 104 - int field32_0xbbc[50][2]; // 0x00000BBC length: 400 - int field33_0xd4c[30][2]; // 0x00000D4C length: 240 - int field34_0xe3c[30][2]; // 0x00000E3C length: 240 - int field35_0xf2c[50]; // 0x00000F2C length: 200 - int field36_0xff4[50][4]; // 0x00000FF4 length: 800 + int ScenarioDescriptionSpriteIDs[26]; // 0x00000B54 length: 104 + int SkirmishTrailMissionPositions[50][2]; // 0x00000BBC length: 400 + int WarchestTrailMissionPositions[30][2]; // 0x00000D4C length: 240 + int ExtremeTrailMissionPositions[30][2]; // 0x00000E3C length: 240 + int SkirmishTrailIconOffsets[50]; // 0x00000F2C length: 200 + int SkirmishTrailMissionRenderData[50][4]; // 0x00000FF4 length: 800 int field37_0x1314[22]; // 0x00001314 length: 88 undefined4 descending; // 0x0000136C length: 4 int field39_0x1370; // 0x00001370 length: 4 undefined1 padding_0x1374[8]; // 0x00001374 length: 8 - int field48_0x137c[50]; // 0x0000137C length: 200 - char field49_0x1444[20][32]; // 0x00001444 length: 640 + int HistoryBookEdgeSpriteIDs[50]; // 0x0000137C length: 200 + char HistoricMissionIntroSoundNames[20][32]; // 0x00001444 length: 640 } MissionDefinedData; #pragma pack(pop) diff --git a/src/OpenSHC/Game/Player/PlayerID.hpp b/src/OpenSHC/Game/Player/PlayerID.hpp deleted file mode 100644 index 535e11939..000000000 --- a/src/OpenSHC/Game/Player/PlayerID.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/** - THIS FILE IS AUTO GENERATED - Communicate changes to the dev team (e.g. via a Pull Request). - Changes get lost otherwise. - - path: 'OpenSHC/Game/Player/PlayerID.hpp' -*/ - -#pragma once - -namespace OpenSHC { -namespace Game { - namespace Player { - - typedef int PlayerID; - } // namespace Player -} // namespace Game -} // namespace OpenSHC diff --git a/src/OpenSHC/Game/RenderingDefinedData.hpp b/src/OpenSHC/Game/RenderingDefinedData.hpp index e3e72a31e..e224bf4dd 100644 --- a/src/OpenSHC/Game/RenderingDefinedData.hpp +++ b/src/OpenSHC/Game/RenderingDefinedData.hpp @@ -224,10 +224,10 @@ namespace Game { int field1024_0x54930; // 0x00054930 length: 4 int field1025_0x54934; // 0x00054934 length: 4 int field1026_0x54938; // 0x00054938 length: 4 - int field1027_0x5493c[24]; // 0x0005493C length: 96 - int field1028_0x5499c[24]; // 0x0005499C length: 96 - int field1029_0x549fc[24]; // 0x000549FC length: 96 - UnitTypeInt field1030_0x54a5c[28]; // 0x00054A5C length: 112 + int ScribeAnimationFrames1[24]; // 0x0005493C length: 96 + int ScribeAnimationFrames2[24]; // 0x0005499C length: 96 + int ScribeAnimationFrames3[24]; // 0x000549FC length: 96 + UnitTypeInt SelectionSlotUnitTypes[28]; // 0x00054A5C length: 112 char* ChimpTgxArray[70]; // 0x00054ACC length: 280 char* ChimpTgxSketchArray[80]; // 0x00054BE4 length: 320 char* ChimpHelpArray[70]; // 0x00054D24 length: 280 @@ -235,18 +235,18 @@ namespace Game { char* BuildingHelpArray[108]; // 0x00054F54 length: 432 char* BuildingBikArray[108]; // 0x00055104 length: 432 char* BuildingTgxSketchArray[108]; // 0x000552B4 length: 432 - ResourceTypeInt field1038_0x55464[8]; // 0x00055464 length: 32 - int field1039_0x55484[8]; // 0x00055484 length: 32 + ResourceTypeInt StockpileMenuResourceTypes[8]; // 0x00055464 length: 32 + int StockpileMenuResourceIcons[8]; // 0x00055484 length: 32 Position StockpileIconsPositionNudges[8]; // 0x000554A4 length: 64 - int field1041_0x554e4[8]; // 0x000554E4 length: 32 - int field1042_0x55504[8]; // 0x00055504 length: 32 - Position field1043_0x55524[8]; // 0x00055524 length: 64 + int ArmoryMenuResourceTypes[8]; // 0x000554E4 length: 32 + int ArmoryMenuResourceIcons[8]; // 0x00055504 length: 32 + Position ArmoryIconsPositionNudges[8]; // 0x00055524 length: 64 int MarketStonksOrder[20]; // 0x00055564 length: 80 ResourceTypeInt FoodTypes[8]; // 0x000555B4 length: 32 int RawResourceTypes[4]; // 0x000555D4 length: 16 int field1047_0x555e4[8]; // 0x000555E4 length: 32 Position field1048_0x55604[25]; // 0x00055604 length: 200 - int field1049_0x556cc[7][3]; // 0x000556CC length: 84 + int PopularityMessageLayout[7][3]; // 0x000556CC length: 84 int field1050_0x55720[4]; // 0x00055720 length: 16 undefined1 padding_0x55730[68]; // 0x00055730 length: 68 UnitTypeInt UnitTypeGroups[3][9]; // 0x00055774 length: 108 diff --git a/src/OpenSHC/Game/ScenarioEvents/InGameEventExtra.hpp b/src/OpenSHC/Game/ScenarioEvents/InGameEventExtra.hpp index 231a21826..4b73082b8 100644 --- a/src/OpenSHC/Game/ScenarioEvents/InGameEventExtra.hpp +++ b/src/OpenSHC/Game/ScenarioEvents/InGameEventExtra.hpp @@ -16,46 +16,7 @@ namespace Game { // SIZE: 0x000000A0 typedef struct InGameEventExtra { - int conditionOneIsTrue; // 0x00000000 length: 4 - int conditionTwoIsTrue; // 0x00000004 length: 4 - int field2_0x8; // 0x00000008 length: 4 - int field3_0xc; // 0x0000000C length: 4 - int field4_0x10; // 0x00000010 length: 4 - int field5_0x14; // 0x00000014 length: 4 - int field6_0x18; // 0x00000018 length: 4 - int field7_0x1c; // 0x0000001C length: 4 - int field8_0x20; // 0x00000020 length: 4 - int field9_0x24; // 0x00000024 length: 4 - int field10_0x28; // 0x00000028 length: 4 - int field11_0x2c; // 0x0000002C length: 4 - int field12_0x30; // 0x00000030 length: 4 - int field13_0x34; // 0x00000034 length: 4 - int field14_0x38; // 0x00000038 length: 4 - int field15_0x3c; // 0x0000003C length: 4 - int field16_0x40; // 0x00000040 length: 4 - int field17_0x44; // 0x00000044 length: 4 - int field18_0x48; // 0x00000048 length: 4 - int field19_0x4c; // 0x0000004C length: 4 - int field20_0x50; // 0x00000050 length: 4 - int field21_0x54; // 0x00000054 length: 4 - int field22_0x58; // 0x00000058 length: 4 - int field23_0x5c; // 0x0000005C length: 4 - int field24_0x60; // 0x00000060 length: 4 - int field25_0x64; // 0x00000064 length: 4 - int field26_0x68; // 0x00000068 length: 4 - int field27_0x6c; // 0x0000006C length: 4 - int field28_0x70; // 0x00000070 length: 4 - int field29_0x74; // 0x00000074 length: 4 - int field30_0x78; // 0x00000078 length: 4 - int field31_0x7c; // 0x0000007C length: 4 - int field32_0x80; // 0x00000080 length: 4 - int field33_0x84; // 0x00000084 length: 4 - int field34_0x88; // 0x00000088 length: 4 - int field35_0x8c; // 0x0000008C length: 4 - int field36_0x90; // 0x00000090 length: 4 - int field37_0x94; // 0x00000094 length: 4 - int field38_0x98; // 0x00000098 length: 4 - int field39_0x9c; // 0x0000009C length: 4 + int conditionIsTrue[40]; // 0x00000000 length: 160 } InGameEventExtra; #pragma pack(pop) diff --git a/src/OpenSHC/Game/ScenarioEvents/IngameScenarioEventItemContent.hpp b/src/OpenSHC/Game/ScenarioEvents/IngameScenarioEventItemContent.hpp index 0b50cc8b1..dd8971b91 100644 --- a/src/OpenSHC/Game/ScenarioEvents/IngameScenarioEventItemContent.hpp +++ b/src/OpenSHC/Game/ScenarioEvents/IngameScenarioEventItemContent.hpp @@ -26,8 +26,8 @@ namespace Game { byte magic; // 0x00000009 length: 1 byte repeat; // 0x0000000A length: 1 byte repeatMonths; // 0x0000000B length: 1 - ScenarioEventCondition conditions[39]; // 0x0000000C length: 156 - undefined1 padding_0xa8[44]; // 0x000000A8 length: 44 + ScenarioEventCondition conditions[40]; // 0x0000000C length: 160 + undefined1 padding_0xac[40]; // 0x000000AC length: 40 } IngameScenarioEventItemContent; #pragma pack(pop) diff --git a/src/OpenSHC/Game/Siege/SiegeGameModeRelatedSection.hpp b/src/OpenSHC/Game/Siege/SiegeGameModeRelatedSection.hpp index 208f9ff2c..42cbaa2f7 100644 --- a/src/OpenSHC/Game/Siege/SiegeGameModeRelatedSection.hpp +++ b/src/OpenSHC/Game/Siege/SiegeGameModeRelatedSection.hpp @@ -16,12 +16,7 @@ namespace Game { // SIZE: 0x0000001C typedef struct SiegeGameModeRelatedSection { - int field0_0x0; // 0x00000000 length: 4 - int field1_0x4; // 0x00000004 length: 4 - int field2_0x8; // 0x00000008 length: 4 - int field3_0xc; // 0x0000000C length: 4 - int field4_0x10; // 0x00000010 length: 4 - int field5_0x14; // 0x00000014 length: 4 + int siegeEngineCounts[6]; // 0x00000000 length: 24 int tunnelersCount; // 0x00000018 length: 4 } SiegeGameModeRelatedSection; diff --git a/src/OpenSHC/Game/Skirmish/SkirmishStatistics.hpp b/src/OpenSHC/Game/Skirmish/SkirmishStatistics.hpp index 46414bddf..f2cdb59d8 100644 --- a/src/OpenSHC/Game/Skirmish/SkirmishStatistics.hpp +++ b/src/OpenSHC/Game/Skirmish/SkirmishStatistics.hpp @@ -32,7 +32,7 @@ namespace Game { int finalWoodProduced[9]; // 0x0000056C length: 36 int finalPitchProduced[9]; // 0x00000590 length: 36 byte finalMaxBadThings[9]; // 0x000005B4 length: 9 - byte finalKilledLords[9]; // 0x000005BD length: 9 + char finalKilledLords[9]; // 0x000005BD length: 9 byte padding2[2]; // 0x000005C6 length: 2 int finalWeaponsProduced[9]; // 0x000005C8 length: 36 int finalBuidingsDestroyed[9]; // 0x000005EC length: 36 diff --git a/src/OpenSHC/Game/State/MapAndTimeState.hpp b/src/OpenSHC/Game/State/MapAndTimeState.hpp index 033245d27..3fe89d24d 100644 --- a/src/OpenSHC/Game/State/MapAndTimeState.hpp +++ b/src/OpenSHC/Game/State/MapAndTimeState.hpp @@ -18,8 +18,6 @@ #include "OpenSHC/Map/Navigation/Algorithms/XYTileObject.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" -#include "WinDef.h" - namespace OpenSHC { namespace Game { namespace State { @@ -60,7 +58,7 @@ namespace Game { int field19_0x4c; // 0x0000004C length: 4 int field20_0x50; // 0x00000050 length: 4 int field21_0x54; // 0x00000054 length: 4 - int field22_0x58[2][5]; // 0x00000058 length: 40 + int playerKeepTile[10]; // 0x00000058 length: 40 int field23_0x80; // 0x00000080 length: 4 int field24_0x84; // 0x00000084 length: 4 int field25_0x88; // 0x00000088 length: 4 @@ -71,23 +69,15 @@ namespace Game { int field30_0x9c; // 0x0000009C length: 4 int field31_0xa0; // 0x000000A0 length: 4 int field32_0xa4; // 0x000000A4 length: 4 - int field33_0xa8; // 0x000000A8 length: 4 - int field34_0xac; // 0x000000AC length: 4 - int field35_0xb0; // 0x000000B0 length: 4 - int field36_0xb4; // 0x000000B4 length: 4 - int field37_0xb8; // 0x000000B8 length: 4 - int field38_0xbc; // 0x000000BC length: 4 - int field39_0xc0; // 0x000000C0 length: 4 - int field40_0xc4; // 0x000000C4 length: 4 - int field41_0xc8; // 0x000000C8 length: 4 + int hitsDealtToPlayerArray[9]; // 0x000000A8 length: 36 int emenyHitArray[9]; // 0x000000CC length: 36 int field43_0xf0; // 0x000000F0 length: 4 int field44_0xf4; // 0x000000F4 length: 4 int multiplayerUnitSameTileLinkageTimeWindow; // 0x000000F8 length: 4 - DWORD gameOverTime; // 0x000000FC length: 4 + dword gameOverTime; // 0x000000FC length: 4 int drunkenManStatus; // 0x00000100 length: 4 undefined1 padding_0x104[144]; // 0x00000104 length: 144 - int field192_0x194; // 0x00000194 length: 4 + int syncedStateBase; // 0x00000194 length: 4 int field193_0x198; // 0x00000198 length: 4 undefined1 padding_0x19c[380]; // 0x0000019C length: 380 int cathedralRelated1; // 0x00000318 length: 4 @@ -140,7 +130,7 @@ namespace Game { int euroRecruitableCopy_index_1_b; // 0x00000D9C length: 4 int euroRecruitableCopy_index_2; // 0x00000DA0 length: 4 int euroRecruitableCopy_index_3_b; // 0x00000DA4 length: 4 - int field2257_0xda8; // 0x00000DA8 length: 4 + int euroRecruitableCopy_index_4; // 0x00000DA8 length: 4 int euroRecruitableCopy_index_6_a; // 0x00000DAC length: 4 int euroRecruitableCopy_index_1_a; // 0x00000DB0 length: 4 int euroRecruitableCopy_index_3_a_and_6_b; // 0x00000DB4 length: 4 @@ -152,7 +142,7 @@ namespace Game { short scenarioGold; // 0x00000DE8 length: 2 short editScenarioExtraOptions; // 0x00000DEA length: 2 short eventCountdownRabbitInfestation; // 0x00000DEC length: 2 - short field2269_0xdee; // 0x00000DEE length: 2 + short animalSpawnSlotCursor; // 0x00000DEE length: 2 Point4ShortXY lionLocationsXY[4]; // 0x00000DF0 length: 16 short unitLadyRelated; // 0x00000E00 length: 2 short unitJesterRelated; // 0x00000E02 length: 2 @@ -160,38 +150,7 @@ namespace Game { int populationIndex; // 0x0000231C length: 4 undefined1 padding_0x2320[816]; // 0x00002320 length: 816 int signpostsMapEdgeDataCounter; // 0x00002650 length: 4 - int field3092_0x2654; // 0x00002654 length: 4 - int field3093_0x2658; // 0x00002658 length: 4 - int field3094_0x265c; // 0x0000265C length: 4 - int field3095_0x2660; // 0x00002660 length: 4 - int field3096_0x2664; // 0x00002664 length: 4 - int field3097_0x2668; // 0x00002668 length: 4 - int field3098_0x266c; // 0x0000266C length: 4 - int field3099_0x2670; // 0x00002670 length: 4 - int field3100_0x2674; // 0x00002674 length: 4 - int field3101_0x2678; // 0x00002678 length: 4 - int field3102_0x267c; // 0x0000267C length: 4 - int field3103_0x2680; // 0x00002680 length: 4 - int field3104_0x2684; // 0x00002684 length: 4 - int field3105_0x2688; // 0x00002688 length: 4 - int field3106_0x268c; // 0x0000268C length: 4 - int field3107_0x2690; // 0x00002690 length: 4 - int field3108_0x2694; // 0x00002694 length: 4 - int field3109_0x2698; // 0x00002698 length: 4 - int field3110_0x269c; // 0x0000269C length: 4 - int field3111_0x26a0; // 0x000026A0 length: 4 - int field3112_0x26a4; // 0x000026A4 length: 4 - int field3113_0x26a8; // 0x000026A8 length: 4 - int field3114_0x26ac; // 0x000026AC length: 4 - int field3115_0x26b0; // 0x000026B0 length: 4 - int field3116_0x26b4; // 0x000026B4 length: 4 - int field3117_0x26b8; // 0x000026B8 length: 4 - int field3118_0x26bc; // 0x000026BC length: 4 - int field3119_0x26c0; // 0x000026C0 length: 4 - int field3120_0x26c4; // 0x000026C4 length: 4 - int field3121_0x26c8; // 0x000026C8 length: 4 - int field3122_0x26cc; // 0x000026CC length: 4 - int field3123_0x26d0; // 0x000026D0 length: 4 + int scenarioEventTimers[32]; // 0x00002654 length: 128 int field3124_0x26d4; // 0x000026D4 length: 4 int field3125_0x26d8; // 0x000026D8 length: 4 int field3126_0x26dc; // 0x000026DC length: 4 @@ -234,7 +193,7 @@ namespace Game { int field3163_0x2770; // 0x00002770 length: 4 int gameEventRelatedCountdown; // 0x00002774 length: 4 int unk_signpostDistance; // 0x00002778 length: 4 - int field3166_0x277c; // 0x0000277C length: 4 + int wildlifeCount; // 0x0000277C length: 4 short rabbitSpawnXY[4][2]; // 0x00002780 length: 16 int field3168_0x2790; // 0x00002790 length: 4 Point4ShortXY camelSpawnXY[4]; // 0x00002794 length: 16 @@ -244,11 +203,11 @@ namespace Game { int somePlayerID; // 0x000027B0 length: 4 short playerIsAlive[9]; // 0x000027B4 length: 18 short field3175_0x27c6; // 0x000027C6 length: 2 - int field3176_0x27c8; // 0x000027C8 length: 4 + int burningTreeCount; // 0x000027C8 length: 4 int aliveDeerCount; // 0x000027CC length: 4 int armySizeLimit; // 0x000027D0 length: 4 - short field3179_0x27d4; // 0x000027D4 length: 2 - short field3180_0x27d6; // 0x000027D6 length: 2 + short militaryCampaignStage; // 0x000027D4 length: 2 + short militaryCampaignFlags; // 0x000027D6 length: 2 short yearCopy; // 0x000027D8 length: 2 short monthCopy; // 0x000027DA length: 2 short field3183_0x27dc; // 0x000027DC length: 2 diff --git a/src/OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp b/src/OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp index b04d78d4f..f93117818 100644 --- a/src/OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp +++ b/src/OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp @@ -9,11 +9,11 @@ #pragma once // GLOBAL: STRONGHOLDCRUSADER 0x00EE0FC8 -// StructResolver::Instance::instance +// StructResolver::Instance::instance namespace OpenSHC { -MACRO_STRUCT_RESOLVER(uint, false, Address::SHC_3BB0A8C1_0x00EE0FC8) DAT_CurrentUnitSlotID; +MACRO_STRUCT_RESOLVER(int, false, Address::SHC_3BB0A8C1_0x00EE0FC8) DAT_CurrentUnitSlotID; } // namespace OpenSHC MACRO_STRUCT_INSTANCE(Address::SHC_3BB0A8C1_0x00EE0FC8); diff --git a/src/OpenSHC/IO/DecoderState.func.hpp b/src/OpenSHC/IO/DecoderState.func.hpp index dff569188..43f850c2a 100644 --- a/src/OpenSHC/IO/DecoderState.func.hpp +++ b/src/OpenSHC/IO/DecoderState.func.hpp @@ -24,7 +24,7 @@ namespace IO { int (DecoderState::*)(char*, char*), false, Address::SHC_3BB0A8C1_0x0046D200, &DecoderState::decompressRLE) decompressRLE; - MACRO_FUNCTION_RESOLVER(BOOLEnum (DecoderState::*)(int*, int*, undefined*, undefined*, int), false, + MACRO_FUNCTION_RESOLVER(BOOLEnum (DecoderState::*)(int*, int*, uchar*, uchar*, int), false, Address::SHC_3BB0A8C1_0x004724C0, &DecoderState::doImplode) doImplode; @@ -32,8 +32,8 @@ namespace IO { Address::SHC_3BB0A8C1_0x004725A0, &DecoderState::doExplode) doExplode; - MACRO_FUNCTION_RESOLVER(int (DecoderState::*)(int, undefined*, undefined*), false, - Address::SHC_3BB0A8C1_0x00473C10, &DecoderState::encodeData) + MACRO_FUNCTION_RESOLVER(int (DecoderState::*)(int, uchar*, uchar*), false, Address::SHC_3BB0A8C1_0x00473C10, + &DecoderState::encodeData) encodeData; MACRO_FUNCTION_RESOLVER( diff --git a/src/OpenSHC/IO/DecoderState.hpp b/src/OpenSHC/IO/DecoderState.hpp index 250fdaa0b..0fbca4ae6 100644 --- a/src/OpenSHC/IO/DecoderState.hpp +++ b/src/OpenSHC/IO/DecoderState.hpp @@ -41,11 +41,11 @@ namespace IO { int decompressRLE(char* param_1, char* param_2); - BOOLEnum doImplode(int* ptrHash, int* ptrSize, undefined* src, undefined* dst, int sizeUncompressed); + BOOLEnum doImplode(int* ptrHash, int* ptrSize, uchar* src, uchar* dst, int sizeUncompressed); BOOLEnum doExplode(int* hash, uchar* src, int sizeCompressed, uchar* dst, int sizeUncompressed); - int encodeData(int sizeUncompressed, undefined* src, undefined* dst); + int encodeData(int sizeUncompressed, uchar* src, uchar* dst); dword decodeData(void* source, void* destination); }; diff --git a/src/OpenSHC/IO/ResourceManager.hpp b/src/OpenSHC/IO/ResourceManager.hpp index 20b02ed07..bc5594f36 100644 --- a/src/OpenSHC/IO/ResourceManager.hpp +++ b/src/OpenSHC/IO/ResourceManager.hpp @@ -45,7 +45,7 @@ namespace IO { char loadedMapNames[500][1001]; // 0x00000BC8 length: 500500 undefined1 padding_0x7aedc[4]; // 0x0007AEDC length: 4 char resourceFileNameArray[20][1001]; // 0x0007AEE0 length: 20020 - dword mapFileTimes[500]; // 0x0007FD14 length: 2000 + int mapFileTimes[500]; // 0x0007FD14 length: 2000 byte unused_0x804e4[2006]; // 0x000804E4 length: 2006 OPENFILENAMEA_Truncated openFileNameA; // 0x00080CBA length: 76 undefined1 padding_0x80d06[2]; // 0x00080D06 length: 2 diff --git a/src/OpenSHC/Input/MouseState.hpp b/src/OpenSHC/Input/MouseState.hpp index 0ea465e24..58ba1a092 100644 --- a/src/OpenSHC/Input/MouseState.hpp +++ b/src/OpenSHC/Input/MouseState.hpp @@ -59,43 +59,43 @@ namespace Input { undefined4 hitboxXEnd; // 0x00000088 length: 4 undefined4 hitboxYEnd; // 0x0000008C length: 4 int selectionBoxMode; // 0x00000090 length: 4 - undefined4 field31_0x94; // 0x00000094 length: 4 - undefined1 padding_0x98[4]; // 0x00000098 length: 4 + undefined4 selectionBoxState; // 0x00000094 length: 4 + int savedSelectionBoxState; // 0x00000098 length: 4 int previewEnabled; // 0x0000009C length: 4 MouseXYUUStruct mouseXY[10]; // 0x000000A0 length: 160 int mouseXY8[10]; // 0x00000140 length: 40 int index; // 0x00000168 length: 4 undefined4 storedScreenSpaceX; // 0x0000016C length: 4 undefined4 storedScreenSpaceY; // 0x00000170 length: 4 - undefined4 field42_0x174; // 0x00000174 length: 4 - undefined4 field43_0x178; // 0x00000178 length: 4 - undefined4 field44_0x17c; // 0x0000017C length: 4 + undefined4 field39_0x174; // 0x00000174 length: 4 + undefined4 field40_0x178; // 0x00000178 length: 4 + undefined4 field41_0x17c; // 0x0000017C length: 4 undefined4 mouseBasedEvent; // 0x00000180 length: 4 - undefined4 field46_0x184; // 0x00000184 length: 4 - undefined4 field47_0x188; // 0x00000188 length: 4 + undefined4 field43_0x184; // 0x00000184 length: 4 + undefined4 field44_0x188; // 0x00000188 length: 4 undefined4 mapOrientationCopy1; // 0x0000018C length: 4 undefined4 mapOrientationCopy2; // 0x00000190 length: 4 undefined4 mapOrientationCopy3; // 0x00000194 length: 4 - undefined4 field51_0x198; // 0x00000198 length: 4 - undefined4 field52_0x19c; // 0x0000019C length: 4 + undefined4 field48_0x198; // 0x00000198 length: 4 + undefined4 field49_0x19c; // 0x0000019C length: 4 undefined4 currentTime1; // 0x000001A0 length: 4 undefined4 currentTime2; // 0x000001A4 length: 4 undefined4 currentTime3; // 0x000001A8 length: 4 - int field56_0x1ac; // 0x000001AC length: 4 - int field57_0x1b0; // 0x000001B0 length: 4 - undefined4 field58_0x1b4; // 0x000001B4 length: 4 - undefined4 field59_0x1b8; // 0x000001B8 length: 4 - undefined4 field60_0x1bc; // 0x000001BC length: 4 - undefined4 field61_0x1c0; // 0x000001C0 length: 4 - undefined4 field62_0x1c4; // 0x000001C4 length: 4 - undefined4 field63_0x1c8; // 0x000001C8 length: 4 + int field53_0x1ac; // 0x000001AC length: 4 + int field54_0x1b0; // 0x000001B0 length: 4 + undefined4 field55_0x1b4; // 0x000001B4 length: 4 + undefined4 field56_0x1b8; // 0x000001B8 length: 4 + undefined4 field57_0x1bc; // 0x000001BC length: 4 + undefined4 field58_0x1c0; // 0x000001C0 length: 4 + undefined4 field59_0x1c4; // 0x000001C4 length: 4 + undefined4 field60_0x1c8; // 0x000001C8 length: 4 int leftClickStartMoment; // 0x000001CC length: 4 undefined4 dragReleaseX; // 0x000001D0 length: 4 undefined4 dragReleaseY; // 0x000001D4 length: 4 int resetPending; // 0x000001D8 length: 4 - int field68_0x1dc; // 0x000001DC length: 4 + int field65_0x1dc; // 0x000001DC length: 4 int waitCursorToggle; // 0x000001E0 length: 4 - int field70_0x1e4; // 0x000001E4 length: 4 + int field67_0x1e4; // 0x000001E4 length: 4 undefined1 padding_0x1e8[8]; // 0x000001E8 length: 8 undefined4 cursorType; // 0x000001F0 length: 4 short mouseWindowX; // 0x000001F4 length: 2 diff --git a/src/OpenSHC/Map/ArcherAttackPoint.hpp b/src/OpenSHC/Map/ArcherAttackPoint.hpp new file mode 100644 index 000000000..fb092a9cf --- /dev/null +++ b/src/OpenSHC/Map/ArcherAttackPoint.hpp @@ -0,0 +1,32 @@ +/** + THIS FILE IS AUTO GENERATED + Communicate changes to the dev team (e.g. via a Pull Request). + Changes get lost otherwise. + + path: 'OpenSHC/Map/ArcherAttackPoint.hpp' +*/ + +#pragma once + +namespace OpenSHC { +namespace Map { + +#pragma pack(push, 1) + // SIZE: 0x00000020 + typedef struct ArcherAttackPoint { + + int field0_0x0; // 0x00000000 length: 4 + int field1_0x4; // 0x00000004 length: 4 + int tile; // 0x00000008 length: 4 + int lastSeenCounter; // 0x0000000C length: 4 + int tribeID; // 0x00000010 length: 4 + uint tribeUID; // 0x00000014 length: 4 + int claimCooldown; // 0x00000018 length: 4 + int field7_0x1c; // 0x0000001C length: 4 + + } ArcherAttackPoint; +#pragma pack(pop) + + static_assert_cpp98_obj(sizeof(ArcherAttackPoint) == 32, ArcherAttackPoint); +} // namespace Map +} // namespace OpenSHC diff --git a/src/OpenSHC/Map/AttackInfo.hpp b/src/OpenSHC/Map/AttackInfo.hpp index f4c2808b5..ea1782ba0 100644 --- a/src/OpenSHC/Map/AttackInfo.hpp +++ b/src/OpenSHC/Map/AttackInfo.hpp @@ -9,6 +9,7 @@ #pragma once #include "OpenSHC/AI/Siege/EngineerBuildingAndCountPair.hpp" +#include "OpenSHC/Map/ArcherAttackPoint.hpp" #include "OpenSHC/Map/AttackInfoPitchRelated.hpp" #include "OpenSHC/Map/AttackInfoSubArrayElement1.hpp" #include "OpenSHC/Map/AttackInfoSubArrayElement2.hpp" @@ -20,6 +21,7 @@ namespace OpenSHC { namespace Map { using OpenSHC::AI::Siege::EngineerBuildingAndCountPair; + using OpenSHC::Map::ArcherAttackPoint; using OpenSHC::Map::AttackInfoPitchRelated; using OpenSHC::Map::AttackInfoSubArrayElement1; using OpenSHC::Map::AttackInfoSubArrayElement2; @@ -35,14 +37,16 @@ namespace Map { int high1; // 0x00013910 length: 4 int high2; // 0x00013914 length: 4 int high3; // 0x00013918 length: 4 - AttackInfoSubArrayElement1 high2ValuesArray[1001]; // 0x0001391C length: 16016 + AttackInfoSubArrayElement1 high2ValuesArray[1000]; // 0x0001391C length: 16000 + undefined1 padding_0x1779c[16]; // 0x0001779C length: 16 int arch1; // 0x000177AC length: 4 int arch2; // 0x000177B0 length: 4 int arch3; // 0x000177B4 length: 4 - AttackInfoSubArrayElement1 arch2ValuesArray[1001]; // 0x000177B8 length: 16016 + AttackInfoSubArrayElement1 arch2ValuesArray[1000]; // 0x000177B8 length: 16000 + undefined1 padding_0x1b638[16]; // 0x0001B638 length: 16 int archerPoints; // 0x0001B648 length: 4 int archerPointsNext; // 0x0001B64C length: 4 - AttackInfoSubArrayElement3 archerPointsArray[201]; // 0x0001B650 length: 6432 + ArcherAttackPoint archerPointArray[201]; // 0x0001B650 length: 6432 int targetedBuildingTilesArray[4000]; // 0x0001CF70 length: 16000 int targetedBuildingTilesArraySize; // 0x00020DF0 length: 4 int startCon; // 0x00020DF4 length: 4 @@ -70,13 +74,13 @@ namespace Map { int attacker; // 0x00020F78 length: 4 undefined1 padding_0x20f7c[4]; // 0x00020F7C length: 4 int aiTroops; // 0x00020F80 length: 4 - int campfireAttackVectorToggle; // 0x00020F84 length: 4 + int attackVectorRecomputeThrottle; // 0x00020F84 length: 4 int biggestZone; // 0x00020F88 length: 4 int startZone; // 0x00020F8C length: 4 int unknownOne_0x20f90; // 0x00020F90 length: 4 int scaleZone; // 0x00020F94 length: 4 int attackWaveSweepActive; // 0x00020F98 length: 4 - int attackStagingFlag; // 0x00020F9C length: 4 + int attackAlarmPlayed; // 0x00020F9C length: 4 int someCounter1; // 0x00020FA0 length: 4 undefined1 padding_0x20fa4[4]; // 0x00020FA4 length: 4 short nof_fpointsArray[50][8]; // 0x00020FA8 length: 800 @@ -87,21 +91,22 @@ namespace Map { int lowTroopValueRelated; // 0x00021C3C length: 4 int size; // 0x00021C40 length: 4 int value10; // 0x00021C44 length: 4 - int attackStageDelay; // 0x00021C48 length: 4 - int moatAssignedTribeCount; // 0x00021C4C length: 4 + int reservedTroopBudget; // 0x00021C48 length: 4 + int tribesToSortCount; // 0x00021C4C length: 4 int casDis; // 0x00021C50 length: 4 - int archerAssignmentCount; // 0x00021C54 length: 4 + int attackWaveRetargetCount; // 0x00021C54 length: 4 undefined1 padding_0x21c58[16032]; // 0x00021C58 length: 16032 int zoneSize; // 0x00025AF8 length: 4 int someDistanceLimit; // 0x00025AFC length: 4 - int attackWaveStartCount; // 0x00025B00 length: 4 - int playerTotalTroopValueArray[10]; // 0x00025B04 length: 40 - int playerTotalTroopValueOfTroopsNearKeep[10]; // 0x00025B2C length: 40 - undefined1 padding_0x25b54[20476]; // 0x00025B54 length: 20476 + int pendingAttackWaveCount; // 0x00025B00 length: 4 + int playerTotalTroopValueArray[9]; // 0x00025B04 length: 36 + int field98978_0x25b28; // 0x00025B28 length: 4 + int playerTotalTroopValueOfTroopsNearKeep[9]; // 0x00025B2C length: 36 + undefined1 padding_0x25b50[20480]; // 0x00025B50 length: 20480 int someIntArray2[50]; // 0x0002AB50 length: 200 undefined1 padding_0x2ac18[1596]; // 0x0002AC18 length: 1596 - AttackInfoPitchRelated spottedPitchTiles[100]; // 0x0002B254 length: 800 - int attackInfoTick; // 0x0002B574 length: 4 + AttackInfoPitchRelated spottedEnemyTiles[100]; // 0x0002B254 length: 800 + int aiTickPhase; // 0x0002B574 length: 4 int unitsSentToKeepFlag; // 0x0002B578 length: 4 short unitIDArray_0x2b57c[1000]; // 0x0002B57C length: 2000 int unitIDIndex_0x2bd4c; // 0x0002BD4C length: 4 @@ -117,7 +122,7 @@ namespace Map { int playerID_0x2c850; // 0x0002C850 length: 4 int attackInfoTickWrapCount; // 0x0002C854 length: 4 int someArea; // 0x0002C858 length: 4 - int unknown_0x2c85c; // 0x0002C85C length: 4 + int field127541_0x2c85c; // 0x0002C85C length: 4 int lord1; // 0x0002C860 length: 4 int lord3; // 0x0002C864 length: 4 int lord2; // 0x0002C868 length: 4 @@ -144,10 +149,31 @@ namespace Map { AttackInfoSubArrayElement3 supportPointsArray[201]; // 0x00030C28 length: 6432 int tentPoints; // 0x00032548 length: 4 int tentPointsNext; // 0x0003254C length: 4 - AttackInfoSubArrayElement3 tentPointsValues[2001]; // 0x00032550 length: 64032 + AttackInfoSubArrayElement3 tentPointsValues[216]; // 0x00032550 length: 6912 + undefined1 padding_0x34050[16]; // 0x00034050 length: 16 + int unknownDistance_0x34060; // 0x00034060 length: 4 + int field127601_0x34064; // 0x00034064 length: 4 + undefined1 padding_0x34068[4]; // 0x00034068 length: 4 + int stoneValue1; // 0x0003406C length: 4 + int scaleValue1; // 0x00034070 length: 4 + int scaleValue2; // 0x00034074 length: 4 + int scaleValue3; // 0x00034078 length: 4 + AttackInfoSubArrayElement1 scaleValuesArray[1001]; // 0x0003407C length: 16016 + int townValue1; // 0x00037F0C length: 4 + int townValue22; // 0x00037F10 length: 4 + int townValue2; // 0x00037F14 length: 4 + AttackInfoSubArrayElement2 townValuesArray[1001]; // 0x00037F18 length: 16016 + int gateValue1; // 0x0003BDA8 length: 4 + int gateValue15; // 0x0003BDAC length: 4 + int gateValue2; // 0x0003BDB0 length: 4 + AttackInfoSubArrayElement1 gateValuesArray[1001]; // 0x0003BDB4 length: 16016 + int moat1; // 0x0003FC44 length: 4 + int moat2; // 0x0003FC48 length: 4 + int moat3; // 0x0003FC4C length: 4 + AttackInfoSubArrayElement1 moatValuesArray[562]; // 0x0003FC50 length: 8992 int createTribeAmount; // 0x00041F70 length: 4 - EngineerBuildingAndCountPair engineerBuildingAssignments[250]; // 0x00041F74 length: 2000 - int unknown_0x42744; // 0x00042744 length: 4 + EngineerBuildingAndCountPair engineerBuildQueue[250]; // 0x00041F74 length: 2000 + int field127625_0x42744; // 0x00042744 length: 4 int people1; // 0x00042748 length: 4 int people2; // 0x0004274C length: 4 int people3; // 0x00042750 length: 4 @@ -161,14 +187,15 @@ namespace Map { int tribeIDArraySize; // 0x000465E4 length: 4 int unknownTribeCounterRelated; // 0x000465E8 length: 4 int tribeIDArray[50]; // 0x000465EC length: 200 - int unknownIntArray_0x466d4[50]; // 0x000466B4 length: 200 + int field127657_0x466b4[50]; // 0x000466B4 length: 200 int tribeRelatedArrayValue0UpTo12[50]; // 0x0004677C length: 200 undefined1 padding_0x46844[200]; // 0x00046844 length: 200 - int unknownSignpostRelatedArray[50]; // 0x0004690C length: 200 - int unknown_0x469d4; // 0x000469D4 length: 4 + int field121392_0x4690c; // 0x0004690C length: 4 + undefined1 padding_0x46910[196]; // 0x00046910 length: 196 + int field121589_0x469d4; // 0x000469D4 length: 4 int delayedWaveAssignmentCount; // 0x000469D8 length: 4 - int unknown_0x469dc; // 0x000469DC length: 4 - int unknown_0x469e0; // 0x000469E0 length: 4 + int enemyUnitsInsideCastleCount; // 0x000469DC length: 4 + int buildingDamageEventCount; // 0x000469E0 length: 4 int knights; // 0x000469E4 length: 4 int ranged; // 0x000469E8 length: 4 undefined1 padding_0x469ec[8]; // 0x000469EC length: 8 diff --git a/src/OpenSHC/Map/AttackInfoSubElement.hpp b/src/OpenSHC/Map/AttackInfoSubElement.hpp index 068f4bb4c..a4c09abaf 100644 --- a/src/OpenSHC/Map/AttackInfoSubElement.hpp +++ b/src/OpenSHC/Map/AttackInfoSubElement.hpp @@ -23,26 +23,29 @@ namespace Map { // SIZE: 0x000177BC typedef struct AttackInfoSubElement { - int attackedPlayerID; // 0x00000000 length: 4 - int hackValue1; // 0x00000004 length: 4 - int hackValue2; // 0x00000008 length: 4 - int hackValue3; // 0x0000000C length: 4 - AttackInfoSubArrayElement2 hackValuesArray[1001]; // 0x00000010 length: 16016 - int minPathCostToKeep; // 0x00003EA0 length: 4 - int minPathCostToGate; // 0x00003EA4 length: 4 - undefined1 padding_0x3ea8[4]; // 0x00003EA8 length: 4 - int stoneValue1; // 0x00003EAC length: 4 - int scaleValue1; // 0x00003EB0 length: 4 - int scaleValue2; // 0x00003EB4 length: 4 - int scaleValue3; // 0x00003EB8 length: 4 + int currentPlayerID_OR_attackedPlayerID_OR_one; // 0x00000000 length: 4 + int hack1; // 0x00000004 length: 4 + int hack2; // 0x00000008 length: 4 + int hack3; // 0x0000000C length: 4 + int hackValuesArray[4000]; // 0x00000010 length: 16000 + int minPathCostToKeep; // 0x00003E90 length: 4 + int minPathCostToGate; // 0x00003E94 length: 4 + undefined1 padding_0x3e98[8]; // 0x00003E98 length: 8 + int someMinimumDistance; // 0x00003EA0 length: 4 + int field22_0x3ea4; // 0x00003EA4 length: 4 + int field_0x3ea8; // 0x00003EA8 length: 4 + int stone1; // 0x00003EAC length: 4 + int scale1; // 0x00003EB0 length: 4 + int scale2; // 0x00003EB4 length: 4 + int scale3; // 0x00003EB8 length: 4 AttackInfoSubArrayElement1 scaleValuesArray[1001]; // 0x00003EBC length: 16016 - int townValue1; // 0x00007D4C length: 4 - int townValue22; // 0x00007D50 length: 4 - int townValue2; // 0x00007D54 length: 4 + int town1; // 0x00007D4C length: 4 + int town2; // 0x00007D50 length: 4 + int town3; // 0x00007D54 length: 4 AttackInfoSubArrayElement2 townValuesArray[1001]; // 0x00007D58 length: 16016 - int gateValue1; // 0x0000BBE8 length: 4 - int gateValue15; // 0x0000BBEC length: 4 - int gateValue2; // 0x0000BBF0 length: 4 + int gate1; // 0x0000BBE8 length: 4 + int some1000ArrayIndex_2; // 0x0000BBEC length: 4 + int gate2; // 0x0000BBF0 length: 4 AttackInfoSubArrayElement1 gateValuesArray[1001]; // 0x0000BBF4 length: 16016 int moat1; // 0x0000FA84 length: 4 int moat2; // 0x0000FA88 length: 4 @@ -50,7 +53,7 @@ namespace Map { AttackInfoSubArrayElement1 moatValuesArray[562]; // 0x0000FA90 length: 8992 int createTribeAmount; // 0x00011DB0 length: 4 EngineerBuildingAndCountPair engineerBuildingAssignments[250]; // 0x00011DB4 length: 2000 - int unknown_0x12584; // 0x00012584 length: 4 + int field37_0x12584; // 0x00012584 length: 4 int people1; // 0x00012588 length: 4 int people2; // 0x0001258C length: 4 int people3; // 0x00012590 length: 4 @@ -66,17 +69,17 @@ namespace Map { int tribeIDArray[50]; // 0x0001642C length: 200 int unknownIntArray_0x164f4[50]; // 0x000164F4 length: 200 int tribeRelatedArrayValue0UpTo12[50]; // 0x000165BC length: 200 - undefined1 padding_0x16684[200]; // 0x00016684 length: 200 + int field71_0x16684[50]; // 0x00016684 length: 200 int unknownSignpostRelatedArray[50]; // 0x0001674C length: 200 - int unknown_0x16814; // 0x00016814 length: 4 + int field73_0x16814; // 0x00016814 length: 4 int delayedWaveAssignmentCount; // 0x00016818 length: 4 - int unknown_0x1681c; // 0x0001681C length: 4 - int unknown_0x16820; // 0x00016820 length: 4 + int field75_0x1681c; // 0x0001681C length: 4 + int field76_0x16820; // 0x00016820 length: 4 int knights; // 0x00016824 length: 4 int ranged; // 0x00016828 length: 4 undefined1 padding_0x1682c[8]; // 0x0001682C length: 8 int tilemapOffset; // 0x00016834 length: 4 - byte unknownTail[3972]; // 0x00016838 length: 3972 + undefined1 padding_0x16838[3972]; // 0x00016838 length: 3972 } AttackInfoSubElement; #pragma pack(pop) diff --git a/src/OpenSHC/Map/Buildings/Building.hpp b/src/OpenSHC/Map/Buildings/Building.hpp index c2e44eaa5..23e989cc1 100644 --- a/src/OpenSHC/Map/Buildings/Building.hpp +++ b/src/OpenSHC/Map/Buildings/Building.hpp @@ -9,6 +9,7 @@ #pragma once #include "OpenSHC/Game/Resources/ResourceTypeShort.hpp" +#include "OpenSHC/Map/Buildings/BuildingFlagSlot.hpp" #include "OpenSHC/Map/Buildings/BuildingLogicalStateShort.hpp" #include "OpenSHC/Map/Buildings/BuildingTypeShort.hpp" @@ -17,6 +18,7 @@ namespace Map { namespace Buildings { using OpenSHC::Game::Resources::ResourceTypeShort; + using OpenSHC::Map::Buildings::BuildingFlagSlot; using OpenSHC::Map::Buildings::BuildingLogicalStateShort; using OpenSHC::Map::Buildings::BuildingTypeShort; @@ -37,33 +39,33 @@ namespace Map { short spriteID2; // 0x00000022 length: 2 short unknownStockpileOrSignpostRelated; // 0x00000024 length: 2 short renderAnimation; // 0x00000026 length: 2 - int field13_0x28; // 0x00000028 length: 4 - short field14_0x2c; // 0x0000002C length: 2 + int animationCycleCount; // 0x00000028 length: 4 + short animationCycleCompleted; // 0x0000002C length: 2 short animationIncrement; // 0x0000002E length: 2 short animationActive; // 0x00000030 length: 2 undefined1 padding_0x32[2]; // 0x00000032 length: 2 int displayOwnerFlag; // 0x00000034 length: 4 - int field20_0x38; // 0x00000038 length: 4 - int field21_0x3c; // 0x0000003C length: 4 - int field22_0x40; // 0x00000040 length: 4 - int field23_0x44; // 0x00000044 length: 4 + int extraAnimationSprite1; // 0x00000038 length: 4 + int extraAnimationSprite2; // 0x0000003C length: 4 + int extraAnimationSprite3; // 0x00000040 length: 4 + int extraAnimationSprite4; // 0x00000044 length: 4 int campgroundVclock; // 0x00000048 length: 4 - int field25_0x4c; // 0x0000004C length: 4 - int field26_0x50; // 0x00000050 length: 4 - int field27_0x54; // 0x00000054 length: 4 - int field28_0x58; // 0x00000058 length: 4 - int field29_0x5c; // 0x0000005C length: 4 - int shouldRenderRoof; // 0x00000060 length: 4 - int shouldRenderSomeOverlay; // 0x00000064 length: 4 - int field32_0x68; // 0x00000068 length: 4 - int field33_0x6c; // 0x0000006C length: 4 - int field34_0x70; // 0x00000070 length: 4 - int field35_0x74; // 0x00000074 length: 4 - int field36_0x78; // 0x00000078 length: 4 - int field37_0x7c; // 0x0000007C length: 4 - int ownerFlagFrame; // 0x00000080 length: 4 - int field39_0x84; // 0x00000084 length: 4 - int field40_0x88; // 0x00000088 length: 4 + int extraAnimationFrame1; // 0x0000004C length: 4 + int extraAnimationFrame2; // 0x00000050 length: 4 + int extraAnimationFrame3; // 0x00000054 length: 4 + int animationTickCounter; // 0x00000058 length: 4 + int extraOverlayImage1; // 0x0000005C length: 4 + int extraOverlayImage2; // 0x00000060 length: 4 + int extraOverlayImage3; // 0x00000064 length: 4 + int extraOverlayImage4; // 0x00000068 length: 4 + int extraOverlayImage5; // 0x0000006C length: 4 + int extraOverlayImage6; // 0x00000070 length: 4 + int extraOverlayImage7; // 0x00000074 length: 4 + int extraOverlayImage8; // 0x00000078 length: 4 + int extraOverlayImage9; // 0x0000007C length: 4 + BuildingFlagSlot flagSlot; // 0x00000080 length: 4 + int overlayImageID; // 0x00000084 length: 4 + int extraOverlayImage10; // 0x00000088 length: 4 byte xPosition; // 0x0000008C length: 1 byte yPosition; // 0x0000008D length: 1 undefined1 padding_0x8e[2]; // 0x0000008E length: 2 @@ -78,11 +80,11 @@ namespace Map { undefined1 padding_0xa6[2]; // 0x000000A6 length: 2 uint unknownManorHouseOrStoneKeepRelated; // 0x000000A8 length: 4 int gfxOffset; // 0x000000AC length: 4 - int field62_0xb0; // 0x000000B0 length: 4 + int useOffsetGraphics; // 0x000000B0 length: 4 int gfxOffset2; // 0x000000B4 length: 4 int gfxOffset3; // 0x000000B8 length: 4 short tickRelatedVisuallyActiveIndicator; // 0x000000BC length: 2 - short field66_0xbe; // 0x000000BE length: 2 + short renderBlendStrength; // 0x000000BE length: 2 short recruitTimer; // 0x000000C0 length: 2 short field68_0xc2; // 0x000000C2 length: 2 short noRubble; // 0x000000C4 length: 2 @@ -99,8 +101,8 @@ namespace Map { ushort microX; // 0x000000E8 length: 2 ushort microY; // 0x000000EA length: 2 short terrainHeightUnk; // 0x000000EC length: 2 - ushort x; // 0x000000EE length: 2 - ushort y; // 0x000000F0 length: 2 + short x; // 0x000000EE length: 2 + short y; // 0x000000F0 length: 2 undefined1 padding_0xf2[2]; // 0x000000F2 length: 2 uint currentTilePositionAdjusted; // 0x000000F4 length: 4 uint widthOrHeight; // 0x000000F8 length: 4 @@ -181,20 +183,20 @@ namespace Map { int tunnelerCounter; // 0x0000025C length: 4 short someX; // 0x00000260 length: 2 short someY; // 0x00000262 length: 2 - short field185_0x264; // 0x00000264 length: 2 + short burningWorkerCountdown; // 0x00000264 length: 2 undefined1 padding_0x266[2]; // 0x00000266 length: 2 int oxTetherRelatedUnitUID; // 0x00000268 length: 4 short oxTetherRelatedUnitID; // 0x0000026C length: 2 undefined1 padding_0x26e[2]; // 0x0000026E length: 2 short field192_0x270; // 0x00000270 length: 2 short field193_0x272; // 0x00000272 length: 2 - short field194_0x274; // 0x00000274 length: 2 - short field195_0x276; // 0x00000276 length: 2 + short campStage; // 0x00000274 length: 2 + short campStagePrevious; // 0x00000276 length: 2 int buildingProgress; // 0x00000278 length: 4 - uint timeAlive; // 0x0000027C length: 4 + int timeAlive; // 0x0000027C length: 4 undefined1 padding_0x280[4]; // 0x00000280 length: 4 int hovelVisualStyle; // 0x00000284 length: 4 - short field203_0x288; // 0x00000288 length: 2 + short suppressDestroyRefund; // 0x00000288 length: 2 short field204_0x28a; // 0x0000028A length: 2 short flag2; // 0x0000028C length: 2 ResourceTypeShort producedItemTypeNext; // 0x0000028E length: 2 @@ -204,12 +206,12 @@ namespace Map { byte drawBridgeState1; // 0x00000294 length: 1 byte containsSiegeMangonel1OrBallista2; // 0x00000295 length: 1 bool sleeping; // 0x00000296 length: 1 - byte numberOfAnimals; // 0x00000297 length: 1 - byte field214_0x298; // 0x00000298 length: 1 - byte field215_0x299; // 0x00000299 length: 1 + char numberOfAnimals; // 0x00000297 length: 1 + byte dairyProductionStage; // 0x00000298 length: 1 + byte workerRotationIndex; // 0x00000299 length: 1 short outpostRelatedUnk4; // 0x0000029A length: 2 int ffBuildingVariation; // 0x0000029C length: 4 - undefined1 padding_0x2a0[2]; // 0x000002A0 length: 2 + short engineerUnitID; // 0x000002A0 length: 2 byte pathLinkageRelated2; // 0x000002A2 length: 1 byte gateState; // 0x000002A3 length: 1 undefined1 unknownFlag4; // 0x000002A4 length: 1 @@ -220,7 +222,7 @@ namespace Map { short flagonsOfAleOrCheeseOrReleaseDogs; // 0x000002B0 length: 2 undefined1 padding_0x2b2[2]; // 0x000002B2 length: 2 short unknownCounterTo10000_0x2b4; // 0x000002B4 length: 2 - short field232_0x2b6; // 0x000002B6 length: 2 + short field231_0x2b6; // 0x000002B6 length: 2 short gateCloseOpenTimer; // 0x000002B8 length: 2 short buildMonthOrBuildOrder; // 0x000002BA length: 2 short hasAccessToKeep; // 0x000002BC length: 2 @@ -228,15 +230,15 @@ namespace Map { short gateState2; // 0x000002C0 length: 2 undefined1 padding_0x2c2[2]; // 0x000002C2 length: 2 short cooldownTimer; // 0x000002C4 length: 2 - short field241_0x2c6; // 0x000002C6 length: 2 - short field242_0x2c8; // 0x000002C8 length: 2 + short field240_0x2c6; // 0x000002C6 length: 2 + short field241_0x2c8; // 0x000002C8 length: 2 short quarryLinkedOxTethers[3]; // 0x000002CA length: 6 short oxtetherLinkedQuarryID; // 0x000002D0 length: 2 short laddermanDataID; // 0x000002D2 length: 2 - short field246_0x2d4; // 0x000002D4 length: 2 + short field245_0x2d4; // 0x000002D4 length: 2 short idleTimerUnk; // 0x000002D6 length: 2 short unknownSiegeTentRelated01; // 0x000002D8 length: 2 - short field249_0x2da; // 0x000002DA length: 2 + short field248_0x2da; // 0x000002DA length: 2 short unknownTickRelatedValue; // 0x000002DC length: 2 ushort ifFireThenResponsiblePlayer; // 0x000002DE length: 2 short insideUnitID1; // 0x000002E0 length: 2 @@ -248,19 +250,20 @@ namespace Map { int insideUnitUID3; // 0x000002F0 length: 4 int insideUnitUID4; // 0x000002F4 length: 4 short hasUnitsOntop; // 0x000002F8 length: 2 - short field261_0x2fa; // 0x000002FA length: 2 + short tileScanCountdown; // 0x000002FA length: 2 undefined1 padding_0x2fc[2]; // 0x000002FC length: 2 short statueCommemoratingPlayerID; // 0x000002FE length: 2 short outpostRelatedUnk1; // 0x00000300 length: 2 short tribeID; // 0x00000302 length: 2 int tribeUID; // 0x00000304 length: 4 - short field268_0x308; // 0x00000308 length: 2 + short field267_0x308; // 0x00000308 length: 2 short outpostRelatedUnk05; // 0x0000030A length: 2 - short field270_0x30c; // 0x0000030C length: 2 + short spawnUnitTypeIndex; // 0x0000030C length: 2 short outpostRelatedUnk2; // 0x0000030E length: 2 short outpostRelatedUnk3; // 0x00000310 length: 2 - short field273_0x312; // 0x00000312 length: 2 - undefined1 padding_0x314[2]; // 0x00000314 length: 2 + short field272_0x312; // 0x00000312 length: 2 + byte surroundingsRevealed; // 0x00000314 length: 1 + undefined1 padding_0x315[1]; // 0x00000315 length: 1 short outpostRelatedUnk06; // 0x00000316 length: 2 short incByFourUnk; // 0x00000318 length: 2 undefined1 padding_0x31a[18]; // 0x0000031A length: 18 diff --git a/src/OpenSHC/Map/Buildings/BuildingDefinedData.hpp b/src/OpenSHC/Map/Buildings/BuildingDefinedData.hpp index b6cab4bd7..73f1bd47b 100644 --- a/src/OpenSHC/Map/Buildings/BuildingDefinedData.hpp +++ b/src/OpenSHC/Map/Buildings/BuildingDefinedData.hpp @@ -34,7 +34,7 @@ namespace Map { // SIZE: 0x0000B0F4 typedef struct BuildingDefinedData { - byte field0_0x0[52]; // 0x00000000 length: 52 + char FletchersWorkshopAnimationFrames1[52]; // 0x00000000 length: 52 NoArgCallback* BuildingUpdateFunctions[110]; // 0x00000034 length: 440 BuildingTypeShort BuildingPrioritiesWhenNoFire[32]; // 0x000001EC length: 64 BuildingTypeShort BuildingPrioritiesWhenFire[32]; // 0x0000022C length: 64 @@ -50,15 +50,15 @@ namespace Map { TruncatedInt EmployeeCountPerBuildingType[110]; // 0x000011E4 length: 440 int StorageLimitResourceTypeArray[26]; // 0x0000139C length: 104 TruncatedInt field15_0x1404[110]; // 0x00001404 length: 440 - TruncatedInt field16_0x15bc[110]; // 0x000015BC length: 440 + TruncatedInt BuildingFlag1Defaults[110]; // 0x000015BC length: 440 BOOLEnum field17_0x1774[110]; // 0x00001774 length: 440 - TruncatedInt field18_0x192c[110]; // 0x0000192C length: 440 + TruncatedInt BuildingFlag4Defaults[110]; // 0x0000192C length: 440 int BuildingTypeHasHealth[110]; // 0x00001AE4 length: 440 int BuildingIsGateHouseArray[110]; // 0x00001C9C length: 440 int BuildingIsKeepArray[110]; // 0x00001E54 length: 440 BOOLEnum IsGateOrTowerArray[110]; // 0x0000200C length: 440 BOOLEnum field23_0x21c4[110]; // 0x000021C4 length: 440 - TruncatedInt field24_0x237c[110]; // 0x0000237C length: 440 + TruncatedInt BuildingFlag2Defaults[110]; // 0x0000237C length: 440 int BuildingShowRubbleWhenDestroyed[110]; // 0x00002534 length: 440 int BuildingTypeOwnable[110]; // 0x000026EC length: 440 TruncatedInt BuildingHP[110]; // 0x000028A4 length: 440 @@ -76,142 +76,142 @@ namespace Map { short SpriteOffsets1[110][2][2]; // 0x00003A74 length: 880 int AnimAdvanceThrottles[110]; // 0x00003DE4 length: 440 int BuildingHeights[110]; // 0x00003F9C length: 440 - int field42_0x4154[110]; // 0x00004154 length: 440 + int BuildingDestroyedScoreWeight[110]; // 0x00004154 length: 440 byte field43_0x430c[312]; // 0x0000430C length: 312 byte FletcherWorkshopAnimationCycle[160]; // 0x00004444 length: 160 byte field45_0x44e4[400]; // 0x000044E4 length: 400 byte field46_0x4674[608]; // 0x00004674 length: 608 - byte field47_0x48d4[56]; // 0x000048D4 length: 56 - byte field48_0x490c[448]; // 0x0000490C length: 448 - byte field49_0x4acc[112]; // 0x00004ACC length: 112 - byte field50_0x4b3c[20]; // 0x00004B3C length: 20 - byte field51_0x4b50[24]; // 0x00004B50 length: 24 - byte field52_0x4b68[40]; // 0x00004B68 length: 40 - byte field53_0x4b90[28]; // 0x00004B90 length: 28 - byte field54_0x4bac[104]; // 0x00004BAC length: 104 - byte field55_0x4c14[396]; // 0x00004C14 length: 396 - byte field56_0x4da0[20]; // 0x00004DA0 length: 20 - byte field57_0x4db4[420]; // 0x00004DB4 length: 420 - byte field58_0x4f58[44]; // 0x00004F58 length: 44 - byte field59_0x4f84[48]; // 0x00004F84 length: 48 - byte field60_0x4fb4[36]; // 0x00004FB4 length: 36 - byte field61_0x4fd8[36]; // 0x00004FD8 length: 36 - byte field62_0x4ffc[20]; // 0x00004FFC length: 20 - byte field63_0x5010[44]; // 0x00005010 length: 44 - byte field64_0x503c[88]; // 0x0000503C length: 88 - byte field65_0x5094[44]; // 0x00005094 length: 44 - byte field66_0x50c0[12]; // 0x000050C0 length: 12 - byte field67_0x50cc[64]; // 0x000050CC length: 64 - byte field68_0x510c[56]; // 0x0000510C length: 56 - byte field69_0x5144[72]; // 0x00005144 length: 72 - byte field70_0x518c[80]; // 0x0000518C length: 80 - byte field71_0x51dc[244]; // 0x000051DC length: 244 - byte field72_0x52d0[36]; // 0x000052D0 length: 36 - byte field73_0x52f4[112]; // 0x000052F4 length: 112 - byte field74_0x5364[88]; // 0x00005364 length: 88 + char FletchersWorkshopAnimationFrames2[56]; // 0x000048D4 length: 56 + byte ArmorersWorkshopAnimationFrames1[448]; // 0x0000490C length: 448 + byte ArmorersWorkshopAnimationFrames2[112]; // 0x00004ACC length: 112 + byte ArmorersWorkshopAnimationFrames3[20]; // 0x00004B3C length: 20 + byte HuntersPostAnimationFrames1[24]; // 0x00004B50 length: 24 + char HuntersPostAnimationFrames2[40]; // 0x00004B68 length: 40 + byte HuntersPostAnimationFrames3[28]; // 0x00004B90 length: 28 + byte WoodcuttersHutAnimationFrames[104]; // 0x00004BAC length: 104 + byte BakeryAnimationFrames1[396]; // 0x00004C14 length: 396 + byte BakeryAnimationFrames2[20]; // 0x00004DA0 length: 20 + byte BreweryAnimationFrames1[420]; // 0x00004DB4 length: 420 + byte BreweryAnimationFrames2[44]; // 0x00004F58 length: 44 + byte BreweryAnimationFrames3[48]; // 0x00004F84 length: 48 + char BreweryAnimationFrames4[36]; // 0x00004FB4 length: 36 + char BreweryAnimationFrames5[36]; // 0x00004FD8 length: 36 + char BlacksmithsWorkshopAnimationFrames1[20]; // 0x00004FFC length: 20 + char BlacksmithsWorkshopAnimationFrames2[44]; // 0x00005010 length: 44 + char BlacksmithsWorkshopAnimationFrames3[88]; // 0x0000503C length: 88 + char BlacksmithsWorkshopAnimationFrames4[44]; // 0x00005094 length: 44 + char BlacksmithsWorkshopAnimationFrames5[12]; // 0x000050C0 length: 12 + char BlacksmithsWorkshopAnimationFrames6[64]; // 0x000050CC length: 64 + char BlacksmithsWorkshopAnimationFrames7[56]; // 0x0000510C length: 56 + char BlacksmithsWorkshopAnimationFrames8[72]; // 0x00005144 length: 72 + char BlacksmithsWorkshopAnimationFrames9[80]; // 0x0000518C length: 80 + char BlacksmithsWorkshopAnimationFrames10[244]; // 0x000051DC length: 244 + char BlacksmithsWorkshopAnimationFrames11[36]; // 0x000052D0 length: 36 + char BlacksmithsWorkshopAnimationFrames12[112]; // 0x000052F4 length: 112 + byte PoleturnersWorkshopAnimationFrames1[88]; // 0x00005364 length: 88 byte field75_0x53bc[200]; // 0x000053BC length: 200 - byte field76_0x5484[36]; // 0x00005484 length: 36 - byte field77_0x54a8[36]; // 0x000054A8 length: 36 + byte PoleturnersWorkshopAnimationFrames2[36]; // 0x00005484 length: 36 + char PoleturnersWorkshopAnimationFrames3[36]; // 0x000054A8 length: 36 byte field78_0x54cc[144]; // 0x000054CC length: 144 - byte field79_0x555c[72]; // 0x0000555C length: 72 - byte field80_0x55a4[28]; // 0x000055A4 length: 28 - byte field81_0x55c0[20]; // 0x000055C0 length: 20 - byte field82_0x55d4[260]; // 0x000055D4 length: 260 + byte PoleturnersWorkshopAnimationFrames4[72]; // 0x0000555C length: 72 + byte PoleturnersWorkshopAnimationFrames5[28]; // 0x000055A4 length: 28 + char SecondaryOverlayAnimationFrames[20]; // 0x000055C0 length: 20 + char BreweryAnimationFrames6[260]; // 0x000055D4 length: 260 byte AnimTannerSolitary[44]; // 0x000056D8 length: 44 byte AnimTanner[12]; // 0x00005704 length: 12 - byte AnimTanner3[28]; // 0x00005710 length: 28 - byte AnimTanner4[32]; // 0x0000572C length: 32 - byte AnimTannerSolitary2[56]; // 0x0000574C length: 56 + char AnimTanner3[28]; // 0x00005710 length: 28 + char AnimTanner4[32]; // 0x0000572C length: 32 + char AnimTannerSolitary2[56]; // 0x0000574C length: 56 byte AnimTanner2[16]; // 0x00005784 length: 16 - byte field89_0x5794[92]; // 0x00005794 length: 92 - byte field90_0x57f0[36]; // 0x000057F0 length: 36 + byte TannersWorkshopAnimationFrames1[92]; // 0x00005794 length: 92 + byte TannersWorkshopAnimationFrames2[36]; // 0x000057F0 length: 36 byte AnimTanner5[40]; // 0x00005814 length: 40 byte AnimTannerSolitary4[152]; // 0x0000583C length: 152 byte AnimTanner6[152]; // 0x000058D4 length: 152 byte AnimTanner7[172]; // 0x0000596C length: 172 - byte field95_0x5a18[52]; // 0x00005A18 length: 52 - byte field96_0x5a4c[36]; // 0x00005A4C length: 36 - byte field97_0x5a70[28]; // 0x00005A70 length: 28 - byte field98_0x5a8c[64]; // 0x00005A8C length: 64 - byte field99_0x5acc[20]; // 0x00005ACC length: 20 - byte field100_0x5ae0[24]; // 0x00005AE0 length: 24 - byte field101_0x5af8[28]; // 0x00005AF8 length: 28 - byte field102_0x5b14[56]; // 0x00005B14 length: 56 + byte TunnelAnimationFrames[52]; // 0x00005A18 length: 52 + byte CampGroundAnimationFrames[36]; // 0x00005A4C length: 36 + byte QuarryAnimationFrames1[28]; // 0x00005A70 length: 28 + byte QuarryAnimationFrames2[64]; // 0x00005A8C length: 64 + byte QuarryAnimationFrames3[20]; // 0x00005ACC length: 20 + byte QuarryAnimationFrames4[24]; // 0x00005AE0 length: 24 + byte QuarryAnimationFrames5[28]; // 0x00005AF8 length: 28 + byte QuarryAnimationFrames6[56]; // 0x00005B14 length: 56 byte SomeAnimationNumbersUnk[24]; // 0x00005B4C length: 24 - byte field104_0x5b64[32]; // 0x00005B64 length: 32 - byte field105_0x5b84[16]; // 0x00005B84 length: 16 - byte field106_0x5b94[64]; // 0x00005B94 length: 64 - byte field107_0x5bd4[112]; // 0x00005BD4 length: 112 - byte field108_0x5c44[20]; // 0x00005C44 length: 20 - byte field109_0x5c58[40]; // 0x00005C58 length: 40 - byte field110_0x5c80[60]; // 0x00005C80 length: 60 - byte field111_0x5cbc[72]; // 0x00005CBC length: 72 - byte field112_0x5d04[24]; // 0x00005D04 length: 24 - byte field113_0x5d1c[64]; // 0x00005D1C length: 64 - byte field114_0x5d5c[16]; // 0x00005D5C length: 16 - byte field115_0x5d6c[376]; // 0x00005D6C length: 376 - byte field116_0x5ee4[264]; // 0x00005EE4 length: 264 - byte field117_0x5fec[304]; // 0x00005FEC length: 304 - byte field118_0x611c[384]; // 0x0000611C length: 384 - byte field119_0x629c[88]; // 0x0000629C length: 88 - byte field120_0x62f4[80]; // 0x000062F4 length: 80 - byte field121_0x6344[472]; // 0x00006344 length: 472 - byte field122_0x651c[112]; // 0x0000651C length: 112 - byte field123_0x658c[104]; // 0x0000658C length: 104 - byte field124_0x65f4[184]; // 0x000065F4 length: 184 - byte field125_0x66ac[24]; // 0x000066AC length: 24 - byte field126_0x66c4[12]; // 0x000066C4 length: 12 - byte field127_0x66d0[60]; // 0x000066D0 length: 60 - byte field128_0x670c[452]; // 0x0000670C length: 452 - byte field129_0x68d0[36]; // 0x000068D0 length: 36 - byte field130_0x68f4[84]; // 0x000068F4 length: 84 - byte field131_0x6948[52]; // 0x00006948 length: 52 - byte field132_0x697c[56]; // 0x0000697C length: 56 - byte field133_0x69b4[104]; // 0x000069B4 length: 104 - byte field134_0x6a1c[16]; // 0x00006A1C length: 16 - byte field135_0x6a2c[16]; // 0x00006A2C length: 16 - byte field136_0x6a3c[16]; // 0x00006A3C length: 16 - byte field137_0x6a4c[136]; // 0x00006A4C length: 136 - byte field138_0x6ad4[16]; // 0x00006AD4 length: 16 - byte field139_0x6ae4[32]; // 0x00006AE4 length: 32 - byte field140_0x6b04[36]; // 0x00006B04 length: 36 - byte field141_0x6b28[28]; // 0x00006B28 length: 28 - byte field142_0x6b44[32]; // 0x00006B44 length: 32 - byte field143_0x6b64[264]; // 0x00006B64 length: 264 - byte field144_0x6c6c[664]; // 0x00006C6C length: 664 - byte field145_0x6f04[448]; // 0x00006F04 length: 448 - byte field146_0x70c4[152]; // 0x000070C4 length: 152 - byte field147_0x715c[644]; // 0x0000715C length: 644 - byte field148_0x73e0[52]; // 0x000073E0 length: 52 - byte field149_0x7414[80]; // 0x00007414 length: 80 - byte field150_0x7464[48]; // 0x00007464 length: 48 - byte field151_0x7494[48]; // 0x00007494 length: 48 - byte field152_0x74c4[48]; // 0x000074C4 length: 48 - byte field153_0x74f4[48]; // 0x000074F4 length: 48 - byte field154_0x7524[48]; // 0x00007524 length: 48 - byte field155_0x7554[48]; // 0x00007554 length: 48 - byte field156_0x7584[40]; // 0x00007584 length: 40 - byte field157_0x75ac[80]; // 0x000075AC length: 80 - byte field158_0x75fc[40]; // 0x000075FC length: 40 - byte field159_0x7624[72]; // 0x00007624 length: 72 - byte field160_0x766c[80]; // 0x0000766C length: 80 - byte field161_0x76bc[172]; // 0x000076BC length: 172 - byte field162_0x7768[36]; // 0x00007768 length: 36 - byte field163_0x778c[88]; // 0x0000778C length: 88 - byte field164_0x77e4[160]; // 0x000077E4 length: 160 - byte field165_0x7884[200]; // 0x00007884 length: 200 - byte field166_0x794c[40]; // 0x0000794C length: 40 - byte field167_0x7974[80]; // 0x00007974 length: 80 - byte field168_0x79c4[80]; // 0x000079C4 length: 80 - byte field169_0x7a14[344]; // 0x00007A14 length: 344 + byte QuarryAnimationFrames7[32]; // 0x00005B64 length: 32 + byte QuarryAnimationFrames8[16]; // 0x00005B84 length: 16 + byte QuarryAnimationFrames9[64]; // 0x00005B94 length: 64 + byte QuarryAnimationFrames10[112]; // 0x00005BD4 length: 112 + byte QuarryAnimationFrames11[20]; // 0x00005C44 length: 20 + byte QuarryAnimationFrames12[40]; // 0x00005C58 length: 40 + byte QuarryAnimationFrames13[60]; // 0x00005C80 length: 60 + byte QuarryAnimationFrames14[72]; // 0x00005CBC length: 72 + byte QuarryAnimationFrames15[24]; // 0x00005D04 length: 24 + byte QuarryAnimationFrames16[64]; // 0x00005D1C length: 64 + byte QuarryAnimationFrames17[16]; // 0x00005D5C length: 16 + byte QuarryAnimationFrames18[376]; // 0x00005D6C length: 376 + byte QuarryAnimationFrames19[264]; // 0x00005EE4 length: 264 + byte QuarryAnimationFrames20[304]; // 0x00005FEC length: 304 + byte QuarryAnimationFrames21[384]; // 0x0000611C length: 384 + byte IronMineAnimationFrames1[88]; // 0x0000629C length: 88 + byte IronMineAnimationFrames2[80]; // 0x000062F4 length: 80 + byte IronMineAnimationFrames3[472]; // 0x00006344 length: 472 + byte IronMineAnimationFrames4[112]; // 0x0000651C length: 112 + byte IronMineAnimationFrames5[104]; // 0x0000658C length: 104 + byte IronMineAnimationFrames6[184]; // 0x000065F4 length: 184 + byte IronMineAnimationFrames7[24]; // 0x000066AC length: 24 + byte IronMineAnimationFrames8[12]; // 0x000066C4 length: 12 + byte IronMineAnimationFrames9[60]; // 0x000066D0 length: 60 + byte IronMineAnimationFrames10[452]; // 0x0000670C length: 452 + byte IronMineAnimationFrames11[36]; // 0x000068D0 length: 36 + byte IronMineAnimationFrames12[84]; // 0x000068F4 length: 84 + char PitchRigAnimationFrames1[52]; // 0x00006948 length: 52 + byte PitchRigAnimationFrames2[56]; // 0x0000697C length: 56 + byte PitchRigAnimationFrames3[104]; // 0x000069B4 length: 104 + char MillAnimationFrames1[16]; // 0x00006A1C length: 16 + byte MillAnimationFrames2[16]; // 0x00006A2C length: 16 + byte MillAnimationFrames3[16]; // 0x00006A3C length: 16 + byte MillAnimationFrames4[136]; // 0x00006A4C length: 136 + byte MillAnimationFrames5[16]; // 0x00006AD4 length: 16 + byte DrawBridgeAnimationFrames1[32]; // 0x00006AE4 length: 32 + byte DrawBridgeAnimationFrames2[36]; // 0x00006B04 length: 36 + byte GateHouseLargeAnimationFrames[28]; // 0x00006B28 length: 28 + byte GateHouseOverlayAnimationFrames[32]; // 0x00006B44 length: 32 + byte DairyFarmAnimationFrames1[264]; // 0x00006B64 length: 264 + byte DairyFarmAnimationFrames2[664]; // 0x00006C6C length: 664 + byte DairyFarmAnimationFrames3[448]; // 0x00006F04 length: 448 + byte DairyFarmAnimationFrames4[152]; // 0x000070C4 length: 152 + char StablesAnimationFrames[644]; // 0x0000715C length: 644 + byte OilSmelterAnimationFrames1[52]; // 0x000073E0 length: 52 + byte OilSmelterAnimationFrames2[80]; // 0x00007414 length: 80 + byte OilSmelterAnimationFrames3[48]; // 0x00007464 length: 48 + byte OilSmelterAnimationFrames4[48]; // 0x00007494 length: 48 + byte OilSmelterAnimationFrames5[48]; // 0x000074C4 length: 48 + byte OilSmelterAnimationFrames6[48]; // 0x000074F4 length: 48 + byte OilSmelterAnimationFrames7[48]; // 0x00007524 length: 48 + byte OilSmelterAnimationFrames8[48]; // 0x00007554 length: 48 + byte OilSmelterAnimationFrames9[40]; // 0x00007584 length: 40 + byte OilSmelterAnimationFrames10[80]; // 0x000075AC length: 80 + byte BadBuildingGallowsAnimationFrames[40]; // 0x000075FC length: 40 + byte BadBuildingStocksAnimationFrames[72]; // 0x00007624 length: 72 + byte BadBuildingDungeonAnimationFrames[80]; // 0x0000766C length: 80 + byte BadBuildingDunkingStoolAnimationFrames[172]; // 0x000076BC length: 172 + byte BadBuildingGibbetAnimationFrames[36]; // 0x00007768 length: 36 + byte BadBuildingBurningStakeAnimationFrames[88]; // 0x0000778C length: 88 + byte BadBuildingStretchingRackAnimationFrames[160]; // 0x000077E4 length: 160 + byte BadBuildingChoppingBlockAnimationFrames[200]; // 0x00007884 length: 200 + byte DogCageAnimationFrames[40]; // 0x0000794C length: 40 + byte GoodBuildingMaypoleAnimationFrames1[80]; // 0x00007974 length: 80 + byte GoodBuildingMaypoleAnimationFrames2[80]; // 0x000079C4 length: 80 + byte GoodBuildingDancingBearAnimationFrames[344]; // 0x00007A14 length: 344 byte AnimMarketPlace[104]; // 0x00007B6C length: 104 - byte field171_0x7bd4[104]; // 0x00007BD4 length: 104 - byte field172_0x7c3c[88]; // 0x00007C3C length: 88 - byte field173_0x7c94[136]; // 0x00007C94 length: 136 - byte field174_0x7d1c[140]; // 0x00007D1C length: 140 - byte field175_0x7da8[36]; // 0x00007DA8 length: 36 - byte field176_0x7dcc[80]; // 0x00007DCC length: 80 - byte field177_0x7e1c[52]; // 0x00007E1C length: 52 + byte ApothecaryAnimationFrames[104]; // 0x00007BD4 length: 104 + byte InnAnimationFrames1[88]; // 0x00007C3C length: 88 + byte InnAnimationFrames2[136]; // 0x00007C94 length: 136 + byte InnAnimationFrames3[140]; // 0x00007D1C length: 140 + byte InnAnimationFrames4[36]; // 0x00007DA8 length: 36 + byte InnAnimationFrames5[80]; // 0x00007DCC length: 80 + char SharedOverlayAnimationFrames[52]; // 0x00007E1C length: 52 int BuildingAccessibleTilesCountForOneLarger[15]; // 0x00007E50 length: 60 XYPair field179_0x7e8c[8]; // 0x00007E8C length: 64 XYPair field180_0x7ecc[12]; // 0x00007ECC length: 96 @@ -265,8 +265,8 @@ namespace Map { XYPairShort EngineersParagroundOffsets[25]; // 0x00009FA4 length: 100 undefined1 padding_0xa008[4]; // 0x0000A008 length: 4 XYPairShort field412_0xa00c[16]; // 0x0000A00C length: 64 - int field413_0xa04c[16][13]; // 0x0000A04C length: 832 - int field414_0xa38c[4]; // 0x0000A38C length: 16 + int SpawnUnitProperties[16][13]; // 0x0000A04C length: 832 + int DrawBridgeAnimationFrames[4]; // 0x0000A38C length: 16 int field415_0xa39c[52]; // 0x0000A39C length: 208 int field416_0xa46c[52]; // 0x0000A46C length: 208 int field417_0xa53c[26]; // 0x0000A53C length: 104 diff --git a/src/OpenSHC/Map/Buildings/BuildingFlagSlot.hpp b/src/OpenSHC/Map/Buildings/BuildingFlagSlot.hpp new file mode 100644 index 000000000..1ac48eafe --- /dev/null +++ b/src/OpenSHC/Map/Buildings/BuildingFlagSlot.hpp @@ -0,0 +1,27 @@ +/** + THIS FILE IS AUTO GENERATED + Communicate changes to the dev team (e.g. via a Pull Request). + Changes get lost otherwise. + + path: 'OpenSHC/Map/Buildings/BuildingFlagSlot.hpp' +*/ + +#pragma once + +namespace OpenSHC { +namespace Map { + namespace Buildings { + +#pragma pack(push, 1) + // SIZE: 0x00000004 + typedef struct BuildingFlagSlot { + + int overlayImage; // 0x00000000 length: 4 + + } BuildingFlagSlot; +#pragma pack(pop) + + static_assert_cpp98_obj(sizeof(BuildingFlagSlot) == 4, BuildingFlagSlot); + } // namespace Buildings +} // namespace Map +} // namespace OpenSHC diff --git a/src/OpenSHC/Map/Buildings/BuildingsState.func.hpp b/src/OpenSHC/Map/Buildings/BuildingsState.func.hpp index 8ad25410a..4b86673b5 100644 --- a/src/OpenSHC/Map/Buildings/BuildingsState.func.hpp +++ b/src/OpenSHC/Map/Buildings/BuildingsState.func.hpp @@ -3,7 +3,6 @@ */ #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/Game/Resources/ResourceType.hpp" #include "OpenSHC/IO/PackagedFileMagicNum.hpp" #include "OpenSHC/Map/Buildings/BuildingType.hpp" @@ -16,7 +15,6 @@ namespace Map { namespace BuildingsState_Func { using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::Game::Resources::ResourceType; using OpenSHC::IO::PackagedFileMagicNum; using OpenSHC::Map::Buildings::BuildingType; @@ -89,12 +87,12 @@ namespace Map { &BuildingsState::getEmptyBuildingCount) getEmptyBuildingCount; - MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(PlayerID, BuildingType, int), false, + MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(int, BuildingType, int), false, Address::SHC_3BB0A8C1_0x0040A9B0, &BuildingsState::countBuildingsForPlayer) countBuildingsForPlayer; - MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(PlayerID, int), false, Address::SHC_3BB0A8C1_0x0040AA10, - &BuildingsState::countFarms) + MACRO_FUNCTION_RESOLVER( + int (BuildingsState::*)(int, int), false, Address::SHC_3BB0A8C1_0x0040AA10, &BuildingsState::countFarms) countFarms; MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(int, BuildingType), false, Address::SHC_3BB0A8C1_0x0040AA80, @@ -105,7 +103,7 @@ namespace Map { &BuildingsState::findFirstBuildingIDForPlayerAndType) findFirstBuildingIDForPlayerAndType; - MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(PlayerID, BuildingType, int), false, + MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(int, BuildingType, int), false, Address::SHC_3BB0A8C1_0x0040AB30, &BuildingsState::findNextBuildingForPlayerAndType) findNextBuildingForPlayerAndType; @@ -561,7 +559,7 @@ namespace Map { Address::SHC_3BB0A8C1_0x0041B940, &BuildingsState::hasBuildingAsNeighbour) hasBuildingAsNeighbour; - MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(undefined4, int, int, int, BuildingType, int), false, + MACRO_FUNCTION_RESOLVER(int (BuildingsState::*)(int, int, int, int, BuildingType, int), false, Address::SHC_3BB0A8C1_0x0041BA00, &BuildingsState::findParticularBuilding) findParticularBuilding; diff --git a/src/OpenSHC/Map/Buildings/BuildingsState.hpp b/src/OpenSHC/Map/Buildings/BuildingsState.hpp index b2c66667e..15e419bea 100644 --- a/src/OpenSHC/Map/Buildings/BuildingsState.hpp +++ b/src/OpenSHC/Map/Buildings/BuildingsState.hpp @@ -9,7 +9,6 @@ #pragma once #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/Game/Resources/ResourceType.hpp" #include "OpenSHC/IO/PackagedFileMagicNum.hpp" #include "OpenSHC/Map/Buildings/Building.hpp" @@ -23,7 +22,6 @@ namespace Map { namespace Buildings { using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::Game::Resources::ResourceType; using OpenSHC::IO::PackagedFileMagicNum; using OpenSHC::Map::Buildings::Building; @@ -65,8 +63,8 @@ namespace Map { undefined4 field25_0x18e050; // 0x0018E050 length: 4 char* DAT_CurrentlyPlayingBuildingBik; // 0x0018E054 length: 4 BOOLEnum DAT_IsBuildingOrPeasantBinkPlaying; // 0x0018E058 length: 4 - int field28_0x18e05c; // 0x0018E05C length: 4 - undefined4 field29_0x18e060; // 0x0018E060 length: 4 + int selectedBuildingID; // 0x0018E05C length: 4 + undefined4 selectedBuildingUID; // 0x0018E060 length: 4 BOOLEnum isFirstTickInLoop; // 0x0018E064 length: 4 int DAT_DraggedTileCountVerified; // 0x0018E068 length: 4 int INT_SelectedBuildingStoneWoodCost; // 0x0018E06C length: 4 @@ -118,15 +116,15 @@ namespace Map { int getEmptyBuildingCount(int playerID, BuildingType buildingType); - int countBuildingsForPlayer(PlayerID playerID, BuildingType buildingType, int includeBool); + int countBuildingsForPlayer(int playerID, BuildingType buildingType, int includeBool); - int countFarms(PlayerID playerID, int param_2); + int countFarms(int playerID, int param_2); int findFirstBuildingOfType(int playerID, BuildingType buildingType); int findFirstBuildingIDForPlayerAndType(int playerID, BuildingType buildingType); - int findNextBuildingForPlayerAndType(PlayerID playerID, BuildingType buildingType, int buildingID); + int findNextBuildingForPlayerAndType(int playerID, BuildingType buildingType, int buildingID); int findNextBuildingIDForOwnerAndType(int param_1, int param_2, int param_3); @@ -361,7 +359,7 @@ namespace Map { BOOLEnum hasBuildingAsNeighbour(int playerID, int x, int y, int size, BuildingType type); int findParticularBuilding( - undefined4 param_1, int x, int y, int buildingSize, BuildingType buildingType, int buildingID); + int playerID, int x, int y, int buildingSize, BuildingType buildingType, int buildingID); int findAccessibleAreaNearBuildingLocation(int x, int y, int buildingSize); diff --git a/src/OpenSHC/Map/Entities/Entity.hpp b/src/OpenSHC/Map/Entities/Entity.hpp index e9b7d1d3a..8c9c13b20 100644 --- a/src/OpenSHC/Map/Entities/Entity.hpp +++ b/src/OpenSHC/Map/Entities/Entity.hpp @@ -32,7 +32,7 @@ namespace Map { short unkThree_1; // 0x00000016 length: 2 short originX; // 0x00000018 length: 2 short originY; // 0x0000001A length: 2 - short field12_0x1c; // 0x0000001C length: 2 + short screenDirection; // 0x0000001C length: 2 short nextEntityOnThisTileByID; // 0x0000001E length: 2 short imageID; // 0x00000020 length: 2 byte unused_0x22[6]; // 0x00000022 length: 6 @@ -58,19 +58,19 @@ namespace Map { short height_2; // 0x00000056 length: 2 short startingHeight; // 0x00000058 length: 2 short field37_0x5a; // 0x0000005A length: 2 - short field38_0x5c; // 0x0000005C length: 2 - short field39_0x5e; // 0x0000005E length: 2 + short pathTargetX; // 0x0000005C length: 2 + short pathDeltaX; // 0x0000005E length: 2 short someMicroX; // 0x00000060 length: 2 - short field41_0x62; // 0x00000062 length: 2 - short field42_0x64; // 0x00000064 length: 2 + short pathTargetY; // 0x00000062 length: 2 + short pathDeltaY; // 0x00000064 length: 2 short someMicroY; // 0x00000066 length: 2 - short field44_0x68; // 0x00000068 length: 2 - short field45_0x6a; // 0x0000006A length: 2 + short pathDeltaZ; // 0x00000068 length: 2 + short rotationFrameIndex; // 0x0000006A length: 2 short someCounter_OR_hitGround; // 0x0000006C length: 2 - short field47_0x6e; // 0x0000006E length: 2 - short field48_0x70; // 0x00000070 length: 2 - short field49_0x72; // 0x00000072 length: 2 - short field50_0x74; // 0x00000074 length: 2 + short pathErrorStepStraight; // 0x0000006E length: 2 + short pathErrorStepDiagonal; // 0x00000070 length: 2 + short pathError; // 0x00000072 length: 2 + short pathAxisCase; // 0x00000074 length: 2 byte unused_0x76[2]; // 0x00000076 length: 2 int speedUnk; // 0x00000078 length: 4 float vCos; // 0x0000007C length: 4 @@ -78,7 +78,7 @@ namespace Map { short travelledDistance; // 0x00000084 length: 2 byte field56_0x86[2]; // 0x00000086 length: 2 int orientation; // 0x00000088 length: 4 - short field58_0x8c; // 0x0000008C length: 2 + short totalFlightDistance; // 0x0000008C length: 2 undefined1 padding_0x8e[2]; // 0x0000008E length: 2 int heightDifference; // 0x00000090 length: 4 short field62_0x94; // 0x00000094 length: 2 @@ -98,7 +98,7 @@ namespace Map { short someTracker; // 0x000000B4 length: 2 short fireParameter_0xb6; // 0x000000B6 length: 2 short field79_0xb8; // 0x000000B8 length: 2 - short field80_0xba; // 0x000000BA length: 2 + short clearanceStepsRemaining; // 0x000000BA length: 2 short rng_2; // 0x000000BC length: 2 short field82_0xbe; // 0x000000BE length: 2 short field83_0xc0; // 0x000000C0 length: 2 diff --git a/src/OpenSHC/Map/Entities/EntityDefinedData.hpp b/src/OpenSHC/Map/Entities/EntityDefinedData.hpp index 3f1882685..5155cfac8 100644 --- a/src/OpenSHC/Map/Entities/EntityDefinedData.hpp +++ b/src/OpenSHC/Map/Entities/EntityDefinedData.hpp @@ -27,20 +27,20 @@ namespace Map { int field0_0x0[9]; // 0x00000000 length: 36 pointer EntityCallbacks[44]; // 0x00000024 length: 176 GmIDInt EntityPropertyArray_1[45]; // 0x000000D4 length: 180 - byte field3_0x188[36]; // 0x00000188 length: 36 + char FireAnimationFrames1[36]; // 0x00000188 length: 36 int EntityPropertyArray_2[45]; // 0x000001AC length: 180 - byte field5_0x260[16]; // 0x00000260 length: 16 + char FireAnimationFrames2[16]; // 0x00000260 length: 16 int field6_0x270[15]; // 0x00000270 length: 60 int field7_0x2ac[35]; // 0x000002AC length: 140 - byte field8_0x338[28]; // 0x00000338 length: 28 + byte FireAnimationFrames3[28]; // 0x00000338 length: 28 uint EntityTypeArrayForProjectileRange[38]; // 0x00000354 length: 152 undefined1 padding_0x3ec[28]; // 0x000003EC length: 28 - byte field38_0x408[28]; // 0x00000408 length: 28 + char FireAnimationFrames4[28]; // 0x00000408 length: 28 int EntityArrayCurveTypeForProjectileType[45]; // 0x00000424 length: 180 - byte field40_0x4d8[28]; // 0x000004D8 length: 28 + byte FireAnimationFrames5[28]; // 0x000004D8 length: 28 int EntityArrayProjectileVelocityForProjectileType[45]; // 0x000004F4 length: 180 - byte field42_0x5a8[28]; // 0x000005A8 length: 28 - float field43_0x5c4[46]; // 0x000005C4 length: 184 + char FireAnimationFrames6[28]; // 0x000005A8 length: 28 + float ProjectileGravityPerEntityType[46]; // 0x000005C4 length: 184 int EntityPropertyArray_3[56]; // 0x0000067C length: 224 int field45_0x75c[36]; // 0x0000075C length: 144 int field46_0x7ec[3]; // 0x000007EC length: 12 @@ -49,20 +49,20 @@ namespace Map { int field49_0x8a4[3]; // 0x000008A4 length: 12 int field50_0x8b0; // 0x000008B0 length: 4 int field51_0x8b4[42]; // 0x000008B4 length: 168 - GmIDInt field52_0x95c[46]; // 0x0000095C length: 184 - int field53_0xa14[92]; // 0x00000A14 length: 368 - Point4ShortXY field54_0xb84[128]; // 0x00000B84 length: 512 - Point8IntXY field55_0xd84[16]; // 0x00000D84 length: 128 - byte field56_0xe04[48]; // 0x00000E04 length: 48 - byte field57_0xe34[56]; // 0x00000E34 length: 56 + GmIDInt EntityGmIDs[46]; // 0x0000095C length: 184 + int EntityGraphicOffsets[92]; // 0x00000A14 length: 368 + Point4ShortXY EntitySubTileDrawOffsets[128]; // 0x00000B84 length: 512 + Point8IntXY EntityBlastTileOffsets[16]; // 0x00000D84 length: 128 + char FireAnimationFrames7[48]; // 0x00000E04 length: 48 + char FireAnimationFrames8[56]; // 0x00000E34 length: 56 int XYOffsetsInAllDirections[64][2]; // 0x00000E6C length: 512 int field59_0x106c[4]; // 0x0000106C length: 16 - int field60_0x107c[58]; // 0x0000107C length: 232 - int field61_0x1164[76]; // 0x00001164 length: 304 - int field62_0x1294[66]; // 0x00001294 length: 264 - int field63_0x139c[144]; // 0x0000139C length: 576 - int field64_0x15dc[114]; // 0x000015DC length: 456 - int field65_0x17a4[112]; // 0x000017A4 length: 448 + int SharedEntityAnimationFrames[58]; // 0x0000107C length: 232 + int FlagAnimationFrames1[76]; // 0x00001164 length: 304 + int FlagAnimationFrames2[66]; // 0x00001294 length: 264 + int FlagAnimationFrames3[144]; // 0x0000139C length: 576 + int Flag3AnimationFrames1[114]; // 0x000015DC length: 456 + int Flag3AnimationFrames2[112]; // 0x000017A4 length: 448 } EntityDefinedData; #pragma pack(pop) diff --git a/src/OpenSHC/Map/Entities/EntityState.hpp b/src/OpenSHC/Map/Entities/EntityState.hpp index 7fa2d6dd2..451515da3 100644 --- a/src/OpenSHC/Map/Entities/EntityState.hpp +++ b/src/OpenSHC/Map/Entities/EntityState.hpp @@ -33,7 +33,7 @@ namespace Map { public: undefined4 totalEntityCount; // 0x00000000 length: 4 undefined4 maxEntityCount; // 0x00000004 length: 4 - undefined4 every10Ticks; // 0x00000008 length: 4 + int everyTenTicks; // 0x00000008 length: 4 int lineOfSightClearanceSteps; // 0x0000000C length: 4 undefined4 fireCount; // 0x00000010 length: 4 Entity entityArray[3000]; // 0x00000014 length: 696000 diff --git a/src/OpenSHC/Map/Entities/ExtraEntityInfo.hpp b/src/OpenSHC/Map/Entities/ExtraEntityInfo.hpp index 72b41ef43..6b474c5dd 100644 --- a/src/OpenSHC/Map/Entities/ExtraEntityInfo.hpp +++ b/src/OpenSHC/Map/Entities/ExtraEntityInfo.hpp @@ -31,19 +31,19 @@ namespace Map { short field12_0x1a; // 0x0000001A length: 2 short angle_2; // 0x0000001C length: 2 short numberBetween60And100; // 0x0000001E length: 2 - short field15_0x20; // 0x00000020 length: 2 + short angleStep; // 0x00000020 length: 2 short rngMax799_countdown; // 0x00000022 length: 2 short x_3; // 0x00000024 length: 2 short y_3; // 0x00000026 length: 2 - short field19_0x28; // 0x00000028 length: 2 - short field20_0x2a; // 0x0000002A length: 2 - short field21_0x2c; // 0x0000002C length: 2 - short field22_0x2e; // 0x0000002E length: 2 - short field23_0x30; // 0x00000030 length: 2 - short field24_0x32; // 0x00000032 length: 2 - short field25_0x34; // 0x00000034 length: 2 + short pathErrorStepStraight; // 0x00000028 length: 2 + short pathErrorStepDiagonal; // 0x0000002A length: 2 + short pathError; // 0x0000002C length: 2 + short pathAxisCase; // 0x0000002E length: 2 + short pathStepX; // 0x00000030 length: 2 + short pathStepY; // 0x00000032 length: 2 + short pathStepDelay; // 0x00000034 length: 2 short someCountDown; // 0x00000036 length: 2 - short field27_0x38; // 0x00000038 length: 2 + short pathMajorLength; // 0x00000038 length: 2 short field28_0x3a; // 0x0000003A length: 2 short field29_0x3c; // 0x0000003C length: 2 short field30_0x3e; // 0x0000003E length: 2 diff --git a/src/OpenSHC/Map/MapPropertiesState.hpp b/src/OpenSHC/Map/MapPropertiesState.hpp index 037f07b0f..3ebababf9 100644 --- a/src/OpenSHC/Map/MapPropertiesState.hpp +++ b/src/OpenSHC/Map/MapPropertiesState.hpp @@ -48,7 +48,7 @@ namespace Map { SiegeGameModeRelatedSection SEC_Section1067; // 0x0000013C length: 28 int SEC_StartingPopularity; // 0x00000158 length: 4 short buildingAvailability[100]; // 0x0000015C length: 200 - undefined4 field8_0x224; // 0x00000224 length: 4 + undefined4 buildingAvailabilityRowCount; // 0x00000224 length: 4 short buildingAvailabilityRelatedFlags[380]; // 0x00000228 length: 760 short buildingAvailabilityArray2[49]; // 0x00000520 length: 98 BarracksRecruitabilityShort barracksRecruitability; // 0x00000582 length: 14 @@ -70,20 +70,23 @@ namespace Map { undefined4 SEC_Section1090; // 0x00013540 length: 4 undefined4 SEC_Section1080; // 0x00013544 length: 4 undefined4 SEC_Section1081; // 0x00013548 length: 4 - undefined1 padding_0x1354c[16]; // 0x0001354C length: 16 - undefined4 field47_0x1355c; // 0x0001355C length: 4 - int field48_0x13560; // 0x00013560 length: 4 + undefined1 padding_0x1354c[4]; // 0x0001354C length: 4 + int visibleRowCount; // 0x00013550 length: 4 + undefined1 padding_0x13554[8]; // 0x00013554 length: 8 + int eventListScrollOffset; // 0x0001355C length: 4 + int eventListSelection; // 0x00013560 length: 4 undefined4 currentEventID; // 0x00013564 length: 4 - undefined4 field50_0x13568; // 0x00013568 length: 4 - undefined1 padding_0x1356c[4]; // 0x0001356C length: 4 + undefined4 editedEventType; // 0x00013568 length: 4 + int field_0x1356c; // 0x0001356C length: 4 undefined4 invasionTroopIndex; // 0x00013570 length: 4 int DAT_BuildingAvailabilityScrollbarOffset; // 0x00013574 length: 4 undefined4 flag; // 0x00013578 length: 4 undefined4 offset; // 0x0001357C length: 4 undefined4 indexStored; // 0x00013580 length: 4 - undefined1 padding_0x13584[8]; // 0x00013584 length: 8 + int selectedAbsoluteIndex; // 0x00013584 length: 4 + dword selectionTime; // 0x00013588 length: 4 undefined4 value; // 0x0001358C length: 4 - undefined4 field69_0x13590; // 0x00013590 length: 4 + undefined4 field57_0x13590; // 0x00013590 length: 4 undefined1 padding_0x13594[8]; // 0x00013594 length: 8 undefined4 total; // 0x0001359C length: 4 int unknownArray_01[1000]; // 0x000135A0 length: 4000 @@ -91,40 +94,22 @@ namespace Map { undefined4 DAT_MapEditorUnitPointsSum; // 0x00014544 length: 4 undefined4 DAT_InvasionEventItemUnitCountSum; // 0x00014548 length: 4 undefined1 padding_0x1454c[8]; // 0x0001454C length: 8 - undefined4 field91_0x14554; // 0x00014554 length: 4 - undefined4 field92_0x14558; // 0x00014558 length: 4 - undefined4 field93_0x1455c; // 0x0001455C length: 4 - undefined4 field94_0x14560; // 0x00014560 length: 4 - undefined4 field95_0x14564; // 0x00014564 length: 4 - undefined4 field96_0x14568; // 0x00014568 length: 4 - undefined4 field97_0x1456c; // 0x0001456C length: 4 - undefined4 field98_0x14570; // 0x00014570 length: 4 - undefined4 field99_0x14574; // 0x00014574 length: 4 - undefined4 field100_0x14578; // 0x00014578 length: 4 - undefined4 field101_0x1457c; // 0x0001457C length: 4 - undefined4 field102_0x14580; // 0x00014580 length: 4 - undefined4 field103_0x14584; // 0x00014584 length: 4 - undefined4 field104_0x14588; // 0x00014588 length: 4 - undefined4 field105_0x1458c; // 0x0001458C length: 4 - undefined4 field106_0x14590; // 0x00014590 length: 4 - undefined4 field107_0x14594; // 0x00014594 length: 4 - undefined1 padding_0x14598[4]; // 0x00014598 length: 4 - undefined4 field112_0x1459c; // 0x0001459C length: 4 - undefined4 field113_0x145a0; // 0x000145A0 length: 4 - undefined4 field114_0x145a4; // 0x000145A4 length: 4 - undefined4 field115_0x145a8; // 0x000145A8 length: 4 - undefined4 field116_0x145ac; // 0x000145AC length: 4 - undefined4 field117_0x145b0; // 0x000145B0 length: 4 - undefined1 padding_0x145b4[4]; // 0x000145B4 length: 4 - undefined4 field122_0x145b8; // 0x000145B8 length: 4 - undefined4 field123_0x145bc; // 0x000145BC length: 4 - undefined4 field124_0x145c0; // 0x000145C0 length: 4 - undefined4 field125_0x145c4; // 0x000145C4 length: 4 - undefined4 field126_0x145c8; // 0x000145C8 length: 4 - undefined1 padding_0x145cc[4]; // 0x000145CC length: 4 - undefined4 field131_0x145d0; // 0x000145D0 length: 4 - undefined4 field132_0x145d4; // 0x000145D4 length: 4 - undefined1 padding_0x145d8[4]; // 0x000145D8 length: 4 + undefined4 missionScore; // 0x00014554 length: 4 + undefined4 monthsRemaining; // 0x00014558 length: 4 + undefined4 timeBonusScore; // 0x0001455C length: 4 + int objectiveGoodsCount; // 0x00014560 length: 4 + int objectiveGoodsSurplus[7]; // 0x00014564 length: 28 + int objectiveGoodsScore[7]; // 0x00014580 length: 28 + int objectiveGoodsType[7]; // 0x0001459C length: 28 + int troopSurvivalScore; // 0x000145B8 length: 4 + int troopLossPercent; // 0x000145BC length: 4 + int enemyTroopValueTotal; // 0x000145C0 length: 4 + int enemyTroopValueSurviving; // 0x000145C4 length: 4 + int enemyTroopValueLost; // 0x000145C8 length: 4 + int sliderPopupDelay; // 0x000145CC length: 4 + int sliderPopupX; // 0x000145D0 length: 4 + int sliderPopupY; // 0x000145D4 length: 4 + undefined4 field133_0x145d8; // 0x000145D8 length: 4 undefined4 eventType; // 0x000145DC length: 4 IngameEventHeader invasionEvent; // 0x000145E0 length: 16 IngameInvasionEventItemContent invasionEventContent; // 0x000145F0 length: 176 diff --git a/src/OpenSHC/Map/TerrainDefinedData.hpp b/src/OpenSHC/Map/TerrainDefinedData.hpp index b857a9499..42ed493f3 100644 --- a/src/OpenSHC/Map/TerrainDefinedData.hpp +++ b/src/OpenSHC/Map/TerrainDefinedData.hpp @@ -59,42 +59,43 @@ namespace Map { XYPair field370_0x5cc; // 0x000005CC length: 8 undefined1 padding_0x5d4[184]; // 0x000005D4 length: 184 XYPair field555_0x68c; // 0x0000068C length: 8 - undefined1 padding_0x694[440]; // 0x00000694 length: 440 - int field996_0x84c[25]; // 0x0000084C length: 100 + undefined1 padding_0x694[308]; // 0x00000694 length: 308 + int ConstructionSpriteRotationTable[33]; // 0x000007C8 length: 132 + int field865_0x84c[25]; // 0x0000084C length: 100 undefined1 padding_0x8b0[4]; // 0x000008B0 length: 4 - int field1001_0x8b4[25]; // 0x000008B4 length: 100 + int field870_0x8b4[25]; // 0x000008B4 length: 100 undefined1 padding_0x918[4]; // 0x00000918 length: 4 XYPair WheatFarmTiles[4][36]; // 0x0000091C length: 1152 XYPair HopFarmProperty1[2][24]; // 0x00000D9C length: 384 XYPair AppleFarmOffsets[8]; // 0x00000F1C length: 64 - WheatFarmFieldSpec field1009_0xf5c[4][27]; // 0x00000F5C length: 1296 + WheatFarmFieldSpec field878_0xf5c[4][27]; // 0x00000F5C length: 1296 undefined1 padding_0x146c[1280]; // 0x0000146C length: 1280 - XYPair field2290_0x196c[4]; // 0x0000196C length: 32 - XYPair field2291_0x198c[9]; // 0x0000198C length: 72 - XYPair field2292_0x19d4[16]; // 0x000019D4 length: 128 - int field2293_0x1a54[4][16]; // 0x00001A54 length: 256 - int field2294_0x1b54[4][16]; // 0x00001B54 length: 256 - int field2295_0x1c54[4][16]; // 0x00001C54 length: 256 - byte field2296_0x1d54[4][2]; // 0x00001D54 length: 8 - byte field2297_0x1d5c[4][2]; // 0x00001D5C length: 8 - UnkBytePair field2298_0x1d64[8]; // 0x00001D64 length: 16 + XYPair field2159_0x196c[4]; // 0x0000196C length: 32 + XYPair field2160_0x198c[9]; // 0x0000198C length: 72 + XYPair MacroLayerScanOffsets[16]; // 0x000019D4 length: 128 + int field2162_0x1a54[4][16]; // 0x00001A54 length: 256 + int field2163_0x1b54[4][16]; // 0x00001B54 length: 256 + int field2164_0x1c54[4][16]; // 0x00001C54 length: 256 + byte field2165_0x1d54[4][2]; // 0x00001D54 length: 8 + byte field2166_0x1d5c[4][2]; // 0x00001D5C length: 8 + UnkBytePair TerrainFlagGraphicLookup[8]; // 0x00001D64 length: 16 int MapSizes[5]; // 0x00001D74 length: 20 undefined1 padding_0x1d88[164]; // 0x00001D88 length: 164 int SomeOrientationOrderArray[8]; // 0x00001E2C length: 32 - int field2465_0x1e4c[32]; // 0x00001E4C length: 128 + int field2334_0x1e4c[32]; // 0x00001E4C length: 128 XYPair drawBridgeOffsets[4][9]; // 0x00001ECC length: 288 - int field2467_0x1fec[4][25]; // 0x00001FEC length: 400 + int field2336_0x1fec[4][25]; // 0x00001FEC length: 400 int TowerTileOffsetsBySize[7][4]; // 0x0000217C length: 112 - int field2469_0x21ec[4][25]; // 0x000021EC length: 400 + int field2338_0x21ec[4][25]; // 0x000021EC length: 400 int DrawbridgeOrientationMapping[4][25]; // 0x0000237C length: 400 int DrawbridgeTileMoatProperty[26]; // 0x0000250C length: 104 int orientationRelativeBuildingTileOffset2[60]; // 0x00002574 length: 240 int orientationRelativeBuildingTileOffset1[64]; // 0x00002664 length: 256 - XYPair field2474_0x2764[501]; // 0x00002764 length: 4008 - int field2475_0x370c[8]; // 0x0000370C length: 32 - XYPair field2476_0x372c[8]; // 0x0000372C length: 64 - XYPair field2477_0x376c[4]; // 0x0000376C length: 32 - XYPair field2478_0x378c[4]; // 0x0000378C length: 32 + XYPair field2343_0x2764[501]; // 0x00002764 length: 4008 + int field2344_0x370c[8]; // 0x0000370C length: 32 + XYPair field2345_0x372c[8]; // 0x0000372C length: 64 + XYPair field2346_0x376c[4]; // 0x0000376C length: 32 + XYPair field2347_0x378c[4]; // 0x0000378C length: 32 } TerrainDefinedData; #pragma pack(pop) diff --git a/src/OpenSHC/Map/TileMapState.func.hpp b/src/OpenSHC/Map/TileMapState.func.hpp index 0678d7af4..3098d8eb1 100644 --- a/src/OpenSHC/Map/TileMapState.func.hpp +++ b/src/OpenSHC/Map/TileMapState.func.hpp @@ -3,7 +3,6 @@ */ #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/IO/PackagedFileMagicNum.hpp" #include "OpenSHC/Map/Buildings/BuildingType.hpp" #include "OpenSHC/Map/LogicHelpers/Logic1.hpp" @@ -15,7 +14,6 @@ namespace Map { namespace TileMapState_Func { using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::IO::PackagedFileMagicNum; using OpenSHC::Map::Buildings::BuildingType; using OpenSHC::Map::LogicHelpers::Logic1; @@ -758,7 +756,7 @@ namespace Map { Address::SHC_3BB0A8C1_0x005160C0, &TileMapState::prepareAreaForBuildingPlacement) prepareAreaForBuildingPlacement; - MACRO_FUNCTION_RESOLVER(void (TileMapState::*)(PlayerID, int, int, MappersEnum, int, int), false, + MACRO_FUNCTION_RESOLVER(void (TileMapState::*)(int, int, int, MappersEnum, int, int), false, Address::SHC_3BB0A8C1_0x005162D0, &TileMapState::placeBuilding) placeBuilding; diff --git a/src/OpenSHC/Map/TileMapState.hpp b/src/OpenSHC/Map/TileMapState.hpp index 9d5e5f5a8..57e456510 100644 --- a/src/OpenSHC/Map/TileMapState.hpp +++ b/src/OpenSHC/Map/TileMapState.hpp @@ -9,7 +9,6 @@ #pragma once #include "OpenSHC/Commands/MappersEnum.hpp" -#include "OpenSHC/Game/Player/PlayerID.hpp" #include "OpenSHC/IO/PackagedFileMagicNum.hpp" #include "OpenSHC/Map/Buildings/BuildingFailReasonEnumInt.hpp" #include "OpenSHC/Map/Buildings/BuildingType.hpp" @@ -23,7 +22,6 @@ namespace OpenSHC { namespace Map { using OpenSHC::Commands::MappersEnum; - using OpenSHC::Game::Player::PlayerID; using OpenSHC::IO::PackagedFileMagicNum; using OpenSHC::Map::Moat; using OpenSHC::Map::PitchDitch; @@ -68,7 +66,7 @@ namespace Map { ushort MiscDisplayLayer[80400]; // 0x00301C80 length: 160800 byte DamageLayer[80400]; // 0x003290A0 length: 80400 ushort MacroLayer[80400]; // 0x0033CAB0 length: 160800 - short PathConnectionLayer[80400]; // 0x00363ED0 length: 160800 + ushort PathConnectionLayer[80400]; // 0x00363ED0 length: 160800 uchar PathLinkageLayer[80400]; // 0x0038B2F0 length: 80400 uchar OccupancyLayer[80400]; // 0x0039ED00 length: 80400 short CertainPathLayer[80400]; // 0x003B2710 length: 160800 @@ -82,7 +80,7 @@ namespace Map { undefined4 someLimit; // 0x00500224 length: 4 undefined4 someYLike; // 0x00500228 length: 4 undefined4 someYLikeLimit; // 0x0050022C length: 4 - char mapping40x40[40][40]; // 0x00500230 length: 1600 + byte mapping40x40[40][40]; // 0x00500230 length: 1600 Moat moats[16000]; // 0x00500870 length: 256000 int currentMoatCount; // 0x0053F070 length: 4 undefined4 moatTileCount; // 0x0053F074 length: 4 @@ -106,49 +104,49 @@ namespace Map { undefined4 field68_0x55487c; // 0x0055487C length: 4 undefined1 padding_0x554880[8]; // 0x00554880 length: 8 undefined4 placedBuildingID; // 0x00554888 length: 4 - undefined4 field78_0x55488c; // 0x0055488C length: 4 + undefined4 gateOrientationVariant; // 0x0055488C length: 4 undefined4 rockOrientation; // 0x00554890 length: 4 - undefined4 field80_0x554894; // 0x00554894 length: 4 + undefined4 editorRockType; // 0x00554894 length: 4 undefined4 lastTime; // 0x00554898 length: 4 int mapOrientation; // 0x0055489C length: 4 undefined4 DAT_FutureMapOrientation; // 0x005548A0 length: 4 - int field84_0x5548a4; // 0x005548A4 length: 4 - int field85_0x5548a8; // 0x005548A8 length: 4 - int field86_0x5548ac; // 0x005548AC length: 4 - int field87_0x5548b0; // 0x005548B0 length: 4 - int field88_0x5548b4; // 0x005548B4 length: 4 + int screenSouthEastDirection; // 0x005548A4 length: 4 + int screenEastDirection; // 0x005548A8 length: 4 + int screenSouthDirection; // 0x005548AC length: 4 + int screenSouthWestDirection; // 0x005548B0 length: 4 + int orientedRowStep; // 0x005548B4 length: 4 undefined4 refreshCertainTileMap; // 0x005548B8 length: 4 undefined4 refreshCertainTileMap_old; // 0x005548BC length: 4 undefined4 counter1; // 0x005548C0 length: 4 undefined4 refreshRelatedOne; // 0x005548C4 length: 4 - undefined4 field93_0x5548c8; // 0x005548C8 length: 4 + undefined4 disableElevationRendering; // 0x005548C8 length: 4 undefined4 flatViewToggleValue1; // 0x005548CC length: 4 undefined1 padding_0x5548d0[4]; // 0x005548D0 length: 4 undefined4 flatViewToggleValue2; // 0x005548D4 length: 4 undefined4 refreshRelatedTwo; // 0x005548D8 length: 4 - undefined4 field101_0x5548dc; // 0x005548DC length: 4 + undefined4 savedEditorActiveBrush; // 0x005548DC length: 4 undefined4 editorActiveBrush; // 0x005548E0 length: 4 MappersEnum currentMapperCommand; // 0x005548E4 length: 4 undefined4 DAT_BuildingSize; // 0x005548E8 length: 4 - undefined4 field105_0x5548ec; // 0x005548EC length: 4 + undefined4 unitPlacementCount; // 0x005548EC length: 4 BOOLEnum mapperMax; // 0x005548F0 length: 4 undefined4 rockFlagStartNumber; // 0x005548F4 length: 4 undefined4 unknownBrushRelated; // 0x005548F8 length: 4 - undefined4 unknownZero_0x5548fc; // 0x005548FC length: 4 + undefined4 editorSnapToMode; // 0x005548FC length: 4 undefined4 unknownZero_0x554900; // 0x00554900 length: 4 - undefined4 unknownZero_0x554904; // 0x00554904 length: 4 - undefined4 field112_0x554908; // 0x00554908 length: 4 + undefined4 editorAffectType; // 0x00554904 length: 4 + undefined4 wallCornerRotation; // 0x00554908 length: 4 undefined4 dragStartX; // 0x0055490C length: 4 undefined4 dragStartY; // 0x00554910 length: 4 undefined4 dragEndX; // 0x00554914 length: 4 undefined4 dragEndY; // 0x00554918 length: 4 BOOLEnum illegalBuild; // 0x0055491C length: 4 undefined4 field118_0x554920; // 0x00554920 length: 4 - undefined4 field119_0x554924; // 0x00554924 length: 4 + undefined4 maxWallHeightInPath; // 0x00554924 length: 4 undefined4 DAT_ClickedTileX; // 0x00554928 length: 4 undefined4 DAT_ClickedTileY; // 0x0055492C length: 4 - undefined4 field122_0x554930; // 0x00554930 length: 4 - BOOLEnum buildingPlacementFail; // 0x00554934 length: 4 + undefined4 skipPlacementCheck; // 0x00554930 length: 4 + int buildingPlacementFail; // 0x00554934 length: 4 BuildingFailReasonEnumInt buildingPlacementFailReason; // 0x00554938 length: 4 undefined4 placementWarning; // 0x0055493C length: 4 undefined4 uiBuildingRotation; // 0x00554940 length: 4 @@ -156,7 +154,7 @@ namespace Map { undefined4 buildingSpriteSheetID_1; // 0x00554948 length: 4 undefined4 buildingSpriteID1; // 0x0055494C length: 4 undefined4 buildingSpriteID2; // 0x00554950 length: 4 - undefined4 field131_0x554954; // 0x00554954 length: 4 + undefined4 cursorTargetID; // 0x00554954 length: 4 undefined4 buildingHeightLimit; // 0x00554958 length: 4 undefined4 buildingMinHeight; // 0x0055495C length: 4 undefined4 buildingMaxHeight; // 0x00554960 length: 4 @@ -167,35 +165,35 @@ namespace Map { undefined4 buildingPlacementProperty_6; // 0x00554974 length: 4 undefined4 buildingPlacementProperty_7; // 0x00554978 length: 4 undefined1 padding_0x55497c[4]; // 0x0055497C length: 4 - undefined4 field145_0x554980; // 0x00554980 length: 4 + undefined4 wallDragButtonUp; // 0x00554980 length: 4 int constructionTileCount; // 0x00554984 length: 4 int DAT_WallTileCountCurrentDrag; // 0x00554988 length: 4 undefined4 buildingX; // 0x0055498C length: 4 undefined4 buildingY; // 0x00554990 length: 4 undefined4 buildingRotationRelatedValue; // 0x00554994 length: 4 - undefined4 field151_0x554998; // 0x00554998 length: 4 - undefined4 field152_0x55499c; // 0x0055499C length: 4 - undefined4 field153_0x5549a0; // 0x005549A0 length: 4 + undefined4 placementOnWall; // 0x00554998 length: 4 + undefined4 placementOnMoat; // 0x0055499C length: 4 + undefined4 savedCursorTile; // 0x005549A0 length: 4 int showNoRubbleWhenDestroyingBuilding; // 0x005549A4 length: 4 undefined4 field155_0x5549a8; // 0x005549A8 length: 4 undefined4 field156_0x5549ac; // 0x005549AC length: 4 int wallPlacementCost; // 0x005549B0 length: 4 int DAT_TempBuildingRotation; // 0x005549B4 length: 4 int field159_0x5549b8; // 0x005549B8 length: 4 - undefined4 unknownTime_0x5549bc; // 0x005549BC length: 4 - undefined4 field161_0x5549c0; // 0x005549C0 length: 4 - undefined4 field162_0x5549c4; // 0x005549C4 length: 4 - undefined4 field163_0x5549c8; // 0x005549C8 length: 4 - undefined4 field164_0x5549cc; // 0x005549CC length: 4 - undefined4 field165_0x5549d0; // 0x005549D0 length: 4 + undefined4 cursorAnimationTime; // 0x005549BC length: 4 + undefined4 cursorOverlayAnimationFrame; // 0x005549C0 length: 4 + undefined4 cursorOverlayImageBase; // 0x005549C4 length: 4 + undefined4 cursorOverlayGmID; // 0x005549C8 length: 4 + undefined4 flagAnimationDivisor; // 0x005549CC length: 4 + undefined4 flagAnimationFrame; // 0x005549D0 length: 4 undefined4 DAT_SelectionIconType; // 0x005549D4 length: 4 - undefined4 field167_0x5549d8; // 0x005549D8 length: 4 + undefined4 pendingUnitCommand; // 0x005549D8 length: 4 undefined1 padding_0x5549dc[8]; // 0x005549DC length: 8 int shiftRelated0or3; // 0x005549E4 length: 4 - undefined4 field177_0x5549e8; // 0x005549E8 length: 4 - undefined4 field178_0x5549ec; // 0x005549EC length: 4 - undefined4 field179_0x5549f0; // 0x005549F0 length: 4 - undefined4 field180_0x5549f4; // 0x005549F4 length: 4 + undefined4 instructionTargetUnitID; // 0x005549E8 length: 4 + undefined4 activeTacticalPower; // 0x005549EC length: 4 + undefined4 instructionTargetX; // 0x005549F0 length: 4 + undefined4 instructionTargetY; // 0x005549F4 length: 4 undefined4 uiSelectedUnitIDUnk; // 0x005549F8 length: 4 undefined4 DAT_SomeUNitUIDUIRelated; // 0x005549FC length: 4 undefined4 field183_0x554a00; // 0x00554A00 length: 4 @@ -203,11 +201,11 @@ namespace Map { undefined4 field185_0x554a08; // 0x00554A08 length: 4 int mapSize; // 0x00554A0C length: 4 undefined4 field187_0x554a10; // 0x00554A10 length: 4 - undefined4 field188_0x554a14; // 0x00554A14 length: 4 + undefined4 skipPlacementFailChecks; // 0x00554A14 length: 4 undefined1 padding_0x554a18[4]; // 0x00554A18 length: 4 - undefined4 field193_0x554a1c; // 0x00554A1C length: 4 - undefined4 field194_0x554a20; // 0x00554A20 length: 4 - undefined4 field195_0x554a24; // 0x00554A24 length: 4 + undefined4 decorationVariantIndex; // 0x00554A1C length: 4 + undefined4 demolishBlocked; // 0x00554A20 length: 4 + undefined4 clearKeepFootprintOnPlace; // 0x00554A24 length: 4 undefined1 padding_0x554a28[8]; // 0x00554A28 length: 8 int field204_0x554a30; // 0x00554A30 length: 4 int DAT_SomeX; // 0x00554A34 length: 4 @@ -218,7 +216,7 @@ namespace Map { undefined4 DAT_CardinalTilesAroundTile; // 0x00554A44 length: 4 undefined4 field213_0x554a48; // 0x00554A48 length: 4 undefined1 padding_0x554a4c[4]; // 0x00554A4C length: 4 - undefined2 field218_0x554a50; // 0x00554A50 length: 2 + undefined2 gfxTileHeight; // 0x00554A50 length: 2 undefined1 padding_0x554a52[6]; // 0x00554A52 length: 6 pointer ptr_LogicLayer; // 0x00554A58 length: 4 pointer ptr_TerrainTypeTileMap; // 0x00554A5C length: 4 @@ -634,7 +632,7 @@ namespace Map { BOOLEnum prepareAreaForBuildingPlacement( int playerID, uint x, uint y, MappersEnum commandBuildingType, int buildingWidthOrHeight); - void placeBuilding(PlayerID playerID, int x, int y, MappersEnum cbt, int buildingSize, int buildingOrientation); + void placeBuilding(int playerID, int x, int y, MappersEnum cbt, int buildingSize, int buildingOrientation); BOOLEnum processDamageToBuilding(int tile, uint xPosition, uint yPosition, int damageUnk, int param_5, int playerID, BOOLEnum aiBuildDelayRelated, int unitID); diff --git a/src/OpenSHC/Map/Units/Tribe.hpp b/src/OpenSHC/Map/Units/Tribe.hpp index f06b64418..488c1d2f0 100644 --- a/src/OpenSHC/Map/Units/Tribe.hpp +++ b/src/OpenSHC/Map/Units/Tribe.hpp @@ -26,7 +26,7 @@ namespace Map { // SIZE: 0x00000334 typedef struct Tribe { - undefined1 padding_0x0[2]; // 0x00000000 length: 2 + short field_0x0; // 0x00000000 length: 2 short time; // 0x00000002 length: 2 int owner; // 0x00000004 length: 4 undefined1 padding_0x8[4]; // 0x00000008 length: 4 @@ -34,61 +34,61 @@ namespace Map { undefined1 padding_0x10[8]; // 0x00000010 length: 8 short tribeState; // 0x00000018 length: 2 AITribeTypeShort tribeType; // 0x0000001A length: 2 - short field19_0x1c; // 0x0000001C length: 2 - short field20_0x1e; // 0x0000001E length: 2 + short field18_0x1c; // 0x0000001C length: 2 + short field19_0x1e; // 0x0000001E length: 2 short facingDirection_1; // 0x00000020 length: 2 short facingDirection_2; // 0x00000022 length: 2 short facingDirection_3; // 0x00000024 length: 2 - short field24_0x26; // 0x00000026 length: 2 + short movementRunUpTime; // 0x00000026 length: 2 SomeTribeBehaviorTypeShort tribeBehaviorType; // 0x00000028 length: 2 undefined1 padding_0x2a[2]; // 0x0000002A length: 2 short someUpdateUpperLimit; // 0x0000002C length: 2 short unknownAttackRelatedUpdateCounter; // 0x0000002E length: 2 - short field30_0x30; // 0x00000030 length: 2 + short field29_0x30; // 0x00000030 length: 2 short selectionTargetUnitID; // 0x00000032 length: 2 short size; // 0x00000034 length: 2 short size2Unk; // 0x00000036 length: 2 short unitSelectionBitMasked[200]; // 0x00000038 length: 400 - byte field35_0x1c8; // 0x000001C8 length: 1 + byte field34_0x1c8; // 0x000001C8 length: 1 undefined1 padding_0x1c9[11]; // 0x000001C9 length: 11 short someUnitArray[10]; // 0x000001D4 length: 20 short countdown2; // 0x000001E8 length: 2 undefined1 padding_0x1ea[6]; // 0x000001EA length: 6 short freeUnitSpeeds; // 0x000001F0 length: 2 - short field56_0x1f2; // 0x000001F2 length: 2 + short supportTribeID; // 0x000001F2 length: 2 int uid2; // 0x000001F4 length: 4 short tribeID; // 0x000001F8 length: 2 short minimumMovementSpeed; // 0x000001FA length: 2 short movementSpeed; // 0x000001FC length: 2 short maximumMovementSpeed; // 0x000001FE length: 2 - short field62_0x200; // 0x00000200 length: 2 - short field63_0x202; // 0x00000202 length: 2 - short field64_0x204; // 0x00000204 length: 2 + short field61_0x200; // 0x00000200 length: 2 + short field62_0x202; // 0x00000202 length: 2 + short initialMoveOrderGiven; // 0x00000204 length: 2 short isRallyingUnk; // 0x00000206 length: 2 - short field66_0x208; // 0x00000208 length: 2 + short field65_0x208; // 0x00000208 length: 2 short unitsHealthPercentage; // 0x0000020A length: 2 - short field68_0x20c; // 0x0000020C length: 2 + short field67_0x20c; // 0x0000020C length: 2 short targetX; // 0x0000020E length: 2 short targetY; // 0x00000210 length: 2 - short field71_0x212; // 0x00000212 length: 2 + short containsRabbit; // 0x00000212 length: 2 undefined1 padding_0x214[20]; // 0x00000214 length: 20 UnitTypeShort unitType; // 0x00000228 length: 2 - short field93_0x22a; // 0x0000022A length: 2 + short aggressiveStanceCounter; // 0x0000022A length: 2 undefined1 padding_0x22c[12]; // 0x0000022C length: 12 short rallyPointArray[9][2]; // 0x00000238 length: 36 undefined1 padding_0x25c[4]; // 0x0000025C length: 4 short currentRallyPointIndex; // 0x00000260 length: 2 short rallyPointCount; // 0x00000262 length: 2 undefined1 padding_0x264[20]; // 0x00000264 length: 20 - short field133_0x278; // 0x00000278 length: 2 - short field134_0x27a; // 0x0000027A length: 2 + short predatorNearby; // 0x00000278 length: 2 + short pendingScatterMove; // 0x0000027A length: 2 short unkIsAnimalTribe; // 0x0000027C length: 2 - short field136_0x27e; // 0x0000027E length: 2 - short field137_0x280; // 0x00000280 length: 2 - short field138_0x282; // 0x00000282 length: 2 - short field139_0x284; // 0x00000284 length: 2 + short wanderIntervalTicks; // 0x0000027E length: 2 + short herdMinSize; // 0x00000280 length: 2 + short herdMaxSize; // 0x00000282 length: 2 + short field138_0x284; // 0x00000284 length: 2 short unknownCounter01; // 0x00000286 length: 2 - undefined1 padding_0x288[2]; // 0x00000288 length: 2 + short field_0x288; // 0x00000288 length: 2 short unknownBool02; // 0x0000028A length: 2 short unknownBool01; // 0x0000028C length: 2 short countdown; // 0x0000028E length: 2 @@ -98,23 +98,23 @@ namespace Map { short percentageDyingUnk; // 0x00000296 length: 2 short percentageMovingUnk; // 0x00000298 length: 2 short percentageAttackingUnk; // 0x0000029A length: 2 - short field152_0x29c; // 0x0000029C length: 2 + short field150_0x29c; // 0x0000029C length: 2 short percentageShootingUnk; // 0x0000029E length: 2 - short field154_0x2a0; // 0x000002A0 length: 2 + short field152_0x2a0; // 0x000002A0 length: 2 short percentageSomething; // 0x000002A2 length: 2 short attackInfo_someCounter1; // 0x000002A4 length: 2 short archerRelated; // 0x000002A6 length: 2 short archerRelated2; // 0x000002A8 length: 2 short supportPointIndex; // 0x000002AA length: 2 short oldSupportPointIndex; // 0x000002AC length: 2 - short field161_0x2ae; // 0x000002AE length: 2 + short field159_0x2ae; // 0x000002AE length: 2 short siegeIndexValue1; // 0x000002B0 length: 2 short siegeIndexValue2; // 0x000002B2 length: 2 int someTile2; // 0x000002B4 length: 4 UnitStanceEnumShort unitStance; // 0x000002B8 length: 2 short orientation; // 0x000002BA length: 2 short someCounter1; // 0x000002BC length: 2 - short field168_0x2be; // 0x000002BE length: 2 + short field166_0x2be; // 0x000002BE length: 2 short someUnitID; // 0x000002C0 length: 2 undefined1 padding_0x2c2[2]; // 0x000002C2 length: 2 int someUnitUID; // 0x000002C4 length: 4 diff --git a/src/OpenSHC/Map/Units/TribesState.func.hpp b/src/OpenSHC/Map/Units/TribesState.func.hpp index f5fa9280d..ddc6412f7 100644 --- a/src/OpenSHC/Map/Units/TribesState.func.hpp +++ b/src/OpenSHC/Map/Units/TribesState.func.hpp @@ -55,8 +55,8 @@ namespace Map { Address::SHC_3BB0A8C1_0x00521500, &TribesState::predictUnitInterceptPosition) predictUnitInterceptPosition; - MACRO_FUNCTION_RESOLVER(UnitType (TribesState::*)(undefined4, int*), false, - Address::SHC_3BB0A8C1_0x00521720, &TribesState::getMajoritySelectedUnitType) + MACRO_FUNCTION_RESOLVER(UnitType (TribesState::*)(int, int*), false, Address::SHC_3BB0A8C1_0x00521720, + &TribesState::getMajoritySelectedUnitType) getMajoritySelectedUnitType; MACRO_FUNCTION_RESOLVER(void (TribesState::*)(int), false, Address::SHC_3BB0A8C1_0x005217E0, diff --git a/src/OpenSHC/Map/Units/TribesState.hpp b/src/OpenSHC/Map/Units/TribesState.hpp index 758b06bf7..09d8a200c 100644 --- a/src/OpenSHC/Map/Units/TribesState.hpp +++ b/src/OpenSHC/Map/Units/TribesState.hpp @@ -85,7 +85,7 @@ namespace Map { void predictUnitInterceptPosition(int targetUnitID, int unitID, int* unitCurrentX, int* unitCurrentY); - UnitType getMajoritySelectedUnitType(undefined4 tribeID, int* maximumCount); + UnitType getMajoritySelectedUnitType(int tribeID, int* maximumCount); void playUnitSelectionSound(int param_1); diff --git a/src/OpenSHC/Map/Units/TroopValueState.func.hpp b/src/OpenSHC/Map/Units/TroopValueState.func.hpp index e76d82e2a..83bd9888c 100644 --- a/src/OpenSHC/Map/Units/TroopValueState.func.hpp +++ b/src/OpenSHC/Map/Units/TroopValueState.func.hpp @@ -129,8 +129,8 @@ namespace Map { &TroopValueState::calculateTile2PeoplValueClosestToUnit) calculateTile2PeoplValueClosestToUnit; - MACRO_FUNCTION_RESOLVER(int (TroopValueState::*)(undefined4), false, Address::SHC_3BB0A8C1_0x0051A220, - &TroopValueState::findEnemyLord) + MACRO_FUNCTION_RESOLVER( + int (TroopValueState::*)(int), false, Address::SHC_3BB0A8C1_0x0051A220, &TroopValueState::findEnemyLord) findEnemyLord; MACRO_FUNCTION_RESOLVER(void (TroopValueState::*)(int, int), false, Address::SHC_3BB0A8C1_0x0051A2D0, diff --git a/src/OpenSHC/Map/Units/TroopValueState.hpp b/src/OpenSHC/Map/Units/TroopValueState.hpp index 95e248ec2..c458ee943 100644 --- a/src/OpenSHC/Map/Units/TroopValueState.hpp +++ b/src/OpenSHC/Map/Units/TroopValueState.hpp @@ -105,7 +105,7 @@ namespace Map { undefined4 calculateTile2PeoplValueClosestToUnit(int unitID); - int findEnemyLord(undefined4 param_1); + int findEnemyLord(int unitID); void setGate2(int param_1, int param_2); diff --git a/src/OpenSHC/Map/Units/Unit.hpp b/src/OpenSHC/Map/Units/Unit.hpp index ea16549ee..f2c5a11bc 100644 --- a/src/OpenSHC/Map/Units/Unit.hpp +++ b/src/OpenSHC/Map/Units/Unit.hpp @@ -165,7 +165,7 @@ namespace Map { short state_2; // 0x000002CC length: 2 UnitTypeShort unitType_3; // 0x000002CE length: 2 short someUnitStat2_meleeDamageUnk; // 0x000002D0 length: 2 - short unknownMovementRelated_0x2d2; // 0x000002D2 length: 2 + short movementCooldown; // 0x000002D2 length: 2 short healthPercentage; // 0x000002D4 length: 2 short selectionTargetUnitID; // 0x000002D6 length: 2 short tribeID; // 0x000002D8 length: 2 diff --git a/src/OpenSHC/Map/Units/UnitsState.hpp b/src/OpenSHC/Map/Units/UnitsState.hpp index 2190f07cf..48baed04b 100644 --- a/src/OpenSHC/Map/Units/UnitsState.hpp +++ b/src/OpenSHC/Map/Units/UnitsState.hpp @@ -44,13 +44,13 @@ namespace Map { int unknownInitially0_01; // 0x00000008 length: 4 int lastSelectedUnitID; // 0x0000000C length: 4 int unitControlsRelated; // 0x00000010 length: 4 - BOOLEnum field5_0x14; // 0x00000014 length: 4 + BOOLEnum pendingUnitControlMode; // 0x00000014 length: 4 int lostChimps; // 0x00000018 length: 4 int unitDistanceComputationResultUnk; // 0x0000001C length: 4 int totalUnitsInSelection; // 0x00000020 length: 4 int unitCountOfSelection[9]; // 0x00000024 length: 36 byte unusedBytes01[44]; // 0x00000048 length: 44 - short selectedUnitsBitFlags[200]; // 0x00000074 length: 400 + byte selectedUnitsBitFlags[400]; // 0x00000074 length: 400 byte unusedBytes02[852]; // 0x00000204 length: 852 BOOLEnum hasEngineerSelected; // 0x00000558 length: 4 int field14_0x55c; // 0x0000055C length: 4 diff --git a/src/OpenSHC/Map/Wildlife/WildlifeGridElement.hpp b/src/OpenSHC/Map/Wildlife/WildlifeGridElement.hpp index 2206b8cae..838b28a3d 100644 --- a/src/OpenSHC/Map/Wildlife/WildlifeGridElement.hpp +++ b/src/OpenSHC/Map/Wildlife/WildlifeGridElement.hpp @@ -19,23 +19,23 @@ namespace Map { int firstMember; // 0x00000000 length: 4 int separateAreaID; // 0x00000004 length: 4 int unclaimedArea; // 0x00000008 length: 4 - int field3_0xc; // 0x0000000C length: 4 + int buildingTiles; // 0x0000000C length: 4 int keeps; // 0x00000010 length: 4 - int field5_0x14; // 0x00000014 length: 4 + int wallTiles; // 0x00000014 length: 4 int trees; // 0x00000018 length: 4 int unitCount; // 0x0000001C length: 4 - int field8_0x20; // 0x00000020 length: 4 + int stalkedUnitCount; // 0x00000020 length: 4 int camelCount; // 0x00000024 length: 4 int lionCount; // 0x00000028 length: 4 int deerCount; // 0x0000002C length: 4 - int field12_0x30; // 0x00000030 length: 4 + int unstalkedUnitCount; // 0x00000030 length: 4 int field13_0x34; // 0x00000034 length: 4 int casDisRelated2; // 0x00000038 length: 4 int field15_0x3c; // 0x0000003C length: 4 - int field16_0x40; // 0x00000040 length: 4 - int field17_0x44; // 0x00000044 length: 4 + int marshTiles; // 0x00000040 length: 4 + int rockyTiles; // 0x00000044 length: 4 int field18_0x48; // 0x00000048 length: 4 - int field19_0x4c; // 0x0000004C length: 4 + int farmFieldTiles; // 0x0000004C length: 4 int field20_0x50; // 0x00000050 length: 4 int rabbitCount; // 0x00000054 length: 4 int chimps; // 0x00000058 length: 4 diff --git a/src/OpenSHC/Rendering/ViewportState.hpp b/src/OpenSHC/Rendering/ViewportState.hpp index f07f60083..c0ac8a5b5 100644 --- a/src/OpenSHC/Rendering/ViewportState.hpp +++ b/src/OpenSHC/Rendering/ViewportState.hpp @@ -19,7 +19,7 @@ namespace Rendering { int mouseTileX; // 0x00000004 length: 4 int mouseTileY; // 0x00000008 length: 4 int mouseTile; // 0x0000000C length: 4 - int field4_0x10; // 0x00000010 length: 4 + int previousMouseTile; // 0x00000010 length: 4 undefined4 field5_0x14; // 0x00000014 length: 4 undefined4 field6_0x18; // 0x00000018 length: 4 int mouseRayBuildingID; // 0x0000001C length: 4 @@ -36,10 +36,10 @@ namespace Rendering { undefined4 field18_0x48; // 0x00000048 length: 4 undefined4 field19_0x4c; // 0x0000004C length: 4 undefined4 field20_0x50; // 0x00000050 length: 4 - undefined4 field21_0x54; // 0x00000054 length: 4 + undefined4 cursorWallTile; // 0x00000054 length: 4 undefined4 field22_0x58; // 0x00000058 length: 4 undefined4 field23_0x5c; // 0x0000005C length: 4 - undefined4 field24_0x60; // 0x00000060 length: 4 + undefined4 cursorTile; // 0x00000060 length: 4 int mouseX; // 0x00000064 length: 4 int mouseY; // 0x00000068 length: 4 undefined4 field27_0x6c; // 0x0000006C length: 4 diff --git a/src/OpenSHC/Synchrony.func.hpp b/src/OpenSHC/Synchrony.func.hpp index 6baa98727..2841ce0ec 100644 --- a/src/OpenSHC/Synchrony.func.hpp +++ b/src/OpenSHC/Synchrony.func.hpp @@ -14,7 +14,6 @@ #include "WinDef.h" #include "crtdefs.h" #include "ddraw.h" -#include "dplay.h" #include "winnt.h" namespace OpenSHC { namespace Synchrony_Func { @@ -46,12 +45,12 @@ namespace Synchrony_Func { EnumDisplayModesCallback; MACRO_FUNCTION_RESOLVER(BOOL(__stdcall*)(LPCGUID lpguidSP, LPVOID lpConnection, DWORD dwConnectionSize, - DPNAME* lpName, DWORD dwFlags, LPVOID lpContext), + LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext), false, Address::SHC_3BB0A8C1_0x0047D5B0, &OpenSHC::Synchrony::EnumConnectionsCallback) EnumConnectionsCallback; MACRO_FUNCTION_RESOLVER( - bool(__stdcall*)(DPSESSIONDESC2* lpThisSD, LPDWORD lpdwTimeOut, DWORD dwFlags, LPVOID lpContext), false, + BOOL(__stdcall*)(LPCDPSESSIONDESC2 lpThisSD, LPDWORD lpdwTimeOut, DWORD dwFlags, LPVOID lpContext), false, Address::SHC_3BB0A8C1_0x0047DF40, &OpenSHC::Synchrony::EnumSessionsCallback_addSession_async) EnumSessionsCallback_addSession_async; diff --git a/src/OpenSHC/Synchrony.hpp b/src/OpenSHC/Synchrony.hpp index 5547ac565..7c3b95308 100644 --- a/src/OpenSHC/Synchrony.hpp +++ b/src/OpenSHC/Synchrony.hpp @@ -13,7 +13,6 @@ #include "WinDef.h" #include "crtdefs.h" #include "ddraw.h" -#include "dplay.h" #include "winnt.h" namespace OpenSHC { namespace Synchrony { @@ -32,11 +31,11 @@ namespace Synchrony { HRESULT __stdcall EnumDisplayModesCallback(DDSURFACEDESC* displayDesc, LPVOID userParam); - BOOL __stdcall EnumConnectionsCallback( - LPCGUID lpguidSP, LPVOID lpConnection, DWORD dwConnectionSize, DPNAME* lpName, DWORD dwFlags, LPVOID lpContext); + BOOL __stdcall EnumConnectionsCallback(LPCGUID lpguidSP, LPVOID lpConnection, DWORD dwConnectionSize, + LPCDPNAME lpName, DWORD dwFlags, LPVOID lpContext); - bool __stdcall EnumSessionsCallback_addSession_async( - DPSESSIONDESC2* lpThisSD, LPDWORD lpdwTimeOut, DWORD dwFlags, LPVOID lpContext); + BOOL __stdcall EnumSessionsCallback_addSession_async( + LPCDPSESSIONDESC2 lpThisSD, LPDWORD lpdwTimeOut, DWORD dwFlags, LPVOID lpContext); BOOLEnum __stdcall DirectPlayModemRelated_MemoryAllocationCallback(int* param_1, undefined4 param_2, char* param_3); diff --git a/src/OpenSHC/Synchrony/GameSynchronyState.hpp b/src/OpenSHC/Synchrony/GameSynchronyState.hpp index 02944e31c..f7851d68c 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState.hpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState.hpp @@ -72,8 +72,8 @@ namespace Synchrony { WCHAR* DPLAY_SessionNames[50]; // 0x000001B0 length: 200 bool unkEnumerationRelatedBool; // 0x00000278 length: 1 undefined1 padding_0x279[3]; // 0x00000279 length: 3 - IDirectPlay4A** DPLAYX_4A; // 0x0000027C length: 4 - IDirectPlayLobby3** DPLAYX_LOBBY; // 0x00000280 length: 4 + IDirectPlay4A* DPLAYX_4A; // 0x0000027C length: 4 + IDirectPlayLobby3* DPLAYX_LOBBY; // 0x00000280 length: 4 MenuModalTypeInt nextModalDialog; // 0x00000284 length: 4 int multiplayerJoinStep; // 0x00000288 length: 4 BOOLEnum useTCPIP; // 0x0000028C length: 4 @@ -82,14 +82,14 @@ namespace Synchrony { int connectPort; // 0x000002B0 length: 4 int willHost; // 0x000002B4 length: 4 char shellExecuteTarget[600]; // 0x000002B8 length: 600 - int field32_0x510; // 0x00000510 length: 4 + int gameSpyArcadeAvailable; // 0x00000510 length: 4 BOOLEnum openOnClose; // 0x00000514 length: 4 byte connectName[256]; // 0x00000518 length: 256 GameModeInt currentGameMode; // 0x00000618 length: 4 GameModeInt currentGameModeCopy_SEC_Section1106; // 0x0000061C length: 4 byte unused02[104]; // 0x00000620 length: 104 DPNAME DPLAY_PlayerNameStructure; // 0x00000688 length: 16 - undefined4 DPLAYX_Connection; // 0x00000698 length: 4 + void* DPLAYX_Connection; // 0x00000698 length: 4 undefined4 DPLAYX_ReceivedPlayerID; // 0x0000069C length: 4 dword DPLAY_ToID; // 0x000006A0 length: 4 undefined4 DPLAYX_PlayerHandle; // 0x000006A4 length: 4 @@ -112,20 +112,20 @@ namespace Synchrony { WCHAR DPLAY_PlayerShortName[125]; // 0x00000A8E length: 250 int packetsReceived; // 0x00000B88 length: 4 int transmissionCounterUnk; // 0x00000B8C length: 4 - undefined4 field62_0xb90; // 0x00000B90 length: 4 + undefined4 lateCommandPenalty; // 0x00000B90 length: 4 undefined4 DAT_GameHalted; // 0x00000B94 length: 4 int syncStatus; // 0x00000B98 length: 4 undefined4 field65_0xb9c; // 0x00000B9C length: 4 undefined4 field66_0xba0; // 0x00000BA0 length: 4 undefined4 field67_0xba4; // 0x00000BA4 length: 4 - undefined4 field68_0xba8; // 0x00000BA8 length: 4 + undefined4 resyncPacketBudget; // 0x00000BA8 length: 4 undefined4 somePacketSubTypeUnk; // 0x00000BAC length: 4 - undefined4 field70_0xbb0; // 0x00000BB0 length: 4 - undefined4 field71_0xbb4; // 0x00000BB4 length: 4 + undefined4 resyncResumeOuterIndex; // 0x00000BB0 length: 4 + undefined4 resyncResumeInnerIndex; // 0x00000BB4 length: 4 int syncRelatedStatusArray[9]; // 0x00000BB8 length: 36 - undefined4 field73_0xbdc; // 0x00000BDC length: 4 + undefined4 resyncTransferTotalSize; // 0x00000BDC length: 4 undefined4 currentPacketTotalSize; // 0x00000BE0 length: 4 - undefined4 field75_0xbe4; // 0x00000BE4 length: 4 + undefined4 lastAutoSaveTime; // 0x00000BE4 length: 4 undefined4 field76_0xbe8; // 0x00000BE8 length: 4 undefined4 flag_0xbec; // 0x00000BEC length: 4 undefined4 field78_0xbf0; // 0x00000BF0 length: 4 @@ -158,7 +158,7 @@ namespace Synchrony { undefined4 firstSplitZone; // 0x00000C60 length: 4 undefined1 padding_0xc64[8]; // 0x00000C64 length: 8 undefined4 quitGameVoteRelated; // 0x00000C6C length: 4 - int field122_0xc70[9]; // 0x00000C70 length: 36 + int quitGameVoteArray[9]; // 0x00000C70 length: 36 int quitGameVoteRequestTime; // 0x00000C94 length: 4 int announcementReceivedByPlayer[9]; // 0x00000C98 length: 36 undefined4 saveRelated; // 0x00000CBC length: 4 @@ -167,7 +167,7 @@ namespace Synchrony { undefined4 announcementReceiveTime; // 0x00000CC8 length: 4 undefined4 laggingPlayerIDUnk; // 0x00000CCC length: 4 undefined4 DAT_SomeTime; // 0x00000CD0 length: 4 - undefined4 field131_0xcd4; // 0x00000CD4 length: 4 + undefined4 lagNotificationCode; // 0x00000CD4 length: 4 PacketUnion DPLAY_ReceiveData; // 0x00000CD8 length: 61000 byte DAT_PacketDecodingDestination[61100]; // 0x0000FB20 length: 61100 PacketUnion DAT_Packet; // 0x0001E9CC length: 61000 @@ -180,12 +180,12 @@ namespace Synchrony { undefined4 DAT_CurrentGameCommandID; // 0x0002D824 length: 4 GameCommandSchedulingInt DAT_CommandActionPlan; // 0x0002D828 length: 4 undefined4 DAT_PlayerIDReceiver; // 0x0002D82C length: 4 - undefined4 DAT_CommandSize; // 0x0002D830 length: 4 + int DAT_CommandSize; // 0x0002D830 length: 4 byte DAT_GameCommandFixedParameterLocation[61000]; // 0x0002D834 length: 61000 GameCommand DAT_GameCommandArray[200]; // 0x0003C67C length: 254400 short DAT_LagIndicatorPerPlayer[9]; // 0x0007A83C length: 18 undefined1 padding_0x7a84e[2]; // 0x0007A84E length: 2 - undefined4 DAT_GameCommandParam0; // 0x0007A850 length: 4 + int DAT_GameCommandParam0; // 0x0007A850 length: 4 undefined4 DAT_GameCommandParam1; // 0x0007A854 length: 4 undefined4 DAT_GameCommandParam2; // 0x0007A858 length: 4 undefined4 DAT_GameCommandParam3; // 0x0007A85C length: 4 @@ -228,14 +228,14 @@ namespace Synchrony { int HASH_HeatMaps[9][80]; // 0x00100F4C length: 2880 int receivedSyncStatusByPlayerUnk[9]; // 0x00101A8C length: 36 int syncStatus10Related[9]; // 0x00101AB0 length: 36 - undefined4 field196_0x101ad4; // 0x00101AD4 length: 4 + undefined4 relativeTickTime; // 0x00101AD4 length: 4 char receivedChatMessage[250]; // 0x00101AD8 length: 250 char DAT_ChatMessageArray[20][250]; // 0x00101BD2 length: 5000 char DAT_ChatMessageSubjectPlayerNameArray[20][250]; // 0x00102F5A length: 5000 char DAT_ChatMessageObjectPlayerNameArray[20][250]; // 0x001042E2 length: 5000 undefined1 padding_0x10566a[2]; // 0x0010566A length: 2 undefined4 DAT_ChatMessageArrayIndex; // 0x0010566C length: 4 - undefined4 field204_0x105670; // 0x00105670 length: 4 + undefined4 chatMessageRenderIndex; // 0x00105670 length: 4 undefined4 DAT_InsultTextIndex; // 0x00105674 length: 4 ChatEvent DAT_ChatEventArray[20]; // 0x00105678 length: 320 char shortMapName[120]; // 0x001057B8 length: 120 @@ -246,7 +246,7 @@ namespace Synchrony { int DAT_PlayerSlotArraySomeValue[9]; // 0x00106DB0 length: 36 int unknownPlayerInfo_01[9]; // 0x00106DD4 length: 36 int unknownPlayerInfo_03[9]; // 0x00106DF8 length: 36 - int field215_0x106e1c; // 0x00106E1C length: 4 + int lobbyStateReceived; // 0x00106E1C length: 4 int skirmishUnknownSetting1[4]; // 0x00106E20 length: 16 int skirmishStartGold; // 0x00106E30 length: 4 int skirmishDefaultPopularity; // 0x00106E34 length: 4 @@ -257,7 +257,7 @@ namespace Synchrony { int skirmishBalanceRelatedArrayUnk1[10]; // 0x00106E94 length: 40 byte unused03[40]; // 0x00106EBC length: 40 int field225_0x106ee4; // 0x00106EE4 length: 4 - undefined4 skirmishTechLevel; // 0x00106EE8 length: 4 + int skirmishTechLevel; // 0x00106EE8 length: 4 undefined1 padding_0x106eec[4]; // 0x00106EEC length: 4 undefined4 skirmishWinCondition; // 0x00106EF0 length: 4 undefined4 skirmishTroopsCostGold; // 0x00106EF4 length: 4 @@ -265,18 +265,18 @@ namespace Synchrony { undefined4 skirmishCurrentAdvantageBalance; // 0x001072E4 length: 4 int field235_0x1072e8; // 0x001072E8 length: 4 int field236_0x1072ec; // 0x001072EC length: 4 - undefined4 field237_0x1072f0; // 0x001072F0 length: 4 + undefined4 chatScrollOffset; // 0x001072F0 length: 4 BOOLEnum reparseMaps; // 0x001072F4 length: 4 - int field239_0x1072f8; // 0x001072F8 length: 4 - undefined4 DAT_MapSelectionScrollOffset; // 0x001072FC length: 4 - undefined4 DAT_MapSelectionTotalNumber; // 0x00107300 length: 4 + int mapExistenceAckCountdown; // 0x001072F8 length: 4 + int DAT_MapSelectionScrollOffset; // 0x001072FC length: 4 + int DAT_MapSelectionTotalNumber; // 0x00107300 length: 4 int DAT_MapSelectionRelativeSelected; // 0x00107304 length: 4 byte unused04[8]; // 0x00107308 length: 8 int unknownMapRelatedReceivedDataArray[500]; // 0x00107310 length: 2000 int mapPlayerCountArray[500]; // 0x00107AE0 length: 2000 int mapBalanceArray[500]; // 0x001082B0 length: 2000 int mapU4Int0_2Array[500]; // 0x00108A80 length: 2000 - undefined4 field248_0x109250; // 0x00109250 length: 4 + undefined4 lobbyMapSortOrder; // 0x00109250 length: 4 undefined4 savedMapTimeInTicks; // 0x00109254 length: 4 undefined4 savedUnitsCRC32Hash; // 0x00109258 length: 4 undefined1 padding_0x10925c[4]; // 0x0010925C length: 4 @@ -284,15 +284,15 @@ namespace Synchrony { int DAT_ChatMessageReceiverArray[9]; // 0x00109264 length: 36 undefined4 DAT_ChatTauntOrMessage; // 0x00109288 length: 4 undefined4 skirmishPoints; // 0x0010928C length: 4 - dword field259_0x109290; // 0x00109290 length: 4 + dword resyncStartTime; // 0x00109290 length: 4 int kickedAtTime; // 0x00109294 length: 4 - undefined4 field261_0x109298; // 0x00109298 length: 4 + undefined4 connectionNoticeShown; // 0x00109298 length: 4 undefined4 kickDueToLagStatusUnk; // 0x0010929C length: 4 int skirmishAutoSaveEveryMinutes; // 0x001092A0 length: 4 undefined4 timeSkirmishGameStart; // 0x001092A4 length: 4 int DAT_MapU4Int2_2; // 0x001092A8 length: 4 undefined4 DAT_HashCountdown; // 0x001092AC length: 4 - undefined4 field267_0x1092b0; // 0x001092B0 length: 4 + undefined4 connectionInfoExpanded; // 0x001092B0 length: 4 undefined4 skirmishStrongWalls; // 0x001092B4 length: 4 undefined4 skirmishAlliances; // 0x001092B8 length: 4 undefined4 skirmishNoCowThrowing; // 0x001092BC length: 4 @@ -307,34 +307,34 @@ namespace Synchrony { int ipArrayIndex; // 0x00109D8C length: 4 undefined4 DAT_TwoIfNotHost; // 0x00109D90 length: 4 undefined4 DAT_MapFileReceivingState; // 0x00109D94 length: 4 - short field282_0x109d98[9]; // 0x00109D98 length: 18 + short mapTransferStatePerPlayer[9]; // 0x00109D98 length: 18 undefined1 padding_0x109daa[2]; // 0x00109DAA length: 2 int mapSendingFileSize; // 0x00109DAC length: 4 int mapSendingByteBufferAddress[9]; // 0x00109DB0 length: 36 FILE* mapSendingFileHandles[9]; // 0x00109DD4 length: 36 FILE* FILEPTR_ReceivedMapFile; // 0x00109DF8 length: 4 - int field289_0x109dfc[9]; // 0x00109DFC length: 36 - int field290_0x109e20[9]; // 0x00109E20 length: 36 - byte DAT_RoundTableOrderArray[9]; // 0x00109E44 length: 9 - byte DAT_PlayerGroupArray[9]; // 0x00109E4D length: 9 + int mapTransferTicksPerPlayer[9]; // 0x00109DFC length: 36 + int mapSendRequestStatePerPlayer[9]; // 0x00109E20 length: 36 + char DAT_RoundTableOrderArray[9]; // 0x00109E44 length: 9 + char DAT_PlayerGroupArray[9]; // 0x00109E4D length: 9 byte playerGroupArray2Unk[9]; // 0x00109E56 length: 9 - byte field294_0x109e5f[9]; // 0x00109E5F length: 9 + byte slotActionPending[9]; // 0x00109E5F length: 9 char playerPositionsArray[8]; // 0x00109E68 length: 8 undefined4 protocolInvokerPlayerID; // 0x00109E70 length: 4 undefined4 currentPlayerSlotID; // 0x00109E74 length: 4 undefined4 DAT_SomePlayerID; // 0x00109E78 length: 4 - undefined4 field299_0x109e7c; // 0x00109E7C length: 4 + undefined4 editorPlacementPlayerID; // 0x00109E7C length: 4 byte field300_0x109e80[9]; // 0x00109E80 length: 9 undefined1 padding_0x109e89[3]; // 0x00109E89 length: 3 int field304_0x109e8c; // 0x00109E8C length: 4 undefined1 padding_0x109e90[4]; // 0x00109E90 length: 4 - undefined4 field309_0x109e94; // 0x00109E94 length: 4 - undefined4 field310_0x109e98; // 0x00109E98 length: 4 + undefined4 lastCommandReceiveTime; // 0x00109E94 length: 4 + undefined4 minPlayerMapTime; // 0x00109E98 length: 4 undefined4 mapTimeInTicksSinglePlayer; // 0x00109E9C length: 4 - undefined4 field312_0x109ea0; // 0x00109EA0 length: 4 - undefined4 field313_0x109ea4; // 0x00109EA4 length: 4 - undefined4 field314_0x109ea8; // 0x00109EA8 length: 4 - undefined4 field315_0x109eac; // 0x00109EAC length: 4 + undefined4 localPlayerMapTime; // 0x00109EA0 length: 4 + undefined4 playerMapTimeSpread; // 0x00109EA4 length: 4 + undefined4 ticksAheadOfSlowestPlayer; // 0x00109EA8 length: 4 + undefined4 ticksBehindFastestPlayer; // 0x00109EAC length: 4 undefined4 field316_0x109eb0; // 0x00109EB0 length: 4 undefined4 field317_0x109eb4; // 0x00109EB4 length: 4 undefined4 field318_0x109eb8; // 0x00109EB8 length: 4 @@ -346,12 +346,12 @@ namespace Synchrony { undefined4 otherTime1; // 0x00109ED0 length: 4 undefined4 now2; // 0x00109ED4 length: 4 dword field329_0x109ed8; // 0x00109ED8 length: 4 - undefined4 MBR_GameCommandID; // 0x00109EDC length: 4 + undefined4 gameCommandID; // 0x00109EDC length: 4 undefined4 DAT_GameCommandArrayIndex; // 0x00109EE0 length: 4 undefined4 DAT_CommandParameterOffset; // 0x00109EE4 length: 4 undefined4 commandDelay; // 0x00109EE8 length: 4 - int MBR_SelectedGameCommands[100][2]; // 0x00109EEC length: 800 - undefined4 MBR_someIndex; // 0x0010A20C length: 4 + int selectedGameCommands[100][2]; // 0x00109EEC length: 800 + int someIndex; // 0x0010A20C length: 4 int DPLAYX_SendAndReceiveREsult; // 0x0010A210 length: 4 undefined4 DAT_TickCount; // 0x0010A214 length: 4 diff --git a/src/OpenSHC/Text/TextEditorState.hpp b/src/OpenSHC/Text/TextEditorState.hpp index 9295dd858..9680d76eb 100644 --- a/src/OpenSHC/Text/TextEditorState.hpp +++ b/src/OpenSHC/Text/TextEditorState.hpp @@ -42,8 +42,8 @@ namespace Text { int currentHelpSectionID; // 0x00000028 length: 4 int helpSectionHistoryStack[30]; // 0x0000002C length: 120 int counter; // 0x000000A4 length: 4 - undefined4 helpContentScrollOffsetY; // 0x000000A8 length: 4 - undefined4 topVisibleLineIndex; // 0x000000AC length: 4 + int helpContentScrollOffsetY; // 0x000000A8 length: 4 + int topVisibleLineIndex; // 0x000000AC length: 4 int dialogX; // 0x000000B0 length: 4 int dialogY; // 0x000000B4 length: 4 int dialogWidth; // 0x000000B8 length: 4 diff --git a/src/OpenSHC/Text/TextManager.hpp b/src/OpenSHC/Text/TextManager.hpp index 59d77b729..0679f7ee7 100644 --- a/src/OpenSHC/Text/TextManager.hpp +++ b/src/OpenSHC/Text/TextManager.hpp @@ -38,8 +38,8 @@ namespace Text { public: int currentXOffset_0x0; // 0x00000000 length: 4 dword field1_0x4; // 0x00000004 length: 4 - int field2_0x8; // 0x00000008 length: 4 - int field3_0xc; // 0x0000000C length: 4 + int textClipMin; // 0x00000008 length: 4 + int textClipMax; // 0x0000000C length: 4 CodePageInt codePage; // 0x00000010 length: 4 dword field5_0x14; // 0x00000014 length: 4 dword field6_0x18; // 0x00000018 length: 4 @@ -47,7 +47,7 @@ namespace Text { dword field8_0x20; // 0x00000020 length: 4 int field9_0x24; // 0x00000024 length: 4 int field10_0x28; // 0x00000028 length: 4 - dword field11_0x2c; // 0x0000002C length: 4 + dword drawingTextShadow; // 0x0000002C length: 4 dword field12_0x30; // 0x00000030 length: 4 dword field13_0x34; // 0x00000034 length: 4 dword textColor; // 0x00000038 length: 4 diff --git a/src/OpenSHC/Text/UserTextHandler.func.hpp b/src/OpenSHC/Text/UserTextHandler.func.hpp index 193baf6b2..2cd09bc62 100644 --- a/src/OpenSHC/Text/UserTextHandler.func.hpp +++ b/src/OpenSHC/Text/UserTextHandler.func.hpp @@ -23,8 +23,8 @@ namespace Text { &UserTextHandler::getTextArrayPointer) getTextArrayPointer; - MACRO_FUNCTION_RESOLVER(void (UserTextHandler::*)(undefined4, undefined4), false, - Address::SHC_3BB0A8C1_0x00469800, &UserTextHandler::setTextEntryAndUpdateCursor) + MACRO_FUNCTION_RESOLVER(void (UserTextHandler::*)(int, char*), false, Address::SHC_3BB0A8C1_0x00469800, + &UserTextHandler::setTextEntryAndUpdateCursor) setTextEntryAndUpdateCursor; MACRO_FUNCTION_RESOLVER( diff --git a/src/OpenSHC/Text/UserTextHandler.hpp b/src/OpenSHC/Text/UserTextHandler.hpp index fcf167bb6..e6a29a8b1 100644 --- a/src/OpenSHC/Text/UserTextHandler.hpp +++ b/src/OpenSHC/Text/UserTextHandler.hpp @@ -50,7 +50,7 @@ namespace Text { char* getTextArrayPointer(int param_1); - void setTextEntryAndUpdateCursor(undefined4 param_1, undefined4 param_2); + void setTextEntryAndUpdateCursor(int textIndex, char* text); int getCurrentFontSize(); diff --git a/src/OpenSHC/UI/BottomLeftTextDisplayState.hpp b/src/OpenSHC/UI/BottomLeftTextDisplayState.hpp index 8f11c1e04..136c3729b 100644 --- a/src/OpenSHC/UI/BottomLeftTextDisplayState.hpp +++ b/src/OpenSHC/UI/BottomLeftTextDisplayState.hpp @@ -20,15 +20,15 @@ namespace UI { // SIZE: 0x00000024 class BottomLeftTextDisplayState { public: - dword currentlyDisplayedTextIsDisplayedUnk; // 0x00000000 length: 4 - dword currentlyDisplayedUnkTextGroupIndex_0x4; // 0x00000004 length: 4 - dword currentlyDisplayedUnkTextNumInGroup_0x8; // 0x00000008 length: 4 + int currentlyDisplayedTextIsDisplayedUnk; // 0x00000000 length: 4 + int currentlyDisplayedUnkTextGroupIndex_0x4; // 0x00000004 length: 4 + int currentlyDisplayedUnkTextNumInGroup_0x8; // 0x00000008 length: 4 TextMessageBLLookupStructUnion currentlyDisplayedUnktextExtraObject; // 0x0000000C length: 4 int currentlyDisplayedTextImportanceUnk; // 0x00000010 length: 4 int textMessageDurationUnk; // 0x00000014 length: 4 int textMessageTime; // 0x00000018 length: 4 int unknownCountdown01; // 0x0000001C length: 4 - dword countdown; // 0x00000020 length: 4 + int countdown; // 0x00000020 length: 4 private: BottomLeftTextDisplayState(BottomLeftTextDisplayState const&); diff --git a/src/OpenSHC/UI/Credits.func.hpp b/src/OpenSHC/UI/Credits.func.hpp index 2455ba083..e3e216f31 100644 --- a/src/OpenSHC/UI/Credits.func.hpp +++ b/src/OpenSHC/UI/Credits.func.hpp @@ -8,13 +8,17 @@ #pragma once +#include "OpenSHC/Audio/MSS/SoundFlagsAndLoopCount.hpp" #include "OpenSHC/Audio/MSS/enums/SHC_SoundStream.hpp" +#include "OpenSHC/Audio/MSS/enums/SHC_SoundStreamInt.hpp" #include "OpenSHC/UI/Credits.hpp" namespace OpenSHC { namespace UI { namespace Credits_Func { + using OpenSHC::Audio::MSS::SoundFlagsAndLoopCount; using OpenSHC::Audio::MSS::enums::SHC_SoundStream; + using OpenSHC::Audio::MSS::enums::SHC_SoundStreamInt; MACRO_FUNCTION_RESOLVER(void(__cdecl*)(undefined4 param_1), false, Address::SHC_3BB0A8C1_0x004D9270, &OpenSHC::UI::Credits::SetActiveCreditsSequenceIndex) @@ -32,7 +36,7 @@ namespace UI { void(__cdecl*)(), false, Address::SHC_3BB0A8C1_0x004DA300, &OpenSHC::UI::Credits::ResetCredits) ResetCredits; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(undefined4 param_1, undefined4 param_2), false, + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(SHC_SoundStreamInt param_1, int param_2), false, Address::SHC_3BB0A8C1_0x004DA7A0, &OpenSHC::UI::Credits::AppendCreditsSoundEntry) AppendCreditsSoundEntry; @@ -56,8 +60,7 @@ namespace UI { &OpenSHC::UI::Credits::AppendCreditsClearImageCommand) AppendCreditsClearImageCommand; - MACRO_FUNCTION_RESOLVER( - void(__cdecl*)(int param_1, int param_2, undefined4 param_3, undefined4 param_4, undefined4 param_5), false, + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, int param_3, int param_4, int param_5), false, Address::SHC_3BB0A8C1_0x004DA8D0, &OpenSHC::UI::Credits::AppendCreditsImageTransitionCommand) AppendCreditsImageTransitionCommand; @@ -65,30 +68,30 @@ namespace UI { &OpenSHC::UI::Credits::AppendCreditsImageEndCommand) AppendCreditsImageEndCommand; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, undefined4 param_3, undefined4 param_4, - undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 param_8), + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, int param_3, int param_4, int param_5, + int param_6, undefined4 param_7, int param_8), false, Address::SHC_3BB0A8C1_0x004DA9F0, &OpenSHC::UI::Credits::AppendCreditsShowImageCommand) AppendCreditsShowImageCommand; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(undefined4 param_1, char* param_2, undefined4 param_3, - undefined4 param_4, undefined4 param_5, undefined4 param_6), + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(undefined4 param_1, char* param_2, int param_3, int param_4, int param_5, + SoundFlagsAndLoopCount param_6), false, Address::SHC_3BB0A8C1_0x004DAA80, &OpenSHC::UI::Credits::AppendCreditsBinkVideoCommand) AppendCreditsBinkVideoCommand; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, undefined4 param_2, undefined4 param_3), false, + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, int param_3), false, Address::SHC_3BB0A8C1_0x004DAB00, &OpenSHC::UI::Credits::AppendCreditsFixedImageCommand) AppendCreditsFixedImageCommand; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(char* param_1, undefined4 param_2, int param_3, undefined4 param_4), - false, Address::SHC_3BB0A8C1_0x004DAB80, &OpenSHC::UI::Credits::AppendCreditsBinkVideoWithAudioCommand) + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(char* param_1, int param_2, int param_3, int param_4), false, + Address::SHC_3BB0A8C1_0x004DAB80, &OpenSHC::UI::Credits::AppendCreditsBinkVideoWithAudioCommand) AppendCreditsBinkVideoWithAudioCommand; MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, SHC_SoundStream param_2), false, Address::SHC_3BB0A8C1_0x004DABF0, &OpenSHC::UI::Credits::AppendCreditsSoundStreamCommand) AppendCreditsSoundStreamCommand; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, undefined4 param_3, undefined4 param_4, - undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 param_8), + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, int param_3, int param_4, int param_5, + int param_6, int param_7, int param_8), false, Address::SHC_3BB0A8C1_0x004DAC30, &OpenSHC::UI::Credits::AppendCreditsTextCommand) AppendCreditsTextCommand; @@ -96,20 +99,18 @@ namespace UI { &OpenSHC::UI::Credits::AppendCreditsTextEndCommand) AppendCreditsTextEndCommand; - MACRO_FUNCTION_RESOLVER( - void(__cdecl*)(int state, undefined4 xSpace, undefined4 param_3, undefined4 ySpace, undefined4 someX, - undefined4 someY, undefined4 param_7, int param_8, undefined4 param_9), + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int state, int xSpace, int param_3, int ySpace, int someX, int someY, + int param_7, int param_8, int param_9), false, Address::SHC_3BB0A8C1_0x004DAD40, &OpenSHC::UI::Credits::InsertElementIntoAnArrayAt_ec0348) InsertElementIntoAnArrayAt_ec0348; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, undefined4 param_2, undefined4 param_3, undefined4 param_4, - undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 param_8), + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int param_2, int param_3, int param_4, int param_5, + int param_6, int param_7, int param_8), false, Address::SHC_3BB0A8C1_0x004DAE00, &OpenSHC::UI::Credits::InsertElementIntoArrayAt_ec0348_3) InsertElementIntoArrayAt_ec0348_3; - MACRO_FUNCTION_RESOLVER( - void(__cdecl*)(int param_1, undefined4 xSpace, undefined4 param_3, undefined4 param_4, undefined4 ySpace, - undefined4 someX, int param_7, undefined4 someY, undefined4 param_9), + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(int param_1, int xSpace, int param_3, int param_4, int ySpace, int someX, + int param_7, int someY, int param_9), false, Address::SHC_3BB0A8C1_0x004DAE90, &OpenSHC::UI::Credits::InsertElementIntoArrayAt_ec0348_2) InsertElementIntoArrayAt_ec0348_2; diff --git a/src/OpenSHC/UI/Credits.hpp b/src/OpenSHC/UI/Credits.hpp index 52f8d58a3..c6704bafc 100644 --- a/src/OpenSHC/UI/Credits.hpp +++ b/src/OpenSHC/UI/Credits.hpp @@ -8,12 +8,16 @@ #pragma once +#include "OpenSHC/Audio/MSS/SoundFlagsAndLoopCount.hpp" #include "OpenSHC/Audio/MSS/enums/SHC_SoundStream.hpp" +#include "OpenSHC/Audio/MSS/enums/SHC_SoundStreamInt.hpp" namespace OpenSHC { namespace UI { namespace Credits { + using OpenSHC::Audio::MSS::SoundFlagsAndLoopCount; using OpenSHC::Audio::MSS::enums::SHC_SoundStream; + using OpenSHC::Audio::MSS::enums::SHC_SoundStreamInt; void __cdecl SetActiveCreditsSequenceIndex(undefined4 param_1); @@ -23,7 +27,7 @@ namespace UI { void __cdecl ResetCredits(); - void __cdecl AppendCreditsSoundEntry(undefined4 param_1, undefined4 param_2); + void __cdecl AppendCreditsSoundEntry(SHC_SoundStreamInt param_1, int param_2); void __cdecl AppendCreditsCommand(int param_1); @@ -36,36 +40,35 @@ namespace UI { void __cdecl AppendCreditsClearImageCommand(); void __cdecl AppendCreditsImageTransitionCommand( - int param_1, int param_2, undefined4 param_3, undefined4 param_4, undefined4 param_5); + int param_1, int param_2, int param_3, int param_4, int param_5); void __cdecl AppendCreditsImageEndCommand(int param_1, int param_2); - void __cdecl AppendCreditsShowImageCommand(int param_1, int param_2, undefined4 param_3, undefined4 param_4, - undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 param_8); + void __cdecl AppendCreditsShowImageCommand(int param_1, int param_2, int param_3, int param_4, int param_5, + int param_6, undefined4 param_7, int param_8); - void __cdecl AppendCreditsBinkVideoCommand(undefined4 param_1, char* param_2, undefined4 param_3, - undefined4 param_4, undefined4 param_5, undefined4 param_6); + void __cdecl AppendCreditsBinkVideoCommand( + undefined4 param_1, char* param_2, int param_3, int param_4, int param_5, SoundFlagsAndLoopCount param_6); - void __cdecl AppendCreditsFixedImageCommand(int param_1, undefined4 param_2, undefined4 param_3); + void __cdecl AppendCreditsFixedImageCommand(int param_1, int param_2, int param_3); - void __cdecl AppendCreditsBinkVideoWithAudioCommand( - char* param_1, undefined4 param_2, int param_3, undefined4 param_4); + void __cdecl AppendCreditsBinkVideoWithAudioCommand(char* param_1, int param_2, int param_3, int param_4); void __cdecl AppendCreditsSoundStreamCommand(int param_1, SHC_SoundStream param_2); - void __cdecl AppendCreditsTextCommand(int param_1, int param_2, undefined4 param_3, undefined4 param_4, - undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 param_8); + void __cdecl AppendCreditsTextCommand( + int param_1, int param_2, int param_3, int param_4, int param_5, int param_6, int param_7, int param_8); void __cdecl AppendCreditsTextEndCommand(int param_1, int param_2); - void __cdecl InsertElementIntoAnArrayAt_ec0348(int state, undefined4 xSpace, undefined4 param_3, - undefined4 ySpace, undefined4 someX, undefined4 someY, undefined4 param_7, int param_8, undefined4 param_9); + void __cdecl InsertElementIntoAnArrayAt_ec0348(int state, int xSpace, int param_3, int ySpace, int someX, + int someY, int param_7, int param_8, int param_9); - void __cdecl InsertElementIntoArrayAt_ec0348_3(int param_1, undefined4 param_2, undefined4 param_3, - undefined4 param_4, undefined4 param_5, undefined4 param_6, undefined4 param_7, undefined4 param_8); + void __cdecl InsertElementIntoArrayAt_ec0348_3( + int param_1, int param_2, int param_3, int param_4, int param_5, int param_6, int param_7, int param_8); - void __cdecl InsertElementIntoArrayAt_ec0348_2(int param_1, undefined4 xSpace, undefined4 param_3, - undefined4 param_4, undefined4 ySpace, undefined4 someX, int param_7, undefined4 someY, undefined4 param_9); + void __cdecl InsertElementIntoArrayAt_ec0348_2(int param_1, int xSpace, int param_3, int param_4, int ySpace, + int someX, int param_7, int someY, int param_9); void __cdecl RenderScrollingCreditsTextFrame(float param_1); diff --git a/src/OpenSHC/UI/Credits/CreditsRelatedStructure.hpp b/src/OpenSHC/UI/Credits/CreditsRelatedStructure.hpp index 8c29966e8..cee876284 100644 --- a/src/OpenSHC/UI/Credits/CreditsRelatedStructure.hpp +++ b/src/OpenSHC/UI/Credits/CreditsRelatedStructure.hpp @@ -18,17 +18,17 @@ namespace UI { int isValid; // 0x00000000 length: 4 int xSpace; // 0x00000004 length: 4 - int ySpace; // 0x00000008 length: 4 - int someX; // 0x0000000C length: 4 - int someY; // 0x00000010 length: 4 - int field5_0x14; // 0x00000014 length: 4 - int field6_0x18; // 0x00000018 length: 4 + int x; // 0x00000008 length: 4 + int y; // 0x0000000C length: 4 + int width; // 0x00000010 length: 4 + int height; // 0x00000014 length: 4 + int fadeMode; // 0x00000018 length: 4 int field7_0x1c; // 0x0000001C length: 4 int field8_0x20; // 0x00000020 length: 4 int field9_0x24; // 0x00000024 length: 4 int field10_0x28; // 0x00000028 length: 4 int field11_0x2c; // 0x0000002C length: 4 - int flag; // 0x00000030 length: 4 + float blendStrength; // 0x00000030 length: 4 } CreditsRelatedStructure; #pragma pack(pop) diff --git a/src/OpenSHC/UI/Credits/CreditsRelatedStructure2.hpp b/src/OpenSHC/UI/Credits/CreditsRelatedStructure2.hpp index 1c7f514f1..47d7f8cb1 100644 --- a/src/OpenSHC/UI/Credits/CreditsRelatedStructure2.hpp +++ b/src/OpenSHC/UI/Credits/CreditsRelatedStructure2.hpp @@ -22,21 +22,21 @@ namespace UI { // SIZE: 0x0000005C typedef struct CreditsRelatedStructure2 { - int field0_0x0; // 0x00000000 length: 4 + int commandType; // 0x00000000 length: 4 SHC_SoundStreamInt soundStream; // 0x00000004 length: 4 int x; // 0x00000008 length: 4 int y; // 0x0000000C length: 4 - int field4_0x10; // 0x00000010 length: 4 - int field5_0x14; // 0x00000014 length: 4 + int width; // 0x00000010 length: 4 + int height; // 0x00000014 length: 4 int field6_0x18; // 0x00000018 length: 4 - undefined1 padding_0x1c[4]; // 0x0000001C length: 4 + int field_0x1c; // 0x0000001C length: 4 SoundFlagsAndLoopCount flagLoopCount; // 0x00000020 length: 4 int binkObjIndex; // 0x00000024 length: 4 - int field13_0x28; // 0x00000028 length: 4 + int field10_0x28; // 0x00000028 length: 4 int volume; // 0x0000002C length: 4 - int field15_0x30; // 0x00000030 length: 4 - int field16_0x34; // 0x00000034 length: 4 - int field17_0x38; // 0x00000038 length: 4 + int field12_0x30; // 0x00000030 length: 4 + int field13_0x34; // 0x00000034 length: 4 + int field14_0x38; // 0x00000038 length: 4 char* binkFileName; // 0x0000003C length: 4 undefined1 padding_0x40[28]; // 0x00000040 length: 28 diff --git a/src/OpenSHC/UI/Enums/MenuViewType.hpp b/src/OpenSHC/UI/Enums/MenuViewType.hpp index 6aebbeec4..721f23e0c 100644 --- a/src/OpenSHC/UI/Enums/MenuViewType.hpp +++ b/src/OpenSHC/UI/Enums/MenuViewType.hpp @@ -15,6 +15,7 @@ namespace UI { MVT_NO_VIEW = 0, // 0x00000000 MVT_UNUSED_OLD_TITLE_MENU = 1, // 0x00000001 + MVT_UNKNOWN_2 = 2, // 0x00000002 MVT_INTRO_LOGOS = 3, // 0x00000003 MVT_EMPTY_10 = 10, // 0x0000000A MVT_EMPTY_11 = 11, // 0x0000000B diff --git a/src/OpenSHC/UI/Helpers.func.hpp b/src/OpenSHC/UI/Helpers.func.hpp index 71bd4339a..09b4c1951 100644 --- a/src/OpenSHC/UI/Helpers.func.hpp +++ b/src/OpenSHC/UI/Helpers.func.hpp @@ -60,7 +60,7 @@ namespace UI { &OpenSHC::UI::Helpers::SetTaxesSetting_unknown) SetTaxesSetting_unknown; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(undefined4 param_1), false, Address::SHC_3BB0A8C1_0x00434340, + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(BOOLEnum param_1), false, Address::SHC_3BB0A8C1_0x00434340, &OpenSHC::UI::Helpers::SetTribesPatrolButtonPressed) SetTribesPatrolButtonPressed; diff --git a/src/OpenSHC/UI/Helpers.hpp b/src/OpenSHC/UI/Helpers.hpp index a1e62de38..6ce7b906d 100644 --- a/src/OpenSHC/UI/Helpers.hpp +++ b/src/OpenSHC/UI/Helpers.hpp @@ -41,7 +41,7 @@ namespace UI { void __cdecl SetTaxesSetting_unknown(int taxesSettingUnk); - void __cdecl SetTribesPatrolButtonPressed(undefined4 param_1); + void __cdecl SetTribesPatrolButtonPressed(BOOLEnum param_1); undefined4 __cdecl SomeUnitAndViewportCheck(int unitID); diff --git a/src/OpenSHC/UI/Menu.hpp b/src/OpenSHC/UI/Menu.hpp index 4496cd76d..c3c8a0faa 100644 --- a/src/OpenSHC/UI/Menu.hpp +++ b/src/OpenSHC/UI/Menu.hpp @@ -32,10 +32,10 @@ namespace UI { int zero; // 0x00000018 length: 4 int mouseXScreenSpace; // 0x0000001C length: 4 int mouseYScreenSpace; // 0x00000020 length: 4 - int field9_0x24; // 0x00000024 length: 4 - int field10_0x28; // 0x00000028 length: 4 - int field11_0x2c; // 0x0000002C length: 4 - int field12_0x30; // 0x00000030 length: 4 + int hoverTextX; // 0x00000024 length: 4 + int hoverTextY; // 0x00000028 length: 4 + int textIndexInGroup; // 0x0000002C length: 4 + int textGroupIndex; // 0x00000030 length: 4 int someTimestampUnk; // 0x00000034 length: 4 MenuItem* hoveredItem; // 0x00000038 length: 4 MenuItem* someMenuItemPtr_0x3c; // 0x0000003C length: 4 diff --git a/src/OpenSHC/UI/MenuModalComposition.hpp b/src/OpenSHC/UI/MenuModalComposition.hpp index 8f1825070..1e62eb360 100644 --- a/src/OpenSHC/UI/MenuModalComposition.hpp +++ b/src/OpenSHC/UI/MenuModalComposition.hpp @@ -42,7 +42,7 @@ namespace UI { short* destination2; // 0x0000005C length: 4 pointer sliderCallbackFunction; // 0x00000060 length: 4 dword mbr_0x64; // 0x00000064 length: 4 - dword disappearAfter; // 0x00000068 length: 4 + int disappearAfter; // 0x00000068 length: 4 dword mbr_0x6c; // 0x0000006C length: 4 dword timeItIsSet; // 0x00000070 length: 4 int minus1; // 0x00000074 length: 4 diff --git a/src/OpenSHC/UI/MenuTextInputState.hpp b/src/OpenSHC/UI/MenuTextInputState.hpp index 98bf3c632..1087a5742 100644 --- a/src/OpenSHC/UI/MenuTextInputState.hpp +++ b/src/OpenSHC/UI/MenuTextInputState.hpp @@ -22,27 +22,27 @@ namespace UI { // SIZE: 0x00001828 class MenuTextInputState { public: - undefined4 field0_0x0; // 0x00000000 length: 4 - undefined4 field1_0x4; // 0x00000004 length: 4 - undefined4 field2_0x8; // 0x00000008 length: 4 - undefined4 field3_0xc; // 0x0000000C length: 4 - undefined4 field4_0x10; // 0x00000010 length: 4 - undefined4 field5_0x14; // 0x00000014 length: 4 - undefined4 field6_0x18; // 0x00000018 length: 4 - undefined4 field7_0x1c; // 0x0000001C length: 4 - undefined4 field8_0x20; // 0x00000020 length: 4 - undefined4 field9_0x24; // 0x00000024 length: 4 + undefined4 fileListContext; // 0x00000000 length: 4 + undefined4 savedListOffset1; // 0x00000004 length: 4 + undefined4 savedListSelection1; // 0x00000008 length: 4 + undefined4 savedListSortOrder1; // 0x0000000C length: 4 + undefined4 savedListOffset2; // 0x00000010 length: 4 + undefined4 savedListSelection2; // 0x00000014 length: 4 + undefined4 savedListSortOrder2; // 0x00000018 length: 4 + undefined4 savedListOffset3; // 0x0000001C length: 4 + undefined4 savedListSelection3; // 0x00000020 length: 4 + undefined4 savedListSortOrder3; // 0x00000024 length: 4 undefined4 menuCurrentlySelectedResolution; // 0x00000028 length: 4 undefined4 unknownZoomRelatedFlag01; // 0x0000002C length: 4 - undefined4 field12_0x30; // 0x00000030 length: 4 + undefined4 pendingGameSpeedLevel; // 0x00000030 length: 4 undefined4 menuScrollSpeedSetting; // 0x00000034 length: 4 - undefined4 field14_0x38; // 0x00000038 length: 4 - undefined1 field15_0x3c; // 0x0000003C length: 1 + undefined4 pendingSettingBubbleHelp; // 0x00000038 length: 4 + undefined1 pendingUnusedOption1; // 0x0000003C length: 1 undefined1 padding_0x3d[3]; // 0x0000003D length: 3 undefined4 DAT_SoundActiveMenuVar; // 0x00000040 length: 4 - undefined4 field20_0x44; // 0x00000044 length: 4 - undefined4 field21_0x48; // 0x00000048 length: 4 - undefined4 field22_0x4c; // 0x0000004C length: 4 + undefined4 pendingStreamVolume0; // 0x00000044 length: 4 + undefined4 pendingStreamVolume1; // 0x00000048 length: 4 + undefined4 pendingStreamVolume3; // 0x0000004C length: 4 undefined4 menuCursorType; // 0x00000050 length: 4 undefined4 DAT_GenieVoiceActiveMenuVar; // 0x00000054 length: 4 undefined4 DAT_MenuOptionsActionParameter; // 0x00000058 length: 4 @@ -52,24 +52,24 @@ namespace UI { MenuModalTypeInt modalDialog_4; // 0x00000068 length: 4 MenuModalTypeInt modalDialog_5; // 0x0000006C length: 4 MenuModalTypeInt modalDialog_6; // 0x00000070 length: 4 - undefined4 field32_0x74; // 0x00000074 length: 4 - undefined4 field33_0x78; // 0x00000078 length: 4 - undefined4 DAT_MenuLoadGameRelativeSelectionIndex; // 0x0000007C length: 4 - undefined4 DAT_MenuLoadGameRelativeSelectionOffset; // 0x00000080 length: 4 - undefined4 field36_0x84; // 0x00000084 length: 4 + int fileListEntryCount; // 0x00000074 length: 4 + undefined4 fileListSortOrder; // 0x00000078 length: 4 + int menuLoadGameRelativeSelectionIndex; // 0x0000007C length: 4 + int menuLoadGameRelativeSelectionOffset; // 0x00000080 length: 4 + undefined4 fileListVisibleRowCount; // 0x00000084 length: 4 undefined4 DAT_SomeTextArrayIndex; // 0x00000088 length: 4 - undefined4 field38_0x8c; // 0x0000008C length: 4 - undefined4 field39_0x90; // 0x00000090 length: 4 - undefined4 field40_0x94; // 0x00000094 length: 4 - undefined4 field41_0x98; // 0x00000098 length: 4 + undefined4 lastClickedListIndex; // 0x0000008C length: 4 + undefined4 lastListClickTime; // 0x00000090 length: 4 + undefined4 progressBarX; // 0x00000094 length: 4 + undefined4 progressBarY; // 0x00000098 length: 4 undefined4 field42_0x9c; // 0x0000009C length: 4 - undefined4 field43_0xa0; // 0x000000A0 length: 4 + undefined4 previewedListIndex; // 0x000000A0 length: 4 int field44_0xa4; // 0x000000A4 length: 4 - undefined1 padding_0xa8[4]; // 0x000000A8 length: 4 - undefined4 field49_0xac; // 0x000000AC length: 4 - undefined4 DAT_ArrayOfMapU3EndInt2[500]; // 0x000000B0 length: 2000 + int dialogResult; // 0x000000A8 length: 4 + undefined4 field46_0xac; // 0x000000AC length: 4 + int DAT_ArrayOfMapU3EndInt2[500]; // 0x000000B0 length: 2000 undefined4 DAT_MapSelectionPreloadMapIndexMapping; // 0x00000880 length: 4 - undefined4 DAT_ArrayOfMapIndices[500]; // 0x00000884 length: 2000 + int DAT_ArrayOfMapIndices[500]; // 0x00000884 length: 2000 undefined4 DAT_ArrayOfMapIndices2[500]; // 0x00001054 length: 2000 undefined1 padding_0x1824[4]; // 0x00001824 length: 4 diff --git a/src/OpenSHC/UI/MenuViews/GameStartEnterName.func.hpp b/src/OpenSHC/UI/MenuViews/GameStartEnterName.func.hpp index 71da94b2d..8b65dee3b 100644 --- a/src/OpenSHC/UI/MenuViews/GameStartEnterName.func.hpp +++ b/src/OpenSHC/UI/MenuViews/GameStartEnterName.func.hpp @@ -18,7 +18,7 @@ namespace UI { &OpenSHC::UI::MenuViews::GameStartEnterName::MenuView_GameStartEnterName_DoEveryFrame) MenuView_GameStartEnterName_DoEveryFrame; - MACRO_FUNCTION_RESOLVER(void(__cdecl*)(void* param_1), false, Address::SHC_3BB0A8C1_0x00440560, + MACRO_FUNCTION_RESOLVER(void(__cdecl*)(), false, Address::SHC_3BB0A8C1_0x00440560, &OpenSHC::UI::MenuViews::GameStartEnterName::MenuView_GameStartEnterName_Prepare) MenuView_GameStartEnterName_Prepare; diff --git a/src/OpenSHC/UI/MenuViews/GameStartEnterName.hpp b/src/OpenSHC/UI/MenuViews/GameStartEnterName.hpp index 821d81e34..a0f65900a 100644 --- a/src/OpenSHC/UI/MenuViews/GameStartEnterName.hpp +++ b/src/OpenSHC/UI/MenuViews/GameStartEnterName.hpp @@ -15,7 +15,7 @@ namespace UI { void __cdecl MenuView_GameStartEnterName_DoEveryFrame(); - void __cdecl MenuView_GameStartEnterName_Prepare(void* param_1); + void __cdecl MenuView_GameStartEnterName_Prepare(); void __cdecl MenuView_GameStartEnterName_DoInitial(); diff --git a/src/OpenSHC/UI/MiniMap/MiniMapDefinedData.hpp b/src/OpenSHC/UI/MiniMap/MiniMapDefinedData.hpp index 669d428d5..536c6feef 100644 --- a/src/OpenSHC/UI/MiniMap/MiniMapDefinedData.hpp +++ b/src/OpenSHC/UI/MiniMap/MiniMapDefinedData.hpp @@ -20,27 +20,27 @@ namespace UI { // SIZE: 0x000002C4 typedef struct MiniMapDefinedData { - int field0_0x0[8]; // 0x00000000 length: 32 + int LuminescenceBrightnessPercent[8]; // 0x00000000 length: 32 ushort field1_0x20[2]; // 0x00000020 length: 4 - ushort field2_0x24[16]; // 0x00000024 length: 32 - ushort field3_0x44[8]; // 0x00000044 length: 16 - ushort field4_0x54[8]; // 0x00000054 length: 16 + ushort SeaMinimapColors[16]; // 0x00000024 length: 32 + ushort RiverMinimapColors[8]; // 0x00000044 length: 16 + ushort FordMinimapColors[8]; // 0x00000054 length: 16 ushort field5_0x64[8]; // 0x00000064 length: 16 ushort field6_0x74[8]; // 0x00000074 length: 16 - ushort field7_0x84[16]; // 0x00000084 length: 32 + ushort BouldersMinimapColors[16]; // 0x00000084 length: 32 ushort MinimapColorArray[8]; // 0x000000A4 length: 16 - ushort field9_0xb4[8]; // 0x000000B4 length: 16 + ushort PebblesMinimapColors[8]; // 0x000000B4 length: 16 ushort field10_0xc4[8]; // 0x000000C4 length: 16 - ushort field11_0xd4[8]; // 0x000000D4 length: 16 - ushort field12_0xe4[8]; // 0x000000E4 length: 16 - ushort field13_0xf4[8]; // 0x000000F4 length: 16 - ushort field14_0x104[16]; // 0x00000104 length: 32 - ushort field15_0x124[16]; // 0x00000124 length: 32 + ushort BeachMinimapColors[8]; // 0x000000D4 length: 16 + ushort IronMinimapColors[8]; // 0x000000E4 length: 16 + ushort MarshOrOilMinimapColors[8]; // 0x000000F4 length: 16 + ushort EarthMinimapColors[16]; // 0x00000104 length: 32 + ushort EarthAndStonesMinimapColors[16]; // 0x00000124 length: 32 ushort field16_0x144[8]; // 0x00000144 length: 16 - ushort field17_0x154[8]; // 0x00000154 length: 16 - ushort field18_0x164[8]; // 0x00000164 length: 16 - ushort field19_0x174[8]; // 0x00000174 length: 16 - ushort field20_0x184[52]; // 0x00000184 length: 104 + ushort StonesOrDrivenSandMinimapColors[8]; // 0x00000154 length: 16 + ushort ScrubMinimapColors[8]; // 0x00000164 length: 16 + ushort ThickScrubMinimapColors[8]; // 0x00000174 length: 16 + ushort OasisGrassMinimapColors[52]; // 0x00000184 length: 104 ushort PlayerColorColors[2][2]; // 0x000001EC length: 8 ushort AnimalMinimapColour_RGB15; // 0x000001F4 length: 2 ushort AnimalMinimapColour_RGB16; // 0x000001F6 length: 2 @@ -110,9 +110,9 @@ namespace UI { ushort field87_0x276; // 0x00000276 length: 2 ushort field88_0x278; // 0x00000278 length: 2 ushort field89_0x27a; // 0x0000027A length: 2 - MapColorRelatedStructure1 field90_0x27c[8]; // 0x0000027C length: 64 - int field91_0x2bc; // 0x000002BC length: 4 - int field92_0x2c0; // 0x000002C0 length: 4 + MapColorRelatedStructure1 MinimapColorByLogicBit[8]; // 0x0000027C length: 64 + int cachedKeepEnclosed; // 0x000002BC length: 4 + int cachedMapOrientation; // 0x000002C0 length: 4 } MiniMapDefinedData; #pragma pack(pop) diff --git a/src/OpenSHC/UI/MinimapViewState.hpp b/src/OpenSHC/UI/MinimapViewState.hpp index 5b3cac1d6..0b6a8c4f5 100644 --- a/src/OpenSHC/UI/MinimapViewState.hpp +++ b/src/OpenSHC/UI/MinimapViewState.hpp @@ -22,12 +22,12 @@ namespace UI { // SIZE: 0x00061BF8 class MinimapViewState { public: - undefined4 field0_0x0; // 0x00000000 length: 4 - undefined4 field1_0x4; // 0x00000004 length: 4 - undefined4 field2_0x8; // 0x00000008 length: 4 + undefined4 needsRedraw; // 0x00000000 length: 4 + undefined4 lastRenderedXOffset; // 0x00000004 length: 4 + undefined4 lastRenderedYOffset; // 0x00000008 length: 4 undefined4 field3_0xc; // 0x0000000C length: 4 - undefined4 field4_0x10; // 0x00000010 length: 4 - undefined4 field5_0x14; // 0x00000014 length: 4 + undefined4 tileOffsetY; // 0x00000010 length: 4 + undefined4 tileOffsetX; // 0x00000014 length: 4 undefined4 width; // 0x00000018 length: 4 undefined4 height; // 0x0000001C length: 4 undefined4 widthFactor; // 0x00000020 length: 4 @@ -37,10 +37,10 @@ namespace UI { undefined4 oneOrTwo; // 0x00000030 length: 4 undefined4 field13_0x34; // 0x00000034 length: 4 undefined4 field14_0x38; // 0x00000038 length: 4 - undefined4 field15_0x3c; // 0x0000003C length: 4 - undefined4 DAT_SomeMiniMapCounterTill4; // 0x00000040 length: 4 + undefined4 minimapClickEnabled; // 0x0000003C length: 4 + int someMiniMapCounterTill4; // 0x00000040 length: 4 ushort field17_0x44[80000]; // 0x00000044 length: 160000 - ushort field18_0x27144[80000]; // 0x00027144 length: 160000 + ushort minimapPixelBuffer[80000]; // 0x00027144 length: 160000 short loadedMiniMap[200][200]; // 0x0004E244 length: 80000 MapHeaderSection4IntStruct DAT_MapU4B64; // 0x00061AC4 length: 64 int spawnMomentX[20]; // 0x00061B04 length: 80 diff --git a/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface.hpp b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface.hpp index a52d47bc5..de68e7ecd 100644 --- a/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface.hpp +++ b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface.hpp @@ -24,8 +24,8 @@ namespace UI { class AlphaAndButtonSurface { public: ushort* surfacePtr; // 0x00000000 length: 4 - dword dim1_intMinimal350_1; // 0x00000004 length: 4 - dword dim2_intMinimal350_2; // 0x00000008 length: 4 + int dim1_intMinimal350_1; // 0x00000004 length: 4 + int dim2_intMinimal350_2; // 0x00000008 length: 4 int currentImageWidth; // 0x0000000C length: 4 private: diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore.hpp b/src/OpenSHC/UI/Rendering/TextureRenderCore.hpp index d84543559..a84ef181d 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore.hpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore.hpp @@ -58,7 +58,7 @@ namespace UI { Range screenMenuSurfaceHeightRange; // 0x00000060 length: 8 dword activeMenuTabIndex; // 0x00000068 length: 4 dword mbr_0x6c; // 0x0000006C length: 4 - dword mbr_0x70; // 0x00000070 length: 4 + dword colorPaletteOverride; // 0x00000070 length: 4 int gmProcessedImageDataBufferSize_0x74; // 0x00000074 length: 4 void* gmProcessedImageData; // 0x00000078 length: 4 int unknownMemSize_1_0x7c; // 0x0000007C length: 4 @@ -68,7 +68,7 @@ namespace UI { int gmAndGfxImageDataBufferSize_0x8c; // 0x0000008C length: 4 void* gmAndGfxImageDataBuffer; // 0x00000090 length: 4 void* bitmapsFaces_0x94; // 0x00000094 length: 4 - int field69_0x98[20]; // 0x00000098 length: 80 + int bitmapFaceSizes[20]; // 0x00000098 length: 80 int unknownPlayerDependentRenderValue[8]; // 0x000000E8 length: 32 int field71_0x108; // 0x00000108 length: 4 int field72_0x10c; // 0x0000010C length: 4 diff --git a/src/OpenSHC/UI/Rendering/WindowAndDirectDraw.hpp b/src/OpenSHC/UI/Rendering/WindowAndDirectDraw.hpp index 20e614a85..f30b8a1aa 100644 --- a/src/OpenSHC/UI/Rendering/WindowAndDirectDraw.hpp +++ b/src/OpenSHC/UI/Rendering/WindowAndDirectDraw.hpp @@ -67,10 +67,10 @@ namespace UI { BOOLEnum isNotProcessingInputEvents; // 0x000000C4 length: 4 BOOLEnum gameFocused; // 0x000000C8 length: 4 dword mbr_0xcc; // 0x000000CC length: 4 - dword mbr_0xd0; // 0x000000D0 length: 4 + dword pendingBltMode; // 0x000000D0 length: 4 ushort* surfacePointer_screenMenu; // 0x000000D4 length: 4 ushort* surfacePointer_mapGame; // 0x000000D8 length: 4 - dword field37_0xdc; // 0x000000DC length: 4 + dword pendingMenuRedraw; // 0x000000DC length: 4 BOOLEnum not_DDCAPS2_CANBOBHARDWARE_0xe0; // 0x000000E0 length: 4 undefined1 padding_0xe4[8]; // 0x000000E4 length: 8 IDirectDraw* pointerToIDirectDrawInterface; // 0x000000EC length: 4 diff --git a/src/OpenSHC/UI/ScrollingHandler.hpp b/src/OpenSHC/UI/ScrollingHandler.hpp index 8476b93cf..1fc3e1014 100644 --- a/src/OpenSHC/UI/ScrollingHandler.hpp +++ b/src/OpenSHC/UI/ScrollingHandler.hpp @@ -35,9 +35,9 @@ namespace UI { BOOLEnum downKeyDown_0x20; // 0x00000020 length: 4 BOOLEnum upKeyDown_0x24; // 0x00000024 length: 4 undefined4 field10_0x28; // 0x00000028 length: 4 - undefined4 field11_0x2c; // 0x0000002C length: 4 - undefined4 field12_0x30; // 0x00000030 length: 4 - undefined4 field13_0x34; // 0x00000034 length: 4 + undefined4 scrollDistanceMin; // 0x0000002C length: 4 + undefined4 scrollAccelerationInterval; // 0x00000030 length: 4 + undefined4 scrollDistanceLimit; // 0x00000034 length: 4 ScrollSpeedInt scrollSpeedSetting_0x38; // 0x00000038 length: 4 int scrollDistanceBase; // 0x0000003C length: 4 int timeOfLastNotScroll_0x40; // 0x00000040 length: 4 diff --git a/src/precomp/addresses-SHC-3BB0A8C1.hpp b/src/precomp/addresses-SHC-3BB0A8C1.hpp index 5db9995c5..320ae1e68 100644 --- a/src/precomp/addresses-SHC-3BB0A8C1.hpp +++ b/src/precomp/addresses-SHC-3BB0A8C1.hpp @@ -97615,7 +97615,7 @@ enum { SHC_3BB0A8C1_0x00EE0FC4 = 0x00EE0FC4, // label: DAT_CurrentUnitSlotID // location: - // type: /uint + // type: /int SHC_3BB0A8C1_0x00EE0FC8 = 0x00EE0FC8, // type: WinDef/DWORD SHC_3BB0A8C1_0x00EE0FCC = 0x00EE0FCC, diff --git a/src/symbols/data.asm b/src/symbols/data.asm index 92f7c1537..0d61b58b2 100644 --- a/src/symbols/data.asm +++ b/src/symbols/data.asm @@ -945,7 +945,7 @@ PUBLIC ?instance@?$Extern@I$0OOAPLM@@StructResolver@@2IA PUBLIC ?instance@?$Extern@I$0OOAPME@@StructResolver@@2IA -PUBLIC ?instance@?$Extern@I$0OOAPMI@@StructResolver@@2IA +PUBLIC ?instance@?$Extern@H$0OOAPMI@@StructResolver@@2HA PUBLIC ?instance@?$Extern@K$0OOBADM@@StructResolver@@2KA @@ -2606,7 +2606,7 @@ _TEXT SEGMENT ?instance@?$Extern@I$0OOAPME@@StructResolver@@2IA EQU 00EE0FC4h -?instance@?$Extern@I$0OOAPMI@@StructResolver@@2IA EQU 00EE0FC8h +?instance@?$Extern@H$0OOAPMI@@StructResolver@@2HA EQU 00EE0FC8h ?instance@?$Extern@K$0OOBADM@@StructResolver@@2KA EQU 00EE103Ch