406 lines
8.6 KiB
Protocol Buffer
406 lines
8.6 KiB
Protocol Buffer
package RemoteFortressReader;
|
|
|
|
//Attempts to provide a complete framework for reading everything from a fortress needed for vizualization
|
|
option optimize_for = LITE_RUNTIME;
|
|
|
|
//We use shapes, etc, because the actual tiletypes may differ between DF versions.
|
|
enum TiletypeShape
|
|
{
|
|
NO_SHAPE = -1;
|
|
EMPTY = 0;
|
|
FLOOR = 1;
|
|
BOULDER = 2;
|
|
PEBBLES = 3;
|
|
WALL = 4;
|
|
FORTIFICATION = 5;
|
|
STAIR_UP = 6;
|
|
STAIR_DOWN = 7;
|
|
STAIR_UPDOWN = 8;
|
|
RAMP = 9;
|
|
RAMP_TOP = 10;
|
|
BROOK_BED = 11;
|
|
BROOK_TOP = 12;
|
|
TREE_SHAPE = 13;
|
|
SAPLING = 14;
|
|
SHRUB = 15;
|
|
ENDLESS_PIT = 16;
|
|
BRANCH = 17;
|
|
TRUNK_BRANCH = 18;
|
|
TWIG = 19;
|
|
}
|
|
|
|
enum TiletypeSpecial
|
|
{
|
|
NO_SPECIAL = -1;
|
|
NORMAL = 0;
|
|
RIVER_SOURCE = 1;
|
|
WATERFALL = 2;
|
|
SMOOTH = 3;
|
|
FURROWED = 4;
|
|
WET = 5;
|
|
DEAD = 6;
|
|
WORN_1 = 7;
|
|
WORN_2 = 8;
|
|
WORN_3 = 9;
|
|
TRACK = 10;
|
|
SMOOTH_DEAD = 11;
|
|
};
|
|
enum TiletypeMaterial
|
|
{
|
|
NO_MATERIAL = -1;
|
|
AIR = 0;
|
|
SOIL = 1;
|
|
STONE = 2;
|
|
FEATURE = 3;
|
|
LAVA_STONE = 4;
|
|
MINERAL = 5;
|
|
FROZEN_LIQUID = 6;
|
|
CONSTRUCTION = 7;
|
|
GRASS_LIGHT = 8;
|
|
GRASS_DARK = 9;
|
|
GRASS_DRY = 10;
|
|
GRASS_DEAD = 11;
|
|
PLANT = 12;
|
|
HFS = 13;
|
|
CAMPFIRE = 14;
|
|
FIRE = 15;
|
|
ASHES = 16;
|
|
MAGMA = 17;
|
|
DRIFTWOOD = 18;
|
|
POOL = 19;
|
|
BROOK = 20;
|
|
RIVER = 21;
|
|
ROOT = 22;
|
|
TREE_MATERIAL = 23;
|
|
MUSHROOM = 24;
|
|
UNDERWORLD_GATE = 25;
|
|
}
|
|
enum TiletypeVariant
|
|
{
|
|
NO_VARIANT = -1;
|
|
VAR_1 = 0;
|
|
VAR_2 = 1;
|
|
VAR_3 = 2;
|
|
VAR_4 = 3;
|
|
};
|
|
|
|
enum WorldPoles
|
|
{
|
|
NO_POLES = 0;
|
|
NORTH_POLE = 1;
|
|
SOUTH_POLE = 2;
|
|
BOTH_POLES = 3;
|
|
}
|
|
|
|
enum BuildingDirection
|
|
{
|
|
NORTH = 0;
|
|
EAST = 1;
|
|
SOUTH = 2;
|
|
WEST = 3;
|
|
}
|
|
|
|
message Tiletype
|
|
{
|
|
required int32 id = 1;
|
|
optional string name = 2;
|
|
optional string caption = 3;
|
|
optional TiletypeShape shape = 4;
|
|
optional TiletypeSpecial special = 5;
|
|
optional TiletypeMaterial material = 6;
|
|
optional TiletypeVariant variant = 7;
|
|
optional string direction = 8;
|
|
};
|
|
|
|
message TiletypeList
|
|
{
|
|
repeated Tiletype tiletype_list = 1;
|
|
}
|
|
|
|
message BuildingExtents
|
|
{
|
|
required int32 pos_x = 1;
|
|
required int32 pos_y = 2;
|
|
required int32 width = 3;
|
|
required int32 height = 4;
|
|
repeated int32 extents = 5;
|
|
}
|
|
|
|
message BuildingInstance
|
|
{
|
|
required int32 index = 1;
|
|
optional int32 pos_x_min = 2;
|
|
optional int32 pos_y_min = 3;
|
|
optional int32 pos_z_min = 4;
|
|
optional int32 pos_x_max = 5;
|
|
optional int32 pos_y_max = 6;
|
|
optional int32 pos_z_max = 7;
|
|
optional BuildingType building_type = 8;
|
|
optional MatPair material = 9;
|
|
optional uint32 building_flags = 10;
|
|
optional bool is_room = 11;
|
|
optional BuildingExtents room = 12;
|
|
optional BuildingDirection direction = 13; //Doesn't mean anything for most buildings
|
|
}
|
|
|
|
message MapBlock
|
|
{
|
|
required int32 map_x = 1;
|
|
required int32 map_y = 2;
|
|
required int32 map_z = 3;
|
|
repeated int32 tiles = 4;
|
|
repeated MatPair materials = 5;
|
|
repeated MatPair layer_materials = 6;
|
|
repeated MatPair vein_materials = 7;
|
|
repeated MatPair base_materials = 8;
|
|
repeated int32 magma = 9;
|
|
repeated int32 water = 10;
|
|
repeated bool hidden = 11;
|
|
repeated bool light = 12;
|
|
repeated bool subterranean = 13;
|
|
repeated bool outside = 14;
|
|
repeated bool aquifer = 15;
|
|
repeated bool water_stagnant = 16;
|
|
repeated bool water_salt = 17;
|
|
repeated MatPair construction_items = 18;
|
|
repeated BuildingInstance buildings = 19;
|
|
}
|
|
|
|
message MatPair {
|
|
required int32 mat_type = 1;
|
|
required int32 mat_index = 2;
|
|
}
|
|
|
|
message ColorDefinition {
|
|
required int32 red = 1;
|
|
required int32 green = 2;
|
|
required int32 blue = 3;
|
|
}
|
|
|
|
message MaterialDefinition{
|
|
required MatPair mat_pair = 1;
|
|
optional string id = 2;
|
|
optional string name = 3;
|
|
optional ColorDefinition state_color = 4; //Simplifying colors to assume room temperature.
|
|
}
|
|
|
|
message BuildingType
|
|
{
|
|
required int32 building_type = 1;
|
|
required int32 building_subtype = 2;
|
|
required int32 building_custom = 3;
|
|
}
|
|
|
|
message BuildingDefinition {
|
|
required BuildingType building_type = 1;
|
|
optional string id = 2;
|
|
optional string name = 3;
|
|
}
|
|
|
|
message BuildingList {
|
|
repeated BuildingDefinition building_list = 1;
|
|
}
|
|
|
|
message MaterialList{
|
|
repeated MaterialDefinition material_list = 1;
|
|
}
|
|
|
|
message BodySizeInfo
|
|
{
|
|
optional int32 size_cur = 1;
|
|
optional int32 size_base = 2;
|
|
optional int32 area_cur = 3; /*!< size_cur^0.666 */
|
|
optional int32 area_base = 4; /*!< size_base^0.666 */
|
|
optional int32 length_cur = 5; /*!< (size_cur*10000)^0.333 */
|
|
optional int32 length_base = 6; /*!< (size_base*10000)^0.333 */
|
|
}
|
|
|
|
message UnitDefinition
|
|
{
|
|
required int32 id = 1;
|
|
optional bool isValid = 2;
|
|
optional int32 pos_x = 3;
|
|
optional int32 pos_y = 4;
|
|
optional int32 pos_z = 5;
|
|
optional MatPair race = 6;
|
|
optional ColorDefinition profession_color = 7;
|
|
optional uint32 flags1 = 8;
|
|
optional uint32 flags2 = 9;
|
|
optional uint32 flags3 = 10;
|
|
optional bool is_soldier = 11;
|
|
optional BodySizeInfo size_info = 12;
|
|
}
|
|
|
|
message UnitList
|
|
{
|
|
repeated UnitDefinition creature_list = 1;
|
|
}
|
|
|
|
message BlockRequest
|
|
{
|
|
optional int32 blocks_needed = 1;
|
|
optional int32 min_x = 2;
|
|
optional int32 max_x = 3;
|
|
optional int32 min_y = 4;
|
|
optional int32 max_y = 5;
|
|
optional int32 min_z = 6;
|
|
optional int32 max_z = 7;
|
|
}
|
|
|
|
message BlockList
|
|
{
|
|
repeated MapBlock map_blocks = 1;
|
|
optional int32 map_x = 2;
|
|
optional int32 map_y = 3;
|
|
}
|
|
|
|
message PlantDef
|
|
{
|
|
required int32 pos_x = 1;
|
|
required int32 pos_y = 2;
|
|
required int32 pos_z = 3;
|
|
required int32 index = 4;
|
|
}
|
|
|
|
message PlantList
|
|
{
|
|
repeated PlantDef plant_list = 1;
|
|
}
|
|
|
|
message ViewInfo
|
|
{
|
|
optional int32 view_pos_x = 1;
|
|
optional int32 view_pos_y = 2;
|
|
optional int32 view_pos_z = 3;
|
|
optional int32 view_size_x = 4;
|
|
optional int32 view_size_y = 5;
|
|
optional int32 cursor_pos_x = 6;
|
|
optional int32 cursor_pos_y = 7;
|
|
optional int32 cursor_pos_z = 8;
|
|
}
|
|
|
|
message MapInfo
|
|
{
|
|
optional int32 block_size_x = 1;
|
|
optional int32 block_size_y = 2;
|
|
optional int32 block_size_z = 3;
|
|
optional int32 block_pos_x = 4;
|
|
optional int32 block_pos_y = 5;
|
|
optional int32 block_pos_z = 6;
|
|
optional string world_name = 7;
|
|
optional string world_name_english = 8;
|
|
optional string save_name = 9;
|
|
}
|
|
|
|
enum FrontType
|
|
{
|
|
FRONT_NONE = 0;
|
|
FRONT_WARM = 1;
|
|
FRONT_COLD = 2;
|
|
FRONT_OCCLUDED = 3;
|
|
}
|
|
enum CumulusType
|
|
{
|
|
CUMULUS_NONE = 0;
|
|
CUMULUS_MEDIUM = 1;
|
|
CUMULUS_MULTI = 2;
|
|
CUMULUS_NIMBUS = 3;
|
|
}
|
|
enum StratusType
|
|
{
|
|
STRATUS_NONE = 0;
|
|
STRATUS_ALTO = 1;
|
|
STRATUS_PROPER = 2;
|
|
STRATUS_NIMBUS = 3;
|
|
}
|
|
enum FogType
|
|
{
|
|
FOG_NONE = 0;
|
|
FOG_MIST = 1;
|
|
FOG_NORMAL = 2;
|
|
F0G_THICK = 3;
|
|
}
|
|
|
|
message Cloud
|
|
{
|
|
optional FrontType front = 1;
|
|
optional CumulusType cumulus = 2;
|
|
optional bool cirrus = 3;
|
|
optional StratusType stratus = 4;
|
|
optional FogType fog = 5;
|
|
}
|
|
|
|
message WorldMap
|
|
{
|
|
required int32 world_width = 1;
|
|
required int32 world_height = 2;
|
|
optional string name = 3;
|
|
optional string name_english = 4;
|
|
repeated int32 elevation = 5;
|
|
repeated int32 rainfall = 6;
|
|
repeated int32 vegetation = 7;
|
|
repeated int32 temperature = 8;
|
|
repeated int32 evilness = 9;
|
|
repeated int32 drainage = 10;
|
|
repeated int32 volcanism = 11;
|
|
repeated int32 savagery = 12;
|
|
repeated Cloud clouds = 13;
|
|
repeated int32 salinity = 14;
|
|
optional int32 map_x = 15;
|
|
optional int32 map_y = 16;
|
|
optional int32 center_x = 17;
|
|
optional int32 center_y = 18;
|
|
optional int32 center_z = 19;
|
|
optional int32 cur_year = 20;
|
|
optional int32 cur_year_tick = 21;
|
|
}
|
|
|
|
message RegionMaps
|
|
{
|
|
repeated WorldMap world_maps = 1;
|
|
}
|
|
|
|
message CasteRaw
|
|
{
|
|
optional int32 index = 1;
|
|
optional string caste_id = 2;
|
|
repeated string caste_name = 3;
|
|
repeated string baby_name = 4;
|
|
repeated string child_name = 5;
|
|
}
|
|
|
|
message CreatureRaw
|
|
{
|
|
optional int32 index = 1;
|
|
optional string creature_id = 2;
|
|
repeated string name = 3;
|
|
repeated string general_baby_name = 4;
|
|
repeated string general_child_name = 5;
|
|
optional int32 creature_tile = 6;
|
|
optional int32 creature_soldier_tile = 7;
|
|
optional ColorDefinition color = 8;
|
|
optional int32 adultsize = 9;
|
|
repeated CasteRaw caste = 10;
|
|
}
|
|
|
|
message CreatureRawList
|
|
{
|
|
repeated CreatureRaw creature_raws = 1;
|
|
}
|
|
|
|
message Army
|
|
{
|
|
optional int32 id = 1;
|
|
optional int32 pos_x = 2;
|
|
optional int32 pos_y = 3;
|
|
optional int32 pos_z = 4;
|
|
optional UnitDefinition leader = 5;
|
|
repeated UnitDefinition members = 6;
|
|
optional uint32 flags = 7;
|
|
}
|
|
|
|
message ArmyList
|
|
{
|
|
repeated Army armies = 1;
|
|
}
|