44 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include "components.hpp"
 | |
| #include "dinkyecs.hpp"
 | |
| #include "tser.hpp"
 | |
| #include <filesystem>
 | |
| #include <string>
 | |
| #include <map>
 | |
| 
 | |
| namespace save {
 | |
|   namespace fs = std::filesystem;
 | |
| 
 | |
|   struct MapData {
 | |
|     size_t width;
 | |
|     size_t height;
 | |
|     std::vector<Room> rooms;
 | |
|     Matrix walls;
 | |
| 
 | |
|     DEFINE_SERIALIZABLE(MapData, width, height, rooms, walls);
 | |
|   };
 | |
| 
 | |
|   struct Facts {
 | |
|     components::Player player;
 | |
| 
 | |
|     DEFINE_SERIALIZABLE(Facts, player);
 | |
|   };
 | |
| 
 | |
|   struct SaveData {
 | |
|     Facts facts;
 | |
|     MapData map;
 | |
| 
 | |
|     std::map<DinkyECS::Entity, components::Position> position;
 | |
|     std::map<DinkyECS::Entity, components::Motion> motion;
 | |
|     std::map<DinkyECS::Entity, components::Combat> combat;
 | |
|     std::map<DinkyECS::Entity, components::Tile> tile;
 | |
|     std::map<DinkyECS::Entity, components::Inventory> inventory;
 | |
| 
 | |
|     DEFINE_SERIALIZABLE(SaveData, facts, map, position, motion, combat, tile, inventory);
 | |
|   };
 | |
| 
 | |
|   void to_file(fs::path path, DinkyECS::World &world, Map &map);
 | |
|   void from_file(fs::path path, DinkyECS::World &world_out, Map &map);
 | |
|   void load_configs(DinkyECS::World &world);
 | |
| }
 | 
