StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
DataManager.hpp
1#pragma once
2#ifdef StevEngine_PLAYER_DATA
3#include "main/Log.hpp"
4#include "utilities/KeyValueStore.hpp"
5#include <string>
6
7namespace StevEngine::Data {
8
16 class GameData {
17 public:
24 void Init(std::string title);
25
35 template<typename T> T Read(std::string name) {
36 //Check if key exists
37 if(!data.Contains(name)) {
38 Log::Error(std::format("Game data with key '{}' not found!", name), true);
39 return T();
40 }
41 //Read value
42 return data.Read<T>(name);
43 }
44
53 template<typename T> void Save(std::string name, T data) {
54 this->data.Write(name, data);
55 SaveToFile();
56 }
57
62 void Delete(std::string name);
63
68 std::string GetAppdataPath() { return appdataPath; }
69
74 std::string GetLogPath() { return logPath; }
75
76 private:
78 std::string appdataPath;
79
81 std::string logPath;
82
85
89 void SaveToFile();
90 };
91
96 extern std::string GetHomePath();
97
99 extern GameData data;
100}
101#endif
Manages persistent game data storage and retrieval.
Definition DataManager.hpp:16
void Delete(std::string name)
Delete saved data.
Definition DataManager.cpp:54
T Read(std::string name)
Read data of specified type.
Definition DataManager.hpp:35
void Init(std::string title)
Initialize the data manager.
Definition DataManager.cpp:41
void Save(std::string name, T data)
Save data of specified type.
Definition DataManager.hpp:53
std::string GetLogPath()
Get path to log directory.
Definition DataManager.hpp:74
std::string GetAppdataPath()
Get path to app data directory.
Definition DataManager.hpp:68
Definition KeyValueStore.hpp:5