Begin work on GenericSave
This commit is contained in:
parent
19488323ea
commit
4fee2cbdd9
@ -946,9 +946,9 @@ void CRadar::RequestMapSection(int32 x, int32 y)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
WRAPPER void CRadar::SaveAllRadarBlips(int32) { EAXJMP(0x4A6E30); }
|
WRAPPER void CRadar::SaveAllRadarBlips(uint8 *buf, uint32 *size) { EAXJMP(0x4A6E30); }
|
||||||
#else
|
#else
|
||||||
void CRadar::SaveAllRadarBlips(int32)
|
void CRadar::SaveAllRadarBlips(uint8 *buf, uint32 *size)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ public:
|
|||||||
static void RemoveRadarSections();
|
static void RemoveRadarSections();
|
||||||
static void RemoveMapSection(int32 x, int32 y);
|
static void RemoveMapSection(int32 x, int32 y);
|
||||||
static void RequestMapSection(int32 x, int32 y);
|
static void RequestMapSection(int32 x, int32 y);
|
||||||
static void SaveAllRadarBlips(int32);
|
static void SaveAllRadarBlips(uint8 *buf, uint32 *size);
|
||||||
static void SetBlipSprite(int32 i, int32 icon);
|
static void SetBlipSprite(int32 i, int32 icon);
|
||||||
static int32 SetCoordBlip(eBlipType type, CVector pos, int32, eBlipDisplay);
|
static int32 SetCoordBlip(eBlipType type, CVector pos, int32, eBlipDisplay);
|
||||||
static int32 SetEntityBlip(eBlipType type, int32, int32, eBlipDisplay);
|
static int32 SetEntityBlip(eBlipType type, int32, int32, eBlipDisplay);
|
||||||
|
@ -2,18 +2,27 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "patcher.h"
|
#include "patcher.h"
|
||||||
#include "Camera.h"
|
#include "Camera.h"
|
||||||
|
#include "CarGen.h"
|
||||||
#include "Clock.h"
|
#include "Clock.h"
|
||||||
#include "Date.h"
|
#include "Date.h"
|
||||||
#include "FileMgr.h"
|
#include "FileMgr.h"
|
||||||
#include "GameLogic.h"
|
#include "GameLogic.h"
|
||||||
|
#include "Gangs.h"
|
||||||
#include "Garages.h"
|
#include "Garages.h"
|
||||||
#include "GenericGameStorage.h"
|
#include "GenericGameStorage.h"
|
||||||
|
#include "PathFind.h"
|
||||||
#include "PCSave.h"
|
#include "PCSave.h"
|
||||||
|
#include "Phones.h"
|
||||||
|
#include "Pickups.h"
|
||||||
#include "PlayerPed.h"
|
#include "PlayerPed.h"
|
||||||
#include "Pools.h"
|
#include "Pools.h"
|
||||||
|
#include "Radar.h"
|
||||||
|
#include "Restart.h"
|
||||||
#include "Script.h"
|
#include "Script.h"
|
||||||
|
#include "Stats.h"
|
||||||
#include "Streaming.h"
|
#include "Streaming.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
|
#include "Zones.h"
|
||||||
|
|
||||||
const int SIZE_OF_ONE_GAME_IN_BYTES = 201729;
|
const int SIZE_OF_ONE_GAME_IN_BYTES = 201729;
|
||||||
|
|
||||||
@ -31,9 +40,82 @@ CDate &CompileDateAndTime = *(CDate*)0x72BCB8;
|
|||||||
#define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to));
|
#define ReadDataFromBufferPointer(buf, to) memcpy(&to, buf, sizeof(to)); buf += align4bytes(sizeof(to));
|
||||||
#define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from));
|
#define WriteDataToBufferPointer(buf, from) memcpy(buf, &from, sizeof(from)); buf += align4bytes(sizeof(from));
|
||||||
|
|
||||||
WRAPPER bool GenericSave(int file) { EAXJMP(0x58F8D0); }
|
//WRAPPER bool GenericSave(int file) { EAXJMP(0x58F8D0); }
|
||||||
WRAPPER bool GenericLoad() { EAXJMP(0x590A00); }
|
WRAPPER bool GenericLoad() { EAXJMP(0x590A00); }
|
||||||
|
|
||||||
|
bool
|
||||||
|
GenericSave(int file)
|
||||||
|
{
|
||||||
|
/*char *tmpSaveName;
|
||||||
|
wchar saveName[24];
|
||||||
|
SYSTEMTIME saveTime;*/
|
||||||
|
|
||||||
|
// TODO: Use GetLastMissionPassedName() to get this
|
||||||
|
//tmpSaveName = CStats::LastMissionPassedName;
|
||||||
|
|
||||||
|
//AsciiToUnicode(tmpSaveName, saveName);
|
||||||
|
|
||||||
|
//// TODO: some stuff here
|
||||||
|
|
||||||
|
//memcpy(work_buff, saveName, 0x30);
|
||||||
|
//GetLocalTime((SYSTEMTIME *)(work_buff + 0x30));
|
||||||
|
//*((uint32 *)(work_buff + 0x40)) = SIZE_OF_ONE_GAME_IN_BYTES;
|
||||||
|
//*((uint32 *)(work_buff + 0x44)) = CGame::currLevel;
|
||||||
|
//
|
||||||
|
//PcSaveHelper.PcClassSaveRoutine(file, work_buff, 0xE8);
|
||||||
|
|
||||||
|
|
||||||
|
uint8 *buf;
|
||||||
|
uint8 *tmpbuf;
|
||||||
|
uint8 *postsize;
|
||||||
|
uint32 size;
|
||||||
|
uint32 reserved;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
// TODO: simplevars and scripts
|
||||||
|
|
||||||
|
for (int i = 1; i < 19; i++) {
|
||||||
|
buf = work_buff;
|
||||||
|
size = 0;
|
||||||
|
reserved = 0;
|
||||||
|
MakeSpaceForSizeInBufferPointer(tmpbuf, buf, postsize);
|
||||||
|
switch (i) {
|
||||||
|
case 1: break;
|
||||||
|
case 2: break;
|
||||||
|
case 3: break;
|
||||||
|
case 4: break;
|
||||||
|
case 5: ThePaths.Save(buf, &size); break;
|
||||||
|
case 6: break;
|
||||||
|
case 7: CPickups::Save(buf, &size); break;
|
||||||
|
case 8: gPhoneInfo.Save(buf, &size); break;
|
||||||
|
case 9: CRestart::SaveAllRestartPoints(buf, &size); break;
|
||||||
|
case 10: CRadar::SaveAllRadarBlips(buf, &size); break;
|
||||||
|
case 11: CTheZones::SaveAllZones(buf, &size); break;
|
||||||
|
case 12: CGangs::SaveAllGangData(buf, &size); break;
|
||||||
|
case 13: CTheCarGenerators::SaveAllCarGenerators(buf, &size); break;
|
||||||
|
case 14: break;
|
||||||
|
case 15: break;
|
||||||
|
case 16: break;
|
||||||
|
case 17: break;
|
||||||
|
case 18: break;
|
||||||
|
case 19: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
CopySizeAndPreparePointer(tmpbuf, buf, postsize, reserved, size);
|
||||||
|
result = PcSaveHelper.PcClassSaveRoutine(file, work_buff, size);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: padding
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size)
|
ReadInSizeofSaveFileBuffer(int32 &file, uint32 &size)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user