diff options
| author | hovertank3d <[email protected]> | 2025-11-14 20:05:59 +0100 |
|---|---|---|
| committer | hovertank3d <[email protected]> | 2025-11-15 14:03:07 +0100 |
| commit | fa318825ef0404816728f733484caa1bc23afa53 (patch) | |
| tree | 154d51e23f907102cbb8367b8cdc4d3bb4153dc1 /include/file/world.hpp | |
| parent | 6c1a6c62bb13d09a0beb51ebb5cd5e4a69d9fe5a (diff) | |
| download | ogurec-fa318825ef0404816728f733484caa1bc23afa53.tar.gz ogurec-fa318825ef0404816728f733484caa1bc23afa53.zip | |
george droid
Diffstat (limited to 'include/file/world.hpp')
| -rw-r--r-- | include/file/world.hpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/include/file/world.hpp b/include/file/world.hpp new file mode 100644 index 0000000..300a3e0 --- /dev/null +++ b/include/file/world.hpp @@ -0,0 +1,65 @@ +#pragma once + +#include <array> +#include <cstdint> +#include <cstdio> +#include <fcntl.h> +#include <filesystem> +#include <fstream> +#include <iostream> +#include <stdexcept> +#include <string> +#include <vector> + +#include "file/metadata.hpp" +#include "util/bitset.hpp" +#include "util/io.hpp" +#include "version.hpp" + +namespace file { + +class world { + int32_t version; + // metadata meta; + + std::vector<uint32_t> positions; + bitset<0> importance; + + int32_t seed; + std::array<uint8_t, 16> guid; + int32_t worldID; + int32_t world_left; + int32_t world_right; + int32_t world_top; + int32_t world_botton; + int32_t height; + int32_t width; + +public: + void load_header(std::ifstream& f) + { + } + + world(std::string filename) + { + if (!std::filesystem::exists(filename)) { + throw std::runtime_error("file not found"); + } + auto rw = io::serialized_io(io::file_io { filename }); + + rw.read(version); + if (version <= 88 || version > terraria_version) { + throw std::runtime_error("invalid world file version"); + } + std::cout << version << std::endl; + metadata meta; + + rw.read(meta); + + if (meta.ftype != filetype::World) { + throw std::runtime_error("expected world file"); + } + } +}; + +}
\ No newline at end of file |
