From 17d41e82f4fc28c9966e3b4773e686cdec502dc9 Mon Sep 17 00:00:00 2001 From: hovertank3d Date: Fri, 27 Feb 2026 14:51:32 +0100 Subject: implement messages 6 to 9 --- include/net/types.hpp | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) (limited to 'include') diff --git a/include/net/types.hpp b/include/net/types.hpp index b565f51..fcc8b26 100644 --- a/include/net/types.hpp +++ b/include/net/types.hpp @@ -1,6 +1,8 @@ #pragma once +#include #include +#include #include #include #include @@ -73,6 +75,30 @@ struct vec2 { T y; }; + +template +struct plist { + std::vector v; + + template + ssize_t read(io::serialized_io& io) { + uint8_t len; + + auto offset = io.read(len); + v.resize(len); + offset += io.read(v); + + return offset; + } + + template + ssize_t write(io::serialized_io& io) { + auto offset = io.write(uint8_t(v.size())); + offset += io.write(v); + return offset; + } +}; + // NetMessages struct connect { @@ -135,6 +161,70 @@ struct player_inventory_slot { bitset<2> flags; }; +struct request_world_info { + static constexpr uint8_t packet_id = 6; +}; + +struct world_info { + static constexpr uint8_t packet_id = 7; + + int32_t time; + bitset<3> time_flags; // day? blood moon? eclipse? + uint8_t moon_phase; + vec2 tiles_limit; + vec2 spawn_tile; + uint16_t surface_level; + uint16_t rock_level; + int32_t worldid; + std::string worldname; + uint8_t gamemode; + std::array uuid; + uint64_t worldgen_version; + uint8_t moon_type; + std::array backgrounds; + std::array bg_styles; + + float wind_speed_target; + uint8_t num_clouds; + + std::array trees; + std::array trees_styles; + std::array cave_bg; + std::array cave_bg_styles; + + std::array tree_tops; + + float max_raining; + + bitset<81> flags; // TODO: document them + + uint8_t sundial_cooldown; + uint8_t moondial_cooldown; + + std::array world_ores; + int8_t invasion_type; + + uint64_t lobby_id = 0; + + float sandstorm_severity; + plist> extra_spawn_points; +}; + +struct request_spawn { + static constexpr uint8_t packet_id = 8; + + vec2 tile; + uint8_t team; +}; + +struct set_loading_message { + static constexpr uint8_t packet_id = 9; + + int32_t sections; + nstring message; + uint8_t flags = 0; +}; + inline nstring operator""_ns(const char* str, std::size_t) { return nstring{nstring::Literal, str}; -- cgit v1.2.3