diff options
| author | raysan5 <raysan5@gmail.com> | 2016-01-04 15:12:34 +0100 |
|---|---|---|
| committer | raysan5 <raysan5@gmail.com> | 2016-01-04 15:12:34 +0100 |
| commit | 70d405b41bcbbd73b9f752f4dc3910100abd1a36 (patch) | |
| tree | 430b94524164208e5a1c856d03db82bb51e2739c /src/core.c | |
| parent | 95da97fa744766fb46b912dcae504cd858fd2377 (diff) | |
| download | raylib-70d405b41bcbbd73b9f752f4dc3910100abd1a36.tar.gz raylib-70d405b41bcbbd73b9f752f4dc3910100abd1a36.zip | |
Added functionality: Storage values
Two new functions added to save/load values as binary data:
- StorageSaveValue()
- StorageLoadValue()
Diffstat (limited to 'src/core.c')
| -rw-r--r-- | src/core.c | 61 |
1 files changed, 61 insertions, 0 deletions
@@ -708,6 +708,67 @@ void ClearDroppedFiles(void) } #endif +// Storage save integer value (to defined position) +// NOTE: Storage positions is directly related to file memory layout (4 bytes each integer) +void StorageSaveValue(int position, int value) +{ + FILE *storageFile = NULL; + + // Try open existing file to append data + storageFile = fopen("storage.data", "rb+"); + + // If file doesn't exist, create a new storage data file + if (!storageFile) storageFile = fopen("storage.data", "wb"); + + if (!storageFile) TraceLog(WARNING, "Storage data file could not be created"); + else + { + // Get file size + fseek(storageFile, 0, SEEK_END); + int fileSize = ftell(storageFile); // Size in bytes + fseek(storageFile, 0, SEEK_SET); + + if (fileSize < (position*4)) TraceLog(WARNING, "Storage position could not be found"); + else + { + fseek(storageFile, (position*4), SEEK_SET); + fwrite(&value, 1, 4, storageFile); + } + + fclose(storageFile); + } +} + +// Storage load integer value (from defined position) +// NOTE: If requested position could not be found, value 0 is returned +int StorageLoadValue(int position) +{ + int value = 0; + + // Try open existing file to append data + FILE *storageFile = fopen("storage.data", "rb"); + + if (!storageFile) TraceLog(WARNING, "Storage data file could not be found"); + else + { + // Get file size + fseek(storageFile, 0, SEEK_END); + int fileSize = ftell(storageFile); // Size in bytes + rewind(storageFile); + + if (fileSize < (position*4)) TraceLog(WARNING, "Storage position could not be found"); + else + { + fseek(storageFile, (position*4), SEEK_SET); + fread(&value, 1, 4, storageFile); + } + + fclose(storageFile); + } + + return value; +} + // TODO: Gives the ray trace from mouse position Ray GetMouseRay(Vector2 mousePosition, Camera camera) { |
