mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-15 01:24:35 +02:00
#368 save/load inventory items, remove unused sound samples (PCM gym sequence, secret and underwater ambient sound)
This commit is contained in:
@@ -1661,7 +1661,7 @@ struct ItemObj
|
|||||||
#define TRACK_FLAG_ONCE 32
|
#define TRACK_FLAG_ONCE 32
|
||||||
#define TRACK_FLAG_MASK 31
|
#define TRACK_FLAG_MASK 31
|
||||||
|
|
||||||
#define SAVEGAME_VER 1
|
#define SAVEGAME_VER 2
|
||||||
#define SAVEGAME_SIZE (8 * 1024) // 8k EWRAM
|
#define SAVEGAME_SIZE (8 * 1024) // 8k EWRAM
|
||||||
|
|
||||||
struct SaveGame
|
struct SaveGame
|
||||||
@@ -1681,7 +1681,8 @@ struct SaveGame
|
|||||||
uint16 ammoUsed;
|
uint16 ammoUsed;
|
||||||
uint16 kills;
|
uint16 kills;
|
||||||
uint16 flipped;
|
uint16 flipped;
|
||||||
uint8 tracks[64];
|
uint8 tracks[64];
|
||||||
|
uint16 invSlots[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SETTINGS_VER 3
|
#define SETTINGS_VER 3
|
||||||
|
@@ -30,6 +30,9 @@ bool gameSave()
|
|||||||
gSaveGame.randSeedLogic = gRandSeedLogic;
|
gSaveGame.randSeedLogic = gRandSeedLogic;
|
||||||
gSaveGame.randSeedDraw = gRandSeedDraw;
|
gSaveGame.randSeedDraw = gRandSeedDraw;
|
||||||
|
|
||||||
|
memset(gSaveGame.invSlots, 0, sizeof(gSaveGame.invSlots));
|
||||||
|
memcpy(gSaveGame.invSlots, inventory.counts, sizeof(inventory.counts));
|
||||||
|
|
||||||
uint8* ptr = gSaveData;
|
uint8* ptr = gSaveData;
|
||||||
ItemObj* item = items;
|
ItemObj* item = items;
|
||||||
for (int32 i = 0; i < level.itemsCount; i++, item++)
|
for (int32 i = 0; i < level.itemsCount; i++, item++)
|
||||||
@@ -54,6 +57,8 @@ bool gameLoad()
|
|||||||
startLevel(gLevelInfo[gLevelID].name);
|
startLevel(gLevelInfo[gLevelID].name);
|
||||||
gSaveGame = tmp;
|
gSaveGame = tmp;
|
||||||
|
|
||||||
|
inventory.setSlots(gSaveGame.invSlots);
|
||||||
|
|
||||||
ItemObj::sFirstActive = NULL;
|
ItemObj::sFirstActive = NULL;
|
||||||
ItemObj::sFirstFree = items + level.itemsCount;
|
ItemObj::sFirstFree = items + level.itemsCount;
|
||||||
|
|
||||||
|
@@ -337,6 +337,18 @@ struct Inventory
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setSlots(uint16* invSlots)
|
||||||
|
{
|
||||||
|
numKeys = 0;
|
||||||
|
|
||||||
|
memcpy(counts, invSlots, sizeof(counts));
|
||||||
|
|
||||||
|
for (int32 i = 0; i < SLOT_COMPASS; i++)
|
||||||
|
{
|
||||||
|
numKeys += counts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool applyItem(ItemObj* hole)
|
bool applyItem(ItemObj* hole)
|
||||||
{
|
{
|
||||||
#define CHECK_CASE(A, B) case A: { if (useSlot != B) return false; break; }
|
#define CHECK_CASE(A, B) case A: { if (useSlot != B) return false; break; }
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user