diff --git a/config/RMCP01/module/symbols.txt b/config/RMCP01/module/symbols.txt index ec6212fa..3c805694 100644 --- a/config/RMCP01/module/symbols.txt +++ b/config/RMCP01/module/symbols.txt @@ -3056,7 +3056,7 @@ KartPart_vf_2c = .text:0x80592E5C; // type:function size:0x84 scope:global align fn_1_82B2C = .text:0x80592EE0; // type:function size:0x6C fn_1_82B98 = .text:0x80592F4C; // type:function size:0x5C initPlayerTypeTemporaries = .text:0x80592FA8; // type:function size:0x18 scope:global align:4 -__ct__Q24Kart12KartSettingsFv = .text:0x80592FC0; // type:function size:0xCC scope:global align:4 +__ct__Q24Kart12KartSettingsFScQ26System9VehicleIdQ26System11CharacterIdUlPQ24Kart9KartParamPvP20KartDriverDispParamsP19KartPartsDispParamsP19BikePartsDispParamsP16DriverDispParams = .text:0x80592FC0; // type:function size:0xCC scope:global align:4 fn_1_82CD8 = .text:0x8059308C; // type:function size:0x58 fn_1_82D30 = .text:0x805930E4; // type:function size:0x40 fn_1_82D70 = .text:0x80593124; // type:function size:0x4 diff --git a/src/kart/KartSettings.cpp b/src/kart/KartSettings.cpp index 7440a777..21586035 100644 --- a/src/kart/KartSettings.cpp +++ b/src/kart/KartSettings.cpp @@ -1 +1,41 @@ #include "KartSettings.hpp" + +#include + +namespace Kart { + +KartSettings::KartSettings( + s8 playerIdx, + System::VehicleId vehicle, + System::CharacterId character, + u32 isBike, + KartParam* kartParam, + void* arg6, + KartDriverDispParams* kartDriverDispParams, + KartPartsDispParams* kartPartsDispParams, + BikePartsDispParams* bikePartsDispParams, + DriverDispParams* driverDispParams) { + this->isBike = isBike; + this->vehicle = vehicle; + this->character = character; + this->playerIdx = playerIdx; + this->kartParam = kartParam; + this->_18 = arg6; + this->kartDriverDispParams = kartDriverDispParams; + this->kartPartsDispParams = kartPartsDispParams; + this->bikePartsDispParams = bikePartsDispParams; + this->driverDispParams = driverDispParams; + this->gpStats = nullptr; + this->raceStats = nullptr; + + if (System::RaceConfig::spInstance->mRaceScenario.mPlayers[(u8)playerIdx].mPlayerType == + System::RaceConfig::Player::TYPE_REAL_LOCAL) { + this->raceStats = new RaceStats; + if (System::RaceConfig::spInstance->mRaceScenario.mSettings.mGameMode == + System::RaceConfig::Settings::GAMEMODE_GRAND_PRIX) { + this->gpStats = new GpStats; + } + } +} + +} // namespace Kart diff --git a/src/kart/KartSettings.hpp b/src/kart/KartSettings.hpp index 191600c1..ac43edf9 100644 --- a/src/kart/KartSettings.hpp +++ b/src/kart/KartSettings.hpp @@ -8,11 +8,27 @@ #include "KartDispParams.hpp" namespace Kart { -class GpStats; -class RaceStats; +class RaceStats { + u8 _unk[0x14]; +}; + +class GpStats { + u8 _unk[0x1c]; +}; + class KartSettings { public: - KartSettings(); + KartSettings( + s8 playerIdx, + System::VehicleId vehicle, + System::CharacterId character, + u32 isBike, + KartParam* kartParam, + void* arg6, + KartDriverDispParams* kartDriverDispParams, + KartPartsDispParams* kartPartsDispParams, + BikePartsDispParams* bikePartsDispParams, + DriverDispParams* driverDispParams); u32 isBike; System::VehicleId vehicle;