Add respect related game data
- Updated Game structs:
- Player
- GangRespect
- Added Game::Functions functions:
- GetFirstGangRespect
- GetNextGangRespect
- GetGangName
- Added Game::Utils::GangUtils::GetVisibleGangs util function
- Applied a temporary fix to ModMenuModule::PlayerStatsMenu to make it work with the above changes
This commit is contained in:
parent
2ee8d9eb5d
commit
e8c99e905a
@ -614,6 +614,7 @@ echo Created $(ProjectDir)src\git.h with commit %GIT_HASH% (dirty=%GIT_DIRTY%)
|
||||
<ClInclude Include="src\game\gta2_additional.h" />
|
||||
<ClInclude Include="src\game\utils\angle-utils.h" />
|
||||
<ClInclude Include="src\game\utils\car-roof-utils.h" />
|
||||
<ClInclude Include="src\game\utils\gang-utils.h" />
|
||||
<ClInclude Include="src\game\utils\keyboard-utils.h" />
|
||||
<ClInclude Include="src\game\utils\cop-value-utils.h" />
|
||||
<ClInclude Include="src\game\utils\player-utils.h" />
|
||||
@ -890,6 +891,7 @@ echo Created $(ProjectDir)src\git.h with commit %GIT_HASH% (dirty=%GIT_DIRTY%)
|
||||
<ClCompile Include="src\game\keycode.cpp" />
|
||||
<ClCompile Include="src\game\utils\car-roof-utils.cpp" />
|
||||
<ClCompile Include="src\game\utils\cop-value-utils.cpp" />
|
||||
<ClCompile Include="src\game\utils\gang-utils.cpp" />
|
||||
<ClCompile Include="src\game\utils\player-utils.cpp" />
|
||||
<ClCompile Include="src\game\utils\lists-utils.cpp" />
|
||||
<ClCompile Include="src\game\utils\scrf-utils.cpp" />
|
||||
|
||||
@ -187,6 +187,7 @@
|
||||
<ClCompile Include="src\modules\modmenu\menus\position-menu.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\segments\position-menu-segment.cpp" />
|
||||
<ClCompile Include="src\modules\modmenu\cheats\position-store.cpp" />
|
||||
<ClCompile Include="src\game\utils\gang-utils.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\converters\ammo.h" />
|
||||
@ -494,6 +495,7 @@
|
||||
<ClInclude Include="src\modules\modmenu\cheats\position-store.h" />
|
||||
<ClInclude Include="src\modules\modmenu\events\position-store-entries-update.h" />
|
||||
<ClInclude Include="src\modules\modmenu\events\player-pos-rot-update.h" />
|
||||
<ClInclude Include="src\game\utils\gang-utils.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GTA2.props" />
|
||||
|
||||
@ -177,5 +177,13 @@ namespace Game {
|
||||
typedef void(__fastcall WorldPointToScreenType)(Camera* camera, DWORD edx, SCR_f x, SCR_f y, SCR_f z, SCR_f** outX, SCR_f** outY);
|
||||
static constexpr WorldPointToScreenType* WorldPointToScreen = (WorldPointToScreenType*)0x0040cfc0;
|
||||
|
||||
typedef GangRespect* (__fastcall GetFirstGangRespectType)(GangRespectContainer* gangRespectContainer);
|
||||
static constexpr GetFirstGangRespectType* GetFirstGangRespect = (GetFirstGangRespectType*)0x0045dd60;
|
||||
|
||||
typedef GangRespect* (__fastcall GetNextGangRespectType)(GangRespectContainer* gangRespectContainer);
|
||||
static constexpr GetNextGangRespectType* GetNextGangRespect = (GetNextGangRespectType*)0x0045ddb0;
|
||||
|
||||
typedef wchar_t* (__fastcall GetGangNameType)(GangRespect* gangRespect);
|
||||
static constexpr GetGangNameType* GetGangName = (GetGangNameType*)0x0045dd20;
|
||||
};
|
||||
}
|
||||
|
||||
@ -2963,7 +2963,7 @@ struct Player { /* Player actually */
|
||||
byte field_0x29;
|
||||
short field_0x2a;
|
||||
short field_0x2c;
|
||||
byte field_0x2e;
|
||||
byte gangsRespectIndex;
|
||||
byte field_0x2f;
|
||||
byte field_0x30;
|
||||
byte field_0x31;
|
||||
@ -5778,8 +5778,8 @@ struct GameObjectsManager {
|
||||
typedef struct GangRespect GangRespect, *PGangRespect;
|
||||
|
||||
struct GangRespect {
|
||||
u1 field_0x0;
|
||||
u1 id;
|
||||
bool present;
|
||||
char id;
|
||||
char gangName[10];
|
||||
undefined field_0xc;
|
||||
undefined field_0xd;
|
||||
@ -6033,12 +6033,34 @@ struct GangRespect {
|
||||
undefined4 field_0x108;
|
||||
undefined4 field_0x10c;
|
||||
undefined field_0x110[12];
|
||||
char respect;
|
||||
undefined field_0x11d;
|
||||
undefined field_0x11e;
|
||||
undefined field_0x11f;
|
||||
char respectArr[4];
|
||||
undefined2 field_0x120;
|
||||
undefined field_0x122[26];
|
||||
undefined field_0x122;
|
||||
undefined field_0x123;
|
||||
undefined field_0x124;
|
||||
undefined field_0x125;
|
||||
undefined field_0x126;
|
||||
undefined field_0x127;
|
||||
undefined field_0x128;
|
||||
undefined field_0x129;
|
||||
undefined field_0x12a;
|
||||
undefined field_0x12b;
|
||||
undefined field_0x12c;
|
||||
undefined field_0x12d;
|
||||
undefined field_0x12e;
|
||||
undefined field_0x12f;
|
||||
undefined field_0x130;
|
||||
undefined field_0x131;
|
||||
undefined field_0x132;
|
||||
undefined field_0x133;
|
||||
undefined field_0x134;
|
||||
undefined field_0x135;
|
||||
undefined field_0x136;
|
||||
undefined field_0x137;
|
||||
byte spritesOffset;
|
||||
bool shouldDraw;
|
||||
undefined field_0x13a;
|
||||
undefined field_0x13b;
|
||||
undefined4 field_0x13c;
|
||||
u1 field_0x140;
|
||||
u1 field_0x141;
|
||||
|
||||
25
src/game/utils/gang-utils.cpp
Normal file
25
src/game/utils/gang-utils.cpp
Normal file
@ -0,0 +1,25 @@
|
||||
#include "gang-utils.h"
|
||||
#include "../memory.h"
|
||||
#include "../functions.h"
|
||||
|
||||
std::vector<Game::GangRespect*> Game::Utils::GetVisibleGangs()
|
||||
{
|
||||
std::vector<GangRespect*> gangs;
|
||||
|
||||
GangRespectContainer* container = Memory::GetGangRespectContainer();
|
||||
if (!container) {
|
||||
return gangs;
|
||||
}
|
||||
|
||||
GangRespect* gang = Functions::GetFirstGangRespect(container);
|
||||
if (!gang) {
|
||||
return gangs;
|
||||
}
|
||||
|
||||
do {
|
||||
gangs.push_back(gang);
|
||||
gang = Functions::GetNextGangRespect(container);
|
||||
} while (gang);
|
||||
|
||||
return gangs;
|
||||
}
|
||||
7
src/game/utils/gang-utils.h
Normal file
7
src/game/utils/gang-utils.h
Normal file
@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
#include "../common.h"
|
||||
#include "../gta2_wrapper.h"
|
||||
|
||||
namespace Game::Utils {
|
||||
std::vector<GangRespect*> GetVisibleGangs();
|
||||
}
|
||||
@ -4,6 +4,7 @@
|
||||
#include "car-roof-utils.h"
|
||||
#include "keyboard-utils.h"
|
||||
#include "cop-value-utils.h"
|
||||
#include "gang-utils.h"
|
||||
#include "lists-utils.h"
|
||||
#include "player-utils.h"
|
||||
#include "scrf-utils.h"
|
||||
|
||||
@ -66,7 +66,7 @@ bool ModMenuModule::PlayerStatsMenu::Attach()
|
||||
Core::MakeResolver(
|
||||
Game::Memory::GetGangRespectContainer,
|
||||
mem(&Game::GangRespectContainer::gang), idx(0),
|
||||
mem(&Game::GangRespect::respect)
|
||||
mem(&Game::GangRespect::respectArr), idx(0)
|
||||
),
|
||||
UiModule::VarTextEditableControllerOptions{ L"Respect 1: #", L"#" }
|
||||
);
|
||||
@ -78,7 +78,7 @@ bool ModMenuModule::PlayerStatsMenu::Attach()
|
||||
Core::MakeResolver(
|
||||
Game::Memory::GetGangRespectContainer,
|
||||
mem(&Game::GangRespectContainer::gang), idx(1),
|
||||
mem(&Game::GangRespect::respect)
|
||||
mem(&Game::GangRespect::respectArr), idx(0)
|
||||
),
|
||||
UiModule::VarTextEditableControllerOptions{ L"Respect 2: #", L"#" }
|
||||
);
|
||||
@ -90,7 +90,7 @@ bool ModMenuModule::PlayerStatsMenu::Attach()
|
||||
Core::MakeResolver(
|
||||
Game::Memory::GetGangRespectContainer,
|
||||
mem(&Game::GangRespectContainer::gang), idx(2),
|
||||
mem(&Game::GangRespect::respect)
|
||||
mem(&Game::GangRespect::respectArr), idx(0)
|
||||
),
|
||||
UiModule::VarTextEditableControllerOptions{ L"Respect 3: #", L"#" }
|
||||
);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user