### Install RME Dependencies with vcpkg Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Windows Commands to install required libraries (wxwidgets, freeglut, asio, nlohmann-json, fmt) for both 32-bit and 64-bit Windows targets using vcpkg. After installation, integrates vcpkg with Visual Studio. ```bash # 32 bit: ./vcpkg install wxwidgets freeglut asio nlohmann-json fmt # 64 bit: ./vcpkg install --triplet x64-windows wxwidgets freeglut asio nlohmann-json fmt # Integrate with Visual Studio: ./vcpkg integrate install ``` -------------------------------- ### Install C++ Dependencies with vcpkg Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-macOS Installs required C++ libraries using vcpkg. These libraries include networking (asio), JSON parsing (nlohmann-json), and a GUI toolkit (wxWidgets). Ensure vcpkg is bootstrapped before running these commands. ```bash vcpkg install asio vcpkg install nlohmann-json vcpkg install wxWidgets ``` -------------------------------- ### Install vcpkg using Git Bash Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Windows Steps to clone and bootstrap vcpkg, a package manager for C++, using Git Bash. This is a prerequisite for installing project dependencies. ```bash cd /c git clone https://github.com/Microsoft/vcpkg cd vcpkg ./bootstrap-vcpkg.bat ``` -------------------------------- ### Install System Dependencies with Pacman Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Arch-Linux Updates the system package list and installs essential development tools and libraries required for building the Remere's Map Editor project. This command ensures the system is up-to-date and that all necessary packages like asio, cmake, and wxwidgets are present. ```sh $ sudo pacman -Syu $ sudo pacman -S asio base-devel cmake fmt freeglut git mesa nlohmann-json wxwidgets-gtk3 ``` -------------------------------- ### Install vcpkg C++ Dependency Manager Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-macOS Clones and bootstraps vcpkg, a C++ package manager. This is a prerequisite for installing specific C++ libraries required by the RME project. Navigate into the cloned directory before bootstrapping. ```bash git clone https://github.com/microsoft/vcpkg cd vcpkg ./bootstrap-vcpkg.sh ``` -------------------------------- ### Install Homebrew Package Manager Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-macOS Installs Homebrew, a popular package manager for macOS and Linux, which is used to install other development dependencies. Ensure you have a stable internet connection. ```bash brew install git cmake wxmac boost libarchive vcpkg pkg-config ``` -------------------------------- ### Install Dependencies for Ubuntu < 20.04 Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Ubuntu Installs necessary development dependencies for the rme project on Ubuntu systems older than version 20.04. This includes essential libraries for building C++ projects, such as git, cmake, asio, json, fmt, and GUI-related libraries. ```bash sudo apt-get install git cmake libasio-dev nlohmann-json3-dev libfmt-dev libglu1-mesa-dev libwxgtk3.0-dev libarchive-dev freeglut3-dev libxmu-dev libxi-dev ``` -------------------------------- ### Install Dependencies for Ubuntu 20.04 Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Ubuntu Installs development dependencies for the rme project on Ubuntu 20.04. It is similar to the older versions but specifies the gtk3 variant of the wxwidgets library. ```bash sudo apt-get install git cmake libasio-dev nlohmann-json3-dev libfmt-dev libglu1-mesa-dev libwxgtk3.0-gtk3-dev libarchive-dev freeglut3-dev libxmu-dev libxi-dev ``` -------------------------------- ### Install Dependencies for Ubuntu 22.04 Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Ubuntu Installs development dependencies for the rme project on Ubuntu 22.04. This version includes the wxgtk3.2 library and the boost-thread library, in addition to other common dependencies. ```bash sudo apt-get install git cmake libasio-dev nlohmann-json3-dev libfmt-dev libglu1-mesa-dev libwxgtk3.2-dev libarchive-dev freeglut3-dev libxmu-dev libxi-dev libboost-thread-dev ``` -------------------------------- ### Clone rme Project Repository Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Ubuntu Clones the rme project from its GitHub repository. This command downloads the entire project source code to the local machine, allowing for further building and development. ```bash git clone https://github.com/hampusborgos/rme.git ``` -------------------------------- ### Build RME Project with CMake and Make Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-macOS Prepares the build environment for the RME project by creating a build directory and then uses CMake to configure the build with vcpkg integration. Finally, it compiles the project using Make with parallel jobs. ```bash cd rme mkdir build cd build cmake -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake .. make -j4 ``` -------------------------------- ### Clone RME Project Repository Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-macOS Clones the RME project source code from its GitHub repository. This command downloads the latest version of the project files to your local machine. ```bash git clone https://github.com/hjnilsson/rme.git ``` -------------------------------- ### Prepare Build Directory and Compile rme Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Ubuntu Creates a build directory, navigates into it, configures the project using CMake, and then compiles the project using make with parallel job execution. This is a standard procedure for building C++ projects with CMake. ```bash mkdir rme/build && cd rme/build && cmake .. && make -j `nproc` ``` -------------------------------- ### Run RME Application Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-macOS Executes the compiled RME application. This command assumes you are in the build directory where the executable was created. ```bash ./rme ``` -------------------------------- ### Clone RME Project using Git Bash Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Windows Commands to create a directory for development and clone the RME project repository from GitHub using Git Bash. ```bash cd /c mkdir developer cd developer git clone https://github.com/hampusborgos/rme.git ``` -------------------------------- ### Update Package Index with apt-get Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Ubuntu Updates the package index files on Debian-based systems like Ubuntu. This command fetches the latest information about available packages from configured repositories. It is a prerequisite for installing or updating software. ```bash sudo apt-get update ``` -------------------------------- ### Run Remere's Map Editor Executable Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Arch-Linux Executes the compiled Remere's Map Editor application. After a successful build, this command launches the graphical user interface of the map editor. ```sh $ ./rme ``` -------------------------------- ### Clone Remere's Map Editor Project Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Arch-Linux Clones the Remere's Map Editor project repository from GitHub using Git. This command fetches the entire project source code to the local machine, allowing for subsequent building and modification. ```sh $ git clone git@github.com:hjnilsson/rme.git ``` -------------------------------- ### CMake Project Setup and Configuration Source: https://github.com/hampusborgos/rme/blob/master/CMakeLists.txt Initializes the CMake project, sets the build type, and configures compiler standards. It ensures C++20 compatibility and sets the executable name. This block is essential for defining the project's scope and build environment. ```cmake cmake_minimum_required(VERSION 3.1) project(rme) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE RelWithDebInfo) endif() set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON) ``` -------------------------------- ### Build Remere's Map Editor with CMake Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Arch-Linux Compiles the Remere's Map Editor project using CMake and Make. This process involves creating a build directory, navigating into it, configuring the project with CMake, and then executing the build process with parallel jobs for faster compilation. ```sh $ mkdir rme/build && cd rme/build && cmake .. && make -j $(nproc) ``` -------------------------------- ### Configure CMake with OpenGL Preference Source: https://github.com/hampusborgos/rme/wiki/Compiling-on-Arch-Linux Resolves a potential CMake warning regarding OpenGL by explicitly setting the OpenGL_GL_PREFERENCE option. This ensures that CMake uses the desired OpenGL implementation (GLVND) during the configuration step, especially for CMake versions newer than 3.11. ```sh $ cmake .. -D OpenGL_GL_PREFERENCE:STRING=GLVND ... ``` -------------------------------- ### Ground Item Optimization in OTBM Tiles Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Describes an optimization technique for OTBM tiles where a special attribute is used for 'Ground' items. This avoids writing a full item subtree when only a single ground item is present, significantly reducing file size. ```cpp // see here: https://github.com/hjnilsson/rme/blob/master/source/iomap_otbm.cpp#L791 ``` -------------------------------- ### OTBM Tile Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Represents a single tile node, including its offset from the base coordinates and an array of attributes. Special handling is included for 'Ground' items to optimize file size. ```cpp struct OTBM_tile { uint8_t x_offset; uint8_t y_offset; uint8_t[] attributes; // OTBM_ATTR_TILE_FLAGS || OTBM_ATTR_ITEM. uint8_t null_byte; // = 0; }; ``` -------------------------------- ### CMake Executable Definition and Linking Source: https://github.com/hampusborgos/rme/blob/master/CMakeLists.txt Defines the main executable for the project and links it with all discovered libraries and targets. This includes headers for found packages and specific library targets for Boost, wxWidgets, and others. It ensures all necessary components are included for a successful build. ```cmake include(${wxWidgets_USE_FILE}) include(source/CMakeLists.txt) add_executable(${PROJECT_NAME} ${rme_H} ${rme_SRC}) include_directories( ${LibArchive_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ) target_link_libraries(${PROJECT_NAME} ${wxWidgets_LIBRARIES} ${LibArchive_LIBRARIES} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} ${ZLIB_LIBRARIES} fmt::fmt Boost::date_time Boost::system Boost::filesystem Boost::iostreams nlohmann_json::nlohmann_json ) ``` -------------------------------- ### OTBM House Tile Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Defines a house tile node, similar to a regular tile but includes a house ID. It also contains attributes for tile flags and items, along with a null byte. ```cpp struct OTBM_housetile { uint8_t x_offset; uint8_t y_offset; uint32_t house_id; uint8_t[] attributes;// OTBM_ATTR_TILE_FLAGS || OTBM_ATTR_ITEM. uint8_t null_byte; }; ``` -------------------------------- ### OTBM Root Header Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Defines the header structure for an OTBM file, containing version information, map dimensions, and item version details. This is typically the first data block in an OTBM file. ```cpp struct OTBM_root_header { uint32_t version; uint16_t width; uint16_t height; uint32_t majorVersionItems; uint32_t minorVersionItems; }; ``` -------------------------------- ### CMake Dependency Management Source: https://github.com/hampusborgos/rme/blob/master/CMakeLists.txt Finds and configures required external libraries such as Boost, fmt, nlohmann_json, OpenGL, wxWidgets, GLUT, and ZLIB. The LibArchive library is commented out by default. This section is crucial for linking against necessary components for the project's functionality. ```cmake find_package(Boost 1.66.0 REQUIRED COMPONENTS date_time system filesystem iostreams) find_package(fmt CONFIG REQUIRED) find_package(nlohmann_json CONFIG REQUIRED) find_package(OpenGL REQUIRED) # LibArchive disabled in compilation level by default, see "#define OTGZ_SUPPORT" in the "definitions.h" file # If you need use, enable this: #find_package(LibArchive REQUIRED) #${LibArchive_INCLUDE_DIRS} ${LibArchive_LIBRARIES} #if(APPLE) # set(CMAKE_PREFIX_PATH /usr/local/opt/libarchive) #endif() if(WIN32) set(Boost_THREADAPI win32) endif() find_package(wxWidgets COMPONENTS html aui gl adv core net base REQUIRED) find_package(GLUT REQUIRED) find_package(ZLIB REQUIRED) ``` -------------------------------- ### OTBM Waypoints Node Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Marks the beginning of waypoint data in the OTBM file. This node acts as a container for multiple waypoint entries. ```cpp struct OTBM_waypoints { uint8_t node_type; //= OTBM_WAYPOINTS; }; ``` -------------------------------- ### OTBM Map Data Node Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Represents a node for map data within the OTBM structure. It includes a node ID and an array of attributes, which can specify descriptions or external file references for spawns and houses. ```cpp struct OTBM_map_header_node { uint8_t node_id; //= OTBM_MAP_DATA; uint8[] attributes; //OTBM_ATTR_DESCRIPTION || OTBM_ATTR_EXT_SPAWN_FILE || OTBM_ATTR_EXT_HOUSE_FILE uint8 null_byte; // = 0; }; ``` -------------------------------- ### OTBM Town Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Defines the structure for a town entry, including its ID, name, and the coordinates of its temple. This allows for the organization and identification of towns within the map. ```cpp struct OTBM_town { uint8_t node_type; //= OTBM_TOWN uint32_t town_id; std::string town_name; uint16_t temple_x; uint16_t temple_y; uint8_t temple_z; }; ``` -------------------------------- ### Item Charge/Count Handling in OTBM Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Explains how item charges or counts are handled in OTBM files. Older versions stored this data directly after the item ID, but modern implementations use attributes for flexibility due to varying item charge behaviors. ```cpp // You can see how the different attributes are read in Item.cpp and subclasses IIRC. // ( see here: https://github.com/hjnilsson/rme/blob/master/source/iomap_otbm.cpp#L79 ) ``` -------------------------------- ### OTBM Waypoint Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Defines a single waypoint with its name and coordinates (x, y, z). Waypoints are used for navigation or specific in-game points of interest. ```cpp struct OTBM_waypoint { uint8_t node_type; //= OTBM_WAYPOINT std::string waypoint_name; uint16_t x; uint16_t y; uint8_t z; }; ``` -------------------------------- ### RME Project Source Files (CMake) Source: https://github.com/hampusborgos/rme/blob/master/source/CMakeLists.txt This CMake list defines all the source files (.cpp) for the RME project. These files contain the implementation details for the classes and functions declared in the header files, forming the executable parts of the project. ```cmake set(rme_SRC ${CMAKE_CURRENT_LIST_DIR}/about_window.cpp ${CMAKE_CURRENT_LIST_DIR}/action.cpp ${CMAKE_CURRENT_LIST_DIR}/actions_history_window.cpp ${CMAKE_CURRENT_LIST_DIR}/application.cpp ${CMAKE_CURRENT_LIST_DIR}/artprovider.cpp ${CMAKE_CURRENT_LIST_DIR}/basemap.cpp ${CMAKE_CURRENT_LIST_DIR}/brush.cpp ${CMAKE_CURRENT_LIST_DIR}/brush_tables.cpp ${CMAKE_CURRENT_LIST_DIR}/browse_tile_window.cpp ${CMAKE_CURRENT_LIST_DIR}/positionctrl.cpp ${CMAKE_CURRENT_LIST_DIR}/carpet_brush.cpp ${CMAKE_CURRENT_LIST_DIR}/client_version.cpp ${CMAKE_CURRENT_LIST_DIR}/common.cpp ${CMAKE_CURRENT_LIST_DIR}/common_windows.cpp ${CMAKE_CURRENT_LIST_DIR}/complexitem.cpp ${CMAKE_CURRENT_LIST_DIR}/container_properties_window.cpp ${CMAKE_CURRENT_LIST_DIR}/copybuffer.cpp ${CMAKE_CURRENT_LIST_DIR}/creature_brush.cpp ) ``` -------------------------------- ### RME Project Header Files (CMake) Source: https://github.com/hampusborgos/rme/blob/master/source/CMakeLists.txt This CMake list defines all the header files included in the RME project. These files contain declarations for classes, functions, and constants used throughout the project, forming the API and structure. ```cmake set(rme_H ${CMAKE_CURRENT_LIST_DIR}/about_window.h ${CMAKE_CURRENT_LIST_DIR}/action.h ${CMAKE_CURRENT_LIST_DIR}/actions_history_window.h ${CMAKE_CURRENT_LIST_DIR}/application.h ${CMAKE_CURRENT_LIST_DIR}/artprovider.h ${CMAKE_CURRENT_LIST_DIR}/basemap.h ${CMAKE_CURRENT_LIST_DIR}/browse_tile_window.h ${CMAKE_CURRENT_LIST_DIR}/brush.h ${CMAKE_CURRENT_LIST_DIR}/brush_enums.h ${CMAKE_CURRENT_LIST_DIR}/carpet_brush.h ${CMAKE_CURRENT_LIST_DIR}/client_version.h ${CMAKE_CURRENT_LIST_DIR}/common.h ${CMAKE_CURRENT_LIST_DIR}/common_windows.h ${CMAKE_CURRENT_LIST_DIR}/complexitem.h ${CMAKE_CURRENT_LIST_DIR}/con_vector.h ${CMAKE_CURRENT_LIST_DIR}/const.h ${CMAKE_CURRENT_LIST_DIR}/container_properties_window.h ${CMAKE_CURRENT_LIST_DIR}/copybuffer.h ${CMAKE_CURRENT_LIST_DIR}/creature.h ${CMAKE_CURRENT_LIST_DIR}/creature_brush.h ${CMAKE_CURRENT_LIST_DIR}/creatures.h ${CMAKE_CURRENT_LIST_DIR}/dat_debug_view.h ${CMAKE_CURRENT_LIST_DIR}/dcbutton.h ${CMAKE_CURRENT_LIST_DIR}/definitions.h ${CMAKE_CURRENT_LIST_DIR}/doodad_brush.h ${CMAKE_CURRENT_LIST_DIR}/duplicated_items_window.h ${CMAKE_CURRENT_LIST_DIR}/editor.h ${CMAKE_CURRENT_LIST_DIR}/editor_tabs.h ${CMAKE_CURRENT_LIST_DIR}/extension.h ${CMAKE_CURRENT_LIST_DIR}/extension_window.h ${CMAKE_CURRENT_LIST_DIR}/find_item_window.h ${CMAKE_CURRENT_LIST_DIR}/filehandle.h ${CMAKE_CURRENT_LIST_DIR}/graphics.h ${CMAKE_CURRENT_LIST_DIR}/ground_brush.h ${CMAKE_CURRENT_LIST_DIR}/gui.h ${CMAKE_CURRENT_LIST_DIR}/gui_ids.h ${CMAKE_CURRENT_LIST_DIR}/house.h ${CMAKE_CURRENT_LIST_DIR}/house_brush.h ${CMAKE_CURRENT_LIST_DIR}/house_exit_brush.h ${CMAKE_CURRENT_LIST_DIR}/iomap.h ${CMAKE_CURRENT_LIST_DIR}/iomap_otbm.h #${CMAKE_CURRENT_LIST_DIR}/iomap_otmm.h ${CMAKE_CURRENT_LIST_DIR}/iominimap.h ${CMAKE_CURRENT_LIST_DIR}/item.h ${CMAKE_CURRENT_LIST_DIR}/item_attributes.h ${CMAKE_CURRENT_LIST_DIR}/items.h ${CMAKE_CURRENT_LIST_DIR}/light_drawer.h ${CMAKE_CURRENT_LIST_DIR}/live_action.h ${CMAKE_CURRENT_LIST_DIR}/live_client.h ${CMAKE_CURRENT_LIST_DIR}/live_packets.h ${CMAKE_CURRENT_LIST_DIR}/live_peer.h ${CMAKE_CURRENT_LIST_DIR}/live_server.h ${CMAKE_CURRENT_LIST_DIR}/live_socket.h ${CMAKE_CURRENT_LIST_DIR}/live_tab.h ${CMAKE_CURRENT_LIST_DIR}/main.h ${CMAKE_CURRENT_LIST_DIR}/main_menubar.h ${CMAKE_CURRENT_LIST_DIR}/main_toolbar.h ${CMAKE_CURRENT_LIST_DIR}/map.h ${CMAKE_CURRENT_LIST_DIR}/map_allocator.h ${CMAKE_CURRENT_LIST_DIR}/map_display.h ${CMAKE_CURRENT_LIST_DIR}/map_drawer.h ${CMAKE_CURRENT_LIST_DIR}/map_region.h ${CMAKE_CURRENT_LIST_DIR}/map_tab.h ${CMAKE_CURRENT_LIST_DIR}/map_window.h ${CMAKE_CURRENT_LIST_DIR}/materials.h ${CMAKE_CURRENT_LIST_DIR}/minimap_window.h ${CMAKE_CURRENT_LIST_DIR}/mt_rand.h ${CMAKE_CURRENT_LIST_DIR}/net_connection.h ${CMAKE_CURRENT_LIST_DIR}/numbertextctrl.h ${CMAKE_CURRENT_LIST_DIR}/old_properties_window.h ${CMAKE_CURRENT_LIST_DIR}/otml.h ${CMAKE_CURRENT_LIST_DIR}/outfit.h ${CMAKE_CURRENT_LIST_DIR}/palette_brushlist.h ${CMAKE_CURRENT_LIST_DIR}/palette_common.h ${CMAKE_CURRENT_LIST_DIR}/palette_creature.h ${CMAKE_CURRENT_LIST_DIR}/palette_house.h ${CMAKE_CURRENT_LIST_DIR}/palette_waypoints.h ${CMAKE_CURRENT_LIST_DIR}/palette_window.h ${CMAKE_CURRENT_LIST_DIR}/pngfiles.h ${CMAKE_CURRENT_LIST_DIR}/position.h ${CMAKE_CURRENT_LIST_DIR}/positionctrl.h ${CMAKE_CURRENT_LIST_DIR}/preferences.h ${CMAKE_CURRENT_LIST_DIR}/process_com.h ${CMAKE_CURRENT_LIST_DIR}/properties_window.h ${CMAKE_CURRENT_LIST_DIR}/raw_brush.h ${CMAKE_CURRENT_LIST_DIR}/replace_items_window.h ${CMAKE_CURRENT_LIST_DIR}/result_window.h ${CMAKE_CURRENT_LIST_DIR}/rme_forward_declarations.h ${CMAKE_CURRENT_LIST_DIR}/rme_net.h ${CMAKE_CURRENT_LIST_DIR}/selection.h ${CMAKE_CURRENT_LIST_DIR}/settings.h ${CMAKE_CURRENT_LIST_DIR}/spawn.h ${CMAKE_CURRENT_LIST_DIR}/spawn_brush.h ${CMAKE_CURRENT_LIST_DIR}/sprites.h ${CMAKE_CURRENT_LIST_DIR}/table_brush.h ${CMAKE_CURRENT_LIST_DIR}/templates.h ${CMAKE_CURRENT_LIST_DIR}/threads.h ${CMAKE_CURRENT_LIST_DIR}/tile.h ${CMAKE_CURRENT_LIST_DIR}/tileset.h ${CMAKE_CURRENT_LIST_DIR}/town.h ${CMAKE_CURRENT_LIST_DIR}/updater.h ${CMAKE_CURRENT_LIST_DIR}/wall_brush.h ${CMAKE_CURRENT_LIST_DIR}/waypoint_brush.h ${CMAKE_CURRENT_LIST_DIR}/waypoints.h ${CMAKE_CURRENT_LIST_DIR}/welcome_dialog.h ) ``` -------------------------------- ### OTBM Item Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Represents an item node within the OTBM format. The structure includes a node type identifier, and further data for item details is processed separately. ```cpp struct OTBM_item { uint8_t node_type; // = OTBM_ITEM; //Item::Create_OTBM does more with remainder of data. Still need to go over this. }; ``` -------------------------------- ### OTBM Towns Node Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure A simple node structure indicating the presence of town data within the OTBM file. It primarily serves as a marker for town-related information. ```cpp struct OTBM_towns { uint8_t node_type; //= OTBM_TOWNS; }; ``` -------------------------------- ### OTBM Tile Area Structure Source: https://github.com/hampusborgos/rme/wiki/Documentation-of-the-.otbm-file-structure Defines a tile area node, specifying the base coordinates (x, y, z) for a section of the map. This structure is used to group tiles within a specific map slice. ```cpp struct OTBM_tile_area { uint8_t node_id; //= OTBM_TILE_AREA uint16_t base_x; uint16_t base_y; uint8_t base_z; }; ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.