diff --git a/Source/Client/Mode/CGameMode.h b/Source/Client/Mode/CGameMode.h index 8bc88702..671b79c6 100644 --- a/Source/Client/Mode/CGameMode.h +++ b/Source/Client/Mode/CGameMode.h @@ -147,6 +147,7 @@ public: bool IsEffectId994Group(int id); bool ConfirmDraggedItemUse(); void sub_CFE480(int actorId); + void NotifyUnknown0604(int value); void WorldCell(float x, float z, int& column, int& row) const; void SubcellPosition(int column, int row, int subColumn, int subRow, float& x, float& z) const; void PlayerCell(int* column, int* row) const; @@ -407,8 +408,8 @@ public: void sub_D63D70(const unsigned char* record); void sub_D65FC0(const unsigned char* record); void sub_D7B170( - int first, std::string text, int second, int third, int fourth, int fifth, int sixth, int seventh, int eighth, - int ninth, int tenth, int eleventh, int twelfth, int thirteenth, int fourteenth, int fifteenth + int first, int second, int third, int fourth, int fifth, int sixth, int seventh, int eighth, int ninth, int tenth, + int eleventh, int twelfth, int thirteenth, int fourteenth, std::string text, int fifteenth ); void Slot7(int value) override; void PlaceWindowAtActor(UIWindow* window, CGameActor* actor); diff --git a/Source/Client/Mode/GameMode.cpp b/Source/Client/Mode/GameMode.cpp index f9bf7921..47168a2a 100644 --- a/Source/Client/Mode/GameMode.cpp +++ b/Source/Client/Mode/GameMode.cpp @@ -955,3 +955,52 @@ ReplayTime CGameMode::StopReplayRecording() { Replay::Instance().CloseFile(); return duration; } + +#pragma pack(push, 1) +struct GameModeChunkHeader { + /* 0000 */ std::int16_t type; + /* 0002 */ std::uint32_t size; +}; +#pragma pack(pop) + +static_assert(sizeof(GameModeChunkHeader) == 6); + +#pragma pack(push, 1) +struct GameModeStoredRecord00DA { + /* 0000 */ std::uint16_t type; + /* 0002 */ int value0002; + /* 0006 */ int value0006; + /* 000A */ std::uint16_t value000A; + /* 000C */ std::uint16_t value000C; + /* 000E */ unsigned char value000E; + /* 000F */ std::uint16_t value000F; + /* 0011 */ int value0011; + /* 0015 */ int value0015; + /* 0019 */ std::uint16_t value0019; + /* 001B */ std::uint16_t value001B; + /* 001D */ std::uint16_t value001D; + /* 001F */ std::uint16_t value001F; + /* 0021 */ std::uint16_t value0021; + /* 0023 */ std::uint16_t value0023; + /* 0025 */ char text[0x18]; + /* 003D */ std::uint16_t value003D; +}; +#pragma pack(pop) + +static_assert(offsetof(GameModeStoredRecord00DA, text) == 0x25); +static_assert(offsetof(GameModeStoredRecord00DA, value003D) == 0x3D); + +static_assert(sizeof(GameModeTextRecord) == 0x190); +static_assert(offsetof(GameModeTextRecord, buffer) == 0x1E); + +// OFFSET: 0x00CFE4D0 +// FUNCTION: fn_21433 +void CGameMode::NotifyUnknown0604(int value) { + for (std::list::iterator it = this->unknown_0604.begin(); it != this->unknown_0604.end(); ++it) { + (*it)->SendMsg(nullptr, 60, value, 0, 0, 0); + } +} + +// OFFSET: 0x00CEBF30 + +// OFFSET: 0x00CEC100