#ifndef PKE_SERIALIZATION_HPP #define PKE_SERIALIZATION_HPP #include "pk.h" #include "components.hpp" #include "scene-types.hpp" inline const char* const SRLZTN_FILE_BEGIN = ":PKFB:"; inline const char* const SRLZTN_FILE_END = ":PKFE:"; inline const char* const SRLZTN_FILE_VERSION = ":0:"; inline const char* const SRLZTN_FILE_NUM_SEPARATOR = ";"; inline const char* const SRLZTN_OBJ_END = ""; inline const char* const SRLZTN_OBJ_INSTANCE = "Instance:"; inline const char* const SRLZTN_OBJ_CAMERA = "Camera:"; inline const char* const SRLZTN_OBJ_UI_BOX = "Camera:"; inline const char* const SRLZTN_POSROT_POS = "Position: "; inline const char* const SRLZTN_POSROT_ROT = "Rotation: "; inline const char* const SRLZTN_POSROT_SCALE = "Scale: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_HANDLE = "InstanceHandle: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_ENTITY_HANDLE = "EntityHandle: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_ENTITY_TYPE_CODE = "EntityTypeCode: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_UUID = "UUID: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_MASS = "Mass: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_LAYER = "CollisionLayer: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_MASK = "CollisionMask: "; inline const char* const SRLZTN_INSTANCE_COMPONENT_COLLISION_CB_SIGNATURE = "CollisionCBSignature: "; inline const char* const SRLZTN_CAMERA_TYPE = "Type: "; inline const char* const SRLZTN_CAMERA_UUID = "UUID: "; inline const char* const SRLZTN_CAMERA_ORIENTATION = "Orientation: "; inline const char* const SRLZTN_CAMERA_TARGET_INSTANCE_UUID = "TargetUUID: "; inline const char* const SRLZTN_CAMERA_IS_PRIMARY = "IsPrimary: "; inline const char* const SRLZTN_UI_BOX_UUID = "UUID: "; inline const char* const SRLZTN_UI_BOX_PARENT_UUID = "ParentUUID: "; inline const char* const SRLZTN_UI_BOX_FLAGS = "Flags: "; inline const char* const SRLZTN_UI_BOX_POS_TOP_LEFT_X = "PosTopLeftX: "; inline const char* const SRLZTN_UI_BOX_POS_TOP_LEFT_Y = "PosTopLeftY: "; inline const char* const SRLZTN_UI_BOX_MIN_WIDTH = "MinWidthX: "; inline const char* const SRLZTN_UI_BOX_MIN_HEIGHT = "MinWidthY: "; inline const char* const SRLZTN_UI_BOX_MAX_WIDTH = "MaxWidthX: "; inline const char* const SRLZTN_UI_BOX_MAX_HEIGHT = "MaxWidthY: "; inline const char* const SRLZTN_UI_BOX_FLEX_WEIGHT = "FlexWeight: "; inline const char* const SRLZTN_UI_BOX_TYPE = "Type: "; inline const char* const SRLZTN_UI_BOX_FLEX_DIRECTION = "FlexDirection: "; inline const char* const SRLZTN_UI_BOX_LAYER = "Layer: "; inline const char* const SRLZTN_UI_BOX_DATA_TEXT_FONT_RENDER_UUID = "FontRenderUUID: "; inline const char* const SRLZTN_UI_FONT_RENDER_UUID = "UUID: "; inline const char* const SRLZTN_UI_FONT_RENDER_TEXT_BEGIN = "TextBegin::"; inline const char* const SRLZTN_UI_FONT_RENDER_TEXT_END = "::TextEnd"; inline const char* const SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SCALE = "CharScale"; inline const char* const SRLZTN_UI_FONT_RENDER_SETTINGS_LINE_HEIGHT_SCALE = "LineHeightScale"; inline const char* const SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SPACING_SCALE = "CharSpacingScale"; inline const char* const SRLZTN_UI_FONT_RENDER_SETTINGS_SURFACE_AREA_SIZE = "SurfaceAreaSize"; inline const char* const SRLZTN_UI_FONT_RENDER_SETTINGS_SURFACE_AREA_POS = "SurfaceAreaPos"; inline const char* const SRLZTN_UI_FONT_RENDER_SETTINGS_SURFACE_AREA_FLAGS = "SurfaceAreaFlags"; struct srlztn_instance_mapping { pk_uuid serialized_uuid = pk_uuid_zed; Entity_Base *created_entity = nullptr; CompInstance *created_instance = nullptr; }; struct srlztn_serialize_helper { pk_membucket *bkt; std::ostringstream o; }; struct srlztn_deserialize_helper { size_t read_line_len = 256; pke_scene *scene; pk_membucket *bkt; char *read_line; std::istream *i; pk_arr_t mapping; }; bool srlztn_mapping_find_first_handle_by_uuid(void *handle, void *mapping); srlztn_serialize_helper *pke_serialize_init(pk_membucket *bkt); srlztn_deserialize_helper *pke_deserialize_init(pk_membucket *bkt); void pke_serialize_teardown(srlztn_serialize_helper *helper); void pke_deserialize_teardown(srlztn_deserialize_helper *helper); void pke_serialize_file_project(srlztn_serialize_helper *helper); void pke_deserialize_file_project(srlztn_deserialize_helper *helper); void pke_serialize_file_scene(srlztn_serialize_helper *helper); void pke_deserialize_file_scene(srlztn_deserialize_helper *helper); void pke_serialize_file_level(srlztn_serialize_helper *helper); void pke_deserialize_file_level(srlztn_deserialize_helper *helper); #endif /* PKE_SERIALIZATION_HPP */