summaryrefslogtreecommitdiff
path: root/include/file/world.hpp
diff options
context:
space:
mode:
authorhovertank3d <[email protected]>2025-11-14 20:05:59 +0100
committerhovertank3d <[email protected]>2025-11-15 14:03:07 +0100
commitfa318825ef0404816728f733484caa1bc23afa53 (patch)
tree154d51e23f907102cbb8367b8cdc4d3bb4153dc1 /include/file/world.hpp
parent6c1a6c62bb13d09a0beb51ebb5cd5e4a69d9fe5a (diff)
downloadogurec-fa318825ef0404816728f733484caa1bc23afa53.tar.gz
ogurec-fa318825ef0404816728f733484caa1bc23afa53.zip
george droid
Diffstat (limited to 'include/file/world.hpp')
-rw-r--r--include/file/world.hpp65
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