dfhack_proto/generated/messages/
RemoteFortressReader.rs

1// This file is generated by rust-protobuf 3.4.0. Do not edit
2// .proto file is parsed by pure
3// @generated
4
5// https://github.com/rust-lang/rust-clippy/issues/702
6#![allow(unknown_lints)]
7#![allow(clippy::all)]
8
9#![allow(unused_attributes)]
10#![cfg_attr(rustfmt, rustfmt::skip)]
11
12#![allow(box_pointers)]
13#![allow(dead_code)]
14#![allow(missing_docs)]
15#![allow(non_camel_case_types)]
16#![allow(non_snake_case)]
17#![allow(non_upper_case_globals)]
18#![allow(trivial_casts)]
19#![allow(unused_results)]
20#![allow(unused_mut)]
21
22//! Generated file from `RemoteFortressReader.proto`
23
24/// Generated files are compatible only with the same version
25/// of protobuf runtime.
26const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_4_0;
27
28#[derive(Hash, Eq)]
29// @@protoc_insertion_point(message:RemoteFortressReader.Coord)
30#[derive(PartialEq,Clone,Default,Debug)]
31pub struct Coord {
32    // message fields
33    // @@protoc_insertion_point(field:RemoteFortressReader.Coord.x)
34    pub x: ::std::option::Option<i32>,
35    // @@protoc_insertion_point(field:RemoteFortressReader.Coord.y)
36    pub y: ::std::option::Option<i32>,
37    // @@protoc_insertion_point(field:RemoteFortressReader.Coord.z)
38    pub z: ::std::option::Option<i32>,
39    // special fields
40    // @@protoc_insertion_point(special_field:RemoteFortressReader.Coord.special_fields)
41    pub special_fields: ::protobuf::SpecialFields,
42}
43
44impl<'a> ::std::default::Default for &'a Coord {
45    fn default() -> &'a Coord {
46        <Coord as ::protobuf::Message>::default_instance()
47    }
48}
49
50impl Coord {
51    pub fn new() -> Coord {
52        ::std::default::Default::default()
53    }
54
55    // optional int32 x = 1;
56
57    pub fn x(&self) -> i32 {
58        self.x.unwrap_or(0)
59    }
60
61    pub fn clear_x(&mut self) {
62        self.x = ::std::option::Option::None;
63    }
64
65    pub fn has_x(&self) -> bool {
66        self.x.is_some()
67    }
68
69    // Param is passed by value, moved
70    pub fn set_x(&mut self, v: i32) {
71        self.x = ::std::option::Option::Some(v);
72    }
73
74    // optional int32 y = 2;
75
76    pub fn y(&self) -> i32 {
77        self.y.unwrap_or(0)
78    }
79
80    pub fn clear_y(&mut self) {
81        self.y = ::std::option::Option::None;
82    }
83
84    pub fn has_y(&self) -> bool {
85        self.y.is_some()
86    }
87
88    // Param is passed by value, moved
89    pub fn set_y(&mut self, v: i32) {
90        self.y = ::std::option::Option::Some(v);
91    }
92
93    // optional int32 z = 3;
94
95    pub fn z(&self) -> i32 {
96        self.z.unwrap_or(0)
97    }
98
99    pub fn clear_z(&mut self) {
100        self.z = ::std::option::Option::None;
101    }
102
103    pub fn has_z(&self) -> bool {
104        self.z.is_some()
105    }
106
107    // Param is passed by value, moved
108    pub fn set_z(&mut self, v: i32) {
109        self.z = ::std::option::Option::Some(v);
110    }
111
112    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
113        let mut fields = ::std::vec::Vec::with_capacity(3);
114        let mut oneofs = ::std::vec::Vec::with_capacity(0);
115        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
116            "x",
117            |m: &Coord| { &m.x },
118            |m: &mut Coord| { &mut m.x },
119        ));
120        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
121            "y",
122            |m: &Coord| { &m.y },
123            |m: &mut Coord| { &mut m.y },
124        ));
125        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
126            "z",
127            |m: &Coord| { &m.z },
128            |m: &mut Coord| { &mut m.z },
129        ));
130        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Coord>(
131            "Coord",
132            fields,
133            oneofs,
134        )
135    }
136}
137
138impl ::protobuf::Message for Coord {
139    const NAME: &'static str = "Coord";
140
141    fn is_initialized(&self) -> bool {
142        true
143    }
144
145    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
146        while let Some(tag) = is.read_raw_tag_or_eof()? {
147            match tag {
148                8 => {
149                    self.x = ::std::option::Option::Some(is.read_int32()?);
150                },
151                16 => {
152                    self.y = ::std::option::Option::Some(is.read_int32()?);
153                },
154                24 => {
155                    self.z = ::std::option::Option::Some(is.read_int32()?);
156                },
157                tag => {
158                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
159                },
160            };
161        }
162        ::std::result::Result::Ok(())
163    }
164
165    // Compute sizes of nested messages
166    #[allow(unused_variables)]
167    fn compute_size(&self) -> u64 {
168        let mut my_size = 0;
169        if let Some(v) = self.x {
170            my_size += ::protobuf::rt::int32_size(1, v);
171        }
172        if let Some(v) = self.y {
173            my_size += ::protobuf::rt::int32_size(2, v);
174        }
175        if let Some(v) = self.z {
176            my_size += ::protobuf::rt::int32_size(3, v);
177        }
178        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
179        self.special_fields.cached_size().set(my_size as u32);
180        my_size
181    }
182
183    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
184        if let Some(v) = self.x {
185            os.write_int32(1, v)?;
186        }
187        if let Some(v) = self.y {
188            os.write_int32(2, v)?;
189        }
190        if let Some(v) = self.z {
191            os.write_int32(3, v)?;
192        }
193        os.write_unknown_fields(self.special_fields.unknown_fields())?;
194        ::std::result::Result::Ok(())
195    }
196
197    fn special_fields(&self) -> &::protobuf::SpecialFields {
198        &self.special_fields
199    }
200
201    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
202        &mut self.special_fields
203    }
204
205    fn new() -> Coord {
206        Coord::new()
207    }
208
209    fn clear(&mut self) {
210        self.x = ::std::option::Option::None;
211        self.y = ::std::option::Option::None;
212        self.z = ::std::option::Option::None;
213        self.special_fields.clear();
214    }
215
216    fn default_instance() -> &'static Coord {
217        static instance: Coord = Coord {
218            x: ::std::option::Option::None,
219            y: ::std::option::Option::None,
220            z: ::std::option::Option::None,
221            special_fields: ::protobuf::SpecialFields::new(),
222        };
223        &instance
224    }
225}
226
227impl ::protobuf::MessageFull for Coord {
228    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
229        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
230        descriptor.get(|| file_descriptor().message_by_package_relative_name("Coord").unwrap()).clone()
231    }
232}
233
234impl ::std::fmt::Display for Coord {
235    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
236        ::protobuf::text_format::fmt(self, f)
237    }
238}
239
240impl ::protobuf::reflect::ProtobufValue for Coord {
241    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
242}
243
244// @@protoc_insertion_point(message:RemoteFortressReader.Tiletype)
245#[derive(PartialEq,Clone,Default,Debug)]
246pub struct Tiletype {
247    // message fields
248    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.id)
249    pub id: ::std::option::Option<i32>,
250    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.name)
251    pub name: ::std::option::Option<::std::string::String>,
252    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.caption)
253    pub caption: ::std::option::Option<::std::string::String>,
254    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.shape)
255    pub shape: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeShape>>,
256    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.special)
257    pub special: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeSpecial>>,
258    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.material)
259    pub material: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeMaterial>>,
260    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.variant)
261    pub variant: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeVariant>>,
262    // @@protoc_insertion_point(field:RemoteFortressReader.Tiletype.direction)
263    pub direction: ::std::option::Option<::std::string::String>,
264    // special fields
265    // @@protoc_insertion_point(special_field:RemoteFortressReader.Tiletype.special_fields)
266    pub special_fields: ::protobuf::SpecialFields,
267}
268
269impl<'a> ::std::default::Default for &'a Tiletype {
270    fn default() -> &'a Tiletype {
271        <Tiletype as ::protobuf::Message>::default_instance()
272    }
273}
274
275impl Tiletype {
276    pub fn new() -> Tiletype {
277        ::std::default::Default::default()
278    }
279
280    // required int32 id = 1;
281
282    pub fn id(&self) -> i32 {
283        self.id.unwrap_or(0)
284    }
285
286    pub fn clear_id(&mut self) {
287        self.id = ::std::option::Option::None;
288    }
289
290    pub fn has_id(&self) -> bool {
291        self.id.is_some()
292    }
293
294    // Param is passed by value, moved
295    pub fn set_id(&mut self, v: i32) {
296        self.id = ::std::option::Option::Some(v);
297    }
298
299    // optional string name = 2;
300
301    pub fn name(&self) -> &str {
302        match self.name.as_ref() {
303            Some(v) => v,
304            None => "",
305        }
306    }
307
308    pub fn clear_name(&mut self) {
309        self.name = ::std::option::Option::None;
310    }
311
312    pub fn has_name(&self) -> bool {
313        self.name.is_some()
314    }
315
316    // Param is passed by value, moved
317    pub fn set_name(&mut self, v: ::std::string::String) {
318        self.name = ::std::option::Option::Some(v);
319    }
320
321    // Mutable pointer to the field.
322    // If field is not initialized, it is initialized with default value first.
323    pub fn mut_name(&mut self) -> &mut ::std::string::String {
324        if self.name.is_none() {
325            self.name = ::std::option::Option::Some(::std::string::String::new());
326        }
327        self.name.as_mut().unwrap()
328    }
329
330    // Take field
331    pub fn take_name(&mut self) -> ::std::string::String {
332        self.name.take().unwrap_or_else(|| ::std::string::String::new())
333    }
334
335    // optional string caption = 3;
336
337    pub fn caption(&self) -> &str {
338        match self.caption.as_ref() {
339            Some(v) => v,
340            None => "",
341        }
342    }
343
344    pub fn clear_caption(&mut self) {
345        self.caption = ::std::option::Option::None;
346    }
347
348    pub fn has_caption(&self) -> bool {
349        self.caption.is_some()
350    }
351
352    // Param is passed by value, moved
353    pub fn set_caption(&mut self, v: ::std::string::String) {
354        self.caption = ::std::option::Option::Some(v);
355    }
356
357    // Mutable pointer to the field.
358    // If field is not initialized, it is initialized with default value first.
359    pub fn mut_caption(&mut self) -> &mut ::std::string::String {
360        if self.caption.is_none() {
361            self.caption = ::std::option::Option::Some(::std::string::String::new());
362        }
363        self.caption.as_mut().unwrap()
364    }
365
366    // Take field
367    pub fn take_caption(&mut self) -> ::std::string::String {
368        self.caption.take().unwrap_or_else(|| ::std::string::String::new())
369    }
370
371    // optional .RemoteFortressReader.TiletypeShape shape = 4;
372
373    pub fn shape(&self) -> TiletypeShape {
374        match self.shape {
375            Some(e) => e.enum_value_or(TiletypeShape::NO_SHAPE),
376            None => TiletypeShape::NO_SHAPE,
377        }
378    }
379
380    pub fn clear_shape(&mut self) {
381        self.shape = ::std::option::Option::None;
382    }
383
384    pub fn has_shape(&self) -> bool {
385        self.shape.is_some()
386    }
387
388    // Param is passed by value, moved
389    pub fn set_shape(&mut self, v: TiletypeShape) {
390        self.shape = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
391    }
392
393    // optional .RemoteFortressReader.TiletypeSpecial special = 5;
394
395    pub fn special(&self) -> TiletypeSpecial {
396        match self.special {
397            Some(e) => e.enum_value_or(TiletypeSpecial::NO_SPECIAL),
398            None => TiletypeSpecial::NO_SPECIAL,
399        }
400    }
401
402    pub fn clear_special(&mut self) {
403        self.special = ::std::option::Option::None;
404    }
405
406    pub fn has_special(&self) -> bool {
407        self.special.is_some()
408    }
409
410    // Param is passed by value, moved
411    pub fn set_special(&mut self, v: TiletypeSpecial) {
412        self.special = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
413    }
414
415    // optional .RemoteFortressReader.TiletypeMaterial material = 6;
416
417    pub fn material(&self) -> TiletypeMaterial {
418        match self.material {
419            Some(e) => e.enum_value_or(TiletypeMaterial::NO_MATERIAL),
420            None => TiletypeMaterial::NO_MATERIAL,
421        }
422    }
423
424    pub fn clear_material(&mut self) {
425        self.material = ::std::option::Option::None;
426    }
427
428    pub fn has_material(&self) -> bool {
429        self.material.is_some()
430    }
431
432    // Param is passed by value, moved
433    pub fn set_material(&mut self, v: TiletypeMaterial) {
434        self.material = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
435    }
436
437    // optional .RemoteFortressReader.TiletypeVariant variant = 7;
438
439    pub fn variant(&self) -> TiletypeVariant {
440        match self.variant {
441            Some(e) => e.enum_value_or(TiletypeVariant::NO_VARIANT),
442            None => TiletypeVariant::NO_VARIANT,
443        }
444    }
445
446    pub fn clear_variant(&mut self) {
447        self.variant = ::std::option::Option::None;
448    }
449
450    pub fn has_variant(&self) -> bool {
451        self.variant.is_some()
452    }
453
454    // Param is passed by value, moved
455    pub fn set_variant(&mut self, v: TiletypeVariant) {
456        self.variant = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
457    }
458
459    // optional string direction = 8;
460
461    pub fn direction(&self) -> &str {
462        match self.direction.as_ref() {
463            Some(v) => v,
464            None => "",
465        }
466    }
467
468    pub fn clear_direction(&mut self) {
469        self.direction = ::std::option::Option::None;
470    }
471
472    pub fn has_direction(&self) -> bool {
473        self.direction.is_some()
474    }
475
476    // Param is passed by value, moved
477    pub fn set_direction(&mut self, v: ::std::string::String) {
478        self.direction = ::std::option::Option::Some(v);
479    }
480
481    // Mutable pointer to the field.
482    // If field is not initialized, it is initialized with default value first.
483    pub fn mut_direction(&mut self) -> &mut ::std::string::String {
484        if self.direction.is_none() {
485            self.direction = ::std::option::Option::Some(::std::string::String::new());
486        }
487        self.direction.as_mut().unwrap()
488    }
489
490    // Take field
491    pub fn take_direction(&mut self) -> ::std::string::String {
492        self.direction.take().unwrap_or_else(|| ::std::string::String::new())
493    }
494
495    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
496        let mut fields = ::std::vec::Vec::with_capacity(8);
497        let mut oneofs = ::std::vec::Vec::with_capacity(0);
498        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
499            "id",
500            |m: &Tiletype| { &m.id },
501            |m: &mut Tiletype| { &mut m.id },
502        ));
503        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
504            "name",
505            |m: &Tiletype| { &m.name },
506            |m: &mut Tiletype| { &mut m.name },
507        ));
508        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
509            "caption",
510            |m: &Tiletype| { &m.caption },
511            |m: &mut Tiletype| { &mut m.caption },
512        ));
513        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
514            "shape",
515            |m: &Tiletype| { &m.shape },
516            |m: &mut Tiletype| { &mut m.shape },
517        ));
518        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
519            "special",
520            |m: &Tiletype| { &m.special },
521            |m: &mut Tiletype| { &mut m.special },
522        ));
523        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
524            "material",
525            |m: &Tiletype| { &m.material },
526            |m: &mut Tiletype| { &mut m.material },
527        ));
528        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
529            "variant",
530            |m: &Tiletype| { &m.variant },
531            |m: &mut Tiletype| { &mut m.variant },
532        ));
533        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
534            "direction",
535            |m: &Tiletype| { &m.direction },
536            |m: &mut Tiletype| { &mut m.direction },
537        ));
538        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Tiletype>(
539            "Tiletype",
540            fields,
541            oneofs,
542        )
543    }
544}
545
546impl ::protobuf::Message for Tiletype {
547    const NAME: &'static str = "Tiletype";
548
549    fn is_initialized(&self) -> bool {
550        if self.id.is_none() {
551            return false;
552        }
553        true
554    }
555
556    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
557        while let Some(tag) = is.read_raw_tag_or_eof()? {
558            match tag {
559                8 => {
560                    self.id = ::std::option::Option::Some(is.read_int32()?);
561                },
562                18 => {
563                    self.name = ::std::option::Option::Some(is.read_string()?);
564                },
565                26 => {
566                    self.caption = ::std::option::Option::Some(is.read_string()?);
567                },
568                32 => {
569                    self.shape = ::std::option::Option::Some(is.read_enum_or_unknown()?);
570                },
571                40 => {
572                    self.special = ::std::option::Option::Some(is.read_enum_or_unknown()?);
573                },
574                48 => {
575                    self.material = ::std::option::Option::Some(is.read_enum_or_unknown()?);
576                },
577                56 => {
578                    self.variant = ::std::option::Option::Some(is.read_enum_or_unknown()?);
579                },
580                66 => {
581                    self.direction = ::std::option::Option::Some(is.read_string()?);
582                },
583                tag => {
584                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
585                },
586            };
587        }
588        ::std::result::Result::Ok(())
589    }
590
591    // Compute sizes of nested messages
592    #[allow(unused_variables)]
593    fn compute_size(&self) -> u64 {
594        let mut my_size = 0;
595        if let Some(v) = self.id {
596            my_size += ::protobuf::rt::int32_size(1, v);
597        }
598        if let Some(v) = self.name.as_ref() {
599            my_size += ::protobuf::rt::string_size(2, &v);
600        }
601        if let Some(v) = self.caption.as_ref() {
602            my_size += ::protobuf::rt::string_size(3, &v);
603        }
604        if let Some(v) = self.shape {
605            my_size += ::protobuf::rt::int32_size(4, v.value());
606        }
607        if let Some(v) = self.special {
608            my_size += ::protobuf::rt::int32_size(5, v.value());
609        }
610        if let Some(v) = self.material {
611            my_size += ::protobuf::rt::int32_size(6, v.value());
612        }
613        if let Some(v) = self.variant {
614            my_size += ::protobuf::rt::int32_size(7, v.value());
615        }
616        if let Some(v) = self.direction.as_ref() {
617            my_size += ::protobuf::rt::string_size(8, &v);
618        }
619        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
620        self.special_fields.cached_size().set(my_size as u32);
621        my_size
622    }
623
624    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
625        if let Some(v) = self.id {
626            os.write_int32(1, v)?;
627        }
628        if let Some(v) = self.name.as_ref() {
629            os.write_string(2, v)?;
630        }
631        if let Some(v) = self.caption.as_ref() {
632            os.write_string(3, v)?;
633        }
634        if let Some(v) = self.shape {
635            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
636        }
637        if let Some(v) = self.special {
638            os.write_enum(5, ::protobuf::EnumOrUnknown::value(&v))?;
639        }
640        if let Some(v) = self.material {
641            os.write_enum(6, ::protobuf::EnumOrUnknown::value(&v))?;
642        }
643        if let Some(v) = self.variant {
644            os.write_enum(7, ::protobuf::EnumOrUnknown::value(&v))?;
645        }
646        if let Some(v) = self.direction.as_ref() {
647            os.write_string(8, v)?;
648        }
649        os.write_unknown_fields(self.special_fields.unknown_fields())?;
650        ::std::result::Result::Ok(())
651    }
652
653    fn special_fields(&self) -> &::protobuf::SpecialFields {
654        &self.special_fields
655    }
656
657    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
658        &mut self.special_fields
659    }
660
661    fn new() -> Tiletype {
662        Tiletype::new()
663    }
664
665    fn clear(&mut self) {
666        self.id = ::std::option::Option::None;
667        self.name = ::std::option::Option::None;
668        self.caption = ::std::option::Option::None;
669        self.shape = ::std::option::Option::None;
670        self.special = ::std::option::Option::None;
671        self.material = ::std::option::Option::None;
672        self.variant = ::std::option::Option::None;
673        self.direction = ::std::option::Option::None;
674        self.special_fields.clear();
675    }
676
677    fn default_instance() -> &'static Tiletype {
678        static instance: Tiletype = Tiletype {
679            id: ::std::option::Option::None,
680            name: ::std::option::Option::None,
681            caption: ::std::option::Option::None,
682            shape: ::std::option::Option::None,
683            special: ::std::option::Option::None,
684            material: ::std::option::Option::None,
685            variant: ::std::option::Option::None,
686            direction: ::std::option::Option::None,
687            special_fields: ::protobuf::SpecialFields::new(),
688        };
689        &instance
690    }
691}
692
693impl ::protobuf::MessageFull for Tiletype {
694    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
695        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
696        descriptor.get(|| file_descriptor().message_by_package_relative_name("Tiletype").unwrap()).clone()
697    }
698}
699
700impl ::std::fmt::Display for Tiletype {
701    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
702        ::protobuf::text_format::fmt(self, f)
703    }
704}
705
706impl ::protobuf::reflect::ProtobufValue for Tiletype {
707    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
708}
709
710// @@protoc_insertion_point(message:RemoteFortressReader.TiletypeList)
711#[derive(PartialEq,Clone,Default,Debug)]
712pub struct TiletypeList {
713    // message fields
714    // @@protoc_insertion_point(field:RemoteFortressReader.TiletypeList.tiletype_list)
715    pub tiletype_list: ::std::vec::Vec<Tiletype>,
716    // special fields
717    // @@protoc_insertion_point(special_field:RemoteFortressReader.TiletypeList.special_fields)
718    pub special_fields: ::protobuf::SpecialFields,
719}
720
721impl<'a> ::std::default::Default for &'a TiletypeList {
722    fn default() -> &'a TiletypeList {
723        <TiletypeList as ::protobuf::Message>::default_instance()
724    }
725}
726
727impl TiletypeList {
728    pub fn new() -> TiletypeList {
729        ::std::default::Default::default()
730    }
731
732    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
733        let mut fields = ::std::vec::Vec::with_capacity(1);
734        let mut oneofs = ::std::vec::Vec::with_capacity(0);
735        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
736            "tiletype_list",
737            |m: &TiletypeList| { &m.tiletype_list },
738            |m: &mut TiletypeList| { &mut m.tiletype_list },
739        ));
740        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TiletypeList>(
741            "TiletypeList",
742            fields,
743            oneofs,
744        )
745    }
746}
747
748impl ::protobuf::Message for TiletypeList {
749    const NAME: &'static str = "TiletypeList";
750
751    fn is_initialized(&self) -> bool {
752        for v in &self.tiletype_list {
753            if !v.is_initialized() {
754                return false;
755            }
756        };
757        true
758    }
759
760    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
761        while let Some(tag) = is.read_raw_tag_or_eof()? {
762            match tag {
763                10 => {
764                    self.tiletype_list.push(is.read_message()?);
765                },
766                tag => {
767                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
768                },
769            };
770        }
771        ::std::result::Result::Ok(())
772    }
773
774    // Compute sizes of nested messages
775    #[allow(unused_variables)]
776    fn compute_size(&self) -> u64 {
777        let mut my_size = 0;
778        for value in &self.tiletype_list {
779            let len = value.compute_size();
780            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
781        };
782        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
783        self.special_fields.cached_size().set(my_size as u32);
784        my_size
785    }
786
787    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
788        for v in &self.tiletype_list {
789            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
790        };
791        os.write_unknown_fields(self.special_fields.unknown_fields())?;
792        ::std::result::Result::Ok(())
793    }
794
795    fn special_fields(&self) -> &::protobuf::SpecialFields {
796        &self.special_fields
797    }
798
799    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
800        &mut self.special_fields
801    }
802
803    fn new() -> TiletypeList {
804        TiletypeList::new()
805    }
806
807    fn clear(&mut self) {
808        self.tiletype_list.clear();
809        self.special_fields.clear();
810    }
811
812    fn default_instance() -> &'static TiletypeList {
813        static instance: TiletypeList = TiletypeList {
814            tiletype_list: ::std::vec::Vec::new(),
815            special_fields: ::protobuf::SpecialFields::new(),
816        };
817        &instance
818    }
819}
820
821impl ::protobuf::MessageFull for TiletypeList {
822    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
823        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
824        descriptor.get(|| file_descriptor().message_by_package_relative_name("TiletypeList").unwrap()).clone()
825    }
826}
827
828impl ::std::fmt::Display for TiletypeList {
829    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
830        ::protobuf::text_format::fmt(self, f)
831    }
832}
833
834impl ::protobuf::reflect::ProtobufValue for TiletypeList {
835    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
836}
837
838// @@protoc_insertion_point(message:RemoteFortressReader.BuildingExtents)
839#[derive(PartialEq,Clone,Default,Debug)]
840pub struct BuildingExtents {
841    // message fields
842    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.pos_x)
843    pub pos_x: ::std::option::Option<i32>,
844    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.pos_y)
845    pub pos_y: ::std::option::Option<i32>,
846    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.width)
847    pub width: ::std::option::Option<i32>,
848    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.height)
849    pub height: ::std::option::Option<i32>,
850    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingExtents.extents)
851    pub extents: ::std::vec::Vec<i32>,
852    // special fields
853    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingExtents.special_fields)
854    pub special_fields: ::protobuf::SpecialFields,
855}
856
857impl<'a> ::std::default::Default for &'a BuildingExtents {
858    fn default() -> &'a BuildingExtents {
859        <BuildingExtents as ::protobuf::Message>::default_instance()
860    }
861}
862
863impl BuildingExtents {
864    pub fn new() -> BuildingExtents {
865        ::std::default::Default::default()
866    }
867
868    // required int32 pos_x = 1;
869
870    pub fn pos_x(&self) -> i32 {
871        self.pos_x.unwrap_or(0)
872    }
873
874    pub fn clear_pos_x(&mut self) {
875        self.pos_x = ::std::option::Option::None;
876    }
877
878    pub fn has_pos_x(&self) -> bool {
879        self.pos_x.is_some()
880    }
881
882    // Param is passed by value, moved
883    pub fn set_pos_x(&mut self, v: i32) {
884        self.pos_x = ::std::option::Option::Some(v);
885    }
886
887    // required int32 pos_y = 2;
888
889    pub fn pos_y(&self) -> i32 {
890        self.pos_y.unwrap_or(0)
891    }
892
893    pub fn clear_pos_y(&mut self) {
894        self.pos_y = ::std::option::Option::None;
895    }
896
897    pub fn has_pos_y(&self) -> bool {
898        self.pos_y.is_some()
899    }
900
901    // Param is passed by value, moved
902    pub fn set_pos_y(&mut self, v: i32) {
903        self.pos_y = ::std::option::Option::Some(v);
904    }
905
906    // required int32 width = 3;
907
908    pub fn width(&self) -> i32 {
909        self.width.unwrap_or(0)
910    }
911
912    pub fn clear_width(&mut self) {
913        self.width = ::std::option::Option::None;
914    }
915
916    pub fn has_width(&self) -> bool {
917        self.width.is_some()
918    }
919
920    // Param is passed by value, moved
921    pub fn set_width(&mut self, v: i32) {
922        self.width = ::std::option::Option::Some(v);
923    }
924
925    // required int32 height = 4;
926
927    pub fn height(&self) -> i32 {
928        self.height.unwrap_or(0)
929    }
930
931    pub fn clear_height(&mut self) {
932        self.height = ::std::option::Option::None;
933    }
934
935    pub fn has_height(&self) -> bool {
936        self.height.is_some()
937    }
938
939    // Param is passed by value, moved
940    pub fn set_height(&mut self, v: i32) {
941        self.height = ::std::option::Option::Some(v);
942    }
943
944    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
945        let mut fields = ::std::vec::Vec::with_capacity(5);
946        let mut oneofs = ::std::vec::Vec::with_capacity(0);
947        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
948            "pos_x",
949            |m: &BuildingExtents| { &m.pos_x },
950            |m: &mut BuildingExtents| { &mut m.pos_x },
951        ));
952        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
953            "pos_y",
954            |m: &BuildingExtents| { &m.pos_y },
955            |m: &mut BuildingExtents| { &mut m.pos_y },
956        ));
957        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
958            "width",
959            |m: &BuildingExtents| { &m.width },
960            |m: &mut BuildingExtents| { &mut m.width },
961        ));
962        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
963            "height",
964            |m: &BuildingExtents| { &m.height },
965            |m: &mut BuildingExtents| { &mut m.height },
966        ));
967        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
968            "extents",
969            |m: &BuildingExtents| { &m.extents },
970            |m: &mut BuildingExtents| { &mut m.extents },
971        ));
972        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingExtents>(
973            "BuildingExtents",
974            fields,
975            oneofs,
976        )
977    }
978}
979
980impl ::protobuf::Message for BuildingExtents {
981    const NAME: &'static str = "BuildingExtents";
982
983    fn is_initialized(&self) -> bool {
984        if self.pos_x.is_none() {
985            return false;
986        }
987        if self.pos_y.is_none() {
988            return false;
989        }
990        if self.width.is_none() {
991            return false;
992        }
993        if self.height.is_none() {
994            return false;
995        }
996        true
997    }
998
999    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1000        while let Some(tag) = is.read_raw_tag_or_eof()? {
1001            match tag {
1002                8 => {
1003                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
1004                },
1005                16 => {
1006                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
1007                },
1008                24 => {
1009                    self.width = ::std::option::Option::Some(is.read_int32()?);
1010                },
1011                32 => {
1012                    self.height = ::std::option::Option::Some(is.read_int32()?);
1013                },
1014                42 => {
1015                    is.read_repeated_packed_int32_into(&mut self.extents)?;
1016                },
1017                40 => {
1018                    self.extents.push(is.read_int32()?);
1019                },
1020                tag => {
1021                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1022                },
1023            };
1024        }
1025        ::std::result::Result::Ok(())
1026    }
1027
1028    // Compute sizes of nested messages
1029    #[allow(unused_variables)]
1030    fn compute_size(&self) -> u64 {
1031        let mut my_size = 0;
1032        if let Some(v) = self.pos_x {
1033            my_size += ::protobuf::rt::int32_size(1, v);
1034        }
1035        if let Some(v) = self.pos_y {
1036            my_size += ::protobuf::rt::int32_size(2, v);
1037        }
1038        if let Some(v) = self.width {
1039            my_size += ::protobuf::rt::int32_size(3, v);
1040        }
1041        if let Some(v) = self.height {
1042            my_size += ::protobuf::rt::int32_size(4, v);
1043        }
1044        for value in &self.extents {
1045            my_size += ::protobuf::rt::int32_size(5, *value);
1046        };
1047        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1048        self.special_fields.cached_size().set(my_size as u32);
1049        my_size
1050    }
1051
1052    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1053        if let Some(v) = self.pos_x {
1054            os.write_int32(1, v)?;
1055        }
1056        if let Some(v) = self.pos_y {
1057            os.write_int32(2, v)?;
1058        }
1059        if let Some(v) = self.width {
1060            os.write_int32(3, v)?;
1061        }
1062        if let Some(v) = self.height {
1063            os.write_int32(4, v)?;
1064        }
1065        for v in &self.extents {
1066            os.write_int32(5, *v)?;
1067        };
1068        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1069        ::std::result::Result::Ok(())
1070    }
1071
1072    fn special_fields(&self) -> &::protobuf::SpecialFields {
1073        &self.special_fields
1074    }
1075
1076    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1077        &mut self.special_fields
1078    }
1079
1080    fn new() -> BuildingExtents {
1081        BuildingExtents::new()
1082    }
1083
1084    fn clear(&mut self) {
1085        self.pos_x = ::std::option::Option::None;
1086        self.pos_y = ::std::option::Option::None;
1087        self.width = ::std::option::Option::None;
1088        self.height = ::std::option::Option::None;
1089        self.extents.clear();
1090        self.special_fields.clear();
1091    }
1092
1093    fn default_instance() -> &'static BuildingExtents {
1094        static instance: BuildingExtents = BuildingExtents {
1095            pos_x: ::std::option::Option::None,
1096            pos_y: ::std::option::Option::None,
1097            width: ::std::option::Option::None,
1098            height: ::std::option::Option::None,
1099            extents: ::std::vec::Vec::new(),
1100            special_fields: ::protobuf::SpecialFields::new(),
1101        };
1102        &instance
1103    }
1104}
1105
1106impl ::protobuf::MessageFull for BuildingExtents {
1107    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1108        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1109        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingExtents").unwrap()).clone()
1110    }
1111}
1112
1113impl ::std::fmt::Display for BuildingExtents {
1114    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1115        ::protobuf::text_format::fmt(self, f)
1116    }
1117}
1118
1119impl ::protobuf::reflect::ProtobufValue for BuildingExtents {
1120    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1121}
1122
1123// @@protoc_insertion_point(message:RemoteFortressReader.BuildingItem)
1124#[derive(PartialEq,Clone,Default,Debug)]
1125pub struct BuildingItem {
1126    // message fields
1127    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingItem.item)
1128    pub item: ::protobuf::MessageField<Item>,
1129    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingItem.mode)
1130    pub mode: ::std::option::Option<i32>,
1131    // special fields
1132    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingItem.special_fields)
1133    pub special_fields: ::protobuf::SpecialFields,
1134}
1135
1136impl<'a> ::std::default::Default for &'a BuildingItem {
1137    fn default() -> &'a BuildingItem {
1138        <BuildingItem as ::protobuf::Message>::default_instance()
1139    }
1140}
1141
1142impl BuildingItem {
1143    pub fn new() -> BuildingItem {
1144        ::std::default::Default::default()
1145    }
1146
1147    // optional int32 mode = 2;
1148
1149    pub fn mode(&self) -> i32 {
1150        self.mode.unwrap_or(0)
1151    }
1152
1153    pub fn clear_mode(&mut self) {
1154        self.mode = ::std::option::Option::None;
1155    }
1156
1157    pub fn has_mode(&self) -> bool {
1158        self.mode.is_some()
1159    }
1160
1161    // Param is passed by value, moved
1162    pub fn set_mode(&mut self, v: i32) {
1163        self.mode = ::std::option::Option::Some(v);
1164    }
1165
1166    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1167        let mut fields = ::std::vec::Vec::with_capacity(2);
1168        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1169        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Item>(
1170            "item",
1171            |m: &BuildingItem| { &m.item },
1172            |m: &mut BuildingItem| { &mut m.item },
1173        ));
1174        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1175            "mode",
1176            |m: &BuildingItem| { &m.mode },
1177            |m: &mut BuildingItem| { &mut m.mode },
1178        ));
1179        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingItem>(
1180            "BuildingItem",
1181            fields,
1182            oneofs,
1183        )
1184    }
1185}
1186
1187impl ::protobuf::Message for BuildingItem {
1188    const NAME: &'static str = "BuildingItem";
1189
1190    fn is_initialized(&self) -> bool {
1191        for v in &self.item {
1192            if !v.is_initialized() {
1193                return false;
1194            }
1195        };
1196        true
1197    }
1198
1199    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1200        while let Some(tag) = is.read_raw_tag_or_eof()? {
1201            match tag {
1202                10 => {
1203                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
1204                },
1205                16 => {
1206                    self.mode = ::std::option::Option::Some(is.read_int32()?);
1207                },
1208                tag => {
1209                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1210                },
1211            };
1212        }
1213        ::std::result::Result::Ok(())
1214    }
1215
1216    // Compute sizes of nested messages
1217    #[allow(unused_variables)]
1218    fn compute_size(&self) -> u64 {
1219        let mut my_size = 0;
1220        if let Some(v) = self.item.as_ref() {
1221            let len = v.compute_size();
1222            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1223        }
1224        if let Some(v) = self.mode {
1225            my_size += ::protobuf::rt::int32_size(2, v);
1226        }
1227        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1228        self.special_fields.cached_size().set(my_size as u32);
1229        my_size
1230    }
1231
1232    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1233        if let Some(v) = self.item.as_ref() {
1234            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
1235        }
1236        if let Some(v) = self.mode {
1237            os.write_int32(2, v)?;
1238        }
1239        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1240        ::std::result::Result::Ok(())
1241    }
1242
1243    fn special_fields(&self) -> &::protobuf::SpecialFields {
1244        &self.special_fields
1245    }
1246
1247    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1248        &mut self.special_fields
1249    }
1250
1251    fn new() -> BuildingItem {
1252        BuildingItem::new()
1253    }
1254
1255    fn clear(&mut self) {
1256        self.item.clear();
1257        self.mode = ::std::option::Option::None;
1258        self.special_fields.clear();
1259    }
1260
1261    fn default_instance() -> &'static BuildingItem {
1262        static instance: BuildingItem = BuildingItem {
1263            item: ::protobuf::MessageField::none(),
1264            mode: ::std::option::Option::None,
1265            special_fields: ::protobuf::SpecialFields::new(),
1266        };
1267        &instance
1268    }
1269}
1270
1271impl ::protobuf::MessageFull for BuildingItem {
1272    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1273        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1274        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingItem").unwrap()).clone()
1275    }
1276}
1277
1278impl ::std::fmt::Display for BuildingItem {
1279    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1280        ::protobuf::text_format::fmt(self, f)
1281    }
1282}
1283
1284impl ::protobuf::reflect::ProtobufValue for BuildingItem {
1285    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1286}
1287
1288// @@protoc_insertion_point(message:RemoteFortressReader.BuildingInstance)
1289#[derive(PartialEq,Clone,Default,Debug)]
1290pub struct BuildingInstance {
1291    // message fields
1292    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.index)
1293    pub index: ::std::option::Option<i32>,
1294    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_x_min)
1295    pub pos_x_min: ::std::option::Option<i32>,
1296    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_y_min)
1297    pub pos_y_min: ::std::option::Option<i32>,
1298    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_z_min)
1299    pub pos_z_min: ::std::option::Option<i32>,
1300    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_x_max)
1301    pub pos_x_max: ::std::option::Option<i32>,
1302    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_y_max)
1303    pub pos_y_max: ::std::option::Option<i32>,
1304    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.pos_z_max)
1305    pub pos_z_max: ::std::option::Option<i32>,
1306    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.building_type)
1307    pub building_type: ::protobuf::MessageField<BuildingType>,
1308    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.material)
1309    pub material: ::protobuf::MessageField<MatPair>,
1310    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.building_flags)
1311    pub building_flags: ::std::option::Option<u32>,
1312    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.is_room)
1313    pub is_room: ::std::option::Option<bool>,
1314    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.room)
1315    pub room: ::protobuf::MessageField<BuildingExtents>,
1316    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.direction)
1317    pub direction: ::std::option::Option<::protobuf::EnumOrUnknown<BuildingDirection>>,
1318    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.items)
1319    pub items: ::std::vec::Vec<BuildingItem>,
1320    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingInstance.active)
1321    pub active: ::std::option::Option<i32>,
1322    // special fields
1323    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingInstance.special_fields)
1324    pub special_fields: ::protobuf::SpecialFields,
1325}
1326
1327impl<'a> ::std::default::Default for &'a BuildingInstance {
1328    fn default() -> &'a BuildingInstance {
1329        <BuildingInstance as ::protobuf::Message>::default_instance()
1330    }
1331}
1332
1333impl BuildingInstance {
1334    pub fn new() -> BuildingInstance {
1335        ::std::default::Default::default()
1336    }
1337
1338    // required int32 index = 1;
1339
1340    pub fn index(&self) -> i32 {
1341        self.index.unwrap_or(0)
1342    }
1343
1344    pub fn clear_index(&mut self) {
1345        self.index = ::std::option::Option::None;
1346    }
1347
1348    pub fn has_index(&self) -> bool {
1349        self.index.is_some()
1350    }
1351
1352    // Param is passed by value, moved
1353    pub fn set_index(&mut self, v: i32) {
1354        self.index = ::std::option::Option::Some(v);
1355    }
1356
1357    // optional int32 pos_x_min = 2;
1358
1359    pub fn pos_x_min(&self) -> i32 {
1360        self.pos_x_min.unwrap_or(0)
1361    }
1362
1363    pub fn clear_pos_x_min(&mut self) {
1364        self.pos_x_min = ::std::option::Option::None;
1365    }
1366
1367    pub fn has_pos_x_min(&self) -> bool {
1368        self.pos_x_min.is_some()
1369    }
1370
1371    // Param is passed by value, moved
1372    pub fn set_pos_x_min(&mut self, v: i32) {
1373        self.pos_x_min = ::std::option::Option::Some(v);
1374    }
1375
1376    // optional int32 pos_y_min = 3;
1377
1378    pub fn pos_y_min(&self) -> i32 {
1379        self.pos_y_min.unwrap_or(0)
1380    }
1381
1382    pub fn clear_pos_y_min(&mut self) {
1383        self.pos_y_min = ::std::option::Option::None;
1384    }
1385
1386    pub fn has_pos_y_min(&self) -> bool {
1387        self.pos_y_min.is_some()
1388    }
1389
1390    // Param is passed by value, moved
1391    pub fn set_pos_y_min(&mut self, v: i32) {
1392        self.pos_y_min = ::std::option::Option::Some(v);
1393    }
1394
1395    // optional int32 pos_z_min = 4;
1396
1397    pub fn pos_z_min(&self) -> i32 {
1398        self.pos_z_min.unwrap_or(0)
1399    }
1400
1401    pub fn clear_pos_z_min(&mut self) {
1402        self.pos_z_min = ::std::option::Option::None;
1403    }
1404
1405    pub fn has_pos_z_min(&self) -> bool {
1406        self.pos_z_min.is_some()
1407    }
1408
1409    // Param is passed by value, moved
1410    pub fn set_pos_z_min(&mut self, v: i32) {
1411        self.pos_z_min = ::std::option::Option::Some(v);
1412    }
1413
1414    // optional int32 pos_x_max = 5;
1415
1416    pub fn pos_x_max(&self) -> i32 {
1417        self.pos_x_max.unwrap_or(0)
1418    }
1419
1420    pub fn clear_pos_x_max(&mut self) {
1421        self.pos_x_max = ::std::option::Option::None;
1422    }
1423
1424    pub fn has_pos_x_max(&self) -> bool {
1425        self.pos_x_max.is_some()
1426    }
1427
1428    // Param is passed by value, moved
1429    pub fn set_pos_x_max(&mut self, v: i32) {
1430        self.pos_x_max = ::std::option::Option::Some(v);
1431    }
1432
1433    // optional int32 pos_y_max = 6;
1434
1435    pub fn pos_y_max(&self) -> i32 {
1436        self.pos_y_max.unwrap_or(0)
1437    }
1438
1439    pub fn clear_pos_y_max(&mut self) {
1440        self.pos_y_max = ::std::option::Option::None;
1441    }
1442
1443    pub fn has_pos_y_max(&self) -> bool {
1444        self.pos_y_max.is_some()
1445    }
1446
1447    // Param is passed by value, moved
1448    pub fn set_pos_y_max(&mut self, v: i32) {
1449        self.pos_y_max = ::std::option::Option::Some(v);
1450    }
1451
1452    // optional int32 pos_z_max = 7;
1453
1454    pub fn pos_z_max(&self) -> i32 {
1455        self.pos_z_max.unwrap_or(0)
1456    }
1457
1458    pub fn clear_pos_z_max(&mut self) {
1459        self.pos_z_max = ::std::option::Option::None;
1460    }
1461
1462    pub fn has_pos_z_max(&self) -> bool {
1463        self.pos_z_max.is_some()
1464    }
1465
1466    // Param is passed by value, moved
1467    pub fn set_pos_z_max(&mut self, v: i32) {
1468        self.pos_z_max = ::std::option::Option::Some(v);
1469    }
1470
1471    // optional uint32 building_flags = 10;
1472
1473    pub fn building_flags(&self) -> u32 {
1474        self.building_flags.unwrap_or(0)
1475    }
1476
1477    pub fn clear_building_flags(&mut self) {
1478        self.building_flags = ::std::option::Option::None;
1479    }
1480
1481    pub fn has_building_flags(&self) -> bool {
1482        self.building_flags.is_some()
1483    }
1484
1485    // Param is passed by value, moved
1486    pub fn set_building_flags(&mut self, v: u32) {
1487        self.building_flags = ::std::option::Option::Some(v);
1488    }
1489
1490    // optional bool is_room = 11;
1491
1492    pub fn is_room(&self) -> bool {
1493        self.is_room.unwrap_or(false)
1494    }
1495
1496    pub fn clear_is_room(&mut self) {
1497        self.is_room = ::std::option::Option::None;
1498    }
1499
1500    pub fn has_is_room(&self) -> bool {
1501        self.is_room.is_some()
1502    }
1503
1504    // Param is passed by value, moved
1505    pub fn set_is_room(&mut self, v: bool) {
1506        self.is_room = ::std::option::Option::Some(v);
1507    }
1508
1509    // optional .RemoteFortressReader.BuildingDirection direction = 13;
1510
1511    pub fn direction(&self) -> BuildingDirection {
1512        match self.direction {
1513            Some(e) => e.enum_value_or(BuildingDirection::NORTH),
1514            None => BuildingDirection::NORTH,
1515        }
1516    }
1517
1518    pub fn clear_direction(&mut self) {
1519        self.direction = ::std::option::Option::None;
1520    }
1521
1522    pub fn has_direction(&self) -> bool {
1523        self.direction.is_some()
1524    }
1525
1526    // Param is passed by value, moved
1527    pub fn set_direction(&mut self, v: BuildingDirection) {
1528        self.direction = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
1529    }
1530
1531    // optional int32 active = 15;
1532
1533    pub fn active(&self) -> i32 {
1534        self.active.unwrap_or(0)
1535    }
1536
1537    pub fn clear_active(&mut self) {
1538        self.active = ::std::option::Option::None;
1539    }
1540
1541    pub fn has_active(&self) -> bool {
1542        self.active.is_some()
1543    }
1544
1545    // Param is passed by value, moved
1546    pub fn set_active(&mut self, v: i32) {
1547        self.active = ::std::option::Option::Some(v);
1548    }
1549
1550    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1551        let mut fields = ::std::vec::Vec::with_capacity(15);
1552        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1553        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1554            "index",
1555            |m: &BuildingInstance| { &m.index },
1556            |m: &mut BuildingInstance| { &mut m.index },
1557        ));
1558        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1559            "pos_x_min",
1560            |m: &BuildingInstance| { &m.pos_x_min },
1561            |m: &mut BuildingInstance| { &mut m.pos_x_min },
1562        ));
1563        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1564            "pos_y_min",
1565            |m: &BuildingInstance| { &m.pos_y_min },
1566            |m: &mut BuildingInstance| { &mut m.pos_y_min },
1567        ));
1568        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1569            "pos_z_min",
1570            |m: &BuildingInstance| { &m.pos_z_min },
1571            |m: &mut BuildingInstance| { &mut m.pos_z_min },
1572        ));
1573        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1574            "pos_x_max",
1575            |m: &BuildingInstance| { &m.pos_x_max },
1576            |m: &mut BuildingInstance| { &mut m.pos_x_max },
1577        ));
1578        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1579            "pos_y_max",
1580            |m: &BuildingInstance| { &m.pos_y_max },
1581            |m: &mut BuildingInstance| { &mut m.pos_y_max },
1582        ));
1583        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1584            "pos_z_max",
1585            |m: &BuildingInstance| { &m.pos_z_max },
1586            |m: &mut BuildingInstance| { &mut m.pos_z_max },
1587        ));
1588        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BuildingType>(
1589            "building_type",
1590            |m: &BuildingInstance| { &m.building_type },
1591            |m: &mut BuildingInstance| { &mut m.building_type },
1592        ));
1593        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
1594            "material",
1595            |m: &BuildingInstance| { &m.material },
1596            |m: &mut BuildingInstance| { &mut m.material },
1597        ));
1598        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1599            "building_flags",
1600            |m: &BuildingInstance| { &m.building_flags },
1601            |m: &mut BuildingInstance| { &mut m.building_flags },
1602        ));
1603        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1604            "is_room",
1605            |m: &BuildingInstance| { &m.is_room },
1606            |m: &mut BuildingInstance| { &mut m.is_room },
1607        ));
1608        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BuildingExtents>(
1609            "room",
1610            |m: &BuildingInstance| { &m.room },
1611            |m: &mut BuildingInstance| { &mut m.room },
1612        ));
1613        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1614            "direction",
1615            |m: &BuildingInstance| { &m.direction },
1616            |m: &mut BuildingInstance| { &mut m.direction },
1617        ));
1618        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1619            "items",
1620            |m: &BuildingInstance| { &m.items },
1621            |m: &mut BuildingInstance| { &mut m.items },
1622        ));
1623        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1624            "active",
1625            |m: &BuildingInstance| { &m.active },
1626            |m: &mut BuildingInstance| { &mut m.active },
1627        ));
1628        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingInstance>(
1629            "BuildingInstance",
1630            fields,
1631            oneofs,
1632        )
1633    }
1634}
1635
1636impl ::protobuf::Message for BuildingInstance {
1637    const NAME: &'static str = "BuildingInstance";
1638
1639    fn is_initialized(&self) -> bool {
1640        if self.index.is_none() {
1641            return false;
1642        }
1643        for v in &self.building_type {
1644            if !v.is_initialized() {
1645                return false;
1646            }
1647        };
1648        for v in &self.material {
1649            if !v.is_initialized() {
1650                return false;
1651            }
1652        };
1653        for v in &self.room {
1654            if !v.is_initialized() {
1655                return false;
1656            }
1657        };
1658        for v in &self.items {
1659            if !v.is_initialized() {
1660                return false;
1661            }
1662        };
1663        true
1664    }
1665
1666    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1667        while let Some(tag) = is.read_raw_tag_or_eof()? {
1668            match tag {
1669                8 => {
1670                    self.index = ::std::option::Option::Some(is.read_int32()?);
1671                },
1672                16 => {
1673                    self.pos_x_min = ::std::option::Option::Some(is.read_int32()?);
1674                },
1675                24 => {
1676                    self.pos_y_min = ::std::option::Option::Some(is.read_int32()?);
1677                },
1678                32 => {
1679                    self.pos_z_min = ::std::option::Option::Some(is.read_int32()?);
1680                },
1681                40 => {
1682                    self.pos_x_max = ::std::option::Option::Some(is.read_int32()?);
1683                },
1684                48 => {
1685                    self.pos_y_max = ::std::option::Option::Some(is.read_int32()?);
1686                },
1687                56 => {
1688                    self.pos_z_max = ::std::option::Option::Some(is.read_int32()?);
1689                },
1690                66 => {
1691                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.building_type)?;
1692                },
1693                74 => {
1694                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
1695                },
1696                80 => {
1697                    self.building_flags = ::std::option::Option::Some(is.read_uint32()?);
1698                },
1699                88 => {
1700                    self.is_room = ::std::option::Option::Some(is.read_bool()?);
1701                },
1702                98 => {
1703                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.room)?;
1704                },
1705                104 => {
1706                    self.direction = ::std::option::Option::Some(is.read_enum_or_unknown()?);
1707                },
1708                114 => {
1709                    self.items.push(is.read_message()?);
1710                },
1711                120 => {
1712                    self.active = ::std::option::Option::Some(is.read_int32()?);
1713                },
1714                tag => {
1715                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1716                },
1717            };
1718        }
1719        ::std::result::Result::Ok(())
1720    }
1721
1722    // Compute sizes of nested messages
1723    #[allow(unused_variables)]
1724    fn compute_size(&self) -> u64 {
1725        let mut my_size = 0;
1726        if let Some(v) = self.index {
1727            my_size += ::protobuf::rt::int32_size(1, v);
1728        }
1729        if let Some(v) = self.pos_x_min {
1730            my_size += ::protobuf::rt::int32_size(2, v);
1731        }
1732        if let Some(v) = self.pos_y_min {
1733            my_size += ::protobuf::rt::int32_size(3, v);
1734        }
1735        if let Some(v) = self.pos_z_min {
1736            my_size += ::protobuf::rt::int32_size(4, v);
1737        }
1738        if let Some(v) = self.pos_x_max {
1739            my_size += ::protobuf::rt::int32_size(5, v);
1740        }
1741        if let Some(v) = self.pos_y_max {
1742            my_size += ::protobuf::rt::int32_size(6, v);
1743        }
1744        if let Some(v) = self.pos_z_max {
1745            my_size += ::protobuf::rt::int32_size(7, v);
1746        }
1747        if let Some(v) = self.building_type.as_ref() {
1748            let len = v.compute_size();
1749            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1750        }
1751        if let Some(v) = self.material.as_ref() {
1752            let len = v.compute_size();
1753            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1754        }
1755        if let Some(v) = self.building_flags {
1756            my_size += ::protobuf::rt::uint32_size(10, v);
1757        }
1758        if let Some(v) = self.is_room {
1759            my_size += 1 + 1;
1760        }
1761        if let Some(v) = self.room.as_ref() {
1762            let len = v.compute_size();
1763            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1764        }
1765        if let Some(v) = self.direction {
1766            my_size += ::protobuf::rt::int32_size(13, v.value());
1767        }
1768        for value in &self.items {
1769            let len = value.compute_size();
1770            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1771        };
1772        if let Some(v) = self.active {
1773            my_size += ::protobuf::rt::int32_size(15, v);
1774        }
1775        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1776        self.special_fields.cached_size().set(my_size as u32);
1777        my_size
1778    }
1779
1780    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1781        if let Some(v) = self.index {
1782            os.write_int32(1, v)?;
1783        }
1784        if let Some(v) = self.pos_x_min {
1785            os.write_int32(2, v)?;
1786        }
1787        if let Some(v) = self.pos_y_min {
1788            os.write_int32(3, v)?;
1789        }
1790        if let Some(v) = self.pos_z_min {
1791            os.write_int32(4, v)?;
1792        }
1793        if let Some(v) = self.pos_x_max {
1794            os.write_int32(5, v)?;
1795        }
1796        if let Some(v) = self.pos_y_max {
1797            os.write_int32(6, v)?;
1798        }
1799        if let Some(v) = self.pos_z_max {
1800            os.write_int32(7, v)?;
1801        }
1802        if let Some(v) = self.building_type.as_ref() {
1803            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
1804        }
1805        if let Some(v) = self.material.as_ref() {
1806            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
1807        }
1808        if let Some(v) = self.building_flags {
1809            os.write_uint32(10, v)?;
1810        }
1811        if let Some(v) = self.is_room {
1812            os.write_bool(11, v)?;
1813        }
1814        if let Some(v) = self.room.as_ref() {
1815            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
1816        }
1817        if let Some(v) = self.direction {
1818            os.write_enum(13, ::protobuf::EnumOrUnknown::value(&v))?;
1819        }
1820        for v in &self.items {
1821            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
1822        };
1823        if let Some(v) = self.active {
1824            os.write_int32(15, v)?;
1825        }
1826        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1827        ::std::result::Result::Ok(())
1828    }
1829
1830    fn special_fields(&self) -> &::protobuf::SpecialFields {
1831        &self.special_fields
1832    }
1833
1834    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1835        &mut self.special_fields
1836    }
1837
1838    fn new() -> BuildingInstance {
1839        BuildingInstance::new()
1840    }
1841
1842    fn clear(&mut self) {
1843        self.index = ::std::option::Option::None;
1844        self.pos_x_min = ::std::option::Option::None;
1845        self.pos_y_min = ::std::option::Option::None;
1846        self.pos_z_min = ::std::option::Option::None;
1847        self.pos_x_max = ::std::option::Option::None;
1848        self.pos_y_max = ::std::option::Option::None;
1849        self.pos_z_max = ::std::option::Option::None;
1850        self.building_type.clear();
1851        self.material.clear();
1852        self.building_flags = ::std::option::Option::None;
1853        self.is_room = ::std::option::Option::None;
1854        self.room.clear();
1855        self.direction = ::std::option::Option::None;
1856        self.items.clear();
1857        self.active = ::std::option::Option::None;
1858        self.special_fields.clear();
1859    }
1860
1861    fn default_instance() -> &'static BuildingInstance {
1862        static instance: BuildingInstance = BuildingInstance {
1863            index: ::std::option::Option::None,
1864            pos_x_min: ::std::option::Option::None,
1865            pos_y_min: ::std::option::Option::None,
1866            pos_z_min: ::std::option::Option::None,
1867            pos_x_max: ::std::option::Option::None,
1868            pos_y_max: ::std::option::Option::None,
1869            pos_z_max: ::std::option::Option::None,
1870            building_type: ::protobuf::MessageField::none(),
1871            material: ::protobuf::MessageField::none(),
1872            building_flags: ::std::option::Option::None,
1873            is_room: ::std::option::Option::None,
1874            room: ::protobuf::MessageField::none(),
1875            direction: ::std::option::Option::None,
1876            items: ::std::vec::Vec::new(),
1877            active: ::std::option::Option::None,
1878            special_fields: ::protobuf::SpecialFields::new(),
1879        };
1880        &instance
1881    }
1882}
1883
1884impl ::protobuf::MessageFull for BuildingInstance {
1885    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1886        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1887        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingInstance").unwrap()).clone()
1888    }
1889}
1890
1891impl ::std::fmt::Display for BuildingInstance {
1892    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1893        ::protobuf::text_format::fmt(self, f)
1894    }
1895}
1896
1897impl ::protobuf::reflect::ProtobufValue for BuildingInstance {
1898    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1899}
1900
1901// @@protoc_insertion_point(message:RemoteFortressReader.RiverEdge)
1902#[derive(PartialEq,Clone,Default,Debug)]
1903pub struct RiverEdge {
1904    // message fields
1905    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.min_pos)
1906    pub min_pos: ::std::option::Option<i32>,
1907    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.max_pos)
1908    pub max_pos: ::std::option::Option<i32>,
1909    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.active)
1910    pub active: ::std::option::Option<i32>,
1911    // @@protoc_insertion_point(field:RemoteFortressReader.RiverEdge.elevation)
1912    pub elevation: ::std::option::Option<i32>,
1913    // special fields
1914    // @@protoc_insertion_point(special_field:RemoteFortressReader.RiverEdge.special_fields)
1915    pub special_fields: ::protobuf::SpecialFields,
1916}
1917
1918impl<'a> ::std::default::Default for &'a RiverEdge {
1919    fn default() -> &'a RiverEdge {
1920        <RiverEdge as ::protobuf::Message>::default_instance()
1921    }
1922}
1923
1924impl RiverEdge {
1925    pub fn new() -> RiverEdge {
1926        ::std::default::Default::default()
1927    }
1928
1929    // optional int32 min_pos = 1;
1930
1931    pub fn min_pos(&self) -> i32 {
1932        self.min_pos.unwrap_or(0)
1933    }
1934
1935    pub fn clear_min_pos(&mut self) {
1936        self.min_pos = ::std::option::Option::None;
1937    }
1938
1939    pub fn has_min_pos(&self) -> bool {
1940        self.min_pos.is_some()
1941    }
1942
1943    // Param is passed by value, moved
1944    pub fn set_min_pos(&mut self, v: i32) {
1945        self.min_pos = ::std::option::Option::Some(v);
1946    }
1947
1948    // optional int32 max_pos = 2;
1949
1950    pub fn max_pos(&self) -> i32 {
1951        self.max_pos.unwrap_or(0)
1952    }
1953
1954    pub fn clear_max_pos(&mut self) {
1955        self.max_pos = ::std::option::Option::None;
1956    }
1957
1958    pub fn has_max_pos(&self) -> bool {
1959        self.max_pos.is_some()
1960    }
1961
1962    // Param is passed by value, moved
1963    pub fn set_max_pos(&mut self, v: i32) {
1964        self.max_pos = ::std::option::Option::Some(v);
1965    }
1966
1967    // optional int32 active = 3;
1968
1969    pub fn active(&self) -> i32 {
1970        self.active.unwrap_or(0)
1971    }
1972
1973    pub fn clear_active(&mut self) {
1974        self.active = ::std::option::Option::None;
1975    }
1976
1977    pub fn has_active(&self) -> bool {
1978        self.active.is_some()
1979    }
1980
1981    // Param is passed by value, moved
1982    pub fn set_active(&mut self, v: i32) {
1983        self.active = ::std::option::Option::Some(v);
1984    }
1985
1986    // optional int32 elevation = 4;
1987
1988    pub fn elevation(&self) -> i32 {
1989        self.elevation.unwrap_or(0)
1990    }
1991
1992    pub fn clear_elevation(&mut self) {
1993        self.elevation = ::std::option::Option::None;
1994    }
1995
1996    pub fn has_elevation(&self) -> bool {
1997        self.elevation.is_some()
1998    }
1999
2000    // Param is passed by value, moved
2001    pub fn set_elevation(&mut self, v: i32) {
2002        self.elevation = ::std::option::Option::Some(v);
2003    }
2004
2005    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2006        let mut fields = ::std::vec::Vec::with_capacity(4);
2007        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2008        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2009            "min_pos",
2010            |m: &RiverEdge| { &m.min_pos },
2011            |m: &mut RiverEdge| { &mut m.min_pos },
2012        ));
2013        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2014            "max_pos",
2015            |m: &RiverEdge| { &m.max_pos },
2016            |m: &mut RiverEdge| { &mut m.max_pos },
2017        ));
2018        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2019            "active",
2020            |m: &RiverEdge| { &m.active },
2021            |m: &mut RiverEdge| { &mut m.active },
2022        ));
2023        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2024            "elevation",
2025            |m: &RiverEdge| { &m.elevation },
2026            |m: &mut RiverEdge| { &mut m.elevation },
2027        ));
2028        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RiverEdge>(
2029            "RiverEdge",
2030            fields,
2031            oneofs,
2032        )
2033    }
2034}
2035
2036impl ::protobuf::Message for RiverEdge {
2037    const NAME: &'static str = "RiverEdge";
2038
2039    fn is_initialized(&self) -> bool {
2040        true
2041    }
2042
2043    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2044        while let Some(tag) = is.read_raw_tag_or_eof()? {
2045            match tag {
2046                8 => {
2047                    self.min_pos = ::std::option::Option::Some(is.read_int32()?);
2048                },
2049                16 => {
2050                    self.max_pos = ::std::option::Option::Some(is.read_int32()?);
2051                },
2052                24 => {
2053                    self.active = ::std::option::Option::Some(is.read_int32()?);
2054                },
2055                32 => {
2056                    self.elevation = ::std::option::Option::Some(is.read_int32()?);
2057                },
2058                tag => {
2059                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2060                },
2061            };
2062        }
2063        ::std::result::Result::Ok(())
2064    }
2065
2066    // Compute sizes of nested messages
2067    #[allow(unused_variables)]
2068    fn compute_size(&self) -> u64 {
2069        let mut my_size = 0;
2070        if let Some(v) = self.min_pos {
2071            my_size += ::protobuf::rt::int32_size(1, v);
2072        }
2073        if let Some(v) = self.max_pos {
2074            my_size += ::protobuf::rt::int32_size(2, v);
2075        }
2076        if let Some(v) = self.active {
2077            my_size += ::protobuf::rt::int32_size(3, v);
2078        }
2079        if let Some(v) = self.elevation {
2080            my_size += ::protobuf::rt::int32_size(4, v);
2081        }
2082        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2083        self.special_fields.cached_size().set(my_size as u32);
2084        my_size
2085    }
2086
2087    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2088        if let Some(v) = self.min_pos {
2089            os.write_int32(1, v)?;
2090        }
2091        if let Some(v) = self.max_pos {
2092            os.write_int32(2, v)?;
2093        }
2094        if let Some(v) = self.active {
2095            os.write_int32(3, v)?;
2096        }
2097        if let Some(v) = self.elevation {
2098            os.write_int32(4, v)?;
2099        }
2100        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2101        ::std::result::Result::Ok(())
2102    }
2103
2104    fn special_fields(&self) -> &::protobuf::SpecialFields {
2105        &self.special_fields
2106    }
2107
2108    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2109        &mut self.special_fields
2110    }
2111
2112    fn new() -> RiverEdge {
2113        RiverEdge::new()
2114    }
2115
2116    fn clear(&mut self) {
2117        self.min_pos = ::std::option::Option::None;
2118        self.max_pos = ::std::option::Option::None;
2119        self.active = ::std::option::Option::None;
2120        self.elevation = ::std::option::Option::None;
2121        self.special_fields.clear();
2122    }
2123
2124    fn default_instance() -> &'static RiverEdge {
2125        static instance: RiverEdge = RiverEdge {
2126            min_pos: ::std::option::Option::None,
2127            max_pos: ::std::option::Option::None,
2128            active: ::std::option::Option::None,
2129            elevation: ::std::option::Option::None,
2130            special_fields: ::protobuf::SpecialFields::new(),
2131        };
2132        &instance
2133    }
2134}
2135
2136impl ::protobuf::MessageFull for RiverEdge {
2137    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2138        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2139        descriptor.get(|| file_descriptor().message_by_package_relative_name("RiverEdge").unwrap()).clone()
2140    }
2141}
2142
2143impl ::std::fmt::Display for RiverEdge {
2144    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2145        ::protobuf::text_format::fmt(self, f)
2146    }
2147}
2148
2149impl ::protobuf::reflect::ProtobufValue for RiverEdge {
2150    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2151}
2152
2153// @@protoc_insertion_point(message:RemoteFortressReader.RiverTile)
2154#[derive(PartialEq,Clone,Default,Debug)]
2155pub struct RiverTile {
2156    // message fields
2157    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.north)
2158    pub north: ::protobuf::MessageField<RiverEdge>,
2159    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.south)
2160    pub south: ::protobuf::MessageField<RiverEdge>,
2161    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.east)
2162    pub east: ::protobuf::MessageField<RiverEdge>,
2163    // @@protoc_insertion_point(field:RemoteFortressReader.RiverTile.west)
2164    pub west: ::protobuf::MessageField<RiverEdge>,
2165    // special fields
2166    // @@protoc_insertion_point(special_field:RemoteFortressReader.RiverTile.special_fields)
2167    pub special_fields: ::protobuf::SpecialFields,
2168}
2169
2170impl<'a> ::std::default::Default for &'a RiverTile {
2171    fn default() -> &'a RiverTile {
2172        <RiverTile as ::protobuf::Message>::default_instance()
2173    }
2174}
2175
2176impl RiverTile {
2177    pub fn new() -> RiverTile {
2178        ::std::default::Default::default()
2179    }
2180
2181    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2182        let mut fields = ::std::vec::Vec::with_capacity(4);
2183        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2184        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2185            "north",
2186            |m: &RiverTile| { &m.north },
2187            |m: &mut RiverTile| { &mut m.north },
2188        ));
2189        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2190            "south",
2191            |m: &RiverTile| { &m.south },
2192            |m: &mut RiverTile| { &mut m.south },
2193        ));
2194        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2195            "east",
2196            |m: &RiverTile| { &m.east },
2197            |m: &mut RiverTile| { &mut m.east },
2198        ));
2199        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverEdge>(
2200            "west",
2201            |m: &RiverTile| { &m.west },
2202            |m: &mut RiverTile| { &mut m.west },
2203        ));
2204        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RiverTile>(
2205            "RiverTile",
2206            fields,
2207            oneofs,
2208        )
2209    }
2210}
2211
2212impl ::protobuf::Message for RiverTile {
2213    const NAME: &'static str = "RiverTile";
2214
2215    fn is_initialized(&self) -> bool {
2216        true
2217    }
2218
2219    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2220        while let Some(tag) = is.read_raw_tag_or_eof()? {
2221            match tag {
2222                10 => {
2223                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.north)?;
2224                },
2225                18 => {
2226                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.south)?;
2227                },
2228                26 => {
2229                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.east)?;
2230                },
2231                34 => {
2232                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.west)?;
2233                },
2234                tag => {
2235                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2236                },
2237            };
2238        }
2239        ::std::result::Result::Ok(())
2240    }
2241
2242    // Compute sizes of nested messages
2243    #[allow(unused_variables)]
2244    fn compute_size(&self) -> u64 {
2245        let mut my_size = 0;
2246        if let Some(v) = self.north.as_ref() {
2247            let len = v.compute_size();
2248            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2249        }
2250        if let Some(v) = self.south.as_ref() {
2251            let len = v.compute_size();
2252            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2253        }
2254        if let Some(v) = self.east.as_ref() {
2255            let len = v.compute_size();
2256            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2257        }
2258        if let Some(v) = self.west.as_ref() {
2259            let len = v.compute_size();
2260            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2261        }
2262        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2263        self.special_fields.cached_size().set(my_size as u32);
2264        my_size
2265    }
2266
2267    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2268        if let Some(v) = self.north.as_ref() {
2269            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2270        }
2271        if let Some(v) = self.south.as_ref() {
2272            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
2273        }
2274        if let Some(v) = self.east.as_ref() {
2275            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
2276        }
2277        if let Some(v) = self.west.as_ref() {
2278            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
2279        }
2280        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2281        ::std::result::Result::Ok(())
2282    }
2283
2284    fn special_fields(&self) -> &::protobuf::SpecialFields {
2285        &self.special_fields
2286    }
2287
2288    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2289        &mut self.special_fields
2290    }
2291
2292    fn new() -> RiverTile {
2293        RiverTile::new()
2294    }
2295
2296    fn clear(&mut self) {
2297        self.north.clear();
2298        self.south.clear();
2299        self.east.clear();
2300        self.west.clear();
2301        self.special_fields.clear();
2302    }
2303
2304    fn default_instance() -> &'static RiverTile {
2305        static instance: RiverTile = RiverTile {
2306            north: ::protobuf::MessageField::none(),
2307            south: ::protobuf::MessageField::none(),
2308            east: ::protobuf::MessageField::none(),
2309            west: ::protobuf::MessageField::none(),
2310            special_fields: ::protobuf::SpecialFields::new(),
2311        };
2312        &instance
2313    }
2314}
2315
2316impl ::protobuf::MessageFull for RiverTile {
2317    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2318        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2319        descriptor.get(|| file_descriptor().message_by_package_relative_name("RiverTile").unwrap()).clone()
2320    }
2321}
2322
2323impl ::std::fmt::Display for RiverTile {
2324    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2325        ::protobuf::text_format::fmt(self, f)
2326    }
2327}
2328
2329impl ::protobuf::reflect::ProtobufValue for RiverTile {
2330    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2331}
2332
2333// @@protoc_insertion_point(message:RemoteFortressReader.Spatter)
2334#[derive(PartialEq,Clone,Default,Debug)]
2335pub struct Spatter {
2336    // message fields
2337    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.material)
2338    pub material: ::protobuf::MessageField<MatPair>,
2339    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.amount)
2340    pub amount: ::std::option::Option<i32>,
2341    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.state)
2342    pub state: ::std::option::Option<::protobuf::EnumOrUnknown<MatterState>>,
2343    // @@protoc_insertion_point(field:RemoteFortressReader.Spatter.item)
2344    pub item: ::protobuf::MessageField<MatPair>,
2345    // special fields
2346    // @@protoc_insertion_point(special_field:RemoteFortressReader.Spatter.special_fields)
2347    pub special_fields: ::protobuf::SpecialFields,
2348}
2349
2350impl<'a> ::std::default::Default for &'a Spatter {
2351    fn default() -> &'a Spatter {
2352        <Spatter as ::protobuf::Message>::default_instance()
2353    }
2354}
2355
2356impl Spatter {
2357    pub fn new() -> Spatter {
2358        ::std::default::Default::default()
2359    }
2360
2361    // optional int32 amount = 2;
2362
2363    pub fn amount(&self) -> i32 {
2364        self.amount.unwrap_or(0)
2365    }
2366
2367    pub fn clear_amount(&mut self) {
2368        self.amount = ::std::option::Option::None;
2369    }
2370
2371    pub fn has_amount(&self) -> bool {
2372        self.amount.is_some()
2373    }
2374
2375    // Param is passed by value, moved
2376    pub fn set_amount(&mut self, v: i32) {
2377        self.amount = ::std::option::Option::Some(v);
2378    }
2379
2380    // optional .RemoteFortressReader.MatterState state = 3;
2381
2382    pub fn state(&self) -> MatterState {
2383        match self.state {
2384            Some(e) => e.enum_value_or(MatterState::Solid),
2385            None => MatterState::Solid,
2386        }
2387    }
2388
2389    pub fn clear_state(&mut self) {
2390        self.state = ::std::option::Option::None;
2391    }
2392
2393    pub fn has_state(&self) -> bool {
2394        self.state.is_some()
2395    }
2396
2397    // Param is passed by value, moved
2398    pub fn set_state(&mut self, v: MatterState) {
2399        self.state = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
2400    }
2401
2402    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2403        let mut fields = ::std::vec::Vec::with_capacity(4);
2404        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2405        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
2406            "material",
2407            |m: &Spatter| { &m.material },
2408            |m: &mut Spatter| { &mut m.material },
2409        ));
2410        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2411            "amount",
2412            |m: &Spatter| { &m.amount },
2413            |m: &mut Spatter| { &mut m.amount },
2414        ));
2415        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2416            "state",
2417            |m: &Spatter| { &m.state },
2418            |m: &mut Spatter| { &mut m.state },
2419        ));
2420        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
2421            "item",
2422            |m: &Spatter| { &m.item },
2423            |m: &mut Spatter| { &mut m.item },
2424        ));
2425        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Spatter>(
2426            "Spatter",
2427            fields,
2428            oneofs,
2429        )
2430    }
2431}
2432
2433impl ::protobuf::Message for Spatter {
2434    const NAME: &'static str = "Spatter";
2435
2436    fn is_initialized(&self) -> bool {
2437        for v in &self.material {
2438            if !v.is_initialized() {
2439                return false;
2440            }
2441        };
2442        for v in &self.item {
2443            if !v.is_initialized() {
2444                return false;
2445            }
2446        };
2447        true
2448    }
2449
2450    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2451        while let Some(tag) = is.read_raw_tag_or_eof()? {
2452            match tag {
2453                10 => {
2454                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
2455                },
2456                16 => {
2457                    self.amount = ::std::option::Option::Some(is.read_int32()?);
2458                },
2459                24 => {
2460                    self.state = ::std::option::Option::Some(is.read_enum_or_unknown()?);
2461                },
2462                34 => {
2463                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
2464                },
2465                tag => {
2466                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2467                },
2468            };
2469        }
2470        ::std::result::Result::Ok(())
2471    }
2472
2473    // Compute sizes of nested messages
2474    #[allow(unused_variables)]
2475    fn compute_size(&self) -> u64 {
2476        let mut my_size = 0;
2477        if let Some(v) = self.material.as_ref() {
2478            let len = v.compute_size();
2479            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2480        }
2481        if let Some(v) = self.amount {
2482            my_size += ::protobuf::rt::int32_size(2, v);
2483        }
2484        if let Some(v) = self.state {
2485            my_size += ::protobuf::rt::int32_size(3, v.value());
2486        }
2487        if let Some(v) = self.item.as_ref() {
2488            let len = v.compute_size();
2489            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2490        }
2491        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2492        self.special_fields.cached_size().set(my_size as u32);
2493        my_size
2494    }
2495
2496    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2497        if let Some(v) = self.material.as_ref() {
2498            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2499        }
2500        if let Some(v) = self.amount {
2501            os.write_int32(2, v)?;
2502        }
2503        if let Some(v) = self.state {
2504            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
2505        }
2506        if let Some(v) = self.item.as_ref() {
2507            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
2508        }
2509        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2510        ::std::result::Result::Ok(())
2511    }
2512
2513    fn special_fields(&self) -> &::protobuf::SpecialFields {
2514        &self.special_fields
2515    }
2516
2517    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2518        &mut self.special_fields
2519    }
2520
2521    fn new() -> Spatter {
2522        Spatter::new()
2523    }
2524
2525    fn clear(&mut self) {
2526        self.material.clear();
2527        self.amount = ::std::option::Option::None;
2528        self.state = ::std::option::Option::None;
2529        self.item.clear();
2530        self.special_fields.clear();
2531    }
2532
2533    fn default_instance() -> &'static Spatter {
2534        static instance: Spatter = Spatter {
2535            material: ::protobuf::MessageField::none(),
2536            amount: ::std::option::Option::None,
2537            state: ::std::option::Option::None,
2538            item: ::protobuf::MessageField::none(),
2539            special_fields: ::protobuf::SpecialFields::new(),
2540        };
2541        &instance
2542    }
2543}
2544
2545impl ::protobuf::MessageFull for Spatter {
2546    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2547        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2548        descriptor.get(|| file_descriptor().message_by_package_relative_name("Spatter").unwrap()).clone()
2549    }
2550}
2551
2552impl ::std::fmt::Display for Spatter {
2553    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2554        ::protobuf::text_format::fmt(self, f)
2555    }
2556}
2557
2558impl ::protobuf::reflect::ProtobufValue for Spatter {
2559    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2560}
2561
2562// @@protoc_insertion_point(message:RemoteFortressReader.SpatterPile)
2563#[derive(PartialEq,Clone,Default,Debug)]
2564pub struct SpatterPile {
2565    // message fields
2566    // @@protoc_insertion_point(field:RemoteFortressReader.SpatterPile.spatters)
2567    pub spatters: ::std::vec::Vec<Spatter>,
2568    // special fields
2569    // @@protoc_insertion_point(special_field:RemoteFortressReader.SpatterPile.special_fields)
2570    pub special_fields: ::protobuf::SpecialFields,
2571}
2572
2573impl<'a> ::std::default::Default for &'a SpatterPile {
2574    fn default() -> &'a SpatterPile {
2575        <SpatterPile as ::protobuf::Message>::default_instance()
2576    }
2577}
2578
2579impl SpatterPile {
2580    pub fn new() -> SpatterPile {
2581        ::std::default::Default::default()
2582    }
2583
2584    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2585        let mut fields = ::std::vec::Vec::with_capacity(1);
2586        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2587        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
2588            "spatters",
2589            |m: &SpatterPile| { &m.spatters },
2590            |m: &mut SpatterPile| { &mut m.spatters },
2591        ));
2592        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SpatterPile>(
2593            "SpatterPile",
2594            fields,
2595            oneofs,
2596        )
2597    }
2598}
2599
2600impl ::protobuf::Message for SpatterPile {
2601    const NAME: &'static str = "SpatterPile";
2602
2603    fn is_initialized(&self) -> bool {
2604        for v in &self.spatters {
2605            if !v.is_initialized() {
2606                return false;
2607            }
2608        };
2609        true
2610    }
2611
2612    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
2613        while let Some(tag) = is.read_raw_tag_or_eof()? {
2614            match tag {
2615                10 => {
2616                    self.spatters.push(is.read_message()?);
2617                },
2618                tag => {
2619                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
2620                },
2621            };
2622        }
2623        ::std::result::Result::Ok(())
2624    }
2625
2626    // Compute sizes of nested messages
2627    #[allow(unused_variables)]
2628    fn compute_size(&self) -> u64 {
2629        let mut my_size = 0;
2630        for value in &self.spatters {
2631            let len = value.compute_size();
2632            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
2633        };
2634        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
2635        self.special_fields.cached_size().set(my_size as u32);
2636        my_size
2637    }
2638
2639    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
2640        for v in &self.spatters {
2641            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
2642        };
2643        os.write_unknown_fields(self.special_fields.unknown_fields())?;
2644        ::std::result::Result::Ok(())
2645    }
2646
2647    fn special_fields(&self) -> &::protobuf::SpecialFields {
2648        &self.special_fields
2649    }
2650
2651    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
2652        &mut self.special_fields
2653    }
2654
2655    fn new() -> SpatterPile {
2656        SpatterPile::new()
2657    }
2658
2659    fn clear(&mut self) {
2660        self.spatters.clear();
2661        self.special_fields.clear();
2662    }
2663
2664    fn default_instance() -> &'static SpatterPile {
2665        static instance: SpatterPile = SpatterPile {
2666            spatters: ::std::vec::Vec::new(),
2667            special_fields: ::protobuf::SpecialFields::new(),
2668        };
2669        &instance
2670    }
2671}
2672
2673impl ::protobuf::MessageFull for SpatterPile {
2674    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
2675        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
2676        descriptor.get(|| file_descriptor().message_by_package_relative_name("SpatterPile").unwrap()).clone()
2677    }
2678}
2679
2680impl ::std::fmt::Display for SpatterPile {
2681    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2682        ::protobuf::text_format::fmt(self, f)
2683    }
2684}
2685
2686impl ::protobuf::reflect::ProtobufValue for SpatterPile {
2687    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
2688}
2689
2690// @@protoc_insertion_point(message:RemoteFortressReader.Item)
2691#[derive(PartialEq,Clone,Default,Debug)]
2692pub struct Item {
2693    // message fields
2694    // @@protoc_insertion_point(field:RemoteFortressReader.Item.id)
2695    pub id: ::std::option::Option<i32>,
2696    // @@protoc_insertion_point(field:RemoteFortressReader.Item.pos)
2697    pub pos: ::protobuf::MessageField<Coord>,
2698    // @@protoc_insertion_point(field:RemoteFortressReader.Item.flags1)
2699    pub flags1: ::std::option::Option<u32>,
2700    // @@protoc_insertion_point(field:RemoteFortressReader.Item.flags2)
2701    pub flags2: ::std::option::Option<u32>,
2702    // @@protoc_insertion_point(field:RemoteFortressReader.Item.type)
2703    pub type_: ::protobuf::MessageField<MatPair>,
2704    // @@protoc_insertion_point(field:RemoteFortressReader.Item.material)
2705    pub material: ::protobuf::MessageField<MatPair>,
2706    // @@protoc_insertion_point(field:RemoteFortressReader.Item.dye)
2707    pub dye: ::protobuf::MessageField<ColorDefinition>,
2708    // @@protoc_insertion_point(field:RemoteFortressReader.Item.stack_size)
2709    pub stack_size: ::std::option::Option<i32>,
2710    // @@protoc_insertion_point(field:RemoteFortressReader.Item.subpos_x)
2711    pub subpos_x: ::std::option::Option<f32>,
2712    // @@protoc_insertion_point(field:RemoteFortressReader.Item.subpos_y)
2713    pub subpos_y: ::std::option::Option<f32>,
2714    // @@protoc_insertion_point(field:RemoteFortressReader.Item.subpos_z)
2715    pub subpos_z: ::std::option::Option<f32>,
2716    // @@protoc_insertion_point(field:RemoteFortressReader.Item.projectile)
2717    pub projectile: ::std::option::Option<bool>,
2718    // @@protoc_insertion_point(field:RemoteFortressReader.Item.velocity_x)
2719    pub velocity_x: ::std::option::Option<f32>,
2720    // @@protoc_insertion_point(field:RemoteFortressReader.Item.velocity_y)
2721    pub velocity_y: ::std::option::Option<f32>,
2722    // @@protoc_insertion_point(field:RemoteFortressReader.Item.velocity_z)
2723    pub velocity_z: ::std::option::Option<f32>,
2724    // @@protoc_insertion_point(field:RemoteFortressReader.Item.volume)
2725    pub volume: ::std::option::Option<i32>,
2726    // @@protoc_insertion_point(field:RemoteFortressReader.Item.improvements)
2727    pub improvements: ::std::vec::Vec<ItemImprovement>,
2728    // @@protoc_insertion_point(field:RemoteFortressReader.Item.image)
2729    pub image: ::protobuf::MessageField<ArtImage>,
2730    // special fields
2731    // @@protoc_insertion_point(special_field:RemoteFortressReader.Item.special_fields)
2732    pub special_fields: ::protobuf::SpecialFields,
2733}
2734
2735impl<'a> ::std::default::Default for &'a Item {
2736    fn default() -> &'a Item {
2737        <Item as ::protobuf::Message>::default_instance()
2738    }
2739}
2740
2741impl Item {
2742    pub fn new() -> Item {
2743        ::std::default::Default::default()
2744    }
2745
2746    // optional int32 id = 1;
2747
2748    pub fn id(&self) -> i32 {
2749        self.id.unwrap_or(0)
2750    }
2751
2752    pub fn clear_id(&mut self) {
2753        self.id = ::std::option::Option::None;
2754    }
2755
2756    pub fn has_id(&self) -> bool {
2757        self.id.is_some()
2758    }
2759
2760    // Param is passed by value, moved
2761    pub fn set_id(&mut self, v: i32) {
2762        self.id = ::std::option::Option::Some(v);
2763    }
2764
2765    // optional uint32 flags1 = 3;
2766
2767    pub fn flags1(&self) -> u32 {
2768        self.flags1.unwrap_or(0)
2769    }
2770
2771    pub fn clear_flags1(&mut self) {
2772        self.flags1 = ::std::option::Option::None;
2773    }
2774
2775    pub fn has_flags1(&self) -> bool {
2776        self.flags1.is_some()
2777    }
2778
2779    // Param is passed by value, moved
2780    pub fn set_flags1(&mut self, v: u32) {
2781        self.flags1 = ::std::option::Option::Some(v);
2782    }
2783
2784    // optional uint32 flags2 = 4;
2785
2786    pub fn flags2(&self) -> u32 {
2787        self.flags2.unwrap_or(0)
2788    }
2789
2790    pub fn clear_flags2(&mut self) {
2791        self.flags2 = ::std::option::Option::None;
2792    }
2793
2794    pub fn has_flags2(&self) -> bool {
2795        self.flags2.is_some()
2796    }
2797
2798    // Param is passed by value, moved
2799    pub fn set_flags2(&mut self, v: u32) {
2800        self.flags2 = ::std::option::Option::Some(v);
2801    }
2802
2803    // optional int32 stack_size = 8;
2804
2805    pub fn stack_size(&self) -> i32 {
2806        self.stack_size.unwrap_or(0)
2807    }
2808
2809    pub fn clear_stack_size(&mut self) {
2810        self.stack_size = ::std::option::Option::None;
2811    }
2812
2813    pub fn has_stack_size(&self) -> bool {
2814        self.stack_size.is_some()
2815    }
2816
2817    // Param is passed by value, moved
2818    pub fn set_stack_size(&mut self, v: i32) {
2819        self.stack_size = ::std::option::Option::Some(v);
2820    }
2821
2822    // optional float subpos_x = 9;
2823
2824    pub fn subpos_x(&self) -> f32 {
2825        self.subpos_x.unwrap_or(0.)
2826    }
2827
2828    pub fn clear_subpos_x(&mut self) {
2829        self.subpos_x = ::std::option::Option::None;
2830    }
2831
2832    pub fn has_subpos_x(&self) -> bool {
2833        self.subpos_x.is_some()
2834    }
2835
2836    // Param is passed by value, moved
2837    pub fn set_subpos_x(&mut self, v: f32) {
2838        self.subpos_x = ::std::option::Option::Some(v);
2839    }
2840
2841    // optional float subpos_y = 10;
2842
2843    pub fn subpos_y(&self) -> f32 {
2844        self.subpos_y.unwrap_or(0.)
2845    }
2846
2847    pub fn clear_subpos_y(&mut self) {
2848        self.subpos_y = ::std::option::Option::None;
2849    }
2850
2851    pub fn has_subpos_y(&self) -> bool {
2852        self.subpos_y.is_some()
2853    }
2854
2855    // Param is passed by value, moved
2856    pub fn set_subpos_y(&mut self, v: f32) {
2857        self.subpos_y = ::std::option::Option::Some(v);
2858    }
2859
2860    // optional float subpos_z = 11;
2861
2862    pub fn subpos_z(&self) -> f32 {
2863        self.subpos_z.unwrap_or(0.)
2864    }
2865
2866    pub fn clear_subpos_z(&mut self) {
2867        self.subpos_z = ::std::option::Option::None;
2868    }
2869
2870    pub fn has_subpos_z(&self) -> bool {
2871        self.subpos_z.is_some()
2872    }
2873
2874    // Param is passed by value, moved
2875    pub fn set_subpos_z(&mut self, v: f32) {
2876        self.subpos_z = ::std::option::Option::Some(v);
2877    }
2878
2879    // optional bool projectile = 12;
2880
2881    pub fn projectile(&self) -> bool {
2882        self.projectile.unwrap_or(false)
2883    }
2884
2885    pub fn clear_projectile(&mut self) {
2886        self.projectile = ::std::option::Option::None;
2887    }
2888
2889    pub fn has_projectile(&self) -> bool {
2890        self.projectile.is_some()
2891    }
2892
2893    // Param is passed by value, moved
2894    pub fn set_projectile(&mut self, v: bool) {
2895        self.projectile = ::std::option::Option::Some(v);
2896    }
2897
2898    // optional float velocity_x = 13;
2899
2900    pub fn velocity_x(&self) -> f32 {
2901        self.velocity_x.unwrap_or(0.)
2902    }
2903
2904    pub fn clear_velocity_x(&mut self) {
2905        self.velocity_x = ::std::option::Option::None;
2906    }
2907
2908    pub fn has_velocity_x(&self) -> bool {
2909        self.velocity_x.is_some()
2910    }
2911
2912    // Param is passed by value, moved
2913    pub fn set_velocity_x(&mut self, v: f32) {
2914        self.velocity_x = ::std::option::Option::Some(v);
2915    }
2916
2917    // optional float velocity_y = 14;
2918
2919    pub fn velocity_y(&self) -> f32 {
2920        self.velocity_y.unwrap_or(0.)
2921    }
2922
2923    pub fn clear_velocity_y(&mut self) {
2924        self.velocity_y = ::std::option::Option::None;
2925    }
2926
2927    pub fn has_velocity_y(&self) -> bool {
2928        self.velocity_y.is_some()
2929    }
2930
2931    // Param is passed by value, moved
2932    pub fn set_velocity_y(&mut self, v: f32) {
2933        self.velocity_y = ::std::option::Option::Some(v);
2934    }
2935
2936    // optional float velocity_z = 15;
2937
2938    pub fn velocity_z(&self) -> f32 {
2939        self.velocity_z.unwrap_or(0.)
2940    }
2941
2942    pub fn clear_velocity_z(&mut self) {
2943        self.velocity_z = ::std::option::Option::None;
2944    }
2945
2946    pub fn has_velocity_z(&self) -> bool {
2947        self.velocity_z.is_some()
2948    }
2949
2950    // Param is passed by value, moved
2951    pub fn set_velocity_z(&mut self, v: f32) {
2952        self.velocity_z = ::std::option::Option::Some(v);
2953    }
2954
2955    // optional int32 volume = 16;
2956
2957    pub fn volume(&self) -> i32 {
2958        self.volume.unwrap_or(0)
2959    }
2960
2961    pub fn clear_volume(&mut self) {
2962        self.volume = ::std::option::Option::None;
2963    }
2964
2965    pub fn has_volume(&self) -> bool {
2966        self.volume.is_some()
2967    }
2968
2969    // Param is passed by value, moved
2970    pub fn set_volume(&mut self, v: i32) {
2971        self.volume = ::std::option::Option::Some(v);
2972    }
2973
2974    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
2975        let mut fields = ::std::vec::Vec::with_capacity(18);
2976        let mut oneofs = ::std::vec::Vec::with_capacity(0);
2977        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2978            "id",
2979            |m: &Item| { &m.id },
2980            |m: &mut Item| { &mut m.id },
2981        ));
2982        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
2983            "pos",
2984            |m: &Item| { &m.pos },
2985            |m: &mut Item| { &mut m.pos },
2986        ));
2987        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2988            "flags1",
2989            |m: &Item| { &m.flags1 },
2990            |m: &mut Item| { &mut m.flags1 },
2991        ));
2992        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
2993            "flags2",
2994            |m: &Item| { &m.flags2 },
2995            |m: &mut Item| { &mut m.flags2 },
2996        ));
2997        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
2998            "type",
2999            |m: &Item| { &m.type_ },
3000            |m: &mut Item| { &mut m.type_ },
3001        ));
3002        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
3003            "material",
3004            |m: &Item| { &m.material },
3005            |m: &mut Item| { &mut m.material },
3006        ));
3007        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
3008            "dye",
3009            |m: &Item| { &m.dye },
3010            |m: &mut Item| { &mut m.dye },
3011        ));
3012        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3013            "stack_size",
3014            |m: &Item| { &m.stack_size },
3015            |m: &mut Item| { &mut m.stack_size },
3016        ));
3017        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3018            "subpos_x",
3019            |m: &Item| { &m.subpos_x },
3020            |m: &mut Item| { &mut m.subpos_x },
3021        ));
3022        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3023            "subpos_y",
3024            |m: &Item| { &m.subpos_y },
3025            |m: &mut Item| { &mut m.subpos_y },
3026        ));
3027        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3028            "subpos_z",
3029            |m: &Item| { &m.subpos_z },
3030            |m: &mut Item| { &mut m.subpos_z },
3031        ));
3032        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3033            "projectile",
3034            |m: &Item| { &m.projectile },
3035            |m: &mut Item| { &mut m.projectile },
3036        ));
3037        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3038            "velocity_x",
3039            |m: &Item| { &m.velocity_x },
3040            |m: &mut Item| { &mut m.velocity_x },
3041        ));
3042        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3043            "velocity_y",
3044            |m: &Item| { &m.velocity_y },
3045            |m: &mut Item| { &mut m.velocity_y },
3046        ));
3047        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3048            "velocity_z",
3049            |m: &Item| { &m.velocity_z },
3050            |m: &mut Item| { &mut m.velocity_z },
3051        ));
3052        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3053            "volume",
3054            |m: &Item| { &m.volume },
3055            |m: &mut Item| { &mut m.volume },
3056        ));
3057        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
3058            "improvements",
3059            |m: &Item| { &m.improvements },
3060            |m: &mut Item| { &mut m.improvements },
3061        ));
3062        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
3063            "image",
3064            |m: &Item| { &m.image },
3065            |m: &mut Item| { &mut m.image },
3066        ));
3067        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Item>(
3068            "Item",
3069            fields,
3070            oneofs,
3071        )
3072    }
3073}
3074
3075impl ::protobuf::Message for Item {
3076    const NAME: &'static str = "Item";
3077
3078    fn is_initialized(&self) -> bool {
3079        for v in &self.pos {
3080            if !v.is_initialized() {
3081                return false;
3082            }
3083        };
3084        for v in &self.type_ {
3085            if !v.is_initialized() {
3086                return false;
3087            }
3088        };
3089        for v in &self.material {
3090            if !v.is_initialized() {
3091                return false;
3092            }
3093        };
3094        for v in &self.dye {
3095            if !v.is_initialized() {
3096                return false;
3097            }
3098        };
3099        for v in &self.improvements {
3100            if !v.is_initialized() {
3101                return false;
3102            }
3103        };
3104        for v in &self.image {
3105            if !v.is_initialized() {
3106                return false;
3107            }
3108        };
3109        true
3110    }
3111
3112    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3113        while let Some(tag) = is.read_raw_tag_or_eof()? {
3114            match tag {
3115                8 => {
3116                    self.id = ::std::option::Option::Some(is.read_int32()?);
3117                },
3118                18 => {
3119                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
3120                },
3121                24 => {
3122                    self.flags1 = ::std::option::Option::Some(is.read_uint32()?);
3123                },
3124                32 => {
3125                    self.flags2 = ::std::option::Option::Some(is.read_uint32()?);
3126                },
3127                42 => {
3128                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.type_)?;
3129                },
3130                50 => {
3131                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
3132                },
3133                58 => {
3134                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dye)?;
3135                },
3136                64 => {
3137                    self.stack_size = ::std::option::Option::Some(is.read_int32()?);
3138                },
3139                77 => {
3140                    self.subpos_x = ::std::option::Option::Some(is.read_float()?);
3141                },
3142                85 => {
3143                    self.subpos_y = ::std::option::Option::Some(is.read_float()?);
3144                },
3145                93 => {
3146                    self.subpos_z = ::std::option::Option::Some(is.read_float()?);
3147                },
3148                96 => {
3149                    self.projectile = ::std::option::Option::Some(is.read_bool()?);
3150                },
3151                109 => {
3152                    self.velocity_x = ::std::option::Option::Some(is.read_float()?);
3153                },
3154                117 => {
3155                    self.velocity_y = ::std::option::Option::Some(is.read_float()?);
3156                },
3157                125 => {
3158                    self.velocity_z = ::std::option::Option::Some(is.read_float()?);
3159                },
3160                128 => {
3161                    self.volume = ::std::option::Option::Some(is.read_int32()?);
3162                },
3163                138 => {
3164                    self.improvements.push(is.read_message()?);
3165                },
3166                146 => {
3167                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
3168                },
3169                tag => {
3170                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3171                },
3172            };
3173        }
3174        ::std::result::Result::Ok(())
3175    }
3176
3177    // Compute sizes of nested messages
3178    #[allow(unused_variables)]
3179    fn compute_size(&self) -> u64 {
3180        let mut my_size = 0;
3181        if let Some(v) = self.id {
3182            my_size += ::protobuf::rt::int32_size(1, v);
3183        }
3184        if let Some(v) = self.pos.as_ref() {
3185            let len = v.compute_size();
3186            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3187        }
3188        if let Some(v) = self.flags1 {
3189            my_size += ::protobuf::rt::uint32_size(3, v);
3190        }
3191        if let Some(v) = self.flags2 {
3192            my_size += ::protobuf::rt::uint32_size(4, v);
3193        }
3194        if let Some(v) = self.type_.as_ref() {
3195            let len = v.compute_size();
3196            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3197        }
3198        if let Some(v) = self.material.as_ref() {
3199            let len = v.compute_size();
3200            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3201        }
3202        if let Some(v) = self.dye.as_ref() {
3203            let len = v.compute_size();
3204            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3205        }
3206        if let Some(v) = self.stack_size {
3207            my_size += ::protobuf::rt::int32_size(8, v);
3208        }
3209        if let Some(v) = self.subpos_x {
3210            my_size += 1 + 4;
3211        }
3212        if let Some(v) = self.subpos_y {
3213            my_size += 1 + 4;
3214        }
3215        if let Some(v) = self.subpos_z {
3216            my_size += 1 + 4;
3217        }
3218        if let Some(v) = self.projectile {
3219            my_size += 1 + 1;
3220        }
3221        if let Some(v) = self.velocity_x {
3222            my_size += 1 + 4;
3223        }
3224        if let Some(v) = self.velocity_y {
3225            my_size += 1 + 4;
3226        }
3227        if let Some(v) = self.velocity_z {
3228            my_size += 1 + 4;
3229        }
3230        if let Some(v) = self.volume {
3231            my_size += ::protobuf::rt::int32_size(16, v);
3232        }
3233        for value in &self.improvements {
3234            let len = value.compute_size();
3235            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3236        };
3237        if let Some(v) = self.image.as_ref() {
3238            let len = v.compute_size();
3239            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3240        }
3241        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3242        self.special_fields.cached_size().set(my_size as u32);
3243        my_size
3244    }
3245
3246    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3247        if let Some(v) = self.id {
3248            os.write_int32(1, v)?;
3249        }
3250        if let Some(v) = self.pos.as_ref() {
3251            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
3252        }
3253        if let Some(v) = self.flags1 {
3254            os.write_uint32(3, v)?;
3255        }
3256        if let Some(v) = self.flags2 {
3257            os.write_uint32(4, v)?;
3258        }
3259        if let Some(v) = self.type_.as_ref() {
3260            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
3261        }
3262        if let Some(v) = self.material.as_ref() {
3263            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
3264        }
3265        if let Some(v) = self.dye.as_ref() {
3266            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
3267        }
3268        if let Some(v) = self.stack_size {
3269            os.write_int32(8, v)?;
3270        }
3271        if let Some(v) = self.subpos_x {
3272            os.write_float(9, v)?;
3273        }
3274        if let Some(v) = self.subpos_y {
3275            os.write_float(10, v)?;
3276        }
3277        if let Some(v) = self.subpos_z {
3278            os.write_float(11, v)?;
3279        }
3280        if let Some(v) = self.projectile {
3281            os.write_bool(12, v)?;
3282        }
3283        if let Some(v) = self.velocity_x {
3284            os.write_float(13, v)?;
3285        }
3286        if let Some(v) = self.velocity_y {
3287            os.write_float(14, v)?;
3288        }
3289        if let Some(v) = self.velocity_z {
3290            os.write_float(15, v)?;
3291        }
3292        if let Some(v) = self.volume {
3293            os.write_int32(16, v)?;
3294        }
3295        for v in &self.improvements {
3296            ::protobuf::rt::write_message_field_with_cached_size(17, v, os)?;
3297        };
3298        if let Some(v) = self.image.as_ref() {
3299            ::protobuf::rt::write_message_field_with_cached_size(18, v, os)?;
3300        }
3301        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3302        ::std::result::Result::Ok(())
3303    }
3304
3305    fn special_fields(&self) -> &::protobuf::SpecialFields {
3306        &self.special_fields
3307    }
3308
3309    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3310        &mut self.special_fields
3311    }
3312
3313    fn new() -> Item {
3314        Item::new()
3315    }
3316
3317    fn clear(&mut self) {
3318        self.id = ::std::option::Option::None;
3319        self.pos.clear();
3320        self.flags1 = ::std::option::Option::None;
3321        self.flags2 = ::std::option::Option::None;
3322        self.type_.clear();
3323        self.material.clear();
3324        self.dye.clear();
3325        self.stack_size = ::std::option::Option::None;
3326        self.subpos_x = ::std::option::Option::None;
3327        self.subpos_y = ::std::option::Option::None;
3328        self.subpos_z = ::std::option::Option::None;
3329        self.projectile = ::std::option::Option::None;
3330        self.velocity_x = ::std::option::Option::None;
3331        self.velocity_y = ::std::option::Option::None;
3332        self.velocity_z = ::std::option::Option::None;
3333        self.volume = ::std::option::Option::None;
3334        self.improvements.clear();
3335        self.image.clear();
3336        self.special_fields.clear();
3337    }
3338
3339    fn default_instance() -> &'static Item {
3340        static instance: Item = Item {
3341            id: ::std::option::Option::None,
3342            pos: ::protobuf::MessageField::none(),
3343            flags1: ::std::option::Option::None,
3344            flags2: ::std::option::Option::None,
3345            type_: ::protobuf::MessageField::none(),
3346            material: ::protobuf::MessageField::none(),
3347            dye: ::protobuf::MessageField::none(),
3348            stack_size: ::std::option::Option::None,
3349            subpos_x: ::std::option::Option::None,
3350            subpos_y: ::std::option::Option::None,
3351            subpos_z: ::std::option::Option::None,
3352            projectile: ::std::option::Option::None,
3353            velocity_x: ::std::option::Option::None,
3354            velocity_y: ::std::option::Option::None,
3355            velocity_z: ::std::option::Option::None,
3356            volume: ::std::option::Option::None,
3357            improvements: ::std::vec::Vec::new(),
3358            image: ::protobuf::MessageField::none(),
3359            special_fields: ::protobuf::SpecialFields::new(),
3360        };
3361        &instance
3362    }
3363}
3364
3365impl ::protobuf::MessageFull for Item {
3366    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3367        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3368        descriptor.get(|| file_descriptor().message_by_package_relative_name("Item").unwrap()).clone()
3369    }
3370}
3371
3372impl ::std::fmt::Display for Item {
3373    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3374        ::protobuf::text_format::fmt(self, f)
3375    }
3376}
3377
3378impl ::protobuf::reflect::ProtobufValue for Item {
3379    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3380}
3381
3382// @@protoc_insertion_point(message:RemoteFortressReader.PlantTile)
3383#[derive(PartialEq,Clone,Default,Debug)]
3384pub struct PlantTile {
3385    // message fields
3386    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.trunk)
3387    pub trunk: ::std::option::Option<bool>,
3388    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_east)
3389    pub connection_east: ::std::option::Option<bool>,
3390    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_south)
3391    pub connection_south: ::std::option::Option<bool>,
3392    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_west)
3393    pub connection_west: ::std::option::Option<bool>,
3394    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.connection_north)
3395    pub connection_north: ::std::option::Option<bool>,
3396    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.branches)
3397    pub branches: ::std::option::Option<bool>,
3398    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.twigs)
3399    pub twigs: ::std::option::Option<bool>,
3400    // @@protoc_insertion_point(field:RemoteFortressReader.PlantTile.tile_type)
3401    pub tile_type: ::std::option::Option<::protobuf::EnumOrUnknown<TiletypeSpecial>>,
3402    // special fields
3403    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantTile.special_fields)
3404    pub special_fields: ::protobuf::SpecialFields,
3405}
3406
3407impl<'a> ::std::default::Default for &'a PlantTile {
3408    fn default() -> &'a PlantTile {
3409        <PlantTile as ::protobuf::Message>::default_instance()
3410    }
3411}
3412
3413impl PlantTile {
3414    pub fn new() -> PlantTile {
3415        ::std::default::Default::default()
3416    }
3417
3418    // optional bool trunk = 1;
3419
3420    pub fn trunk(&self) -> bool {
3421        self.trunk.unwrap_or(false)
3422    }
3423
3424    pub fn clear_trunk(&mut self) {
3425        self.trunk = ::std::option::Option::None;
3426    }
3427
3428    pub fn has_trunk(&self) -> bool {
3429        self.trunk.is_some()
3430    }
3431
3432    // Param is passed by value, moved
3433    pub fn set_trunk(&mut self, v: bool) {
3434        self.trunk = ::std::option::Option::Some(v);
3435    }
3436
3437    // optional bool connection_east = 2;
3438
3439    pub fn connection_east(&self) -> bool {
3440        self.connection_east.unwrap_or(false)
3441    }
3442
3443    pub fn clear_connection_east(&mut self) {
3444        self.connection_east = ::std::option::Option::None;
3445    }
3446
3447    pub fn has_connection_east(&self) -> bool {
3448        self.connection_east.is_some()
3449    }
3450
3451    // Param is passed by value, moved
3452    pub fn set_connection_east(&mut self, v: bool) {
3453        self.connection_east = ::std::option::Option::Some(v);
3454    }
3455
3456    // optional bool connection_south = 3;
3457
3458    pub fn connection_south(&self) -> bool {
3459        self.connection_south.unwrap_or(false)
3460    }
3461
3462    pub fn clear_connection_south(&mut self) {
3463        self.connection_south = ::std::option::Option::None;
3464    }
3465
3466    pub fn has_connection_south(&self) -> bool {
3467        self.connection_south.is_some()
3468    }
3469
3470    // Param is passed by value, moved
3471    pub fn set_connection_south(&mut self, v: bool) {
3472        self.connection_south = ::std::option::Option::Some(v);
3473    }
3474
3475    // optional bool connection_west = 4;
3476
3477    pub fn connection_west(&self) -> bool {
3478        self.connection_west.unwrap_or(false)
3479    }
3480
3481    pub fn clear_connection_west(&mut self) {
3482        self.connection_west = ::std::option::Option::None;
3483    }
3484
3485    pub fn has_connection_west(&self) -> bool {
3486        self.connection_west.is_some()
3487    }
3488
3489    // Param is passed by value, moved
3490    pub fn set_connection_west(&mut self, v: bool) {
3491        self.connection_west = ::std::option::Option::Some(v);
3492    }
3493
3494    // optional bool connection_north = 5;
3495
3496    pub fn connection_north(&self) -> bool {
3497        self.connection_north.unwrap_or(false)
3498    }
3499
3500    pub fn clear_connection_north(&mut self) {
3501        self.connection_north = ::std::option::Option::None;
3502    }
3503
3504    pub fn has_connection_north(&self) -> bool {
3505        self.connection_north.is_some()
3506    }
3507
3508    // Param is passed by value, moved
3509    pub fn set_connection_north(&mut self, v: bool) {
3510        self.connection_north = ::std::option::Option::Some(v);
3511    }
3512
3513    // optional bool branches = 6;
3514
3515    pub fn branches(&self) -> bool {
3516        self.branches.unwrap_or(false)
3517    }
3518
3519    pub fn clear_branches(&mut self) {
3520        self.branches = ::std::option::Option::None;
3521    }
3522
3523    pub fn has_branches(&self) -> bool {
3524        self.branches.is_some()
3525    }
3526
3527    // Param is passed by value, moved
3528    pub fn set_branches(&mut self, v: bool) {
3529        self.branches = ::std::option::Option::Some(v);
3530    }
3531
3532    // optional bool twigs = 7;
3533
3534    pub fn twigs(&self) -> bool {
3535        self.twigs.unwrap_or(false)
3536    }
3537
3538    pub fn clear_twigs(&mut self) {
3539        self.twigs = ::std::option::Option::None;
3540    }
3541
3542    pub fn has_twigs(&self) -> bool {
3543        self.twigs.is_some()
3544    }
3545
3546    // Param is passed by value, moved
3547    pub fn set_twigs(&mut self, v: bool) {
3548        self.twigs = ::std::option::Option::Some(v);
3549    }
3550
3551    // optional .RemoteFortressReader.TiletypeSpecial tile_type = 8;
3552
3553    pub fn tile_type(&self) -> TiletypeSpecial {
3554        match self.tile_type {
3555            Some(e) => e.enum_value_or(TiletypeSpecial::NO_SPECIAL),
3556            None => TiletypeSpecial::NO_SPECIAL,
3557        }
3558    }
3559
3560    pub fn clear_tile_type(&mut self) {
3561        self.tile_type = ::std::option::Option::None;
3562    }
3563
3564    pub fn has_tile_type(&self) -> bool {
3565        self.tile_type.is_some()
3566    }
3567
3568    // Param is passed by value, moved
3569    pub fn set_tile_type(&mut self, v: TiletypeSpecial) {
3570        self.tile_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
3571    }
3572
3573    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3574        let mut fields = ::std::vec::Vec::with_capacity(8);
3575        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3576        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3577            "trunk",
3578            |m: &PlantTile| { &m.trunk },
3579            |m: &mut PlantTile| { &mut m.trunk },
3580        ));
3581        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3582            "connection_east",
3583            |m: &PlantTile| { &m.connection_east },
3584            |m: &mut PlantTile| { &mut m.connection_east },
3585        ));
3586        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3587            "connection_south",
3588            |m: &PlantTile| { &m.connection_south },
3589            |m: &mut PlantTile| { &mut m.connection_south },
3590        ));
3591        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3592            "connection_west",
3593            |m: &PlantTile| { &m.connection_west },
3594            |m: &mut PlantTile| { &mut m.connection_west },
3595        ));
3596        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3597            "connection_north",
3598            |m: &PlantTile| { &m.connection_north },
3599            |m: &mut PlantTile| { &mut m.connection_north },
3600        ));
3601        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3602            "branches",
3603            |m: &PlantTile| { &m.branches },
3604            |m: &mut PlantTile| { &mut m.branches },
3605        ));
3606        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3607            "twigs",
3608            |m: &PlantTile| { &m.twigs },
3609            |m: &mut PlantTile| { &mut m.twigs },
3610        ));
3611        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3612            "tile_type",
3613            |m: &PlantTile| { &m.tile_type },
3614            |m: &mut PlantTile| { &mut m.tile_type },
3615        ));
3616        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantTile>(
3617            "PlantTile",
3618            fields,
3619            oneofs,
3620        )
3621    }
3622}
3623
3624impl ::protobuf::Message for PlantTile {
3625    const NAME: &'static str = "PlantTile";
3626
3627    fn is_initialized(&self) -> bool {
3628        true
3629    }
3630
3631    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3632        while let Some(tag) = is.read_raw_tag_or_eof()? {
3633            match tag {
3634                8 => {
3635                    self.trunk = ::std::option::Option::Some(is.read_bool()?);
3636                },
3637                16 => {
3638                    self.connection_east = ::std::option::Option::Some(is.read_bool()?);
3639                },
3640                24 => {
3641                    self.connection_south = ::std::option::Option::Some(is.read_bool()?);
3642                },
3643                32 => {
3644                    self.connection_west = ::std::option::Option::Some(is.read_bool()?);
3645                },
3646                40 => {
3647                    self.connection_north = ::std::option::Option::Some(is.read_bool()?);
3648                },
3649                48 => {
3650                    self.branches = ::std::option::Option::Some(is.read_bool()?);
3651                },
3652                56 => {
3653                    self.twigs = ::std::option::Option::Some(is.read_bool()?);
3654                },
3655                64 => {
3656                    self.tile_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
3657                },
3658                tag => {
3659                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3660                },
3661            };
3662        }
3663        ::std::result::Result::Ok(())
3664    }
3665
3666    // Compute sizes of nested messages
3667    #[allow(unused_variables)]
3668    fn compute_size(&self) -> u64 {
3669        let mut my_size = 0;
3670        if let Some(v) = self.trunk {
3671            my_size += 1 + 1;
3672        }
3673        if let Some(v) = self.connection_east {
3674            my_size += 1 + 1;
3675        }
3676        if let Some(v) = self.connection_south {
3677            my_size += 1 + 1;
3678        }
3679        if let Some(v) = self.connection_west {
3680            my_size += 1 + 1;
3681        }
3682        if let Some(v) = self.connection_north {
3683            my_size += 1 + 1;
3684        }
3685        if let Some(v) = self.branches {
3686            my_size += 1 + 1;
3687        }
3688        if let Some(v) = self.twigs {
3689            my_size += 1 + 1;
3690        }
3691        if let Some(v) = self.tile_type {
3692            my_size += ::protobuf::rt::int32_size(8, v.value());
3693        }
3694        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3695        self.special_fields.cached_size().set(my_size as u32);
3696        my_size
3697    }
3698
3699    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3700        if let Some(v) = self.trunk {
3701            os.write_bool(1, v)?;
3702        }
3703        if let Some(v) = self.connection_east {
3704            os.write_bool(2, v)?;
3705        }
3706        if let Some(v) = self.connection_south {
3707            os.write_bool(3, v)?;
3708        }
3709        if let Some(v) = self.connection_west {
3710            os.write_bool(4, v)?;
3711        }
3712        if let Some(v) = self.connection_north {
3713            os.write_bool(5, v)?;
3714        }
3715        if let Some(v) = self.branches {
3716            os.write_bool(6, v)?;
3717        }
3718        if let Some(v) = self.twigs {
3719            os.write_bool(7, v)?;
3720        }
3721        if let Some(v) = self.tile_type {
3722            os.write_enum(8, ::protobuf::EnumOrUnknown::value(&v))?;
3723        }
3724        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3725        ::std::result::Result::Ok(())
3726    }
3727
3728    fn special_fields(&self) -> &::protobuf::SpecialFields {
3729        &self.special_fields
3730    }
3731
3732    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3733        &mut self.special_fields
3734    }
3735
3736    fn new() -> PlantTile {
3737        PlantTile::new()
3738    }
3739
3740    fn clear(&mut self) {
3741        self.trunk = ::std::option::Option::None;
3742        self.connection_east = ::std::option::Option::None;
3743        self.connection_south = ::std::option::Option::None;
3744        self.connection_west = ::std::option::Option::None;
3745        self.connection_north = ::std::option::Option::None;
3746        self.branches = ::std::option::Option::None;
3747        self.twigs = ::std::option::Option::None;
3748        self.tile_type = ::std::option::Option::None;
3749        self.special_fields.clear();
3750    }
3751
3752    fn default_instance() -> &'static PlantTile {
3753        static instance: PlantTile = PlantTile {
3754            trunk: ::std::option::Option::None,
3755            connection_east: ::std::option::Option::None,
3756            connection_south: ::std::option::Option::None,
3757            connection_west: ::std::option::Option::None,
3758            connection_north: ::std::option::Option::None,
3759            branches: ::std::option::Option::None,
3760            twigs: ::std::option::Option::None,
3761            tile_type: ::std::option::Option::None,
3762            special_fields: ::protobuf::SpecialFields::new(),
3763        };
3764        &instance
3765    }
3766}
3767
3768impl ::protobuf::MessageFull for PlantTile {
3769    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3770        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3771        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantTile").unwrap()).clone()
3772    }
3773}
3774
3775impl ::std::fmt::Display for PlantTile {
3776    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3777        ::protobuf::text_format::fmt(self, f)
3778    }
3779}
3780
3781impl ::protobuf::reflect::ProtobufValue for PlantTile {
3782    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3783}
3784
3785// @@protoc_insertion_point(message:RemoteFortressReader.TreeInfo)
3786#[derive(PartialEq,Clone,Default,Debug)]
3787pub struct TreeInfo {
3788    // message fields
3789    // @@protoc_insertion_point(field:RemoteFortressReader.TreeInfo.size)
3790    pub size: ::protobuf::MessageField<Coord>,
3791    // @@protoc_insertion_point(field:RemoteFortressReader.TreeInfo.tiles)
3792    pub tiles: ::std::vec::Vec<PlantTile>,
3793    // special fields
3794    // @@protoc_insertion_point(special_field:RemoteFortressReader.TreeInfo.special_fields)
3795    pub special_fields: ::protobuf::SpecialFields,
3796}
3797
3798impl<'a> ::std::default::Default for &'a TreeInfo {
3799    fn default() -> &'a TreeInfo {
3800        <TreeInfo as ::protobuf::Message>::default_instance()
3801    }
3802}
3803
3804impl TreeInfo {
3805    pub fn new() -> TreeInfo {
3806        ::std::default::Default::default()
3807    }
3808
3809    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3810        let mut fields = ::std::vec::Vec::with_capacity(2);
3811        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3812        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
3813            "size",
3814            |m: &TreeInfo| { &m.size },
3815            |m: &mut TreeInfo| { &mut m.size },
3816        ));
3817        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
3818            "tiles",
3819            |m: &TreeInfo| { &m.tiles },
3820            |m: &mut TreeInfo| { &mut m.tiles },
3821        ));
3822        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TreeInfo>(
3823            "TreeInfo",
3824            fields,
3825            oneofs,
3826        )
3827    }
3828}
3829
3830impl ::protobuf::Message for TreeInfo {
3831    const NAME: &'static str = "TreeInfo";
3832
3833    fn is_initialized(&self) -> bool {
3834        true
3835    }
3836
3837    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
3838        while let Some(tag) = is.read_raw_tag_or_eof()? {
3839            match tag {
3840                10 => {
3841                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.size)?;
3842                },
3843                18 => {
3844                    self.tiles.push(is.read_message()?);
3845                },
3846                tag => {
3847                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
3848                },
3849            };
3850        }
3851        ::std::result::Result::Ok(())
3852    }
3853
3854    // Compute sizes of nested messages
3855    #[allow(unused_variables)]
3856    fn compute_size(&self) -> u64 {
3857        let mut my_size = 0;
3858        if let Some(v) = self.size.as_ref() {
3859            let len = v.compute_size();
3860            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3861        }
3862        for value in &self.tiles {
3863            let len = value.compute_size();
3864            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
3865        };
3866        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
3867        self.special_fields.cached_size().set(my_size as u32);
3868        my_size
3869    }
3870
3871    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
3872        if let Some(v) = self.size.as_ref() {
3873            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
3874        }
3875        for v in &self.tiles {
3876            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
3877        };
3878        os.write_unknown_fields(self.special_fields.unknown_fields())?;
3879        ::std::result::Result::Ok(())
3880    }
3881
3882    fn special_fields(&self) -> &::protobuf::SpecialFields {
3883        &self.special_fields
3884    }
3885
3886    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
3887        &mut self.special_fields
3888    }
3889
3890    fn new() -> TreeInfo {
3891        TreeInfo::new()
3892    }
3893
3894    fn clear(&mut self) {
3895        self.size.clear();
3896        self.tiles.clear();
3897        self.special_fields.clear();
3898    }
3899
3900    fn default_instance() -> &'static TreeInfo {
3901        static instance: TreeInfo = TreeInfo {
3902            size: ::protobuf::MessageField::none(),
3903            tiles: ::std::vec::Vec::new(),
3904            special_fields: ::protobuf::SpecialFields::new(),
3905        };
3906        &instance
3907    }
3908}
3909
3910impl ::protobuf::MessageFull for TreeInfo {
3911    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
3912        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
3913        descriptor.get(|| file_descriptor().message_by_package_relative_name("TreeInfo").unwrap()).clone()
3914    }
3915}
3916
3917impl ::std::fmt::Display for TreeInfo {
3918    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3919        ::protobuf::text_format::fmt(self, f)
3920    }
3921}
3922
3923impl ::protobuf::reflect::ProtobufValue for TreeInfo {
3924    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
3925}
3926
3927// @@protoc_insertion_point(message:RemoteFortressReader.PlantInstance)
3928#[derive(PartialEq,Clone,Default,Debug)]
3929pub struct PlantInstance {
3930    // message fields
3931    // @@protoc_insertion_point(field:RemoteFortressReader.PlantInstance.plant_type)
3932    pub plant_type: ::std::option::Option<i32>,
3933    // @@protoc_insertion_point(field:RemoteFortressReader.PlantInstance.pos)
3934    pub pos: ::protobuf::MessageField<Coord>,
3935    // @@protoc_insertion_point(field:RemoteFortressReader.PlantInstance.tree_info)
3936    pub tree_info: ::protobuf::MessageField<TreeInfo>,
3937    // special fields
3938    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantInstance.special_fields)
3939    pub special_fields: ::protobuf::SpecialFields,
3940}
3941
3942impl<'a> ::std::default::Default for &'a PlantInstance {
3943    fn default() -> &'a PlantInstance {
3944        <PlantInstance as ::protobuf::Message>::default_instance()
3945    }
3946}
3947
3948impl PlantInstance {
3949    pub fn new() -> PlantInstance {
3950        ::std::default::Default::default()
3951    }
3952
3953    // optional int32 plant_type = 1;
3954
3955    pub fn plant_type(&self) -> i32 {
3956        self.plant_type.unwrap_or(0)
3957    }
3958
3959    pub fn clear_plant_type(&mut self) {
3960        self.plant_type = ::std::option::Option::None;
3961    }
3962
3963    pub fn has_plant_type(&self) -> bool {
3964        self.plant_type.is_some()
3965    }
3966
3967    // Param is passed by value, moved
3968    pub fn set_plant_type(&mut self, v: i32) {
3969        self.plant_type = ::std::option::Option::Some(v);
3970    }
3971
3972    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
3973        let mut fields = ::std::vec::Vec::with_capacity(3);
3974        let mut oneofs = ::std::vec::Vec::with_capacity(0);
3975        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
3976            "plant_type",
3977            |m: &PlantInstance| { &m.plant_type },
3978            |m: &mut PlantInstance| { &mut m.plant_type },
3979        ));
3980        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
3981            "pos",
3982            |m: &PlantInstance| { &m.pos },
3983            |m: &mut PlantInstance| { &mut m.pos },
3984        ));
3985        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, TreeInfo>(
3986            "tree_info",
3987            |m: &PlantInstance| { &m.tree_info },
3988            |m: &mut PlantInstance| { &mut m.tree_info },
3989        ));
3990        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantInstance>(
3991            "PlantInstance",
3992            fields,
3993            oneofs,
3994        )
3995    }
3996}
3997
3998impl ::protobuf::Message for PlantInstance {
3999    const NAME: &'static str = "PlantInstance";
4000
4001    fn is_initialized(&self) -> bool {
4002        true
4003    }
4004
4005    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
4006        while let Some(tag) = is.read_raw_tag_or_eof()? {
4007            match tag {
4008                8 => {
4009                    self.plant_type = ::std::option::Option::Some(is.read_int32()?);
4010                },
4011                18 => {
4012                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
4013                },
4014                26 => {
4015                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.tree_info)?;
4016                },
4017                tag => {
4018                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
4019                },
4020            };
4021        }
4022        ::std::result::Result::Ok(())
4023    }
4024
4025    // Compute sizes of nested messages
4026    #[allow(unused_variables)]
4027    fn compute_size(&self) -> u64 {
4028        let mut my_size = 0;
4029        if let Some(v) = self.plant_type {
4030            my_size += ::protobuf::rt::int32_size(1, v);
4031        }
4032        if let Some(v) = self.pos.as_ref() {
4033            let len = v.compute_size();
4034            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4035        }
4036        if let Some(v) = self.tree_info.as_ref() {
4037            let len = v.compute_size();
4038            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4039        }
4040        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
4041        self.special_fields.cached_size().set(my_size as u32);
4042        my_size
4043    }
4044
4045    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
4046        if let Some(v) = self.plant_type {
4047            os.write_int32(1, v)?;
4048        }
4049        if let Some(v) = self.pos.as_ref() {
4050            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
4051        }
4052        if let Some(v) = self.tree_info.as_ref() {
4053            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
4054        }
4055        os.write_unknown_fields(self.special_fields.unknown_fields())?;
4056        ::std::result::Result::Ok(())
4057    }
4058
4059    fn special_fields(&self) -> &::protobuf::SpecialFields {
4060        &self.special_fields
4061    }
4062
4063    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
4064        &mut self.special_fields
4065    }
4066
4067    fn new() -> PlantInstance {
4068        PlantInstance::new()
4069    }
4070
4071    fn clear(&mut self) {
4072        self.plant_type = ::std::option::Option::None;
4073        self.pos.clear();
4074        self.tree_info.clear();
4075        self.special_fields.clear();
4076    }
4077
4078    fn default_instance() -> &'static PlantInstance {
4079        static instance: PlantInstance = PlantInstance {
4080            plant_type: ::std::option::Option::None,
4081            pos: ::protobuf::MessageField::none(),
4082            tree_info: ::protobuf::MessageField::none(),
4083            special_fields: ::protobuf::SpecialFields::new(),
4084        };
4085        &instance
4086    }
4087}
4088
4089impl ::protobuf::MessageFull for PlantInstance {
4090    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
4091        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
4092        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantInstance").unwrap()).clone()
4093    }
4094}
4095
4096impl ::std::fmt::Display for PlantInstance {
4097    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4098        ::protobuf::text_format::fmt(self, f)
4099    }
4100}
4101
4102impl ::protobuf::reflect::ProtobufValue for PlantInstance {
4103    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
4104}
4105
4106// @@protoc_insertion_point(message:RemoteFortressReader.MapBlock)
4107#[derive(PartialEq,Clone,Default,Debug)]
4108pub struct MapBlock {
4109    // message fields
4110    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.map_x)
4111    pub map_x: ::std::option::Option<i32>,
4112    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.map_y)
4113    pub map_y: ::std::option::Option<i32>,
4114    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.map_z)
4115    pub map_z: ::std::option::Option<i32>,
4116    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tiles)
4117    pub tiles: ::std::vec::Vec<i32>,
4118    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.materials)
4119    pub materials: ::std::vec::Vec<MatPair>,
4120    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.layer_materials)
4121    pub layer_materials: ::std::vec::Vec<MatPair>,
4122    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.vein_materials)
4123    pub vein_materials: ::std::vec::Vec<MatPair>,
4124    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.base_materials)
4125    pub base_materials: ::std::vec::Vec<MatPair>,
4126    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.magma)
4127    pub magma: ::std::vec::Vec<i32>,
4128    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.water)
4129    pub water: ::std::vec::Vec<i32>,
4130    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.hidden)
4131    pub hidden: ::std::vec::Vec<bool>,
4132    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.light)
4133    pub light: ::std::vec::Vec<bool>,
4134    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.subterranean)
4135    pub subterranean: ::std::vec::Vec<bool>,
4136    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.outside)
4137    pub outside: ::std::vec::Vec<bool>,
4138    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.aquifer)
4139    pub aquifer: ::std::vec::Vec<bool>,
4140    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.water_stagnant)
4141    pub water_stagnant: ::std::vec::Vec<bool>,
4142    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.water_salt)
4143    pub water_salt: ::std::vec::Vec<bool>,
4144    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.construction_items)
4145    pub construction_items: ::std::vec::Vec<MatPair>,
4146    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.buildings)
4147    pub buildings: ::std::vec::Vec<BuildingInstance>,
4148    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_percent)
4149    pub tree_percent: ::std::vec::Vec<i32>,
4150    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_x)
4151    pub tree_x: ::std::vec::Vec<i32>,
4152    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_y)
4153    pub tree_y: ::std::vec::Vec<i32>,
4154    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tree_z)
4155    pub tree_z: ::std::vec::Vec<i32>,
4156    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tile_dig_designation)
4157    pub tile_dig_designation: ::std::vec::Vec<::protobuf::EnumOrUnknown<TileDigDesignation>>,
4158    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.spatterPile)
4159    pub spatterPile: ::std::vec::Vec<SpatterPile>,
4160    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.items)
4161    pub items: ::std::vec::Vec<Item>,
4162    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tile_dig_designation_marker)
4163    pub tile_dig_designation_marker: ::std::vec::Vec<bool>,
4164    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.tile_dig_designation_auto)
4165    pub tile_dig_designation_auto: ::std::vec::Vec<bool>,
4166    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.grass_percent)
4167    pub grass_percent: ::std::vec::Vec<i32>,
4168    // @@protoc_insertion_point(field:RemoteFortressReader.MapBlock.flows)
4169    pub flows: ::std::vec::Vec<FlowInfo>,
4170    // special fields
4171    // @@protoc_insertion_point(special_field:RemoteFortressReader.MapBlock.special_fields)
4172    pub special_fields: ::protobuf::SpecialFields,
4173}
4174
4175impl<'a> ::std::default::Default for &'a MapBlock {
4176    fn default() -> &'a MapBlock {
4177        <MapBlock as ::protobuf::Message>::default_instance()
4178    }
4179}
4180
4181impl MapBlock {
4182    pub fn new() -> MapBlock {
4183        ::std::default::Default::default()
4184    }
4185
4186    // required int32 map_x = 1;
4187
4188    pub fn map_x(&self) -> i32 {
4189        self.map_x.unwrap_or(0)
4190    }
4191
4192    pub fn clear_map_x(&mut self) {
4193        self.map_x = ::std::option::Option::None;
4194    }
4195
4196    pub fn has_map_x(&self) -> bool {
4197        self.map_x.is_some()
4198    }
4199
4200    // Param is passed by value, moved
4201    pub fn set_map_x(&mut self, v: i32) {
4202        self.map_x = ::std::option::Option::Some(v);
4203    }
4204
4205    // required int32 map_y = 2;
4206
4207    pub fn map_y(&self) -> i32 {
4208        self.map_y.unwrap_or(0)
4209    }
4210
4211    pub fn clear_map_y(&mut self) {
4212        self.map_y = ::std::option::Option::None;
4213    }
4214
4215    pub fn has_map_y(&self) -> bool {
4216        self.map_y.is_some()
4217    }
4218
4219    // Param is passed by value, moved
4220    pub fn set_map_y(&mut self, v: i32) {
4221        self.map_y = ::std::option::Option::Some(v);
4222    }
4223
4224    // required int32 map_z = 3;
4225
4226    pub fn map_z(&self) -> i32 {
4227        self.map_z.unwrap_or(0)
4228    }
4229
4230    pub fn clear_map_z(&mut self) {
4231        self.map_z = ::std::option::Option::None;
4232    }
4233
4234    pub fn has_map_z(&self) -> bool {
4235        self.map_z.is_some()
4236    }
4237
4238    // Param is passed by value, moved
4239    pub fn set_map_z(&mut self, v: i32) {
4240        self.map_z = ::std::option::Option::Some(v);
4241    }
4242
4243    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
4244        let mut fields = ::std::vec::Vec::with_capacity(30);
4245        let mut oneofs = ::std::vec::Vec::with_capacity(0);
4246        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4247            "map_x",
4248            |m: &MapBlock| { &m.map_x },
4249            |m: &mut MapBlock| { &mut m.map_x },
4250        ));
4251        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4252            "map_y",
4253            |m: &MapBlock| { &m.map_y },
4254            |m: &mut MapBlock| { &mut m.map_y },
4255        ));
4256        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4257            "map_z",
4258            |m: &MapBlock| { &m.map_z },
4259            |m: &mut MapBlock| { &mut m.map_z },
4260        ));
4261        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4262            "tiles",
4263            |m: &MapBlock| { &m.tiles },
4264            |m: &mut MapBlock| { &mut m.tiles },
4265        ));
4266        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4267            "materials",
4268            |m: &MapBlock| { &m.materials },
4269            |m: &mut MapBlock| { &mut m.materials },
4270        ));
4271        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4272            "layer_materials",
4273            |m: &MapBlock| { &m.layer_materials },
4274            |m: &mut MapBlock| { &mut m.layer_materials },
4275        ));
4276        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4277            "vein_materials",
4278            |m: &MapBlock| { &m.vein_materials },
4279            |m: &mut MapBlock| { &mut m.vein_materials },
4280        ));
4281        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4282            "base_materials",
4283            |m: &MapBlock| { &m.base_materials },
4284            |m: &mut MapBlock| { &mut m.base_materials },
4285        ));
4286        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4287            "magma",
4288            |m: &MapBlock| { &m.magma },
4289            |m: &mut MapBlock| { &mut m.magma },
4290        ));
4291        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4292            "water",
4293            |m: &MapBlock| { &m.water },
4294            |m: &mut MapBlock| { &mut m.water },
4295        ));
4296        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4297            "hidden",
4298            |m: &MapBlock| { &m.hidden },
4299            |m: &mut MapBlock| { &mut m.hidden },
4300        ));
4301        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4302            "light",
4303            |m: &MapBlock| { &m.light },
4304            |m: &mut MapBlock| { &mut m.light },
4305        ));
4306        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4307            "subterranean",
4308            |m: &MapBlock| { &m.subterranean },
4309            |m: &mut MapBlock| { &mut m.subterranean },
4310        ));
4311        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4312            "outside",
4313            |m: &MapBlock| { &m.outside },
4314            |m: &mut MapBlock| { &mut m.outside },
4315        ));
4316        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4317            "aquifer",
4318            |m: &MapBlock| { &m.aquifer },
4319            |m: &mut MapBlock| { &mut m.aquifer },
4320        ));
4321        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4322            "water_stagnant",
4323            |m: &MapBlock| { &m.water_stagnant },
4324            |m: &mut MapBlock| { &mut m.water_stagnant },
4325        ));
4326        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4327            "water_salt",
4328            |m: &MapBlock| { &m.water_salt },
4329            |m: &mut MapBlock| { &mut m.water_salt },
4330        ));
4331        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4332            "construction_items",
4333            |m: &MapBlock| { &m.construction_items },
4334            |m: &mut MapBlock| { &mut m.construction_items },
4335        ));
4336        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4337            "buildings",
4338            |m: &MapBlock| { &m.buildings },
4339            |m: &mut MapBlock| { &mut m.buildings },
4340        ));
4341        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4342            "tree_percent",
4343            |m: &MapBlock| { &m.tree_percent },
4344            |m: &mut MapBlock| { &mut m.tree_percent },
4345        ));
4346        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4347            "tree_x",
4348            |m: &MapBlock| { &m.tree_x },
4349            |m: &mut MapBlock| { &mut m.tree_x },
4350        ));
4351        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4352            "tree_y",
4353            |m: &MapBlock| { &m.tree_y },
4354            |m: &mut MapBlock| { &mut m.tree_y },
4355        ));
4356        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4357            "tree_z",
4358            |m: &MapBlock| { &m.tree_z },
4359            |m: &mut MapBlock| { &mut m.tree_z },
4360        ));
4361        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4362            "tile_dig_designation",
4363            |m: &MapBlock| { &m.tile_dig_designation },
4364            |m: &mut MapBlock| { &mut m.tile_dig_designation },
4365        ));
4366        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4367            "spatterPile",
4368            |m: &MapBlock| { &m.spatterPile },
4369            |m: &mut MapBlock| { &mut m.spatterPile },
4370        ));
4371        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4372            "items",
4373            |m: &MapBlock| { &m.items },
4374            |m: &mut MapBlock| { &mut m.items },
4375        ));
4376        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4377            "tile_dig_designation_marker",
4378            |m: &MapBlock| { &m.tile_dig_designation_marker },
4379            |m: &mut MapBlock| { &mut m.tile_dig_designation_marker },
4380        ));
4381        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4382            "tile_dig_designation_auto",
4383            |m: &MapBlock| { &m.tile_dig_designation_auto },
4384            |m: &mut MapBlock| { &mut m.tile_dig_designation_auto },
4385        ));
4386        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4387            "grass_percent",
4388            |m: &MapBlock| { &m.grass_percent },
4389            |m: &mut MapBlock| { &mut m.grass_percent },
4390        ));
4391        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
4392            "flows",
4393            |m: &MapBlock| { &m.flows },
4394            |m: &mut MapBlock| { &mut m.flows },
4395        ));
4396        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MapBlock>(
4397            "MapBlock",
4398            fields,
4399            oneofs,
4400        )
4401    }
4402}
4403
4404impl ::protobuf::Message for MapBlock {
4405    const NAME: &'static str = "MapBlock";
4406
4407    fn is_initialized(&self) -> bool {
4408        if self.map_x.is_none() {
4409            return false;
4410        }
4411        if self.map_y.is_none() {
4412            return false;
4413        }
4414        if self.map_z.is_none() {
4415            return false;
4416        }
4417        for v in &self.materials {
4418            if !v.is_initialized() {
4419                return false;
4420            }
4421        };
4422        for v in &self.layer_materials {
4423            if !v.is_initialized() {
4424                return false;
4425            }
4426        };
4427        for v in &self.vein_materials {
4428            if !v.is_initialized() {
4429                return false;
4430            }
4431        };
4432        for v in &self.base_materials {
4433            if !v.is_initialized() {
4434                return false;
4435            }
4436        };
4437        for v in &self.construction_items {
4438            if !v.is_initialized() {
4439                return false;
4440            }
4441        };
4442        for v in &self.buildings {
4443            if !v.is_initialized() {
4444                return false;
4445            }
4446        };
4447        for v in &self.spatterPile {
4448            if !v.is_initialized() {
4449                return false;
4450            }
4451        };
4452        for v in &self.items {
4453            if !v.is_initialized() {
4454                return false;
4455            }
4456        };
4457        for v in &self.flows {
4458            if !v.is_initialized() {
4459                return false;
4460            }
4461        };
4462        true
4463    }
4464
4465    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
4466        while let Some(tag) = is.read_raw_tag_or_eof()? {
4467            match tag {
4468                8 => {
4469                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
4470                },
4471                16 => {
4472                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
4473                },
4474                24 => {
4475                    self.map_z = ::std::option::Option::Some(is.read_int32()?);
4476                },
4477                34 => {
4478                    is.read_repeated_packed_int32_into(&mut self.tiles)?;
4479                },
4480                32 => {
4481                    self.tiles.push(is.read_int32()?);
4482                },
4483                42 => {
4484                    self.materials.push(is.read_message()?);
4485                },
4486                50 => {
4487                    self.layer_materials.push(is.read_message()?);
4488                },
4489                58 => {
4490                    self.vein_materials.push(is.read_message()?);
4491                },
4492                66 => {
4493                    self.base_materials.push(is.read_message()?);
4494                },
4495                74 => {
4496                    is.read_repeated_packed_int32_into(&mut self.magma)?;
4497                },
4498                72 => {
4499                    self.magma.push(is.read_int32()?);
4500                },
4501                82 => {
4502                    is.read_repeated_packed_int32_into(&mut self.water)?;
4503                },
4504                80 => {
4505                    self.water.push(is.read_int32()?);
4506                },
4507                90 => {
4508                    is.read_repeated_packed_bool_into(&mut self.hidden)?;
4509                },
4510                88 => {
4511                    self.hidden.push(is.read_bool()?);
4512                },
4513                98 => {
4514                    is.read_repeated_packed_bool_into(&mut self.light)?;
4515                },
4516                96 => {
4517                    self.light.push(is.read_bool()?);
4518                },
4519                106 => {
4520                    is.read_repeated_packed_bool_into(&mut self.subterranean)?;
4521                },
4522                104 => {
4523                    self.subterranean.push(is.read_bool()?);
4524                },
4525                114 => {
4526                    is.read_repeated_packed_bool_into(&mut self.outside)?;
4527                },
4528                112 => {
4529                    self.outside.push(is.read_bool()?);
4530                },
4531                122 => {
4532                    is.read_repeated_packed_bool_into(&mut self.aquifer)?;
4533                },
4534                120 => {
4535                    self.aquifer.push(is.read_bool()?);
4536                },
4537                130 => {
4538                    is.read_repeated_packed_bool_into(&mut self.water_stagnant)?;
4539                },
4540                128 => {
4541                    self.water_stagnant.push(is.read_bool()?);
4542                },
4543                138 => {
4544                    is.read_repeated_packed_bool_into(&mut self.water_salt)?;
4545                },
4546                136 => {
4547                    self.water_salt.push(is.read_bool()?);
4548                },
4549                146 => {
4550                    self.construction_items.push(is.read_message()?);
4551                },
4552                154 => {
4553                    self.buildings.push(is.read_message()?);
4554                },
4555                162 => {
4556                    is.read_repeated_packed_int32_into(&mut self.tree_percent)?;
4557                },
4558                160 => {
4559                    self.tree_percent.push(is.read_int32()?);
4560                },
4561                170 => {
4562                    is.read_repeated_packed_int32_into(&mut self.tree_x)?;
4563                },
4564                168 => {
4565                    self.tree_x.push(is.read_int32()?);
4566                },
4567                178 => {
4568                    is.read_repeated_packed_int32_into(&mut self.tree_y)?;
4569                },
4570                176 => {
4571                    self.tree_y.push(is.read_int32()?);
4572                },
4573                186 => {
4574                    is.read_repeated_packed_int32_into(&mut self.tree_z)?;
4575                },
4576                184 => {
4577                    self.tree_z.push(is.read_int32()?);
4578                },
4579                192 => {
4580                    self.tile_dig_designation.push(is.read_enum_or_unknown()?);
4581                },
4582                194 => {
4583                    ::protobuf::rt::read_repeated_packed_enum_or_unknown_into(is, &mut self.tile_dig_designation)?
4584                },
4585                202 => {
4586                    self.spatterPile.push(is.read_message()?);
4587                },
4588                210 => {
4589                    self.items.push(is.read_message()?);
4590                },
4591                218 => {
4592                    is.read_repeated_packed_bool_into(&mut self.tile_dig_designation_marker)?;
4593                },
4594                216 => {
4595                    self.tile_dig_designation_marker.push(is.read_bool()?);
4596                },
4597                226 => {
4598                    is.read_repeated_packed_bool_into(&mut self.tile_dig_designation_auto)?;
4599                },
4600                224 => {
4601                    self.tile_dig_designation_auto.push(is.read_bool()?);
4602                },
4603                234 => {
4604                    is.read_repeated_packed_int32_into(&mut self.grass_percent)?;
4605                },
4606                232 => {
4607                    self.grass_percent.push(is.read_int32()?);
4608                },
4609                242 => {
4610                    self.flows.push(is.read_message()?);
4611                },
4612                tag => {
4613                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
4614                },
4615            };
4616        }
4617        ::std::result::Result::Ok(())
4618    }
4619
4620    // Compute sizes of nested messages
4621    #[allow(unused_variables)]
4622    fn compute_size(&self) -> u64 {
4623        let mut my_size = 0;
4624        if let Some(v) = self.map_x {
4625            my_size += ::protobuf::rt::int32_size(1, v);
4626        }
4627        if let Some(v) = self.map_y {
4628            my_size += ::protobuf::rt::int32_size(2, v);
4629        }
4630        if let Some(v) = self.map_z {
4631            my_size += ::protobuf::rt::int32_size(3, v);
4632        }
4633        for value in &self.tiles {
4634            my_size += ::protobuf::rt::int32_size(4, *value);
4635        };
4636        for value in &self.materials {
4637            let len = value.compute_size();
4638            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4639        };
4640        for value in &self.layer_materials {
4641            let len = value.compute_size();
4642            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4643        };
4644        for value in &self.vein_materials {
4645            let len = value.compute_size();
4646            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4647        };
4648        for value in &self.base_materials {
4649            let len = value.compute_size();
4650            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4651        };
4652        for value in &self.magma {
4653            my_size += ::protobuf::rt::int32_size(9, *value);
4654        };
4655        for value in &self.water {
4656            my_size += ::protobuf::rt::int32_size(10, *value);
4657        };
4658        my_size += 2 * self.hidden.len() as u64;
4659        my_size += 2 * self.light.len() as u64;
4660        my_size += 2 * self.subterranean.len() as u64;
4661        my_size += 2 * self.outside.len() as u64;
4662        my_size += 2 * self.aquifer.len() as u64;
4663        my_size += 3 * self.water_stagnant.len() as u64;
4664        my_size += 3 * self.water_salt.len() as u64;
4665        for value in &self.construction_items {
4666            let len = value.compute_size();
4667            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4668        };
4669        for value in &self.buildings {
4670            let len = value.compute_size();
4671            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4672        };
4673        for value in &self.tree_percent {
4674            my_size += ::protobuf::rt::int32_size(20, *value);
4675        };
4676        for value in &self.tree_x {
4677            my_size += ::protobuf::rt::int32_size(21, *value);
4678        };
4679        for value in &self.tree_y {
4680            my_size += ::protobuf::rt::int32_size(22, *value);
4681        };
4682        for value in &self.tree_z {
4683            my_size += ::protobuf::rt::int32_size(23, *value);
4684        };
4685        for value in &self.tile_dig_designation {
4686            my_size += ::protobuf::rt::int32_size(24, value.value());
4687        };
4688        for value in &self.spatterPile {
4689            let len = value.compute_size();
4690            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4691        };
4692        for value in &self.items {
4693            let len = value.compute_size();
4694            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4695        };
4696        my_size += 3 * self.tile_dig_designation_marker.len() as u64;
4697        my_size += 3 * self.tile_dig_designation_auto.len() as u64;
4698        for value in &self.grass_percent {
4699            my_size += ::protobuf::rt::int32_size(29, *value);
4700        };
4701        for value in &self.flows {
4702            let len = value.compute_size();
4703            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
4704        };
4705        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
4706        self.special_fields.cached_size().set(my_size as u32);
4707        my_size
4708    }
4709
4710    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
4711        if let Some(v) = self.map_x {
4712            os.write_int32(1, v)?;
4713        }
4714        if let Some(v) = self.map_y {
4715            os.write_int32(2, v)?;
4716        }
4717        if let Some(v) = self.map_z {
4718            os.write_int32(3, v)?;
4719        }
4720        for v in &self.tiles {
4721            os.write_int32(4, *v)?;
4722        };
4723        for v in &self.materials {
4724            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
4725        };
4726        for v in &self.layer_materials {
4727            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
4728        };
4729        for v in &self.vein_materials {
4730            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
4731        };
4732        for v in &self.base_materials {
4733            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
4734        };
4735        for v in &self.magma {
4736            os.write_int32(9, *v)?;
4737        };
4738        for v in &self.water {
4739            os.write_int32(10, *v)?;
4740        };
4741        for v in &self.hidden {
4742            os.write_bool(11, *v)?;
4743        };
4744        for v in &self.light {
4745            os.write_bool(12, *v)?;
4746        };
4747        for v in &self.subterranean {
4748            os.write_bool(13, *v)?;
4749        };
4750        for v in &self.outside {
4751            os.write_bool(14, *v)?;
4752        };
4753        for v in &self.aquifer {
4754            os.write_bool(15, *v)?;
4755        };
4756        for v in &self.water_stagnant {
4757            os.write_bool(16, *v)?;
4758        };
4759        for v in &self.water_salt {
4760            os.write_bool(17, *v)?;
4761        };
4762        for v in &self.construction_items {
4763            ::protobuf::rt::write_message_field_with_cached_size(18, v, os)?;
4764        };
4765        for v in &self.buildings {
4766            ::protobuf::rt::write_message_field_with_cached_size(19, v, os)?;
4767        };
4768        for v in &self.tree_percent {
4769            os.write_int32(20, *v)?;
4770        };
4771        for v in &self.tree_x {
4772            os.write_int32(21, *v)?;
4773        };
4774        for v in &self.tree_y {
4775            os.write_int32(22, *v)?;
4776        };
4777        for v in &self.tree_z {
4778            os.write_int32(23, *v)?;
4779        };
4780        for v in &self.tile_dig_designation {
4781            os.write_enum(24, ::protobuf::EnumOrUnknown::value(v))?;
4782        };
4783        for v in &self.spatterPile {
4784            ::protobuf::rt::write_message_field_with_cached_size(25, v, os)?;
4785        };
4786        for v in &self.items {
4787            ::protobuf::rt::write_message_field_with_cached_size(26, v, os)?;
4788        };
4789        for v in &self.tile_dig_designation_marker {
4790            os.write_bool(27, *v)?;
4791        };
4792        for v in &self.tile_dig_designation_auto {
4793            os.write_bool(28, *v)?;
4794        };
4795        for v in &self.grass_percent {
4796            os.write_int32(29, *v)?;
4797        };
4798        for v in &self.flows {
4799            ::protobuf::rt::write_message_field_with_cached_size(30, v, os)?;
4800        };
4801        os.write_unknown_fields(self.special_fields.unknown_fields())?;
4802        ::std::result::Result::Ok(())
4803    }
4804
4805    fn special_fields(&self) -> &::protobuf::SpecialFields {
4806        &self.special_fields
4807    }
4808
4809    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
4810        &mut self.special_fields
4811    }
4812
4813    fn new() -> MapBlock {
4814        MapBlock::new()
4815    }
4816
4817    fn clear(&mut self) {
4818        self.map_x = ::std::option::Option::None;
4819        self.map_y = ::std::option::Option::None;
4820        self.map_z = ::std::option::Option::None;
4821        self.tiles.clear();
4822        self.materials.clear();
4823        self.layer_materials.clear();
4824        self.vein_materials.clear();
4825        self.base_materials.clear();
4826        self.magma.clear();
4827        self.water.clear();
4828        self.hidden.clear();
4829        self.light.clear();
4830        self.subterranean.clear();
4831        self.outside.clear();
4832        self.aquifer.clear();
4833        self.water_stagnant.clear();
4834        self.water_salt.clear();
4835        self.construction_items.clear();
4836        self.buildings.clear();
4837        self.tree_percent.clear();
4838        self.tree_x.clear();
4839        self.tree_y.clear();
4840        self.tree_z.clear();
4841        self.tile_dig_designation.clear();
4842        self.spatterPile.clear();
4843        self.items.clear();
4844        self.tile_dig_designation_marker.clear();
4845        self.tile_dig_designation_auto.clear();
4846        self.grass_percent.clear();
4847        self.flows.clear();
4848        self.special_fields.clear();
4849    }
4850
4851    fn default_instance() -> &'static MapBlock {
4852        static instance: MapBlock = MapBlock {
4853            map_x: ::std::option::Option::None,
4854            map_y: ::std::option::Option::None,
4855            map_z: ::std::option::Option::None,
4856            tiles: ::std::vec::Vec::new(),
4857            materials: ::std::vec::Vec::new(),
4858            layer_materials: ::std::vec::Vec::new(),
4859            vein_materials: ::std::vec::Vec::new(),
4860            base_materials: ::std::vec::Vec::new(),
4861            magma: ::std::vec::Vec::new(),
4862            water: ::std::vec::Vec::new(),
4863            hidden: ::std::vec::Vec::new(),
4864            light: ::std::vec::Vec::new(),
4865            subterranean: ::std::vec::Vec::new(),
4866            outside: ::std::vec::Vec::new(),
4867            aquifer: ::std::vec::Vec::new(),
4868            water_stagnant: ::std::vec::Vec::new(),
4869            water_salt: ::std::vec::Vec::new(),
4870            construction_items: ::std::vec::Vec::new(),
4871            buildings: ::std::vec::Vec::new(),
4872            tree_percent: ::std::vec::Vec::new(),
4873            tree_x: ::std::vec::Vec::new(),
4874            tree_y: ::std::vec::Vec::new(),
4875            tree_z: ::std::vec::Vec::new(),
4876            tile_dig_designation: ::std::vec::Vec::new(),
4877            spatterPile: ::std::vec::Vec::new(),
4878            items: ::std::vec::Vec::new(),
4879            tile_dig_designation_marker: ::std::vec::Vec::new(),
4880            tile_dig_designation_auto: ::std::vec::Vec::new(),
4881            grass_percent: ::std::vec::Vec::new(),
4882            flows: ::std::vec::Vec::new(),
4883            special_fields: ::protobuf::SpecialFields::new(),
4884        };
4885        &instance
4886    }
4887}
4888
4889impl ::protobuf::MessageFull for MapBlock {
4890    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
4891        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
4892        descriptor.get(|| file_descriptor().message_by_package_relative_name("MapBlock").unwrap()).clone()
4893    }
4894}
4895
4896impl ::std::fmt::Display for MapBlock {
4897    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4898        ::protobuf::text_format::fmt(self, f)
4899    }
4900}
4901
4902impl ::protobuf::reflect::ProtobufValue for MapBlock {
4903    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
4904}
4905
4906#[derive(Hash, Eq)]
4907// @@protoc_insertion_point(message:RemoteFortressReader.MatPair)
4908#[derive(PartialEq,Clone,Default,Debug)]
4909pub struct MatPair {
4910    // message fields
4911    // @@protoc_insertion_point(field:RemoteFortressReader.MatPair.mat_type)
4912    pub mat_type: ::std::option::Option<i32>,
4913    // @@protoc_insertion_point(field:RemoteFortressReader.MatPair.mat_index)
4914    pub mat_index: ::std::option::Option<i32>,
4915    // special fields
4916    // @@protoc_insertion_point(special_field:RemoteFortressReader.MatPair.special_fields)
4917    pub special_fields: ::protobuf::SpecialFields,
4918}
4919
4920impl<'a> ::std::default::Default for &'a MatPair {
4921    fn default() -> &'a MatPair {
4922        <MatPair as ::protobuf::Message>::default_instance()
4923    }
4924}
4925
4926impl MatPair {
4927    pub fn new() -> MatPair {
4928        ::std::default::Default::default()
4929    }
4930
4931    // required int32 mat_type = 1;
4932
4933    pub fn mat_type(&self) -> i32 {
4934        self.mat_type.unwrap_or(0)
4935    }
4936
4937    pub fn clear_mat_type(&mut self) {
4938        self.mat_type = ::std::option::Option::None;
4939    }
4940
4941    pub fn has_mat_type(&self) -> bool {
4942        self.mat_type.is_some()
4943    }
4944
4945    // Param is passed by value, moved
4946    pub fn set_mat_type(&mut self, v: i32) {
4947        self.mat_type = ::std::option::Option::Some(v);
4948    }
4949
4950    // required int32 mat_index = 2;
4951
4952    pub fn mat_index(&self) -> i32 {
4953        self.mat_index.unwrap_or(0)
4954    }
4955
4956    pub fn clear_mat_index(&mut self) {
4957        self.mat_index = ::std::option::Option::None;
4958    }
4959
4960    pub fn has_mat_index(&self) -> bool {
4961        self.mat_index.is_some()
4962    }
4963
4964    // Param is passed by value, moved
4965    pub fn set_mat_index(&mut self, v: i32) {
4966        self.mat_index = ::std::option::Option::Some(v);
4967    }
4968
4969    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
4970        let mut fields = ::std::vec::Vec::with_capacity(2);
4971        let mut oneofs = ::std::vec::Vec::with_capacity(0);
4972        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4973            "mat_type",
4974            |m: &MatPair| { &m.mat_type },
4975            |m: &mut MatPair| { &mut m.mat_type },
4976        ));
4977        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
4978            "mat_index",
4979            |m: &MatPair| { &m.mat_index },
4980            |m: &mut MatPair| { &mut m.mat_index },
4981        ));
4982        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MatPair>(
4983            "MatPair",
4984            fields,
4985            oneofs,
4986        )
4987    }
4988}
4989
4990impl ::protobuf::Message for MatPair {
4991    const NAME: &'static str = "MatPair";
4992
4993    fn is_initialized(&self) -> bool {
4994        if self.mat_type.is_none() {
4995            return false;
4996        }
4997        if self.mat_index.is_none() {
4998            return false;
4999        }
5000        true
5001    }
5002
5003    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5004        while let Some(tag) = is.read_raw_tag_or_eof()? {
5005            match tag {
5006                8 => {
5007                    self.mat_type = ::std::option::Option::Some(is.read_int32()?);
5008                },
5009                16 => {
5010                    self.mat_index = ::std::option::Option::Some(is.read_int32()?);
5011                },
5012                tag => {
5013                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5014                },
5015            };
5016        }
5017        ::std::result::Result::Ok(())
5018    }
5019
5020    // Compute sizes of nested messages
5021    #[allow(unused_variables)]
5022    fn compute_size(&self) -> u64 {
5023        let mut my_size = 0;
5024        if let Some(v) = self.mat_type {
5025            my_size += ::protobuf::rt::int32_size(1, v);
5026        }
5027        if let Some(v) = self.mat_index {
5028            my_size += ::protobuf::rt::int32_size(2, v);
5029        }
5030        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5031        self.special_fields.cached_size().set(my_size as u32);
5032        my_size
5033    }
5034
5035    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5036        if let Some(v) = self.mat_type {
5037            os.write_int32(1, v)?;
5038        }
5039        if let Some(v) = self.mat_index {
5040            os.write_int32(2, v)?;
5041        }
5042        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5043        ::std::result::Result::Ok(())
5044    }
5045
5046    fn special_fields(&self) -> &::protobuf::SpecialFields {
5047        &self.special_fields
5048    }
5049
5050    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5051        &mut self.special_fields
5052    }
5053
5054    fn new() -> MatPair {
5055        MatPair::new()
5056    }
5057
5058    fn clear(&mut self) {
5059        self.mat_type = ::std::option::Option::None;
5060        self.mat_index = ::std::option::Option::None;
5061        self.special_fields.clear();
5062    }
5063
5064    fn default_instance() -> &'static MatPair {
5065        static instance: MatPair = MatPair {
5066            mat_type: ::std::option::Option::None,
5067            mat_index: ::std::option::Option::None,
5068            special_fields: ::protobuf::SpecialFields::new(),
5069        };
5070        &instance
5071    }
5072}
5073
5074impl ::protobuf::MessageFull for MatPair {
5075    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5076        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5077        descriptor.get(|| file_descriptor().message_by_package_relative_name("MatPair").unwrap()).clone()
5078    }
5079}
5080
5081impl ::std::fmt::Display for MatPair {
5082    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5083        ::protobuf::text_format::fmt(self, f)
5084    }
5085}
5086
5087impl ::protobuf::reflect::ProtobufValue for MatPair {
5088    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5089}
5090
5091// @@protoc_insertion_point(message:RemoteFortressReader.ColorDefinition)
5092#[derive(PartialEq,Clone,Default,Debug)]
5093pub struct ColorDefinition {
5094    // message fields
5095    // @@protoc_insertion_point(field:RemoteFortressReader.ColorDefinition.red)
5096    pub red: ::std::option::Option<i32>,
5097    // @@protoc_insertion_point(field:RemoteFortressReader.ColorDefinition.green)
5098    pub green: ::std::option::Option<i32>,
5099    // @@protoc_insertion_point(field:RemoteFortressReader.ColorDefinition.blue)
5100    pub blue: ::std::option::Option<i32>,
5101    // special fields
5102    // @@protoc_insertion_point(special_field:RemoteFortressReader.ColorDefinition.special_fields)
5103    pub special_fields: ::protobuf::SpecialFields,
5104}
5105
5106impl<'a> ::std::default::Default for &'a ColorDefinition {
5107    fn default() -> &'a ColorDefinition {
5108        <ColorDefinition as ::protobuf::Message>::default_instance()
5109    }
5110}
5111
5112impl ColorDefinition {
5113    pub fn new() -> ColorDefinition {
5114        ::std::default::Default::default()
5115    }
5116
5117    // required int32 red = 1;
5118
5119    pub fn red(&self) -> i32 {
5120        self.red.unwrap_or(0)
5121    }
5122
5123    pub fn clear_red(&mut self) {
5124        self.red = ::std::option::Option::None;
5125    }
5126
5127    pub fn has_red(&self) -> bool {
5128        self.red.is_some()
5129    }
5130
5131    // Param is passed by value, moved
5132    pub fn set_red(&mut self, v: i32) {
5133        self.red = ::std::option::Option::Some(v);
5134    }
5135
5136    // required int32 green = 2;
5137
5138    pub fn green(&self) -> i32 {
5139        self.green.unwrap_or(0)
5140    }
5141
5142    pub fn clear_green(&mut self) {
5143        self.green = ::std::option::Option::None;
5144    }
5145
5146    pub fn has_green(&self) -> bool {
5147        self.green.is_some()
5148    }
5149
5150    // Param is passed by value, moved
5151    pub fn set_green(&mut self, v: i32) {
5152        self.green = ::std::option::Option::Some(v);
5153    }
5154
5155    // required int32 blue = 3;
5156
5157    pub fn blue(&self) -> i32 {
5158        self.blue.unwrap_or(0)
5159    }
5160
5161    pub fn clear_blue(&mut self) {
5162        self.blue = ::std::option::Option::None;
5163    }
5164
5165    pub fn has_blue(&self) -> bool {
5166        self.blue.is_some()
5167    }
5168
5169    // Param is passed by value, moved
5170    pub fn set_blue(&mut self, v: i32) {
5171        self.blue = ::std::option::Option::Some(v);
5172    }
5173
5174    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
5175        let mut fields = ::std::vec::Vec::with_capacity(3);
5176        let mut oneofs = ::std::vec::Vec::with_capacity(0);
5177        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5178            "red",
5179            |m: &ColorDefinition| { &m.red },
5180            |m: &mut ColorDefinition| { &mut m.red },
5181        ));
5182        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5183            "green",
5184            |m: &ColorDefinition| { &m.green },
5185            |m: &mut ColorDefinition| { &mut m.green },
5186        ));
5187        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5188            "blue",
5189            |m: &ColorDefinition| { &m.blue },
5190            |m: &mut ColorDefinition| { &mut m.blue },
5191        ));
5192        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ColorDefinition>(
5193            "ColorDefinition",
5194            fields,
5195            oneofs,
5196        )
5197    }
5198}
5199
5200impl ::protobuf::Message for ColorDefinition {
5201    const NAME: &'static str = "ColorDefinition";
5202
5203    fn is_initialized(&self) -> bool {
5204        if self.red.is_none() {
5205            return false;
5206        }
5207        if self.green.is_none() {
5208            return false;
5209        }
5210        if self.blue.is_none() {
5211            return false;
5212        }
5213        true
5214    }
5215
5216    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5217        while let Some(tag) = is.read_raw_tag_or_eof()? {
5218            match tag {
5219                8 => {
5220                    self.red = ::std::option::Option::Some(is.read_int32()?);
5221                },
5222                16 => {
5223                    self.green = ::std::option::Option::Some(is.read_int32()?);
5224                },
5225                24 => {
5226                    self.blue = ::std::option::Option::Some(is.read_int32()?);
5227                },
5228                tag => {
5229                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5230                },
5231            };
5232        }
5233        ::std::result::Result::Ok(())
5234    }
5235
5236    // Compute sizes of nested messages
5237    #[allow(unused_variables)]
5238    fn compute_size(&self) -> u64 {
5239        let mut my_size = 0;
5240        if let Some(v) = self.red {
5241            my_size += ::protobuf::rt::int32_size(1, v);
5242        }
5243        if let Some(v) = self.green {
5244            my_size += ::protobuf::rt::int32_size(2, v);
5245        }
5246        if let Some(v) = self.blue {
5247            my_size += ::protobuf::rt::int32_size(3, v);
5248        }
5249        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5250        self.special_fields.cached_size().set(my_size as u32);
5251        my_size
5252    }
5253
5254    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5255        if let Some(v) = self.red {
5256            os.write_int32(1, v)?;
5257        }
5258        if let Some(v) = self.green {
5259            os.write_int32(2, v)?;
5260        }
5261        if let Some(v) = self.blue {
5262            os.write_int32(3, v)?;
5263        }
5264        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5265        ::std::result::Result::Ok(())
5266    }
5267
5268    fn special_fields(&self) -> &::protobuf::SpecialFields {
5269        &self.special_fields
5270    }
5271
5272    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5273        &mut self.special_fields
5274    }
5275
5276    fn new() -> ColorDefinition {
5277        ColorDefinition::new()
5278    }
5279
5280    fn clear(&mut self) {
5281        self.red = ::std::option::Option::None;
5282        self.green = ::std::option::Option::None;
5283        self.blue = ::std::option::Option::None;
5284        self.special_fields.clear();
5285    }
5286
5287    fn default_instance() -> &'static ColorDefinition {
5288        static instance: ColorDefinition = ColorDefinition {
5289            red: ::std::option::Option::None,
5290            green: ::std::option::Option::None,
5291            blue: ::std::option::Option::None,
5292            special_fields: ::protobuf::SpecialFields::new(),
5293        };
5294        &instance
5295    }
5296}
5297
5298impl ::protobuf::MessageFull for ColorDefinition {
5299    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5300        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5301        descriptor.get(|| file_descriptor().message_by_package_relative_name("ColorDefinition").unwrap()).clone()
5302    }
5303}
5304
5305impl ::std::fmt::Display for ColorDefinition {
5306    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5307        ::protobuf::text_format::fmt(self, f)
5308    }
5309}
5310
5311impl ::protobuf::reflect::ProtobufValue for ColorDefinition {
5312    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5313}
5314
5315// @@protoc_insertion_point(message:RemoteFortressReader.MaterialDefinition)
5316#[derive(PartialEq,Clone,Default,Debug)]
5317pub struct MaterialDefinition {
5318    // message fields
5319    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.mat_pair)
5320    pub mat_pair: ::protobuf::MessageField<MatPair>,
5321    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.id)
5322    pub id: ::std::option::Option<::std::string::String>,
5323    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.name)
5324    pub name: ::std::option::Option<::std::vec::Vec<u8>>,
5325    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.state_color)
5326    pub state_color: ::protobuf::MessageField<ColorDefinition>,
5327    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.instrument)
5328    pub instrument: ::protobuf::MessageField<super::ItemdefInstrument::InstrumentDef>,
5329    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.up_step)
5330    pub up_step: ::std::option::Option<i32>,
5331    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.down_step)
5332    pub down_step: ::std::option::Option<i32>,
5333    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialDefinition.layer)
5334    pub layer: ::std::option::Option<::protobuf::EnumOrUnknown<ArmorLayer>>,
5335    // special fields
5336    // @@protoc_insertion_point(special_field:RemoteFortressReader.MaterialDefinition.special_fields)
5337    pub special_fields: ::protobuf::SpecialFields,
5338}
5339
5340impl<'a> ::std::default::Default for &'a MaterialDefinition {
5341    fn default() -> &'a MaterialDefinition {
5342        <MaterialDefinition as ::protobuf::Message>::default_instance()
5343    }
5344}
5345
5346impl MaterialDefinition {
5347    pub fn new() -> MaterialDefinition {
5348        ::std::default::Default::default()
5349    }
5350
5351    // optional string id = 2;
5352
5353    pub fn id(&self) -> &str {
5354        match self.id.as_ref() {
5355            Some(v) => v,
5356            None => "",
5357        }
5358    }
5359
5360    pub fn clear_id(&mut self) {
5361        self.id = ::std::option::Option::None;
5362    }
5363
5364    pub fn has_id(&self) -> bool {
5365        self.id.is_some()
5366    }
5367
5368    // Param is passed by value, moved
5369    pub fn set_id(&mut self, v: ::std::string::String) {
5370        self.id = ::std::option::Option::Some(v);
5371    }
5372
5373    // Mutable pointer to the field.
5374    // If field is not initialized, it is initialized with default value first.
5375    pub fn mut_id(&mut self) -> &mut ::std::string::String {
5376        if self.id.is_none() {
5377            self.id = ::std::option::Option::Some(::std::string::String::new());
5378        }
5379        self.id.as_mut().unwrap()
5380    }
5381
5382    // Take field
5383    pub fn take_id(&mut self) -> ::std::string::String {
5384        self.id.take().unwrap_or_else(|| ::std::string::String::new())
5385    }
5386
5387    // optional bytes name = 3;
5388
5389    pub fn name(&self) -> &[u8] {
5390        match self.name.as_ref() {
5391            Some(v) => v,
5392            None => &[],
5393        }
5394    }
5395
5396    pub fn clear_name(&mut self) {
5397        self.name = ::std::option::Option::None;
5398    }
5399
5400    pub fn has_name(&self) -> bool {
5401        self.name.is_some()
5402    }
5403
5404    // Param is passed by value, moved
5405    pub fn set_name(&mut self, v: ::std::vec::Vec<u8>) {
5406        self.name = ::std::option::Option::Some(v);
5407    }
5408
5409    // Mutable pointer to the field.
5410    // If field is not initialized, it is initialized with default value first.
5411    pub fn mut_name(&mut self) -> &mut ::std::vec::Vec<u8> {
5412        if self.name.is_none() {
5413            self.name = ::std::option::Option::Some(::std::vec::Vec::new());
5414        }
5415        self.name.as_mut().unwrap()
5416    }
5417
5418    // Take field
5419    pub fn take_name(&mut self) -> ::std::vec::Vec<u8> {
5420        self.name.take().unwrap_or_else(|| ::std::vec::Vec::new())
5421    }
5422
5423    // optional int32 up_step = 6;
5424
5425    pub fn up_step(&self) -> i32 {
5426        self.up_step.unwrap_or(0)
5427    }
5428
5429    pub fn clear_up_step(&mut self) {
5430        self.up_step = ::std::option::Option::None;
5431    }
5432
5433    pub fn has_up_step(&self) -> bool {
5434        self.up_step.is_some()
5435    }
5436
5437    // Param is passed by value, moved
5438    pub fn set_up_step(&mut self, v: i32) {
5439        self.up_step = ::std::option::Option::Some(v);
5440    }
5441
5442    // optional int32 down_step = 7;
5443
5444    pub fn down_step(&self) -> i32 {
5445        self.down_step.unwrap_or(0)
5446    }
5447
5448    pub fn clear_down_step(&mut self) {
5449        self.down_step = ::std::option::Option::None;
5450    }
5451
5452    pub fn has_down_step(&self) -> bool {
5453        self.down_step.is_some()
5454    }
5455
5456    // Param is passed by value, moved
5457    pub fn set_down_step(&mut self, v: i32) {
5458        self.down_step = ::std::option::Option::Some(v);
5459    }
5460
5461    // optional .RemoteFortressReader.ArmorLayer layer = 8;
5462
5463    pub fn layer(&self) -> ArmorLayer {
5464        match self.layer {
5465            Some(e) => e.enum_value_or(ArmorLayer::LAYER_UNDER),
5466            None => ArmorLayer::LAYER_UNDER,
5467        }
5468    }
5469
5470    pub fn clear_layer(&mut self) {
5471        self.layer = ::std::option::Option::None;
5472    }
5473
5474    pub fn has_layer(&self) -> bool {
5475        self.layer.is_some()
5476    }
5477
5478    // Param is passed by value, moved
5479    pub fn set_layer(&mut self, v: ArmorLayer) {
5480        self.layer = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
5481    }
5482
5483    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
5484        let mut fields = ::std::vec::Vec::with_capacity(8);
5485        let mut oneofs = ::std::vec::Vec::with_capacity(0);
5486        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
5487            "mat_pair",
5488            |m: &MaterialDefinition| { &m.mat_pair },
5489            |m: &mut MaterialDefinition| { &mut m.mat_pair },
5490        ));
5491        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5492            "id",
5493            |m: &MaterialDefinition| { &m.id },
5494            |m: &mut MaterialDefinition| { &mut m.id },
5495        ));
5496        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5497            "name",
5498            |m: &MaterialDefinition| { &m.name },
5499            |m: &mut MaterialDefinition| { &mut m.name },
5500        ));
5501        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
5502            "state_color",
5503            |m: &MaterialDefinition| { &m.state_color },
5504            |m: &mut MaterialDefinition| { &mut m.state_color },
5505        ));
5506        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::ItemdefInstrument::InstrumentDef>(
5507            "instrument",
5508            |m: &MaterialDefinition| { &m.instrument },
5509            |m: &mut MaterialDefinition| { &mut m.instrument },
5510        ));
5511        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5512            "up_step",
5513            |m: &MaterialDefinition| { &m.up_step },
5514            |m: &mut MaterialDefinition| { &mut m.up_step },
5515        ));
5516        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5517            "down_step",
5518            |m: &MaterialDefinition| { &m.down_step },
5519            |m: &mut MaterialDefinition| { &mut m.down_step },
5520        ));
5521        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5522            "layer",
5523            |m: &MaterialDefinition| { &m.layer },
5524            |m: &mut MaterialDefinition| { &mut m.layer },
5525        ));
5526        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MaterialDefinition>(
5527            "MaterialDefinition",
5528            fields,
5529            oneofs,
5530        )
5531    }
5532}
5533
5534impl ::protobuf::Message for MaterialDefinition {
5535    const NAME: &'static str = "MaterialDefinition";
5536
5537    fn is_initialized(&self) -> bool {
5538        if self.mat_pair.is_none() {
5539            return false;
5540        }
5541        for v in &self.mat_pair {
5542            if !v.is_initialized() {
5543                return false;
5544            }
5545        };
5546        for v in &self.state_color {
5547            if !v.is_initialized() {
5548                return false;
5549            }
5550        };
5551        for v in &self.instrument {
5552            if !v.is_initialized() {
5553                return false;
5554            }
5555        };
5556        true
5557    }
5558
5559    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5560        while let Some(tag) = is.read_raw_tag_or_eof()? {
5561            match tag {
5562                10 => {
5563                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.mat_pair)?;
5564                },
5565                18 => {
5566                    self.id = ::std::option::Option::Some(is.read_string()?);
5567                },
5568                26 => {
5569                    self.name = ::std::option::Option::Some(is.read_bytes()?);
5570                },
5571                34 => {
5572                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.state_color)?;
5573                },
5574                42 => {
5575                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.instrument)?;
5576                },
5577                48 => {
5578                    self.up_step = ::std::option::Option::Some(is.read_int32()?);
5579                },
5580                56 => {
5581                    self.down_step = ::std::option::Option::Some(is.read_int32()?);
5582                },
5583                64 => {
5584                    self.layer = ::std::option::Option::Some(is.read_enum_or_unknown()?);
5585                },
5586                tag => {
5587                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5588                },
5589            };
5590        }
5591        ::std::result::Result::Ok(())
5592    }
5593
5594    // Compute sizes of nested messages
5595    #[allow(unused_variables)]
5596    fn compute_size(&self) -> u64 {
5597        let mut my_size = 0;
5598        if let Some(v) = self.mat_pair.as_ref() {
5599            let len = v.compute_size();
5600            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
5601        }
5602        if let Some(v) = self.id.as_ref() {
5603            my_size += ::protobuf::rt::string_size(2, &v);
5604        }
5605        if let Some(v) = self.name.as_ref() {
5606            my_size += ::protobuf::rt::bytes_size(3, &v);
5607        }
5608        if let Some(v) = self.state_color.as_ref() {
5609            let len = v.compute_size();
5610            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
5611        }
5612        if let Some(v) = self.instrument.as_ref() {
5613            let len = v.compute_size();
5614            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
5615        }
5616        if let Some(v) = self.up_step {
5617            my_size += ::protobuf::rt::int32_size(6, v);
5618        }
5619        if let Some(v) = self.down_step {
5620            my_size += ::protobuf::rt::int32_size(7, v);
5621        }
5622        if let Some(v) = self.layer {
5623            my_size += ::protobuf::rt::int32_size(8, v.value());
5624        }
5625        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5626        self.special_fields.cached_size().set(my_size as u32);
5627        my_size
5628    }
5629
5630    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5631        if let Some(v) = self.mat_pair.as_ref() {
5632            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
5633        }
5634        if let Some(v) = self.id.as_ref() {
5635            os.write_string(2, v)?;
5636        }
5637        if let Some(v) = self.name.as_ref() {
5638            os.write_bytes(3, v)?;
5639        }
5640        if let Some(v) = self.state_color.as_ref() {
5641            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
5642        }
5643        if let Some(v) = self.instrument.as_ref() {
5644            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
5645        }
5646        if let Some(v) = self.up_step {
5647            os.write_int32(6, v)?;
5648        }
5649        if let Some(v) = self.down_step {
5650            os.write_int32(7, v)?;
5651        }
5652        if let Some(v) = self.layer {
5653            os.write_enum(8, ::protobuf::EnumOrUnknown::value(&v))?;
5654        }
5655        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5656        ::std::result::Result::Ok(())
5657    }
5658
5659    fn special_fields(&self) -> &::protobuf::SpecialFields {
5660        &self.special_fields
5661    }
5662
5663    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5664        &mut self.special_fields
5665    }
5666
5667    fn new() -> MaterialDefinition {
5668        MaterialDefinition::new()
5669    }
5670
5671    fn clear(&mut self) {
5672        self.mat_pair.clear();
5673        self.id = ::std::option::Option::None;
5674        self.name = ::std::option::Option::None;
5675        self.state_color.clear();
5676        self.instrument.clear();
5677        self.up_step = ::std::option::Option::None;
5678        self.down_step = ::std::option::Option::None;
5679        self.layer = ::std::option::Option::None;
5680        self.special_fields.clear();
5681    }
5682
5683    fn default_instance() -> &'static MaterialDefinition {
5684        static instance: MaterialDefinition = MaterialDefinition {
5685            mat_pair: ::protobuf::MessageField::none(),
5686            id: ::std::option::Option::None,
5687            name: ::std::option::Option::None,
5688            state_color: ::protobuf::MessageField::none(),
5689            instrument: ::protobuf::MessageField::none(),
5690            up_step: ::std::option::Option::None,
5691            down_step: ::std::option::Option::None,
5692            layer: ::std::option::Option::None,
5693            special_fields: ::protobuf::SpecialFields::new(),
5694        };
5695        &instance
5696    }
5697}
5698
5699impl ::protobuf::MessageFull for MaterialDefinition {
5700    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5701        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5702        descriptor.get(|| file_descriptor().message_by_package_relative_name("MaterialDefinition").unwrap()).clone()
5703    }
5704}
5705
5706impl ::std::fmt::Display for MaterialDefinition {
5707    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5708        ::protobuf::text_format::fmt(self, f)
5709    }
5710}
5711
5712impl ::protobuf::reflect::ProtobufValue for MaterialDefinition {
5713    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5714}
5715
5716// @@protoc_insertion_point(message:RemoteFortressReader.BuildingType)
5717#[derive(PartialEq,Clone,Default,Debug)]
5718pub struct BuildingType {
5719    // message fields
5720    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingType.building_type)
5721    pub building_type: ::std::option::Option<i32>,
5722    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingType.building_subtype)
5723    pub building_subtype: ::std::option::Option<i32>,
5724    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingType.building_custom)
5725    pub building_custom: ::std::option::Option<i32>,
5726    // special fields
5727    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingType.special_fields)
5728    pub special_fields: ::protobuf::SpecialFields,
5729}
5730
5731impl<'a> ::std::default::Default for &'a BuildingType {
5732    fn default() -> &'a BuildingType {
5733        <BuildingType as ::protobuf::Message>::default_instance()
5734    }
5735}
5736
5737impl BuildingType {
5738    pub fn new() -> BuildingType {
5739        ::std::default::Default::default()
5740    }
5741
5742    // required int32 building_type = 1;
5743
5744    pub fn building_type(&self) -> i32 {
5745        self.building_type.unwrap_or(0)
5746    }
5747
5748    pub fn clear_building_type(&mut self) {
5749        self.building_type = ::std::option::Option::None;
5750    }
5751
5752    pub fn has_building_type(&self) -> bool {
5753        self.building_type.is_some()
5754    }
5755
5756    // Param is passed by value, moved
5757    pub fn set_building_type(&mut self, v: i32) {
5758        self.building_type = ::std::option::Option::Some(v);
5759    }
5760
5761    // required int32 building_subtype = 2;
5762
5763    pub fn building_subtype(&self) -> i32 {
5764        self.building_subtype.unwrap_or(0)
5765    }
5766
5767    pub fn clear_building_subtype(&mut self) {
5768        self.building_subtype = ::std::option::Option::None;
5769    }
5770
5771    pub fn has_building_subtype(&self) -> bool {
5772        self.building_subtype.is_some()
5773    }
5774
5775    // Param is passed by value, moved
5776    pub fn set_building_subtype(&mut self, v: i32) {
5777        self.building_subtype = ::std::option::Option::Some(v);
5778    }
5779
5780    // required int32 building_custom = 3;
5781
5782    pub fn building_custom(&self) -> i32 {
5783        self.building_custom.unwrap_or(0)
5784    }
5785
5786    pub fn clear_building_custom(&mut self) {
5787        self.building_custom = ::std::option::Option::None;
5788    }
5789
5790    pub fn has_building_custom(&self) -> bool {
5791        self.building_custom.is_some()
5792    }
5793
5794    // Param is passed by value, moved
5795    pub fn set_building_custom(&mut self, v: i32) {
5796        self.building_custom = ::std::option::Option::Some(v);
5797    }
5798
5799    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
5800        let mut fields = ::std::vec::Vec::with_capacity(3);
5801        let mut oneofs = ::std::vec::Vec::with_capacity(0);
5802        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5803            "building_type",
5804            |m: &BuildingType| { &m.building_type },
5805            |m: &mut BuildingType| { &mut m.building_type },
5806        ));
5807        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5808            "building_subtype",
5809            |m: &BuildingType| { &m.building_subtype },
5810            |m: &mut BuildingType| { &mut m.building_subtype },
5811        ));
5812        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
5813            "building_custom",
5814            |m: &BuildingType| { &m.building_custom },
5815            |m: &mut BuildingType| { &mut m.building_custom },
5816        ));
5817        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingType>(
5818            "BuildingType",
5819            fields,
5820            oneofs,
5821        )
5822    }
5823}
5824
5825impl ::protobuf::Message for BuildingType {
5826    const NAME: &'static str = "BuildingType";
5827
5828    fn is_initialized(&self) -> bool {
5829        if self.building_type.is_none() {
5830            return false;
5831        }
5832        if self.building_subtype.is_none() {
5833            return false;
5834        }
5835        if self.building_custom.is_none() {
5836            return false;
5837        }
5838        true
5839    }
5840
5841    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
5842        while let Some(tag) = is.read_raw_tag_or_eof()? {
5843            match tag {
5844                8 => {
5845                    self.building_type = ::std::option::Option::Some(is.read_int32()?);
5846                },
5847                16 => {
5848                    self.building_subtype = ::std::option::Option::Some(is.read_int32()?);
5849                },
5850                24 => {
5851                    self.building_custom = ::std::option::Option::Some(is.read_int32()?);
5852                },
5853                tag => {
5854                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
5855                },
5856            };
5857        }
5858        ::std::result::Result::Ok(())
5859    }
5860
5861    // Compute sizes of nested messages
5862    #[allow(unused_variables)]
5863    fn compute_size(&self) -> u64 {
5864        let mut my_size = 0;
5865        if let Some(v) = self.building_type {
5866            my_size += ::protobuf::rt::int32_size(1, v);
5867        }
5868        if let Some(v) = self.building_subtype {
5869            my_size += ::protobuf::rt::int32_size(2, v);
5870        }
5871        if let Some(v) = self.building_custom {
5872            my_size += ::protobuf::rt::int32_size(3, v);
5873        }
5874        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
5875        self.special_fields.cached_size().set(my_size as u32);
5876        my_size
5877    }
5878
5879    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
5880        if let Some(v) = self.building_type {
5881            os.write_int32(1, v)?;
5882        }
5883        if let Some(v) = self.building_subtype {
5884            os.write_int32(2, v)?;
5885        }
5886        if let Some(v) = self.building_custom {
5887            os.write_int32(3, v)?;
5888        }
5889        os.write_unknown_fields(self.special_fields.unknown_fields())?;
5890        ::std::result::Result::Ok(())
5891    }
5892
5893    fn special_fields(&self) -> &::protobuf::SpecialFields {
5894        &self.special_fields
5895    }
5896
5897    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
5898        &mut self.special_fields
5899    }
5900
5901    fn new() -> BuildingType {
5902        BuildingType::new()
5903    }
5904
5905    fn clear(&mut self) {
5906        self.building_type = ::std::option::Option::None;
5907        self.building_subtype = ::std::option::Option::None;
5908        self.building_custom = ::std::option::Option::None;
5909        self.special_fields.clear();
5910    }
5911
5912    fn default_instance() -> &'static BuildingType {
5913        static instance: BuildingType = BuildingType {
5914            building_type: ::std::option::Option::None,
5915            building_subtype: ::std::option::Option::None,
5916            building_custom: ::std::option::Option::None,
5917            special_fields: ::protobuf::SpecialFields::new(),
5918        };
5919        &instance
5920    }
5921}
5922
5923impl ::protobuf::MessageFull for BuildingType {
5924    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
5925        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
5926        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingType").unwrap()).clone()
5927    }
5928}
5929
5930impl ::std::fmt::Display for BuildingType {
5931    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5932        ::protobuf::text_format::fmt(self, f)
5933    }
5934}
5935
5936impl ::protobuf::reflect::ProtobufValue for BuildingType {
5937    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
5938}
5939
5940// @@protoc_insertion_point(message:RemoteFortressReader.BuildingDefinition)
5941#[derive(PartialEq,Clone,Default,Debug)]
5942pub struct BuildingDefinition {
5943    // message fields
5944    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingDefinition.building_type)
5945    pub building_type: ::protobuf::MessageField<BuildingType>,
5946    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingDefinition.id)
5947    pub id: ::std::option::Option<::std::string::String>,
5948    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingDefinition.name)
5949    pub name: ::std::option::Option<::std::string::String>,
5950    // special fields
5951    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingDefinition.special_fields)
5952    pub special_fields: ::protobuf::SpecialFields,
5953}
5954
5955impl<'a> ::std::default::Default for &'a BuildingDefinition {
5956    fn default() -> &'a BuildingDefinition {
5957        <BuildingDefinition as ::protobuf::Message>::default_instance()
5958    }
5959}
5960
5961impl BuildingDefinition {
5962    pub fn new() -> BuildingDefinition {
5963        ::std::default::Default::default()
5964    }
5965
5966    // optional string id = 2;
5967
5968    pub fn id(&self) -> &str {
5969        match self.id.as_ref() {
5970            Some(v) => v,
5971            None => "",
5972        }
5973    }
5974
5975    pub fn clear_id(&mut self) {
5976        self.id = ::std::option::Option::None;
5977    }
5978
5979    pub fn has_id(&self) -> bool {
5980        self.id.is_some()
5981    }
5982
5983    // Param is passed by value, moved
5984    pub fn set_id(&mut self, v: ::std::string::String) {
5985        self.id = ::std::option::Option::Some(v);
5986    }
5987
5988    // Mutable pointer to the field.
5989    // If field is not initialized, it is initialized with default value first.
5990    pub fn mut_id(&mut self) -> &mut ::std::string::String {
5991        if self.id.is_none() {
5992            self.id = ::std::option::Option::Some(::std::string::String::new());
5993        }
5994        self.id.as_mut().unwrap()
5995    }
5996
5997    // Take field
5998    pub fn take_id(&mut self) -> ::std::string::String {
5999        self.id.take().unwrap_or_else(|| ::std::string::String::new())
6000    }
6001
6002    // optional string name = 3;
6003
6004    pub fn name(&self) -> &str {
6005        match self.name.as_ref() {
6006            Some(v) => v,
6007            None => "",
6008        }
6009    }
6010
6011    pub fn clear_name(&mut self) {
6012        self.name = ::std::option::Option::None;
6013    }
6014
6015    pub fn has_name(&self) -> bool {
6016        self.name.is_some()
6017    }
6018
6019    // Param is passed by value, moved
6020    pub fn set_name(&mut self, v: ::std::string::String) {
6021        self.name = ::std::option::Option::Some(v);
6022    }
6023
6024    // Mutable pointer to the field.
6025    // If field is not initialized, it is initialized with default value first.
6026    pub fn mut_name(&mut self) -> &mut ::std::string::String {
6027        if self.name.is_none() {
6028            self.name = ::std::option::Option::Some(::std::string::String::new());
6029        }
6030        self.name.as_mut().unwrap()
6031    }
6032
6033    // Take field
6034    pub fn take_name(&mut self) -> ::std::string::String {
6035        self.name.take().unwrap_or_else(|| ::std::string::String::new())
6036    }
6037
6038    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6039        let mut fields = ::std::vec::Vec::with_capacity(3);
6040        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6041        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BuildingType>(
6042            "building_type",
6043            |m: &BuildingDefinition| { &m.building_type },
6044            |m: &mut BuildingDefinition| { &mut m.building_type },
6045        ));
6046        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6047            "id",
6048            |m: &BuildingDefinition| { &m.id },
6049            |m: &mut BuildingDefinition| { &mut m.id },
6050        ));
6051        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6052            "name",
6053            |m: &BuildingDefinition| { &m.name },
6054            |m: &mut BuildingDefinition| { &mut m.name },
6055        ));
6056        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingDefinition>(
6057            "BuildingDefinition",
6058            fields,
6059            oneofs,
6060        )
6061    }
6062}
6063
6064impl ::protobuf::Message for BuildingDefinition {
6065    const NAME: &'static str = "BuildingDefinition";
6066
6067    fn is_initialized(&self) -> bool {
6068        if self.building_type.is_none() {
6069            return false;
6070        }
6071        for v in &self.building_type {
6072            if !v.is_initialized() {
6073                return false;
6074            }
6075        };
6076        true
6077    }
6078
6079    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6080        while let Some(tag) = is.read_raw_tag_or_eof()? {
6081            match tag {
6082                10 => {
6083                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.building_type)?;
6084                },
6085                18 => {
6086                    self.id = ::std::option::Option::Some(is.read_string()?);
6087                },
6088                26 => {
6089                    self.name = ::std::option::Option::Some(is.read_string()?);
6090                },
6091                tag => {
6092                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6093                },
6094            };
6095        }
6096        ::std::result::Result::Ok(())
6097    }
6098
6099    // Compute sizes of nested messages
6100    #[allow(unused_variables)]
6101    fn compute_size(&self) -> u64 {
6102        let mut my_size = 0;
6103        if let Some(v) = self.building_type.as_ref() {
6104            let len = v.compute_size();
6105            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
6106        }
6107        if let Some(v) = self.id.as_ref() {
6108            my_size += ::protobuf::rt::string_size(2, &v);
6109        }
6110        if let Some(v) = self.name.as_ref() {
6111            my_size += ::protobuf::rt::string_size(3, &v);
6112        }
6113        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6114        self.special_fields.cached_size().set(my_size as u32);
6115        my_size
6116    }
6117
6118    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6119        if let Some(v) = self.building_type.as_ref() {
6120            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
6121        }
6122        if let Some(v) = self.id.as_ref() {
6123            os.write_string(2, v)?;
6124        }
6125        if let Some(v) = self.name.as_ref() {
6126            os.write_string(3, v)?;
6127        }
6128        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6129        ::std::result::Result::Ok(())
6130    }
6131
6132    fn special_fields(&self) -> &::protobuf::SpecialFields {
6133        &self.special_fields
6134    }
6135
6136    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6137        &mut self.special_fields
6138    }
6139
6140    fn new() -> BuildingDefinition {
6141        BuildingDefinition::new()
6142    }
6143
6144    fn clear(&mut self) {
6145        self.building_type.clear();
6146        self.id = ::std::option::Option::None;
6147        self.name = ::std::option::Option::None;
6148        self.special_fields.clear();
6149    }
6150
6151    fn default_instance() -> &'static BuildingDefinition {
6152        static instance: BuildingDefinition = BuildingDefinition {
6153            building_type: ::protobuf::MessageField::none(),
6154            id: ::std::option::Option::None,
6155            name: ::std::option::Option::None,
6156            special_fields: ::protobuf::SpecialFields::new(),
6157        };
6158        &instance
6159    }
6160}
6161
6162impl ::protobuf::MessageFull for BuildingDefinition {
6163    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6164        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6165        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingDefinition").unwrap()).clone()
6166    }
6167}
6168
6169impl ::std::fmt::Display for BuildingDefinition {
6170    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6171        ::protobuf::text_format::fmt(self, f)
6172    }
6173}
6174
6175impl ::protobuf::reflect::ProtobufValue for BuildingDefinition {
6176    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6177}
6178
6179// @@protoc_insertion_point(message:RemoteFortressReader.BuildingList)
6180#[derive(PartialEq,Clone,Default,Debug)]
6181pub struct BuildingList {
6182    // message fields
6183    // @@protoc_insertion_point(field:RemoteFortressReader.BuildingList.building_list)
6184    pub building_list: ::std::vec::Vec<BuildingDefinition>,
6185    // special fields
6186    // @@protoc_insertion_point(special_field:RemoteFortressReader.BuildingList.special_fields)
6187    pub special_fields: ::protobuf::SpecialFields,
6188}
6189
6190impl<'a> ::std::default::Default for &'a BuildingList {
6191    fn default() -> &'a BuildingList {
6192        <BuildingList as ::protobuf::Message>::default_instance()
6193    }
6194}
6195
6196impl BuildingList {
6197    pub fn new() -> BuildingList {
6198        ::std::default::Default::default()
6199    }
6200
6201    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6202        let mut fields = ::std::vec::Vec::with_capacity(1);
6203        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6204        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
6205            "building_list",
6206            |m: &BuildingList| { &m.building_list },
6207            |m: &mut BuildingList| { &mut m.building_list },
6208        ));
6209        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BuildingList>(
6210            "BuildingList",
6211            fields,
6212            oneofs,
6213        )
6214    }
6215}
6216
6217impl ::protobuf::Message for BuildingList {
6218    const NAME: &'static str = "BuildingList";
6219
6220    fn is_initialized(&self) -> bool {
6221        for v in &self.building_list {
6222            if !v.is_initialized() {
6223                return false;
6224            }
6225        };
6226        true
6227    }
6228
6229    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6230        while let Some(tag) = is.read_raw_tag_or_eof()? {
6231            match tag {
6232                10 => {
6233                    self.building_list.push(is.read_message()?);
6234                },
6235                tag => {
6236                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6237                },
6238            };
6239        }
6240        ::std::result::Result::Ok(())
6241    }
6242
6243    // Compute sizes of nested messages
6244    #[allow(unused_variables)]
6245    fn compute_size(&self) -> u64 {
6246        let mut my_size = 0;
6247        for value in &self.building_list {
6248            let len = value.compute_size();
6249            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
6250        };
6251        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6252        self.special_fields.cached_size().set(my_size as u32);
6253        my_size
6254    }
6255
6256    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6257        for v in &self.building_list {
6258            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
6259        };
6260        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6261        ::std::result::Result::Ok(())
6262    }
6263
6264    fn special_fields(&self) -> &::protobuf::SpecialFields {
6265        &self.special_fields
6266    }
6267
6268    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6269        &mut self.special_fields
6270    }
6271
6272    fn new() -> BuildingList {
6273        BuildingList::new()
6274    }
6275
6276    fn clear(&mut self) {
6277        self.building_list.clear();
6278        self.special_fields.clear();
6279    }
6280
6281    fn default_instance() -> &'static BuildingList {
6282        static instance: BuildingList = BuildingList {
6283            building_list: ::std::vec::Vec::new(),
6284            special_fields: ::protobuf::SpecialFields::new(),
6285        };
6286        &instance
6287    }
6288}
6289
6290impl ::protobuf::MessageFull for BuildingList {
6291    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6292        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6293        descriptor.get(|| file_descriptor().message_by_package_relative_name("BuildingList").unwrap()).clone()
6294    }
6295}
6296
6297impl ::std::fmt::Display for BuildingList {
6298    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6299        ::protobuf::text_format::fmt(self, f)
6300    }
6301}
6302
6303impl ::protobuf::reflect::ProtobufValue for BuildingList {
6304    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6305}
6306
6307// @@protoc_insertion_point(message:RemoteFortressReader.MaterialList)
6308#[derive(PartialEq,Clone,Default,Debug)]
6309pub struct MaterialList {
6310    // message fields
6311    // @@protoc_insertion_point(field:RemoteFortressReader.MaterialList.material_list)
6312    pub material_list: ::std::vec::Vec<MaterialDefinition>,
6313    // special fields
6314    // @@protoc_insertion_point(special_field:RemoteFortressReader.MaterialList.special_fields)
6315    pub special_fields: ::protobuf::SpecialFields,
6316}
6317
6318impl<'a> ::std::default::Default for &'a MaterialList {
6319    fn default() -> &'a MaterialList {
6320        <MaterialList as ::protobuf::Message>::default_instance()
6321    }
6322}
6323
6324impl MaterialList {
6325    pub fn new() -> MaterialList {
6326        ::std::default::Default::default()
6327    }
6328
6329    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6330        let mut fields = ::std::vec::Vec::with_capacity(1);
6331        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6332        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
6333            "material_list",
6334            |m: &MaterialList| { &m.material_list },
6335            |m: &mut MaterialList| { &mut m.material_list },
6336        ));
6337        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MaterialList>(
6338            "MaterialList",
6339            fields,
6340            oneofs,
6341        )
6342    }
6343}
6344
6345impl ::protobuf::Message for MaterialList {
6346    const NAME: &'static str = "MaterialList";
6347
6348    fn is_initialized(&self) -> bool {
6349        for v in &self.material_list {
6350            if !v.is_initialized() {
6351                return false;
6352            }
6353        };
6354        true
6355    }
6356
6357    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6358        while let Some(tag) = is.read_raw_tag_or_eof()? {
6359            match tag {
6360                10 => {
6361                    self.material_list.push(is.read_message()?);
6362                },
6363                tag => {
6364                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6365                },
6366            };
6367        }
6368        ::std::result::Result::Ok(())
6369    }
6370
6371    // Compute sizes of nested messages
6372    #[allow(unused_variables)]
6373    fn compute_size(&self) -> u64 {
6374        let mut my_size = 0;
6375        for value in &self.material_list {
6376            let len = value.compute_size();
6377            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
6378        };
6379        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6380        self.special_fields.cached_size().set(my_size as u32);
6381        my_size
6382    }
6383
6384    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6385        for v in &self.material_list {
6386            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
6387        };
6388        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6389        ::std::result::Result::Ok(())
6390    }
6391
6392    fn special_fields(&self) -> &::protobuf::SpecialFields {
6393        &self.special_fields
6394    }
6395
6396    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6397        &mut self.special_fields
6398    }
6399
6400    fn new() -> MaterialList {
6401        MaterialList::new()
6402    }
6403
6404    fn clear(&mut self) {
6405        self.material_list.clear();
6406        self.special_fields.clear();
6407    }
6408
6409    fn default_instance() -> &'static MaterialList {
6410        static instance: MaterialList = MaterialList {
6411            material_list: ::std::vec::Vec::new(),
6412            special_fields: ::protobuf::SpecialFields::new(),
6413        };
6414        &instance
6415    }
6416}
6417
6418impl ::protobuf::MessageFull for MaterialList {
6419    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6420        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6421        descriptor.get(|| file_descriptor().message_by_package_relative_name("MaterialList").unwrap()).clone()
6422    }
6423}
6424
6425impl ::std::fmt::Display for MaterialList {
6426    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6427        ::protobuf::text_format::fmt(self, f)
6428    }
6429}
6430
6431impl ::protobuf::reflect::ProtobufValue for MaterialList {
6432    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6433}
6434
6435// @@protoc_insertion_point(message:RemoteFortressReader.Hair)
6436#[derive(PartialEq,Clone,Default,Debug)]
6437pub struct Hair {
6438    // message fields
6439    // @@protoc_insertion_point(field:RemoteFortressReader.Hair.length)
6440    pub length: ::std::option::Option<i32>,
6441    // @@protoc_insertion_point(field:RemoteFortressReader.Hair.style)
6442    pub style: ::std::option::Option<::protobuf::EnumOrUnknown<HairStyle>>,
6443    // special fields
6444    // @@protoc_insertion_point(special_field:RemoteFortressReader.Hair.special_fields)
6445    pub special_fields: ::protobuf::SpecialFields,
6446}
6447
6448impl<'a> ::std::default::Default for &'a Hair {
6449    fn default() -> &'a Hair {
6450        <Hair as ::protobuf::Message>::default_instance()
6451    }
6452}
6453
6454impl Hair {
6455    pub fn new() -> Hair {
6456        ::std::default::Default::default()
6457    }
6458
6459    // optional int32 length = 1;
6460
6461    pub fn length(&self) -> i32 {
6462        self.length.unwrap_or(0)
6463    }
6464
6465    pub fn clear_length(&mut self) {
6466        self.length = ::std::option::Option::None;
6467    }
6468
6469    pub fn has_length(&self) -> bool {
6470        self.length.is_some()
6471    }
6472
6473    // Param is passed by value, moved
6474    pub fn set_length(&mut self, v: i32) {
6475        self.length = ::std::option::Option::Some(v);
6476    }
6477
6478    // optional .RemoteFortressReader.HairStyle style = 2;
6479
6480    pub fn style(&self) -> HairStyle {
6481        match self.style {
6482            Some(e) => e.enum_value_or(HairStyle::UNKEMPT),
6483            None => HairStyle::UNKEMPT,
6484        }
6485    }
6486
6487    pub fn clear_style(&mut self) {
6488        self.style = ::std::option::Option::None;
6489    }
6490
6491    pub fn has_style(&self) -> bool {
6492        self.style.is_some()
6493    }
6494
6495    // Param is passed by value, moved
6496    pub fn set_style(&mut self, v: HairStyle) {
6497        self.style = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
6498    }
6499
6500    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6501        let mut fields = ::std::vec::Vec::with_capacity(2);
6502        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6503        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6504            "length",
6505            |m: &Hair| { &m.length },
6506            |m: &mut Hair| { &mut m.length },
6507        ));
6508        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6509            "style",
6510            |m: &Hair| { &m.style },
6511            |m: &mut Hair| { &mut m.style },
6512        ));
6513        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Hair>(
6514            "Hair",
6515            fields,
6516            oneofs,
6517        )
6518    }
6519}
6520
6521impl ::protobuf::Message for Hair {
6522    const NAME: &'static str = "Hair";
6523
6524    fn is_initialized(&self) -> bool {
6525        true
6526    }
6527
6528    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6529        while let Some(tag) = is.read_raw_tag_or_eof()? {
6530            match tag {
6531                8 => {
6532                    self.length = ::std::option::Option::Some(is.read_int32()?);
6533                },
6534                16 => {
6535                    self.style = ::std::option::Option::Some(is.read_enum_or_unknown()?);
6536                },
6537                tag => {
6538                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6539                },
6540            };
6541        }
6542        ::std::result::Result::Ok(())
6543    }
6544
6545    // Compute sizes of nested messages
6546    #[allow(unused_variables)]
6547    fn compute_size(&self) -> u64 {
6548        let mut my_size = 0;
6549        if let Some(v) = self.length {
6550            my_size += ::protobuf::rt::int32_size(1, v);
6551        }
6552        if let Some(v) = self.style {
6553            my_size += ::protobuf::rt::int32_size(2, v.value());
6554        }
6555        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6556        self.special_fields.cached_size().set(my_size as u32);
6557        my_size
6558    }
6559
6560    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6561        if let Some(v) = self.length {
6562            os.write_int32(1, v)?;
6563        }
6564        if let Some(v) = self.style {
6565            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
6566        }
6567        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6568        ::std::result::Result::Ok(())
6569    }
6570
6571    fn special_fields(&self) -> &::protobuf::SpecialFields {
6572        &self.special_fields
6573    }
6574
6575    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6576        &mut self.special_fields
6577    }
6578
6579    fn new() -> Hair {
6580        Hair::new()
6581    }
6582
6583    fn clear(&mut self) {
6584        self.length = ::std::option::Option::None;
6585        self.style = ::std::option::Option::None;
6586        self.special_fields.clear();
6587    }
6588
6589    fn default_instance() -> &'static Hair {
6590        static instance: Hair = Hair {
6591            length: ::std::option::Option::None,
6592            style: ::std::option::Option::None,
6593            special_fields: ::protobuf::SpecialFields::new(),
6594        };
6595        &instance
6596    }
6597}
6598
6599impl ::protobuf::MessageFull for Hair {
6600    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6601        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6602        descriptor.get(|| file_descriptor().message_by_package_relative_name("Hair").unwrap()).clone()
6603    }
6604}
6605
6606impl ::std::fmt::Display for Hair {
6607    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6608        ::protobuf::text_format::fmt(self, f)
6609    }
6610}
6611
6612impl ::protobuf::reflect::ProtobufValue for Hair {
6613    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6614}
6615
6616// @@protoc_insertion_point(message:RemoteFortressReader.BodySizeInfo)
6617#[derive(PartialEq,Clone,Default,Debug)]
6618pub struct BodySizeInfo {
6619    // message fields
6620    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.size_cur)
6621    pub size_cur: ::std::option::Option<i32>,
6622    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.size_base)
6623    pub size_base: ::std::option::Option<i32>,
6624    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.area_cur)
6625    pub area_cur: ::std::option::Option<i32>,
6626    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.area_base)
6627    pub area_base: ::std::option::Option<i32>,
6628    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.length_cur)
6629    pub length_cur: ::std::option::Option<i32>,
6630    // @@protoc_insertion_point(field:RemoteFortressReader.BodySizeInfo.length_base)
6631    pub length_base: ::std::option::Option<i32>,
6632    // special fields
6633    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodySizeInfo.special_fields)
6634    pub special_fields: ::protobuf::SpecialFields,
6635}
6636
6637impl<'a> ::std::default::Default for &'a BodySizeInfo {
6638    fn default() -> &'a BodySizeInfo {
6639        <BodySizeInfo as ::protobuf::Message>::default_instance()
6640    }
6641}
6642
6643impl BodySizeInfo {
6644    pub fn new() -> BodySizeInfo {
6645        ::std::default::Default::default()
6646    }
6647
6648    // optional int32 size_cur = 1;
6649
6650    pub fn size_cur(&self) -> i32 {
6651        self.size_cur.unwrap_or(0)
6652    }
6653
6654    pub fn clear_size_cur(&mut self) {
6655        self.size_cur = ::std::option::Option::None;
6656    }
6657
6658    pub fn has_size_cur(&self) -> bool {
6659        self.size_cur.is_some()
6660    }
6661
6662    // Param is passed by value, moved
6663    pub fn set_size_cur(&mut self, v: i32) {
6664        self.size_cur = ::std::option::Option::Some(v);
6665    }
6666
6667    // optional int32 size_base = 2;
6668
6669    pub fn size_base(&self) -> i32 {
6670        self.size_base.unwrap_or(0)
6671    }
6672
6673    pub fn clear_size_base(&mut self) {
6674        self.size_base = ::std::option::Option::None;
6675    }
6676
6677    pub fn has_size_base(&self) -> bool {
6678        self.size_base.is_some()
6679    }
6680
6681    // Param is passed by value, moved
6682    pub fn set_size_base(&mut self, v: i32) {
6683        self.size_base = ::std::option::Option::Some(v);
6684    }
6685
6686    // optional int32 area_cur = 3;
6687
6688    pub fn area_cur(&self) -> i32 {
6689        self.area_cur.unwrap_or(0)
6690    }
6691
6692    pub fn clear_area_cur(&mut self) {
6693        self.area_cur = ::std::option::Option::None;
6694    }
6695
6696    pub fn has_area_cur(&self) -> bool {
6697        self.area_cur.is_some()
6698    }
6699
6700    // Param is passed by value, moved
6701    pub fn set_area_cur(&mut self, v: i32) {
6702        self.area_cur = ::std::option::Option::Some(v);
6703    }
6704
6705    // optional int32 area_base = 4;
6706
6707    pub fn area_base(&self) -> i32 {
6708        self.area_base.unwrap_or(0)
6709    }
6710
6711    pub fn clear_area_base(&mut self) {
6712        self.area_base = ::std::option::Option::None;
6713    }
6714
6715    pub fn has_area_base(&self) -> bool {
6716        self.area_base.is_some()
6717    }
6718
6719    // Param is passed by value, moved
6720    pub fn set_area_base(&mut self, v: i32) {
6721        self.area_base = ::std::option::Option::Some(v);
6722    }
6723
6724    // optional int32 length_cur = 5;
6725
6726    pub fn length_cur(&self) -> i32 {
6727        self.length_cur.unwrap_or(0)
6728    }
6729
6730    pub fn clear_length_cur(&mut self) {
6731        self.length_cur = ::std::option::Option::None;
6732    }
6733
6734    pub fn has_length_cur(&self) -> bool {
6735        self.length_cur.is_some()
6736    }
6737
6738    // Param is passed by value, moved
6739    pub fn set_length_cur(&mut self, v: i32) {
6740        self.length_cur = ::std::option::Option::Some(v);
6741    }
6742
6743    // optional int32 length_base = 6;
6744
6745    pub fn length_base(&self) -> i32 {
6746        self.length_base.unwrap_or(0)
6747    }
6748
6749    pub fn clear_length_base(&mut self) {
6750        self.length_base = ::std::option::Option::None;
6751    }
6752
6753    pub fn has_length_base(&self) -> bool {
6754        self.length_base.is_some()
6755    }
6756
6757    // Param is passed by value, moved
6758    pub fn set_length_base(&mut self, v: i32) {
6759        self.length_base = ::std::option::Option::Some(v);
6760    }
6761
6762    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
6763        let mut fields = ::std::vec::Vec::with_capacity(6);
6764        let mut oneofs = ::std::vec::Vec::with_capacity(0);
6765        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6766            "size_cur",
6767            |m: &BodySizeInfo| { &m.size_cur },
6768            |m: &mut BodySizeInfo| { &mut m.size_cur },
6769        ));
6770        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6771            "size_base",
6772            |m: &BodySizeInfo| { &m.size_base },
6773            |m: &mut BodySizeInfo| { &mut m.size_base },
6774        ));
6775        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6776            "area_cur",
6777            |m: &BodySizeInfo| { &m.area_cur },
6778            |m: &mut BodySizeInfo| { &mut m.area_cur },
6779        ));
6780        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6781            "area_base",
6782            |m: &BodySizeInfo| { &m.area_base },
6783            |m: &mut BodySizeInfo| { &mut m.area_base },
6784        ));
6785        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6786            "length_cur",
6787            |m: &BodySizeInfo| { &m.length_cur },
6788            |m: &mut BodySizeInfo| { &mut m.length_cur },
6789        ));
6790        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
6791            "length_base",
6792            |m: &BodySizeInfo| { &m.length_base },
6793            |m: &mut BodySizeInfo| { &mut m.length_base },
6794        ));
6795        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodySizeInfo>(
6796            "BodySizeInfo",
6797            fields,
6798            oneofs,
6799        )
6800    }
6801}
6802
6803impl ::protobuf::Message for BodySizeInfo {
6804    const NAME: &'static str = "BodySizeInfo";
6805
6806    fn is_initialized(&self) -> bool {
6807        true
6808    }
6809
6810    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
6811        while let Some(tag) = is.read_raw_tag_or_eof()? {
6812            match tag {
6813                8 => {
6814                    self.size_cur = ::std::option::Option::Some(is.read_int32()?);
6815                },
6816                16 => {
6817                    self.size_base = ::std::option::Option::Some(is.read_int32()?);
6818                },
6819                24 => {
6820                    self.area_cur = ::std::option::Option::Some(is.read_int32()?);
6821                },
6822                32 => {
6823                    self.area_base = ::std::option::Option::Some(is.read_int32()?);
6824                },
6825                40 => {
6826                    self.length_cur = ::std::option::Option::Some(is.read_int32()?);
6827                },
6828                48 => {
6829                    self.length_base = ::std::option::Option::Some(is.read_int32()?);
6830                },
6831                tag => {
6832                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
6833                },
6834            };
6835        }
6836        ::std::result::Result::Ok(())
6837    }
6838
6839    // Compute sizes of nested messages
6840    #[allow(unused_variables)]
6841    fn compute_size(&self) -> u64 {
6842        let mut my_size = 0;
6843        if let Some(v) = self.size_cur {
6844            my_size += ::protobuf::rt::int32_size(1, v);
6845        }
6846        if let Some(v) = self.size_base {
6847            my_size += ::protobuf::rt::int32_size(2, v);
6848        }
6849        if let Some(v) = self.area_cur {
6850            my_size += ::protobuf::rt::int32_size(3, v);
6851        }
6852        if let Some(v) = self.area_base {
6853            my_size += ::protobuf::rt::int32_size(4, v);
6854        }
6855        if let Some(v) = self.length_cur {
6856            my_size += ::protobuf::rt::int32_size(5, v);
6857        }
6858        if let Some(v) = self.length_base {
6859            my_size += ::protobuf::rt::int32_size(6, v);
6860        }
6861        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
6862        self.special_fields.cached_size().set(my_size as u32);
6863        my_size
6864    }
6865
6866    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
6867        if let Some(v) = self.size_cur {
6868            os.write_int32(1, v)?;
6869        }
6870        if let Some(v) = self.size_base {
6871            os.write_int32(2, v)?;
6872        }
6873        if let Some(v) = self.area_cur {
6874            os.write_int32(3, v)?;
6875        }
6876        if let Some(v) = self.area_base {
6877            os.write_int32(4, v)?;
6878        }
6879        if let Some(v) = self.length_cur {
6880            os.write_int32(5, v)?;
6881        }
6882        if let Some(v) = self.length_base {
6883            os.write_int32(6, v)?;
6884        }
6885        os.write_unknown_fields(self.special_fields.unknown_fields())?;
6886        ::std::result::Result::Ok(())
6887    }
6888
6889    fn special_fields(&self) -> &::protobuf::SpecialFields {
6890        &self.special_fields
6891    }
6892
6893    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
6894        &mut self.special_fields
6895    }
6896
6897    fn new() -> BodySizeInfo {
6898        BodySizeInfo::new()
6899    }
6900
6901    fn clear(&mut self) {
6902        self.size_cur = ::std::option::Option::None;
6903        self.size_base = ::std::option::Option::None;
6904        self.area_cur = ::std::option::Option::None;
6905        self.area_base = ::std::option::Option::None;
6906        self.length_cur = ::std::option::Option::None;
6907        self.length_base = ::std::option::Option::None;
6908        self.special_fields.clear();
6909    }
6910
6911    fn default_instance() -> &'static BodySizeInfo {
6912        static instance: BodySizeInfo = BodySizeInfo {
6913            size_cur: ::std::option::Option::None,
6914            size_base: ::std::option::Option::None,
6915            area_cur: ::std::option::Option::None,
6916            area_base: ::std::option::Option::None,
6917            length_cur: ::std::option::Option::None,
6918            length_base: ::std::option::Option::None,
6919            special_fields: ::protobuf::SpecialFields::new(),
6920        };
6921        &instance
6922    }
6923}
6924
6925impl ::protobuf::MessageFull for BodySizeInfo {
6926    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
6927        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
6928        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodySizeInfo").unwrap()).clone()
6929    }
6930}
6931
6932impl ::std::fmt::Display for BodySizeInfo {
6933    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6934        ::protobuf::text_format::fmt(self, f)
6935    }
6936}
6937
6938impl ::protobuf::reflect::ProtobufValue for BodySizeInfo {
6939    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
6940}
6941
6942// @@protoc_insertion_point(message:RemoteFortressReader.UnitAppearance)
6943#[derive(PartialEq,Clone,Default,Debug)]
6944pub struct UnitAppearance {
6945    // message fields
6946    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.body_modifiers)
6947    pub body_modifiers: ::std::vec::Vec<i32>,
6948    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.bp_modifiers)
6949    pub bp_modifiers: ::std::vec::Vec<i32>,
6950    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.size_modifier)
6951    pub size_modifier: ::std::option::Option<i32>,
6952    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.colors)
6953    pub colors: ::std::vec::Vec<i32>,
6954    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.hair)
6955    pub hair: ::protobuf::MessageField<Hair>,
6956    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.beard)
6957    pub beard: ::protobuf::MessageField<Hair>,
6958    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.moustache)
6959    pub moustache: ::protobuf::MessageField<Hair>,
6960    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.sideburns)
6961    pub sideburns: ::protobuf::MessageField<Hair>,
6962    // @@protoc_insertion_point(field:RemoteFortressReader.UnitAppearance.physical_description)
6963    pub physical_description: ::std::option::Option<::std::string::String>,
6964    // special fields
6965    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitAppearance.special_fields)
6966    pub special_fields: ::protobuf::SpecialFields,
6967}
6968
6969impl<'a> ::std::default::Default for &'a UnitAppearance {
6970    fn default() -> &'a UnitAppearance {
6971        <UnitAppearance as ::protobuf::Message>::default_instance()
6972    }
6973}
6974
6975impl UnitAppearance {
6976    pub fn new() -> UnitAppearance {
6977        ::std::default::Default::default()
6978    }
6979
6980    // optional int32 size_modifier = 3;
6981
6982    pub fn size_modifier(&self) -> i32 {
6983        self.size_modifier.unwrap_or(0)
6984    }
6985
6986    pub fn clear_size_modifier(&mut self) {
6987        self.size_modifier = ::std::option::Option::None;
6988    }
6989
6990    pub fn has_size_modifier(&self) -> bool {
6991        self.size_modifier.is_some()
6992    }
6993
6994    // Param is passed by value, moved
6995    pub fn set_size_modifier(&mut self, v: i32) {
6996        self.size_modifier = ::std::option::Option::Some(v);
6997    }
6998
6999    // optional string physical_description = 9;
7000
7001    pub fn physical_description(&self) -> &str {
7002        match self.physical_description.as_ref() {
7003            Some(v) => v,
7004            None => "",
7005        }
7006    }
7007
7008    pub fn clear_physical_description(&mut self) {
7009        self.physical_description = ::std::option::Option::None;
7010    }
7011
7012    pub fn has_physical_description(&self) -> bool {
7013        self.physical_description.is_some()
7014    }
7015
7016    // Param is passed by value, moved
7017    pub fn set_physical_description(&mut self, v: ::std::string::String) {
7018        self.physical_description = ::std::option::Option::Some(v);
7019    }
7020
7021    // Mutable pointer to the field.
7022    // If field is not initialized, it is initialized with default value first.
7023    pub fn mut_physical_description(&mut self) -> &mut ::std::string::String {
7024        if self.physical_description.is_none() {
7025            self.physical_description = ::std::option::Option::Some(::std::string::String::new());
7026        }
7027        self.physical_description.as_mut().unwrap()
7028    }
7029
7030    // Take field
7031    pub fn take_physical_description(&mut self) -> ::std::string::String {
7032        self.physical_description.take().unwrap_or_else(|| ::std::string::String::new())
7033    }
7034
7035    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7036        let mut fields = ::std::vec::Vec::with_capacity(9);
7037        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7038        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7039            "body_modifiers",
7040            |m: &UnitAppearance| { &m.body_modifiers },
7041            |m: &mut UnitAppearance| { &mut m.body_modifiers },
7042        ));
7043        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7044            "bp_modifiers",
7045            |m: &UnitAppearance| { &m.bp_modifiers },
7046            |m: &mut UnitAppearance| { &mut m.bp_modifiers },
7047        ));
7048        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7049            "size_modifier",
7050            |m: &UnitAppearance| { &m.size_modifier },
7051            |m: &mut UnitAppearance| { &mut m.size_modifier },
7052        ));
7053        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7054            "colors",
7055            |m: &UnitAppearance| { &m.colors },
7056            |m: &mut UnitAppearance| { &mut m.colors },
7057        ));
7058        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7059            "hair",
7060            |m: &UnitAppearance| { &m.hair },
7061            |m: &mut UnitAppearance| { &mut m.hair },
7062        ));
7063        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7064            "beard",
7065            |m: &UnitAppearance| { &m.beard },
7066            |m: &mut UnitAppearance| { &mut m.beard },
7067        ));
7068        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7069            "moustache",
7070            |m: &UnitAppearance| { &m.moustache },
7071            |m: &mut UnitAppearance| { &mut m.moustache },
7072        ));
7073        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Hair>(
7074            "sideburns",
7075            |m: &UnitAppearance| { &m.sideburns },
7076            |m: &mut UnitAppearance| { &mut m.sideburns },
7077        ));
7078        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7079            "physical_description",
7080            |m: &UnitAppearance| { &m.physical_description },
7081            |m: &mut UnitAppearance| { &mut m.physical_description },
7082        ));
7083        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitAppearance>(
7084            "UnitAppearance",
7085            fields,
7086            oneofs,
7087        )
7088    }
7089}
7090
7091impl ::protobuf::Message for UnitAppearance {
7092    const NAME: &'static str = "UnitAppearance";
7093
7094    fn is_initialized(&self) -> bool {
7095        true
7096    }
7097
7098    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7099        while let Some(tag) = is.read_raw_tag_or_eof()? {
7100            match tag {
7101                10 => {
7102                    is.read_repeated_packed_int32_into(&mut self.body_modifiers)?;
7103                },
7104                8 => {
7105                    self.body_modifiers.push(is.read_int32()?);
7106                },
7107                18 => {
7108                    is.read_repeated_packed_int32_into(&mut self.bp_modifiers)?;
7109                },
7110                16 => {
7111                    self.bp_modifiers.push(is.read_int32()?);
7112                },
7113                24 => {
7114                    self.size_modifier = ::std::option::Option::Some(is.read_int32()?);
7115                },
7116                34 => {
7117                    is.read_repeated_packed_int32_into(&mut self.colors)?;
7118                },
7119                32 => {
7120                    self.colors.push(is.read_int32()?);
7121                },
7122                42 => {
7123                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.hair)?;
7124                },
7125                50 => {
7126                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.beard)?;
7127                },
7128                58 => {
7129                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.moustache)?;
7130                },
7131                66 => {
7132                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.sideburns)?;
7133                },
7134                74 => {
7135                    self.physical_description = ::std::option::Option::Some(is.read_string()?);
7136                },
7137                tag => {
7138                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7139                },
7140            };
7141        }
7142        ::std::result::Result::Ok(())
7143    }
7144
7145    // Compute sizes of nested messages
7146    #[allow(unused_variables)]
7147    fn compute_size(&self) -> u64 {
7148        let mut my_size = 0;
7149        for value in &self.body_modifiers {
7150            my_size += ::protobuf::rt::int32_size(1, *value);
7151        };
7152        for value in &self.bp_modifiers {
7153            my_size += ::protobuf::rt::int32_size(2, *value);
7154        };
7155        if let Some(v) = self.size_modifier {
7156            my_size += ::protobuf::rt::int32_size(3, v);
7157        }
7158        for value in &self.colors {
7159            my_size += ::protobuf::rt::int32_size(4, *value);
7160        };
7161        if let Some(v) = self.hair.as_ref() {
7162            let len = v.compute_size();
7163            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7164        }
7165        if let Some(v) = self.beard.as_ref() {
7166            let len = v.compute_size();
7167            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7168        }
7169        if let Some(v) = self.moustache.as_ref() {
7170            let len = v.compute_size();
7171            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7172        }
7173        if let Some(v) = self.sideburns.as_ref() {
7174            let len = v.compute_size();
7175            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7176        }
7177        if let Some(v) = self.physical_description.as_ref() {
7178            my_size += ::protobuf::rt::string_size(9, &v);
7179        }
7180        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7181        self.special_fields.cached_size().set(my_size as u32);
7182        my_size
7183    }
7184
7185    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7186        for v in &self.body_modifiers {
7187            os.write_int32(1, *v)?;
7188        };
7189        for v in &self.bp_modifiers {
7190            os.write_int32(2, *v)?;
7191        };
7192        if let Some(v) = self.size_modifier {
7193            os.write_int32(3, v)?;
7194        }
7195        for v in &self.colors {
7196            os.write_int32(4, *v)?;
7197        };
7198        if let Some(v) = self.hair.as_ref() {
7199            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
7200        }
7201        if let Some(v) = self.beard.as_ref() {
7202            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
7203        }
7204        if let Some(v) = self.moustache.as_ref() {
7205            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
7206        }
7207        if let Some(v) = self.sideburns.as_ref() {
7208            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
7209        }
7210        if let Some(v) = self.physical_description.as_ref() {
7211            os.write_string(9, v)?;
7212        }
7213        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7214        ::std::result::Result::Ok(())
7215    }
7216
7217    fn special_fields(&self) -> &::protobuf::SpecialFields {
7218        &self.special_fields
7219    }
7220
7221    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7222        &mut self.special_fields
7223    }
7224
7225    fn new() -> UnitAppearance {
7226        UnitAppearance::new()
7227    }
7228
7229    fn clear(&mut self) {
7230        self.body_modifiers.clear();
7231        self.bp_modifiers.clear();
7232        self.size_modifier = ::std::option::Option::None;
7233        self.colors.clear();
7234        self.hair.clear();
7235        self.beard.clear();
7236        self.moustache.clear();
7237        self.sideburns.clear();
7238        self.physical_description = ::std::option::Option::None;
7239        self.special_fields.clear();
7240    }
7241
7242    fn default_instance() -> &'static UnitAppearance {
7243        static instance: UnitAppearance = UnitAppearance {
7244            body_modifiers: ::std::vec::Vec::new(),
7245            bp_modifiers: ::std::vec::Vec::new(),
7246            size_modifier: ::std::option::Option::None,
7247            colors: ::std::vec::Vec::new(),
7248            hair: ::protobuf::MessageField::none(),
7249            beard: ::protobuf::MessageField::none(),
7250            moustache: ::protobuf::MessageField::none(),
7251            sideburns: ::protobuf::MessageField::none(),
7252            physical_description: ::std::option::Option::None,
7253            special_fields: ::protobuf::SpecialFields::new(),
7254        };
7255        &instance
7256    }
7257}
7258
7259impl ::protobuf::MessageFull for UnitAppearance {
7260    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7261        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7262        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitAppearance").unwrap()).clone()
7263    }
7264}
7265
7266impl ::std::fmt::Display for UnitAppearance {
7267    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7268        ::protobuf::text_format::fmt(self, f)
7269    }
7270}
7271
7272impl ::protobuf::reflect::ProtobufValue for UnitAppearance {
7273    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7274}
7275
7276// @@protoc_insertion_point(message:RemoteFortressReader.InventoryItem)
7277#[derive(PartialEq,Clone,Default,Debug)]
7278pub struct InventoryItem {
7279    // message fields
7280    // @@protoc_insertion_point(field:RemoteFortressReader.InventoryItem.mode)
7281    pub mode: ::std::option::Option<::protobuf::EnumOrUnknown<InventoryMode>>,
7282    // @@protoc_insertion_point(field:RemoteFortressReader.InventoryItem.item)
7283    pub item: ::protobuf::MessageField<Item>,
7284    // @@protoc_insertion_point(field:RemoteFortressReader.InventoryItem.body_part_id)
7285    pub body_part_id: ::std::option::Option<i32>,
7286    // special fields
7287    // @@protoc_insertion_point(special_field:RemoteFortressReader.InventoryItem.special_fields)
7288    pub special_fields: ::protobuf::SpecialFields,
7289}
7290
7291impl<'a> ::std::default::Default for &'a InventoryItem {
7292    fn default() -> &'a InventoryItem {
7293        <InventoryItem as ::protobuf::Message>::default_instance()
7294    }
7295}
7296
7297impl InventoryItem {
7298    pub fn new() -> InventoryItem {
7299        ::std::default::Default::default()
7300    }
7301
7302    // optional .RemoteFortressReader.InventoryMode mode = 1;
7303
7304    pub fn mode(&self) -> InventoryMode {
7305        match self.mode {
7306            Some(e) => e.enum_value_or(InventoryMode::Hauled),
7307            None => InventoryMode::Hauled,
7308        }
7309    }
7310
7311    pub fn clear_mode(&mut self) {
7312        self.mode = ::std::option::Option::None;
7313    }
7314
7315    pub fn has_mode(&self) -> bool {
7316        self.mode.is_some()
7317    }
7318
7319    // Param is passed by value, moved
7320    pub fn set_mode(&mut self, v: InventoryMode) {
7321        self.mode = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
7322    }
7323
7324    // optional int32 body_part_id = 3;
7325
7326    pub fn body_part_id(&self) -> i32 {
7327        self.body_part_id.unwrap_or(0)
7328    }
7329
7330    pub fn clear_body_part_id(&mut self) {
7331        self.body_part_id = ::std::option::Option::None;
7332    }
7333
7334    pub fn has_body_part_id(&self) -> bool {
7335        self.body_part_id.is_some()
7336    }
7337
7338    // Param is passed by value, moved
7339    pub fn set_body_part_id(&mut self, v: i32) {
7340        self.body_part_id = ::std::option::Option::Some(v);
7341    }
7342
7343    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7344        let mut fields = ::std::vec::Vec::with_capacity(3);
7345        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7346        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7347            "mode",
7348            |m: &InventoryItem| { &m.mode },
7349            |m: &mut InventoryItem| { &mut m.mode },
7350        ));
7351        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Item>(
7352            "item",
7353            |m: &InventoryItem| { &m.item },
7354            |m: &mut InventoryItem| { &mut m.item },
7355        ));
7356        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7357            "body_part_id",
7358            |m: &InventoryItem| { &m.body_part_id },
7359            |m: &mut InventoryItem| { &mut m.body_part_id },
7360        ));
7361        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<InventoryItem>(
7362            "InventoryItem",
7363            fields,
7364            oneofs,
7365        )
7366    }
7367}
7368
7369impl ::protobuf::Message for InventoryItem {
7370    const NAME: &'static str = "InventoryItem";
7371
7372    fn is_initialized(&self) -> bool {
7373        for v in &self.item {
7374            if !v.is_initialized() {
7375                return false;
7376            }
7377        };
7378        true
7379    }
7380
7381    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7382        while let Some(tag) = is.read_raw_tag_or_eof()? {
7383            match tag {
7384                8 => {
7385                    self.mode = ::std::option::Option::Some(is.read_enum_or_unknown()?);
7386                },
7387                18 => {
7388                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
7389                },
7390                24 => {
7391                    self.body_part_id = ::std::option::Option::Some(is.read_int32()?);
7392                },
7393                tag => {
7394                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7395                },
7396            };
7397        }
7398        ::std::result::Result::Ok(())
7399    }
7400
7401    // Compute sizes of nested messages
7402    #[allow(unused_variables)]
7403    fn compute_size(&self) -> u64 {
7404        let mut my_size = 0;
7405        if let Some(v) = self.mode {
7406            my_size += ::protobuf::rt::int32_size(1, v.value());
7407        }
7408        if let Some(v) = self.item.as_ref() {
7409            let len = v.compute_size();
7410            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7411        }
7412        if let Some(v) = self.body_part_id {
7413            my_size += ::protobuf::rt::int32_size(3, v);
7414        }
7415        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7416        self.special_fields.cached_size().set(my_size as u32);
7417        my_size
7418    }
7419
7420    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7421        if let Some(v) = self.mode {
7422            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
7423        }
7424        if let Some(v) = self.item.as_ref() {
7425            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
7426        }
7427        if let Some(v) = self.body_part_id {
7428            os.write_int32(3, v)?;
7429        }
7430        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7431        ::std::result::Result::Ok(())
7432    }
7433
7434    fn special_fields(&self) -> &::protobuf::SpecialFields {
7435        &self.special_fields
7436    }
7437
7438    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7439        &mut self.special_fields
7440    }
7441
7442    fn new() -> InventoryItem {
7443        InventoryItem::new()
7444    }
7445
7446    fn clear(&mut self) {
7447        self.mode = ::std::option::Option::None;
7448        self.item.clear();
7449        self.body_part_id = ::std::option::Option::None;
7450        self.special_fields.clear();
7451    }
7452
7453    fn default_instance() -> &'static InventoryItem {
7454        static instance: InventoryItem = InventoryItem {
7455            mode: ::std::option::Option::None,
7456            item: ::protobuf::MessageField::none(),
7457            body_part_id: ::std::option::Option::None,
7458            special_fields: ::protobuf::SpecialFields::new(),
7459        };
7460        &instance
7461    }
7462}
7463
7464impl ::protobuf::MessageFull for InventoryItem {
7465    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7466        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7467        descriptor.get(|| file_descriptor().message_by_package_relative_name("InventoryItem").unwrap()).clone()
7468    }
7469}
7470
7471impl ::std::fmt::Display for InventoryItem {
7472    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7473        ::protobuf::text_format::fmt(self, f)
7474    }
7475}
7476
7477impl ::protobuf::reflect::ProtobufValue for InventoryItem {
7478    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7479}
7480
7481// @@protoc_insertion_point(message:RemoteFortressReader.WoundPart)
7482#[derive(PartialEq,Clone,Default,Debug)]
7483pub struct WoundPart {
7484    // message fields
7485    // @@protoc_insertion_point(field:RemoteFortressReader.WoundPart.global_layer_idx)
7486    pub global_layer_idx: ::std::option::Option<i32>,
7487    // @@protoc_insertion_point(field:RemoteFortressReader.WoundPart.body_part_id)
7488    pub body_part_id: ::std::option::Option<i32>,
7489    // @@protoc_insertion_point(field:RemoteFortressReader.WoundPart.layer_idx)
7490    pub layer_idx: ::std::option::Option<i32>,
7491    // special fields
7492    // @@protoc_insertion_point(special_field:RemoteFortressReader.WoundPart.special_fields)
7493    pub special_fields: ::protobuf::SpecialFields,
7494}
7495
7496impl<'a> ::std::default::Default for &'a WoundPart {
7497    fn default() -> &'a WoundPart {
7498        <WoundPart as ::protobuf::Message>::default_instance()
7499    }
7500}
7501
7502impl WoundPart {
7503    pub fn new() -> WoundPart {
7504        ::std::default::Default::default()
7505    }
7506
7507    // optional int32 global_layer_idx = 1;
7508
7509    pub fn global_layer_idx(&self) -> i32 {
7510        self.global_layer_idx.unwrap_or(0)
7511    }
7512
7513    pub fn clear_global_layer_idx(&mut self) {
7514        self.global_layer_idx = ::std::option::Option::None;
7515    }
7516
7517    pub fn has_global_layer_idx(&self) -> bool {
7518        self.global_layer_idx.is_some()
7519    }
7520
7521    // Param is passed by value, moved
7522    pub fn set_global_layer_idx(&mut self, v: i32) {
7523        self.global_layer_idx = ::std::option::Option::Some(v);
7524    }
7525
7526    // optional int32 body_part_id = 2;
7527
7528    pub fn body_part_id(&self) -> i32 {
7529        self.body_part_id.unwrap_or(0)
7530    }
7531
7532    pub fn clear_body_part_id(&mut self) {
7533        self.body_part_id = ::std::option::Option::None;
7534    }
7535
7536    pub fn has_body_part_id(&self) -> bool {
7537        self.body_part_id.is_some()
7538    }
7539
7540    // Param is passed by value, moved
7541    pub fn set_body_part_id(&mut self, v: i32) {
7542        self.body_part_id = ::std::option::Option::Some(v);
7543    }
7544
7545    // optional int32 layer_idx = 3;
7546
7547    pub fn layer_idx(&self) -> i32 {
7548        self.layer_idx.unwrap_or(0)
7549    }
7550
7551    pub fn clear_layer_idx(&mut self) {
7552        self.layer_idx = ::std::option::Option::None;
7553    }
7554
7555    pub fn has_layer_idx(&self) -> bool {
7556        self.layer_idx.is_some()
7557    }
7558
7559    // Param is passed by value, moved
7560    pub fn set_layer_idx(&mut self, v: i32) {
7561        self.layer_idx = ::std::option::Option::Some(v);
7562    }
7563
7564    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7565        let mut fields = ::std::vec::Vec::with_capacity(3);
7566        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7567        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7568            "global_layer_idx",
7569            |m: &WoundPart| { &m.global_layer_idx },
7570            |m: &mut WoundPart| { &mut m.global_layer_idx },
7571        ));
7572        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7573            "body_part_id",
7574            |m: &WoundPart| { &m.body_part_id },
7575            |m: &mut WoundPart| { &mut m.body_part_id },
7576        ));
7577        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7578            "layer_idx",
7579            |m: &WoundPart| { &m.layer_idx },
7580            |m: &mut WoundPart| { &mut m.layer_idx },
7581        ));
7582        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<WoundPart>(
7583            "WoundPart",
7584            fields,
7585            oneofs,
7586        )
7587    }
7588}
7589
7590impl ::protobuf::Message for WoundPart {
7591    const NAME: &'static str = "WoundPart";
7592
7593    fn is_initialized(&self) -> bool {
7594        true
7595    }
7596
7597    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7598        while let Some(tag) = is.read_raw_tag_or_eof()? {
7599            match tag {
7600                8 => {
7601                    self.global_layer_idx = ::std::option::Option::Some(is.read_int32()?);
7602                },
7603                16 => {
7604                    self.body_part_id = ::std::option::Option::Some(is.read_int32()?);
7605                },
7606                24 => {
7607                    self.layer_idx = ::std::option::Option::Some(is.read_int32()?);
7608                },
7609                tag => {
7610                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7611                },
7612            };
7613        }
7614        ::std::result::Result::Ok(())
7615    }
7616
7617    // Compute sizes of nested messages
7618    #[allow(unused_variables)]
7619    fn compute_size(&self) -> u64 {
7620        let mut my_size = 0;
7621        if let Some(v) = self.global_layer_idx {
7622            my_size += ::protobuf::rt::int32_size(1, v);
7623        }
7624        if let Some(v) = self.body_part_id {
7625            my_size += ::protobuf::rt::int32_size(2, v);
7626        }
7627        if let Some(v) = self.layer_idx {
7628            my_size += ::protobuf::rt::int32_size(3, v);
7629        }
7630        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7631        self.special_fields.cached_size().set(my_size as u32);
7632        my_size
7633    }
7634
7635    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7636        if let Some(v) = self.global_layer_idx {
7637            os.write_int32(1, v)?;
7638        }
7639        if let Some(v) = self.body_part_id {
7640            os.write_int32(2, v)?;
7641        }
7642        if let Some(v) = self.layer_idx {
7643            os.write_int32(3, v)?;
7644        }
7645        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7646        ::std::result::Result::Ok(())
7647    }
7648
7649    fn special_fields(&self) -> &::protobuf::SpecialFields {
7650        &self.special_fields
7651    }
7652
7653    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7654        &mut self.special_fields
7655    }
7656
7657    fn new() -> WoundPart {
7658        WoundPart::new()
7659    }
7660
7661    fn clear(&mut self) {
7662        self.global_layer_idx = ::std::option::Option::None;
7663        self.body_part_id = ::std::option::Option::None;
7664        self.layer_idx = ::std::option::Option::None;
7665        self.special_fields.clear();
7666    }
7667
7668    fn default_instance() -> &'static WoundPart {
7669        static instance: WoundPart = WoundPart {
7670            global_layer_idx: ::std::option::Option::None,
7671            body_part_id: ::std::option::Option::None,
7672            layer_idx: ::std::option::Option::None,
7673            special_fields: ::protobuf::SpecialFields::new(),
7674        };
7675        &instance
7676    }
7677}
7678
7679impl ::protobuf::MessageFull for WoundPart {
7680    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7681        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7682        descriptor.get(|| file_descriptor().message_by_package_relative_name("WoundPart").unwrap()).clone()
7683    }
7684}
7685
7686impl ::std::fmt::Display for WoundPart {
7687    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7688        ::protobuf::text_format::fmt(self, f)
7689    }
7690}
7691
7692impl ::protobuf::reflect::ProtobufValue for WoundPart {
7693    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7694}
7695
7696// @@protoc_insertion_point(message:RemoteFortressReader.UnitWound)
7697#[derive(PartialEq,Clone,Default,Debug)]
7698pub struct UnitWound {
7699    // message fields
7700    // @@protoc_insertion_point(field:RemoteFortressReader.UnitWound.parts)
7701    pub parts: ::std::vec::Vec<WoundPart>,
7702    // @@protoc_insertion_point(field:RemoteFortressReader.UnitWound.severed_part)
7703    pub severed_part: ::std::option::Option<bool>,
7704    // special fields
7705    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitWound.special_fields)
7706    pub special_fields: ::protobuf::SpecialFields,
7707}
7708
7709impl<'a> ::std::default::Default for &'a UnitWound {
7710    fn default() -> &'a UnitWound {
7711        <UnitWound as ::protobuf::Message>::default_instance()
7712    }
7713}
7714
7715impl UnitWound {
7716    pub fn new() -> UnitWound {
7717        ::std::default::Default::default()
7718    }
7719
7720    // optional bool severed_part = 2;
7721
7722    pub fn severed_part(&self) -> bool {
7723        self.severed_part.unwrap_or(false)
7724    }
7725
7726    pub fn clear_severed_part(&mut self) {
7727        self.severed_part = ::std::option::Option::None;
7728    }
7729
7730    pub fn has_severed_part(&self) -> bool {
7731        self.severed_part.is_some()
7732    }
7733
7734    // Param is passed by value, moved
7735    pub fn set_severed_part(&mut self, v: bool) {
7736        self.severed_part = ::std::option::Option::Some(v);
7737    }
7738
7739    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
7740        let mut fields = ::std::vec::Vec::with_capacity(2);
7741        let mut oneofs = ::std::vec::Vec::with_capacity(0);
7742        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
7743            "parts",
7744            |m: &UnitWound| { &m.parts },
7745            |m: &mut UnitWound| { &mut m.parts },
7746        ));
7747        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
7748            "severed_part",
7749            |m: &UnitWound| { &m.severed_part },
7750            |m: &mut UnitWound| { &mut m.severed_part },
7751        ));
7752        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitWound>(
7753            "UnitWound",
7754            fields,
7755            oneofs,
7756        )
7757    }
7758}
7759
7760impl ::protobuf::Message for UnitWound {
7761    const NAME: &'static str = "UnitWound";
7762
7763    fn is_initialized(&self) -> bool {
7764        true
7765    }
7766
7767    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
7768        while let Some(tag) = is.read_raw_tag_or_eof()? {
7769            match tag {
7770                10 => {
7771                    self.parts.push(is.read_message()?);
7772                },
7773                16 => {
7774                    self.severed_part = ::std::option::Option::Some(is.read_bool()?);
7775                },
7776                tag => {
7777                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
7778                },
7779            };
7780        }
7781        ::std::result::Result::Ok(())
7782    }
7783
7784    // Compute sizes of nested messages
7785    #[allow(unused_variables)]
7786    fn compute_size(&self) -> u64 {
7787        let mut my_size = 0;
7788        for value in &self.parts {
7789            let len = value.compute_size();
7790            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
7791        };
7792        if let Some(v) = self.severed_part {
7793            my_size += 1 + 1;
7794        }
7795        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
7796        self.special_fields.cached_size().set(my_size as u32);
7797        my_size
7798    }
7799
7800    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
7801        for v in &self.parts {
7802            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
7803        };
7804        if let Some(v) = self.severed_part {
7805            os.write_bool(2, v)?;
7806        }
7807        os.write_unknown_fields(self.special_fields.unknown_fields())?;
7808        ::std::result::Result::Ok(())
7809    }
7810
7811    fn special_fields(&self) -> &::protobuf::SpecialFields {
7812        &self.special_fields
7813    }
7814
7815    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
7816        &mut self.special_fields
7817    }
7818
7819    fn new() -> UnitWound {
7820        UnitWound::new()
7821    }
7822
7823    fn clear(&mut self) {
7824        self.parts.clear();
7825        self.severed_part = ::std::option::Option::None;
7826        self.special_fields.clear();
7827    }
7828
7829    fn default_instance() -> &'static UnitWound {
7830        static instance: UnitWound = UnitWound {
7831            parts: ::std::vec::Vec::new(),
7832            severed_part: ::std::option::Option::None,
7833            special_fields: ::protobuf::SpecialFields::new(),
7834        };
7835        &instance
7836    }
7837}
7838
7839impl ::protobuf::MessageFull for UnitWound {
7840    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
7841        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
7842        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitWound").unwrap()).clone()
7843    }
7844}
7845
7846impl ::std::fmt::Display for UnitWound {
7847    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7848        ::protobuf::text_format::fmt(self, f)
7849    }
7850}
7851
7852impl ::protobuf::reflect::ProtobufValue for UnitWound {
7853    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
7854}
7855
7856// @@protoc_insertion_point(message:RemoteFortressReader.UnitDefinition)
7857#[derive(PartialEq,Clone,Default,Debug)]
7858pub struct UnitDefinition {
7859    // message fields
7860    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.id)
7861    pub id: ::std::option::Option<i32>,
7862    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.isValid)
7863    pub isValid: ::std::option::Option<bool>,
7864    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.pos_x)
7865    pub pos_x: ::std::option::Option<i32>,
7866    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.pos_y)
7867    pub pos_y: ::std::option::Option<i32>,
7868    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.pos_z)
7869    pub pos_z: ::std::option::Option<i32>,
7870    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.race)
7871    pub race: ::protobuf::MessageField<MatPair>,
7872    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.profession_color)
7873    pub profession_color: ::protobuf::MessageField<ColorDefinition>,
7874    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.flags1)
7875    pub flags1: ::std::option::Option<u32>,
7876    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.flags2)
7877    pub flags2: ::std::option::Option<u32>,
7878    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.flags3)
7879    pub flags3: ::std::option::Option<u32>,
7880    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.is_soldier)
7881    pub is_soldier: ::std::option::Option<bool>,
7882    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.size_info)
7883    pub size_info: ::protobuf::MessageField<BodySizeInfo>,
7884    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.name)
7885    pub name: ::std::option::Option<::std::string::String>,
7886    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.blood_max)
7887    pub blood_max: ::std::option::Option<i32>,
7888    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.blood_count)
7889    pub blood_count: ::std::option::Option<i32>,
7890    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.appearance)
7891    pub appearance: ::protobuf::MessageField<UnitAppearance>,
7892    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.profession_id)
7893    pub profession_id: ::std::option::Option<i32>,
7894    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.noble_positions)
7895    pub noble_positions: ::std::vec::Vec<::std::string::String>,
7896    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.rider_id)
7897    pub rider_id: ::std::option::Option<i32>,
7898    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.inventory)
7899    pub inventory: ::std::vec::Vec<InventoryItem>,
7900    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.subpos_x)
7901    pub subpos_x: ::std::option::Option<f32>,
7902    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.subpos_y)
7903    pub subpos_y: ::std::option::Option<f32>,
7904    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.subpos_z)
7905    pub subpos_z: ::std::option::Option<f32>,
7906    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.facing)
7907    pub facing: ::protobuf::MessageField<Coord>,
7908    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.age)
7909    pub age: ::std::option::Option<i32>,
7910    // @@protoc_insertion_point(field:RemoteFortressReader.UnitDefinition.wounds)
7911    pub wounds: ::std::vec::Vec<UnitWound>,
7912    // special fields
7913    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitDefinition.special_fields)
7914    pub special_fields: ::protobuf::SpecialFields,
7915}
7916
7917impl<'a> ::std::default::Default for &'a UnitDefinition {
7918    fn default() -> &'a UnitDefinition {
7919        <UnitDefinition as ::protobuf::Message>::default_instance()
7920    }
7921}
7922
7923impl UnitDefinition {
7924    pub fn new() -> UnitDefinition {
7925        ::std::default::Default::default()
7926    }
7927
7928    // required int32 id = 1;
7929
7930    pub fn id(&self) -> i32 {
7931        self.id.unwrap_or(0)
7932    }
7933
7934    pub fn clear_id(&mut self) {
7935        self.id = ::std::option::Option::None;
7936    }
7937
7938    pub fn has_id(&self) -> bool {
7939        self.id.is_some()
7940    }
7941
7942    // Param is passed by value, moved
7943    pub fn set_id(&mut self, v: i32) {
7944        self.id = ::std::option::Option::Some(v);
7945    }
7946
7947    // optional bool isValid = 2;
7948
7949    pub fn isValid(&self) -> bool {
7950        self.isValid.unwrap_or(false)
7951    }
7952
7953    pub fn clear_isValid(&mut self) {
7954        self.isValid = ::std::option::Option::None;
7955    }
7956
7957    pub fn has_isValid(&self) -> bool {
7958        self.isValid.is_some()
7959    }
7960
7961    // Param is passed by value, moved
7962    pub fn set_isValid(&mut self, v: bool) {
7963        self.isValid = ::std::option::Option::Some(v);
7964    }
7965
7966    // optional int32 pos_x = 3;
7967
7968    pub fn pos_x(&self) -> i32 {
7969        self.pos_x.unwrap_or(0)
7970    }
7971
7972    pub fn clear_pos_x(&mut self) {
7973        self.pos_x = ::std::option::Option::None;
7974    }
7975
7976    pub fn has_pos_x(&self) -> bool {
7977        self.pos_x.is_some()
7978    }
7979
7980    // Param is passed by value, moved
7981    pub fn set_pos_x(&mut self, v: i32) {
7982        self.pos_x = ::std::option::Option::Some(v);
7983    }
7984
7985    // optional int32 pos_y = 4;
7986
7987    pub fn pos_y(&self) -> i32 {
7988        self.pos_y.unwrap_or(0)
7989    }
7990
7991    pub fn clear_pos_y(&mut self) {
7992        self.pos_y = ::std::option::Option::None;
7993    }
7994
7995    pub fn has_pos_y(&self) -> bool {
7996        self.pos_y.is_some()
7997    }
7998
7999    // Param is passed by value, moved
8000    pub fn set_pos_y(&mut self, v: i32) {
8001        self.pos_y = ::std::option::Option::Some(v);
8002    }
8003
8004    // optional int32 pos_z = 5;
8005
8006    pub fn pos_z(&self) -> i32 {
8007        self.pos_z.unwrap_or(0)
8008    }
8009
8010    pub fn clear_pos_z(&mut self) {
8011        self.pos_z = ::std::option::Option::None;
8012    }
8013
8014    pub fn has_pos_z(&self) -> bool {
8015        self.pos_z.is_some()
8016    }
8017
8018    // Param is passed by value, moved
8019    pub fn set_pos_z(&mut self, v: i32) {
8020        self.pos_z = ::std::option::Option::Some(v);
8021    }
8022
8023    // optional uint32 flags1 = 8;
8024
8025    pub fn flags1(&self) -> u32 {
8026        self.flags1.unwrap_or(0)
8027    }
8028
8029    pub fn clear_flags1(&mut self) {
8030        self.flags1 = ::std::option::Option::None;
8031    }
8032
8033    pub fn has_flags1(&self) -> bool {
8034        self.flags1.is_some()
8035    }
8036
8037    // Param is passed by value, moved
8038    pub fn set_flags1(&mut self, v: u32) {
8039        self.flags1 = ::std::option::Option::Some(v);
8040    }
8041
8042    // optional uint32 flags2 = 9;
8043
8044    pub fn flags2(&self) -> u32 {
8045        self.flags2.unwrap_or(0)
8046    }
8047
8048    pub fn clear_flags2(&mut self) {
8049        self.flags2 = ::std::option::Option::None;
8050    }
8051
8052    pub fn has_flags2(&self) -> bool {
8053        self.flags2.is_some()
8054    }
8055
8056    // Param is passed by value, moved
8057    pub fn set_flags2(&mut self, v: u32) {
8058        self.flags2 = ::std::option::Option::Some(v);
8059    }
8060
8061    // optional uint32 flags3 = 10;
8062
8063    pub fn flags3(&self) -> u32 {
8064        self.flags3.unwrap_or(0)
8065    }
8066
8067    pub fn clear_flags3(&mut self) {
8068        self.flags3 = ::std::option::Option::None;
8069    }
8070
8071    pub fn has_flags3(&self) -> bool {
8072        self.flags3.is_some()
8073    }
8074
8075    // Param is passed by value, moved
8076    pub fn set_flags3(&mut self, v: u32) {
8077        self.flags3 = ::std::option::Option::Some(v);
8078    }
8079
8080    // optional bool is_soldier = 11;
8081
8082    pub fn is_soldier(&self) -> bool {
8083        self.is_soldier.unwrap_or(false)
8084    }
8085
8086    pub fn clear_is_soldier(&mut self) {
8087        self.is_soldier = ::std::option::Option::None;
8088    }
8089
8090    pub fn has_is_soldier(&self) -> bool {
8091        self.is_soldier.is_some()
8092    }
8093
8094    // Param is passed by value, moved
8095    pub fn set_is_soldier(&mut self, v: bool) {
8096        self.is_soldier = ::std::option::Option::Some(v);
8097    }
8098
8099    // optional string name = 13;
8100
8101    pub fn name(&self) -> &str {
8102        match self.name.as_ref() {
8103            Some(v) => v,
8104            None => "",
8105        }
8106    }
8107
8108    pub fn clear_name(&mut self) {
8109        self.name = ::std::option::Option::None;
8110    }
8111
8112    pub fn has_name(&self) -> bool {
8113        self.name.is_some()
8114    }
8115
8116    // Param is passed by value, moved
8117    pub fn set_name(&mut self, v: ::std::string::String) {
8118        self.name = ::std::option::Option::Some(v);
8119    }
8120
8121    // Mutable pointer to the field.
8122    // If field is not initialized, it is initialized with default value first.
8123    pub fn mut_name(&mut self) -> &mut ::std::string::String {
8124        if self.name.is_none() {
8125            self.name = ::std::option::Option::Some(::std::string::String::new());
8126        }
8127        self.name.as_mut().unwrap()
8128    }
8129
8130    // Take field
8131    pub fn take_name(&mut self) -> ::std::string::String {
8132        self.name.take().unwrap_or_else(|| ::std::string::String::new())
8133    }
8134
8135    // optional int32 blood_max = 14;
8136
8137    pub fn blood_max(&self) -> i32 {
8138        self.blood_max.unwrap_or(0)
8139    }
8140
8141    pub fn clear_blood_max(&mut self) {
8142        self.blood_max = ::std::option::Option::None;
8143    }
8144
8145    pub fn has_blood_max(&self) -> bool {
8146        self.blood_max.is_some()
8147    }
8148
8149    // Param is passed by value, moved
8150    pub fn set_blood_max(&mut self, v: i32) {
8151        self.blood_max = ::std::option::Option::Some(v);
8152    }
8153
8154    // optional int32 blood_count = 15;
8155
8156    pub fn blood_count(&self) -> i32 {
8157        self.blood_count.unwrap_or(0)
8158    }
8159
8160    pub fn clear_blood_count(&mut self) {
8161        self.blood_count = ::std::option::Option::None;
8162    }
8163
8164    pub fn has_blood_count(&self) -> bool {
8165        self.blood_count.is_some()
8166    }
8167
8168    // Param is passed by value, moved
8169    pub fn set_blood_count(&mut self, v: i32) {
8170        self.blood_count = ::std::option::Option::Some(v);
8171    }
8172
8173    // optional int32 profession_id = 17;
8174
8175    pub fn profession_id(&self) -> i32 {
8176        self.profession_id.unwrap_or(0)
8177    }
8178
8179    pub fn clear_profession_id(&mut self) {
8180        self.profession_id = ::std::option::Option::None;
8181    }
8182
8183    pub fn has_profession_id(&self) -> bool {
8184        self.profession_id.is_some()
8185    }
8186
8187    // Param is passed by value, moved
8188    pub fn set_profession_id(&mut self, v: i32) {
8189        self.profession_id = ::std::option::Option::Some(v);
8190    }
8191
8192    // optional int32 rider_id = 19;
8193
8194    pub fn rider_id(&self) -> i32 {
8195        self.rider_id.unwrap_or(0)
8196    }
8197
8198    pub fn clear_rider_id(&mut self) {
8199        self.rider_id = ::std::option::Option::None;
8200    }
8201
8202    pub fn has_rider_id(&self) -> bool {
8203        self.rider_id.is_some()
8204    }
8205
8206    // Param is passed by value, moved
8207    pub fn set_rider_id(&mut self, v: i32) {
8208        self.rider_id = ::std::option::Option::Some(v);
8209    }
8210
8211    // optional float subpos_x = 21;
8212
8213    pub fn subpos_x(&self) -> f32 {
8214        self.subpos_x.unwrap_or(0.)
8215    }
8216
8217    pub fn clear_subpos_x(&mut self) {
8218        self.subpos_x = ::std::option::Option::None;
8219    }
8220
8221    pub fn has_subpos_x(&self) -> bool {
8222        self.subpos_x.is_some()
8223    }
8224
8225    // Param is passed by value, moved
8226    pub fn set_subpos_x(&mut self, v: f32) {
8227        self.subpos_x = ::std::option::Option::Some(v);
8228    }
8229
8230    // optional float subpos_y = 22;
8231
8232    pub fn subpos_y(&self) -> f32 {
8233        self.subpos_y.unwrap_or(0.)
8234    }
8235
8236    pub fn clear_subpos_y(&mut self) {
8237        self.subpos_y = ::std::option::Option::None;
8238    }
8239
8240    pub fn has_subpos_y(&self) -> bool {
8241        self.subpos_y.is_some()
8242    }
8243
8244    // Param is passed by value, moved
8245    pub fn set_subpos_y(&mut self, v: f32) {
8246        self.subpos_y = ::std::option::Option::Some(v);
8247    }
8248
8249    // optional float subpos_z = 23;
8250
8251    pub fn subpos_z(&self) -> f32 {
8252        self.subpos_z.unwrap_or(0.)
8253    }
8254
8255    pub fn clear_subpos_z(&mut self) {
8256        self.subpos_z = ::std::option::Option::None;
8257    }
8258
8259    pub fn has_subpos_z(&self) -> bool {
8260        self.subpos_z.is_some()
8261    }
8262
8263    // Param is passed by value, moved
8264    pub fn set_subpos_z(&mut self, v: f32) {
8265        self.subpos_z = ::std::option::Option::Some(v);
8266    }
8267
8268    // optional int32 age = 25;
8269
8270    pub fn age(&self) -> i32 {
8271        self.age.unwrap_or(0)
8272    }
8273
8274    pub fn clear_age(&mut self) {
8275        self.age = ::std::option::Option::None;
8276    }
8277
8278    pub fn has_age(&self) -> bool {
8279        self.age.is_some()
8280    }
8281
8282    // Param is passed by value, moved
8283    pub fn set_age(&mut self, v: i32) {
8284        self.age = ::std::option::Option::Some(v);
8285    }
8286
8287    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
8288        let mut fields = ::std::vec::Vec::with_capacity(26);
8289        let mut oneofs = ::std::vec::Vec::with_capacity(0);
8290        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8291            "id",
8292            |m: &UnitDefinition| { &m.id },
8293            |m: &mut UnitDefinition| { &mut m.id },
8294        ));
8295        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8296            "isValid",
8297            |m: &UnitDefinition| { &m.isValid },
8298            |m: &mut UnitDefinition| { &mut m.isValid },
8299        ));
8300        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8301            "pos_x",
8302            |m: &UnitDefinition| { &m.pos_x },
8303            |m: &mut UnitDefinition| { &mut m.pos_x },
8304        ));
8305        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8306            "pos_y",
8307            |m: &UnitDefinition| { &m.pos_y },
8308            |m: &mut UnitDefinition| { &mut m.pos_y },
8309        ));
8310        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8311            "pos_z",
8312            |m: &UnitDefinition| { &m.pos_z },
8313            |m: &mut UnitDefinition| { &mut m.pos_z },
8314        ));
8315        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
8316            "race",
8317            |m: &UnitDefinition| { &m.race },
8318            |m: &mut UnitDefinition| { &mut m.race },
8319        ));
8320        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
8321            "profession_color",
8322            |m: &UnitDefinition| { &m.profession_color },
8323            |m: &mut UnitDefinition| { &mut m.profession_color },
8324        ));
8325        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8326            "flags1",
8327            |m: &UnitDefinition| { &m.flags1 },
8328            |m: &mut UnitDefinition| { &mut m.flags1 },
8329        ));
8330        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8331            "flags2",
8332            |m: &UnitDefinition| { &m.flags2 },
8333            |m: &mut UnitDefinition| { &mut m.flags2 },
8334        ));
8335        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8336            "flags3",
8337            |m: &UnitDefinition| { &m.flags3 },
8338            |m: &mut UnitDefinition| { &mut m.flags3 },
8339        ));
8340        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8341            "is_soldier",
8342            |m: &UnitDefinition| { &m.is_soldier },
8343            |m: &mut UnitDefinition| { &mut m.is_soldier },
8344        ));
8345        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, BodySizeInfo>(
8346            "size_info",
8347            |m: &UnitDefinition| { &m.size_info },
8348            |m: &mut UnitDefinition| { &mut m.size_info },
8349        ));
8350        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8351            "name",
8352            |m: &UnitDefinition| { &m.name },
8353            |m: &mut UnitDefinition| { &mut m.name },
8354        ));
8355        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8356            "blood_max",
8357            |m: &UnitDefinition| { &m.blood_max },
8358            |m: &mut UnitDefinition| { &mut m.blood_max },
8359        ));
8360        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8361            "blood_count",
8362            |m: &UnitDefinition| { &m.blood_count },
8363            |m: &mut UnitDefinition| { &mut m.blood_count },
8364        ));
8365        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, UnitAppearance>(
8366            "appearance",
8367            |m: &UnitDefinition| { &m.appearance },
8368            |m: &mut UnitDefinition| { &mut m.appearance },
8369        ));
8370        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8371            "profession_id",
8372            |m: &UnitDefinition| { &m.profession_id },
8373            |m: &mut UnitDefinition| { &mut m.profession_id },
8374        ));
8375        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8376            "noble_positions",
8377            |m: &UnitDefinition| { &m.noble_positions },
8378            |m: &mut UnitDefinition| { &mut m.noble_positions },
8379        ));
8380        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8381            "rider_id",
8382            |m: &UnitDefinition| { &m.rider_id },
8383            |m: &mut UnitDefinition| { &mut m.rider_id },
8384        ));
8385        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8386            "inventory",
8387            |m: &UnitDefinition| { &m.inventory },
8388            |m: &mut UnitDefinition| { &mut m.inventory },
8389        ));
8390        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8391            "subpos_x",
8392            |m: &UnitDefinition| { &m.subpos_x },
8393            |m: &mut UnitDefinition| { &mut m.subpos_x },
8394        ));
8395        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8396            "subpos_y",
8397            |m: &UnitDefinition| { &m.subpos_y },
8398            |m: &mut UnitDefinition| { &mut m.subpos_y },
8399        ));
8400        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8401            "subpos_z",
8402            |m: &UnitDefinition| { &m.subpos_z },
8403            |m: &mut UnitDefinition| { &mut m.subpos_z },
8404        ));
8405        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
8406            "facing",
8407            |m: &UnitDefinition| { &m.facing },
8408            |m: &mut UnitDefinition| { &mut m.facing },
8409        ));
8410        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
8411            "age",
8412            |m: &UnitDefinition| { &m.age },
8413            |m: &mut UnitDefinition| { &mut m.age },
8414        ));
8415        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8416            "wounds",
8417            |m: &UnitDefinition| { &m.wounds },
8418            |m: &mut UnitDefinition| { &mut m.wounds },
8419        ));
8420        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitDefinition>(
8421            "UnitDefinition",
8422            fields,
8423            oneofs,
8424        )
8425    }
8426}
8427
8428impl ::protobuf::Message for UnitDefinition {
8429    const NAME: &'static str = "UnitDefinition";
8430
8431    fn is_initialized(&self) -> bool {
8432        if self.id.is_none() {
8433            return false;
8434        }
8435        for v in &self.race {
8436            if !v.is_initialized() {
8437                return false;
8438            }
8439        };
8440        for v in &self.profession_color {
8441            if !v.is_initialized() {
8442                return false;
8443            }
8444        };
8445        for v in &self.size_info {
8446            if !v.is_initialized() {
8447                return false;
8448            }
8449        };
8450        for v in &self.appearance {
8451            if !v.is_initialized() {
8452                return false;
8453            }
8454        };
8455        for v in &self.inventory {
8456            if !v.is_initialized() {
8457                return false;
8458            }
8459        };
8460        for v in &self.facing {
8461            if !v.is_initialized() {
8462                return false;
8463            }
8464        };
8465        for v in &self.wounds {
8466            if !v.is_initialized() {
8467                return false;
8468            }
8469        };
8470        true
8471    }
8472
8473    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
8474        while let Some(tag) = is.read_raw_tag_or_eof()? {
8475            match tag {
8476                8 => {
8477                    self.id = ::std::option::Option::Some(is.read_int32()?);
8478                },
8479                16 => {
8480                    self.isValid = ::std::option::Option::Some(is.read_bool()?);
8481                },
8482                24 => {
8483                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
8484                },
8485                32 => {
8486                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
8487                },
8488                40 => {
8489                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
8490                },
8491                50 => {
8492                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.race)?;
8493                },
8494                58 => {
8495                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.profession_color)?;
8496                },
8497                64 => {
8498                    self.flags1 = ::std::option::Option::Some(is.read_uint32()?);
8499                },
8500                72 => {
8501                    self.flags2 = ::std::option::Option::Some(is.read_uint32()?);
8502                },
8503                80 => {
8504                    self.flags3 = ::std::option::Option::Some(is.read_uint32()?);
8505                },
8506                88 => {
8507                    self.is_soldier = ::std::option::Option::Some(is.read_bool()?);
8508                },
8509                98 => {
8510                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.size_info)?;
8511                },
8512                106 => {
8513                    self.name = ::std::option::Option::Some(is.read_string()?);
8514                },
8515                112 => {
8516                    self.blood_max = ::std::option::Option::Some(is.read_int32()?);
8517                },
8518                120 => {
8519                    self.blood_count = ::std::option::Option::Some(is.read_int32()?);
8520                },
8521                130 => {
8522                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.appearance)?;
8523                },
8524                136 => {
8525                    self.profession_id = ::std::option::Option::Some(is.read_int32()?);
8526                },
8527                146 => {
8528                    self.noble_positions.push(is.read_string()?);
8529                },
8530                152 => {
8531                    self.rider_id = ::std::option::Option::Some(is.read_int32()?);
8532                },
8533                162 => {
8534                    self.inventory.push(is.read_message()?);
8535                },
8536                173 => {
8537                    self.subpos_x = ::std::option::Option::Some(is.read_float()?);
8538                },
8539                181 => {
8540                    self.subpos_y = ::std::option::Option::Some(is.read_float()?);
8541                },
8542                189 => {
8543                    self.subpos_z = ::std::option::Option::Some(is.read_float()?);
8544                },
8545                194 => {
8546                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.facing)?;
8547                },
8548                200 => {
8549                    self.age = ::std::option::Option::Some(is.read_int32()?);
8550                },
8551                210 => {
8552                    self.wounds.push(is.read_message()?);
8553                },
8554                tag => {
8555                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
8556                },
8557            };
8558        }
8559        ::std::result::Result::Ok(())
8560    }
8561
8562    // Compute sizes of nested messages
8563    #[allow(unused_variables)]
8564    fn compute_size(&self) -> u64 {
8565        let mut my_size = 0;
8566        if let Some(v) = self.id {
8567            my_size += ::protobuf::rt::int32_size(1, v);
8568        }
8569        if let Some(v) = self.isValid {
8570            my_size += 1 + 1;
8571        }
8572        if let Some(v) = self.pos_x {
8573            my_size += ::protobuf::rt::int32_size(3, v);
8574        }
8575        if let Some(v) = self.pos_y {
8576            my_size += ::protobuf::rt::int32_size(4, v);
8577        }
8578        if let Some(v) = self.pos_z {
8579            my_size += ::protobuf::rt::int32_size(5, v);
8580        }
8581        if let Some(v) = self.race.as_ref() {
8582            let len = v.compute_size();
8583            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8584        }
8585        if let Some(v) = self.profession_color.as_ref() {
8586            let len = v.compute_size();
8587            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8588        }
8589        if let Some(v) = self.flags1 {
8590            my_size += ::protobuf::rt::uint32_size(8, v);
8591        }
8592        if let Some(v) = self.flags2 {
8593            my_size += ::protobuf::rt::uint32_size(9, v);
8594        }
8595        if let Some(v) = self.flags3 {
8596            my_size += ::protobuf::rt::uint32_size(10, v);
8597        }
8598        if let Some(v) = self.is_soldier {
8599            my_size += 1 + 1;
8600        }
8601        if let Some(v) = self.size_info.as_ref() {
8602            let len = v.compute_size();
8603            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8604        }
8605        if let Some(v) = self.name.as_ref() {
8606            my_size += ::protobuf::rt::string_size(13, &v);
8607        }
8608        if let Some(v) = self.blood_max {
8609            my_size += ::protobuf::rt::int32_size(14, v);
8610        }
8611        if let Some(v) = self.blood_count {
8612            my_size += ::protobuf::rt::int32_size(15, v);
8613        }
8614        if let Some(v) = self.appearance.as_ref() {
8615            let len = v.compute_size();
8616            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8617        }
8618        if let Some(v) = self.profession_id {
8619            my_size += ::protobuf::rt::int32_size(17, v);
8620        }
8621        for value in &self.noble_positions {
8622            my_size += ::protobuf::rt::string_size(18, &value);
8623        };
8624        if let Some(v) = self.rider_id {
8625            my_size += ::protobuf::rt::int32_size(19, v);
8626        }
8627        for value in &self.inventory {
8628            let len = value.compute_size();
8629            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8630        };
8631        if let Some(v) = self.subpos_x {
8632            my_size += 2 + 4;
8633        }
8634        if let Some(v) = self.subpos_y {
8635            my_size += 2 + 4;
8636        }
8637        if let Some(v) = self.subpos_z {
8638            my_size += 2 + 4;
8639        }
8640        if let Some(v) = self.facing.as_ref() {
8641            let len = v.compute_size();
8642            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8643        }
8644        if let Some(v) = self.age {
8645            my_size += ::protobuf::rt::int32_size(25, v);
8646        }
8647        for value in &self.wounds {
8648            let len = value.compute_size();
8649            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8650        };
8651        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
8652        self.special_fields.cached_size().set(my_size as u32);
8653        my_size
8654    }
8655
8656    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
8657        if let Some(v) = self.id {
8658            os.write_int32(1, v)?;
8659        }
8660        if let Some(v) = self.isValid {
8661            os.write_bool(2, v)?;
8662        }
8663        if let Some(v) = self.pos_x {
8664            os.write_int32(3, v)?;
8665        }
8666        if let Some(v) = self.pos_y {
8667            os.write_int32(4, v)?;
8668        }
8669        if let Some(v) = self.pos_z {
8670            os.write_int32(5, v)?;
8671        }
8672        if let Some(v) = self.race.as_ref() {
8673            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
8674        }
8675        if let Some(v) = self.profession_color.as_ref() {
8676            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
8677        }
8678        if let Some(v) = self.flags1 {
8679            os.write_uint32(8, v)?;
8680        }
8681        if let Some(v) = self.flags2 {
8682            os.write_uint32(9, v)?;
8683        }
8684        if let Some(v) = self.flags3 {
8685            os.write_uint32(10, v)?;
8686        }
8687        if let Some(v) = self.is_soldier {
8688            os.write_bool(11, v)?;
8689        }
8690        if let Some(v) = self.size_info.as_ref() {
8691            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
8692        }
8693        if let Some(v) = self.name.as_ref() {
8694            os.write_string(13, v)?;
8695        }
8696        if let Some(v) = self.blood_max {
8697            os.write_int32(14, v)?;
8698        }
8699        if let Some(v) = self.blood_count {
8700            os.write_int32(15, v)?;
8701        }
8702        if let Some(v) = self.appearance.as_ref() {
8703            ::protobuf::rt::write_message_field_with_cached_size(16, v, os)?;
8704        }
8705        if let Some(v) = self.profession_id {
8706            os.write_int32(17, v)?;
8707        }
8708        for v in &self.noble_positions {
8709            os.write_string(18, &v)?;
8710        };
8711        if let Some(v) = self.rider_id {
8712            os.write_int32(19, v)?;
8713        }
8714        for v in &self.inventory {
8715            ::protobuf::rt::write_message_field_with_cached_size(20, v, os)?;
8716        };
8717        if let Some(v) = self.subpos_x {
8718            os.write_float(21, v)?;
8719        }
8720        if let Some(v) = self.subpos_y {
8721            os.write_float(22, v)?;
8722        }
8723        if let Some(v) = self.subpos_z {
8724            os.write_float(23, v)?;
8725        }
8726        if let Some(v) = self.facing.as_ref() {
8727            ::protobuf::rt::write_message_field_with_cached_size(24, v, os)?;
8728        }
8729        if let Some(v) = self.age {
8730            os.write_int32(25, v)?;
8731        }
8732        for v in &self.wounds {
8733            ::protobuf::rt::write_message_field_with_cached_size(26, v, os)?;
8734        };
8735        os.write_unknown_fields(self.special_fields.unknown_fields())?;
8736        ::std::result::Result::Ok(())
8737    }
8738
8739    fn special_fields(&self) -> &::protobuf::SpecialFields {
8740        &self.special_fields
8741    }
8742
8743    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
8744        &mut self.special_fields
8745    }
8746
8747    fn new() -> UnitDefinition {
8748        UnitDefinition::new()
8749    }
8750
8751    fn clear(&mut self) {
8752        self.id = ::std::option::Option::None;
8753        self.isValid = ::std::option::Option::None;
8754        self.pos_x = ::std::option::Option::None;
8755        self.pos_y = ::std::option::Option::None;
8756        self.pos_z = ::std::option::Option::None;
8757        self.race.clear();
8758        self.profession_color.clear();
8759        self.flags1 = ::std::option::Option::None;
8760        self.flags2 = ::std::option::Option::None;
8761        self.flags3 = ::std::option::Option::None;
8762        self.is_soldier = ::std::option::Option::None;
8763        self.size_info.clear();
8764        self.name = ::std::option::Option::None;
8765        self.blood_max = ::std::option::Option::None;
8766        self.blood_count = ::std::option::Option::None;
8767        self.appearance.clear();
8768        self.profession_id = ::std::option::Option::None;
8769        self.noble_positions.clear();
8770        self.rider_id = ::std::option::Option::None;
8771        self.inventory.clear();
8772        self.subpos_x = ::std::option::Option::None;
8773        self.subpos_y = ::std::option::Option::None;
8774        self.subpos_z = ::std::option::Option::None;
8775        self.facing.clear();
8776        self.age = ::std::option::Option::None;
8777        self.wounds.clear();
8778        self.special_fields.clear();
8779    }
8780
8781    fn default_instance() -> &'static UnitDefinition {
8782        static instance: UnitDefinition = UnitDefinition {
8783            id: ::std::option::Option::None,
8784            isValid: ::std::option::Option::None,
8785            pos_x: ::std::option::Option::None,
8786            pos_y: ::std::option::Option::None,
8787            pos_z: ::std::option::Option::None,
8788            race: ::protobuf::MessageField::none(),
8789            profession_color: ::protobuf::MessageField::none(),
8790            flags1: ::std::option::Option::None,
8791            flags2: ::std::option::Option::None,
8792            flags3: ::std::option::Option::None,
8793            is_soldier: ::std::option::Option::None,
8794            size_info: ::protobuf::MessageField::none(),
8795            name: ::std::option::Option::None,
8796            blood_max: ::std::option::Option::None,
8797            blood_count: ::std::option::Option::None,
8798            appearance: ::protobuf::MessageField::none(),
8799            profession_id: ::std::option::Option::None,
8800            noble_positions: ::std::vec::Vec::new(),
8801            rider_id: ::std::option::Option::None,
8802            inventory: ::std::vec::Vec::new(),
8803            subpos_x: ::std::option::Option::None,
8804            subpos_y: ::std::option::Option::None,
8805            subpos_z: ::std::option::Option::None,
8806            facing: ::protobuf::MessageField::none(),
8807            age: ::std::option::Option::None,
8808            wounds: ::std::vec::Vec::new(),
8809            special_fields: ::protobuf::SpecialFields::new(),
8810        };
8811        &instance
8812    }
8813}
8814
8815impl ::protobuf::MessageFull for UnitDefinition {
8816    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
8817        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
8818        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitDefinition").unwrap()).clone()
8819    }
8820}
8821
8822impl ::std::fmt::Display for UnitDefinition {
8823    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8824        ::protobuf::text_format::fmt(self, f)
8825    }
8826}
8827
8828impl ::protobuf::reflect::ProtobufValue for UnitDefinition {
8829    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
8830}
8831
8832// @@protoc_insertion_point(message:RemoteFortressReader.UnitList)
8833#[derive(PartialEq,Clone,Default,Debug)]
8834pub struct UnitList {
8835    // message fields
8836    // @@protoc_insertion_point(field:RemoteFortressReader.UnitList.creature_list)
8837    pub creature_list: ::std::vec::Vec<UnitDefinition>,
8838    // special fields
8839    // @@protoc_insertion_point(special_field:RemoteFortressReader.UnitList.special_fields)
8840    pub special_fields: ::protobuf::SpecialFields,
8841}
8842
8843impl<'a> ::std::default::Default for &'a UnitList {
8844    fn default() -> &'a UnitList {
8845        <UnitList as ::protobuf::Message>::default_instance()
8846    }
8847}
8848
8849impl UnitList {
8850    pub fn new() -> UnitList {
8851        ::std::default::Default::default()
8852    }
8853
8854    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
8855        let mut fields = ::std::vec::Vec::with_capacity(1);
8856        let mut oneofs = ::std::vec::Vec::with_capacity(0);
8857        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
8858            "creature_list",
8859            |m: &UnitList| { &m.creature_list },
8860            |m: &mut UnitList| { &mut m.creature_list },
8861        ));
8862        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UnitList>(
8863            "UnitList",
8864            fields,
8865            oneofs,
8866        )
8867    }
8868}
8869
8870impl ::protobuf::Message for UnitList {
8871    const NAME: &'static str = "UnitList";
8872
8873    fn is_initialized(&self) -> bool {
8874        for v in &self.creature_list {
8875            if !v.is_initialized() {
8876                return false;
8877            }
8878        };
8879        true
8880    }
8881
8882    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
8883        while let Some(tag) = is.read_raw_tag_or_eof()? {
8884            match tag {
8885                10 => {
8886                    self.creature_list.push(is.read_message()?);
8887                },
8888                tag => {
8889                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
8890                },
8891            };
8892        }
8893        ::std::result::Result::Ok(())
8894    }
8895
8896    // Compute sizes of nested messages
8897    #[allow(unused_variables)]
8898    fn compute_size(&self) -> u64 {
8899        let mut my_size = 0;
8900        for value in &self.creature_list {
8901            let len = value.compute_size();
8902            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
8903        };
8904        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
8905        self.special_fields.cached_size().set(my_size as u32);
8906        my_size
8907    }
8908
8909    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
8910        for v in &self.creature_list {
8911            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
8912        };
8913        os.write_unknown_fields(self.special_fields.unknown_fields())?;
8914        ::std::result::Result::Ok(())
8915    }
8916
8917    fn special_fields(&self) -> &::protobuf::SpecialFields {
8918        &self.special_fields
8919    }
8920
8921    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
8922        &mut self.special_fields
8923    }
8924
8925    fn new() -> UnitList {
8926        UnitList::new()
8927    }
8928
8929    fn clear(&mut self) {
8930        self.creature_list.clear();
8931        self.special_fields.clear();
8932    }
8933
8934    fn default_instance() -> &'static UnitList {
8935        static instance: UnitList = UnitList {
8936            creature_list: ::std::vec::Vec::new(),
8937            special_fields: ::protobuf::SpecialFields::new(),
8938        };
8939        &instance
8940    }
8941}
8942
8943impl ::protobuf::MessageFull for UnitList {
8944    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
8945        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
8946        descriptor.get(|| file_descriptor().message_by_package_relative_name("UnitList").unwrap()).clone()
8947    }
8948}
8949
8950impl ::std::fmt::Display for UnitList {
8951    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
8952        ::protobuf::text_format::fmt(self, f)
8953    }
8954}
8955
8956impl ::protobuf::reflect::ProtobufValue for UnitList {
8957    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
8958}
8959
8960// @@protoc_insertion_point(message:RemoteFortressReader.BlockRequest)
8961#[derive(PartialEq,Clone,Default,Debug)]
8962pub struct BlockRequest {
8963    // message fields
8964    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.blocks_needed)
8965    pub blocks_needed: ::std::option::Option<i32>,
8966    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.min_x)
8967    pub min_x: ::std::option::Option<i32>,
8968    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.max_x)
8969    pub max_x: ::std::option::Option<i32>,
8970    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.min_y)
8971    pub min_y: ::std::option::Option<i32>,
8972    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.max_y)
8973    pub max_y: ::std::option::Option<i32>,
8974    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.min_z)
8975    pub min_z: ::std::option::Option<i32>,
8976    // @@protoc_insertion_point(field:RemoteFortressReader.BlockRequest.max_z)
8977    pub max_z: ::std::option::Option<i32>,
8978    // special fields
8979    // @@protoc_insertion_point(special_field:RemoteFortressReader.BlockRequest.special_fields)
8980    pub special_fields: ::protobuf::SpecialFields,
8981}
8982
8983impl<'a> ::std::default::Default for &'a BlockRequest {
8984    fn default() -> &'a BlockRequest {
8985        <BlockRequest as ::protobuf::Message>::default_instance()
8986    }
8987}
8988
8989impl BlockRequest {
8990    pub fn new() -> BlockRequest {
8991        ::std::default::Default::default()
8992    }
8993
8994    // optional int32 blocks_needed = 1;
8995
8996    pub fn blocks_needed(&self) -> i32 {
8997        self.blocks_needed.unwrap_or(0)
8998    }
8999
9000    pub fn clear_blocks_needed(&mut self) {
9001        self.blocks_needed = ::std::option::Option::None;
9002    }
9003
9004    pub fn has_blocks_needed(&self) -> bool {
9005        self.blocks_needed.is_some()
9006    }
9007
9008    // Param is passed by value, moved
9009    pub fn set_blocks_needed(&mut self, v: i32) {
9010        self.blocks_needed = ::std::option::Option::Some(v);
9011    }
9012
9013    // optional int32 min_x = 2;
9014
9015    pub fn min_x(&self) -> i32 {
9016        self.min_x.unwrap_or(0)
9017    }
9018
9019    pub fn clear_min_x(&mut self) {
9020        self.min_x = ::std::option::Option::None;
9021    }
9022
9023    pub fn has_min_x(&self) -> bool {
9024        self.min_x.is_some()
9025    }
9026
9027    // Param is passed by value, moved
9028    pub fn set_min_x(&mut self, v: i32) {
9029        self.min_x = ::std::option::Option::Some(v);
9030    }
9031
9032    // optional int32 max_x = 3;
9033
9034    pub fn max_x(&self) -> i32 {
9035        self.max_x.unwrap_or(0)
9036    }
9037
9038    pub fn clear_max_x(&mut self) {
9039        self.max_x = ::std::option::Option::None;
9040    }
9041
9042    pub fn has_max_x(&self) -> bool {
9043        self.max_x.is_some()
9044    }
9045
9046    // Param is passed by value, moved
9047    pub fn set_max_x(&mut self, v: i32) {
9048        self.max_x = ::std::option::Option::Some(v);
9049    }
9050
9051    // optional int32 min_y = 4;
9052
9053    pub fn min_y(&self) -> i32 {
9054        self.min_y.unwrap_or(0)
9055    }
9056
9057    pub fn clear_min_y(&mut self) {
9058        self.min_y = ::std::option::Option::None;
9059    }
9060
9061    pub fn has_min_y(&self) -> bool {
9062        self.min_y.is_some()
9063    }
9064
9065    // Param is passed by value, moved
9066    pub fn set_min_y(&mut self, v: i32) {
9067        self.min_y = ::std::option::Option::Some(v);
9068    }
9069
9070    // optional int32 max_y = 5;
9071
9072    pub fn max_y(&self) -> i32 {
9073        self.max_y.unwrap_or(0)
9074    }
9075
9076    pub fn clear_max_y(&mut self) {
9077        self.max_y = ::std::option::Option::None;
9078    }
9079
9080    pub fn has_max_y(&self) -> bool {
9081        self.max_y.is_some()
9082    }
9083
9084    // Param is passed by value, moved
9085    pub fn set_max_y(&mut self, v: i32) {
9086        self.max_y = ::std::option::Option::Some(v);
9087    }
9088
9089    // optional int32 min_z = 6;
9090
9091    pub fn min_z(&self) -> i32 {
9092        self.min_z.unwrap_or(0)
9093    }
9094
9095    pub fn clear_min_z(&mut self) {
9096        self.min_z = ::std::option::Option::None;
9097    }
9098
9099    pub fn has_min_z(&self) -> bool {
9100        self.min_z.is_some()
9101    }
9102
9103    // Param is passed by value, moved
9104    pub fn set_min_z(&mut self, v: i32) {
9105        self.min_z = ::std::option::Option::Some(v);
9106    }
9107
9108    // optional int32 max_z = 7;
9109
9110    pub fn max_z(&self) -> i32 {
9111        self.max_z.unwrap_or(0)
9112    }
9113
9114    pub fn clear_max_z(&mut self) {
9115        self.max_z = ::std::option::Option::None;
9116    }
9117
9118    pub fn has_max_z(&self) -> bool {
9119        self.max_z.is_some()
9120    }
9121
9122    // Param is passed by value, moved
9123    pub fn set_max_z(&mut self, v: i32) {
9124        self.max_z = ::std::option::Option::Some(v);
9125    }
9126
9127    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9128        let mut fields = ::std::vec::Vec::with_capacity(7);
9129        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9130        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9131            "blocks_needed",
9132            |m: &BlockRequest| { &m.blocks_needed },
9133            |m: &mut BlockRequest| { &mut m.blocks_needed },
9134        ));
9135        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9136            "min_x",
9137            |m: &BlockRequest| { &m.min_x },
9138            |m: &mut BlockRequest| { &mut m.min_x },
9139        ));
9140        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9141            "max_x",
9142            |m: &BlockRequest| { &m.max_x },
9143            |m: &mut BlockRequest| { &mut m.max_x },
9144        ));
9145        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9146            "min_y",
9147            |m: &BlockRequest| { &m.min_y },
9148            |m: &mut BlockRequest| { &mut m.min_y },
9149        ));
9150        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9151            "max_y",
9152            |m: &BlockRequest| { &m.max_y },
9153            |m: &mut BlockRequest| { &mut m.max_y },
9154        ));
9155        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9156            "min_z",
9157            |m: &BlockRequest| { &m.min_z },
9158            |m: &mut BlockRequest| { &mut m.min_z },
9159        ));
9160        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9161            "max_z",
9162            |m: &BlockRequest| { &m.max_z },
9163            |m: &mut BlockRequest| { &mut m.max_z },
9164        ));
9165        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BlockRequest>(
9166            "BlockRequest",
9167            fields,
9168            oneofs,
9169        )
9170    }
9171}
9172
9173impl ::protobuf::Message for BlockRequest {
9174    const NAME: &'static str = "BlockRequest";
9175
9176    fn is_initialized(&self) -> bool {
9177        true
9178    }
9179
9180    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9181        while let Some(tag) = is.read_raw_tag_or_eof()? {
9182            match tag {
9183                8 => {
9184                    self.blocks_needed = ::std::option::Option::Some(is.read_int32()?);
9185                },
9186                16 => {
9187                    self.min_x = ::std::option::Option::Some(is.read_int32()?);
9188                },
9189                24 => {
9190                    self.max_x = ::std::option::Option::Some(is.read_int32()?);
9191                },
9192                32 => {
9193                    self.min_y = ::std::option::Option::Some(is.read_int32()?);
9194                },
9195                40 => {
9196                    self.max_y = ::std::option::Option::Some(is.read_int32()?);
9197                },
9198                48 => {
9199                    self.min_z = ::std::option::Option::Some(is.read_int32()?);
9200                },
9201                56 => {
9202                    self.max_z = ::std::option::Option::Some(is.read_int32()?);
9203                },
9204                tag => {
9205                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9206                },
9207            };
9208        }
9209        ::std::result::Result::Ok(())
9210    }
9211
9212    // Compute sizes of nested messages
9213    #[allow(unused_variables)]
9214    fn compute_size(&self) -> u64 {
9215        let mut my_size = 0;
9216        if let Some(v) = self.blocks_needed {
9217            my_size += ::protobuf::rt::int32_size(1, v);
9218        }
9219        if let Some(v) = self.min_x {
9220            my_size += ::protobuf::rt::int32_size(2, v);
9221        }
9222        if let Some(v) = self.max_x {
9223            my_size += ::protobuf::rt::int32_size(3, v);
9224        }
9225        if let Some(v) = self.min_y {
9226            my_size += ::protobuf::rt::int32_size(4, v);
9227        }
9228        if let Some(v) = self.max_y {
9229            my_size += ::protobuf::rt::int32_size(5, v);
9230        }
9231        if let Some(v) = self.min_z {
9232            my_size += ::protobuf::rt::int32_size(6, v);
9233        }
9234        if let Some(v) = self.max_z {
9235            my_size += ::protobuf::rt::int32_size(7, v);
9236        }
9237        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9238        self.special_fields.cached_size().set(my_size as u32);
9239        my_size
9240    }
9241
9242    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9243        if let Some(v) = self.blocks_needed {
9244            os.write_int32(1, v)?;
9245        }
9246        if let Some(v) = self.min_x {
9247            os.write_int32(2, v)?;
9248        }
9249        if let Some(v) = self.max_x {
9250            os.write_int32(3, v)?;
9251        }
9252        if let Some(v) = self.min_y {
9253            os.write_int32(4, v)?;
9254        }
9255        if let Some(v) = self.max_y {
9256            os.write_int32(5, v)?;
9257        }
9258        if let Some(v) = self.min_z {
9259            os.write_int32(6, v)?;
9260        }
9261        if let Some(v) = self.max_z {
9262            os.write_int32(7, v)?;
9263        }
9264        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9265        ::std::result::Result::Ok(())
9266    }
9267
9268    fn special_fields(&self) -> &::protobuf::SpecialFields {
9269        &self.special_fields
9270    }
9271
9272    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9273        &mut self.special_fields
9274    }
9275
9276    fn new() -> BlockRequest {
9277        BlockRequest::new()
9278    }
9279
9280    fn clear(&mut self) {
9281        self.blocks_needed = ::std::option::Option::None;
9282        self.min_x = ::std::option::Option::None;
9283        self.max_x = ::std::option::Option::None;
9284        self.min_y = ::std::option::Option::None;
9285        self.max_y = ::std::option::Option::None;
9286        self.min_z = ::std::option::Option::None;
9287        self.max_z = ::std::option::Option::None;
9288        self.special_fields.clear();
9289    }
9290
9291    fn default_instance() -> &'static BlockRequest {
9292        static instance: BlockRequest = BlockRequest {
9293            blocks_needed: ::std::option::Option::None,
9294            min_x: ::std::option::Option::None,
9295            max_x: ::std::option::Option::None,
9296            min_y: ::std::option::Option::None,
9297            max_y: ::std::option::Option::None,
9298            min_z: ::std::option::Option::None,
9299            max_z: ::std::option::Option::None,
9300            special_fields: ::protobuf::SpecialFields::new(),
9301        };
9302        &instance
9303    }
9304}
9305
9306impl ::protobuf::MessageFull for BlockRequest {
9307    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9308        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9309        descriptor.get(|| file_descriptor().message_by_package_relative_name("BlockRequest").unwrap()).clone()
9310    }
9311}
9312
9313impl ::std::fmt::Display for BlockRequest {
9314    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9315        ::protobuf::text_format::fmt(self, f)
9316    }
9317}
9318
9319impl ::protobuf::reflect::ProtobufValue for BlockRequest {
9320    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9321}
9322
9323// @@protoc_insertion_point(message:RemoteFortressReader.BlockList)
9324#[derive(PartialEq,Clone,Default,Debug)]
9325pub struct BlockList {
9326    // message fields
9327    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_blocks)
9328    pub map_blocks: ::std::vec::Vec<MapBlock>,
9329    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_x)
9330    pub map_x: ::std::option::Option<i32>,
9331    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.map_y)
9332    pub map_y: ::std::option::Option<i32>,
9333    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.engravings)
9334    pub engravings: ::std::vec::Vec<Engraving>,
9335    // @@protoc_insertion_point(field:RemoteFortressReader.BlockList.ocean_waves)
9336    pub ocean_waves: ::std::vec::Vec<Wave>,
9337    // special fields
9338    // @@protoc_insertion_point(special_field:RemoteFortressReader.BlockList.special_fields)
9339    pub special_fields: ::protobuf::SpecialFields,
9340}
9341
9342impl<'a> ::std::default::Default for &'a BlockList {
9343    fn default() -> &'a BlockList {
9344        <BlockList as ::protobuf::Message>::default_instance()
9345    }
9346}
9347
9348impl BlockList {
9349    pub fn new() -> BlockList {
9350        ::std::default::Default::default()
9351    }
9352
9353    // optional int32 map_x = 2;
9354
9355    pub fn map_x(&self) -> i32 {
9356        self.map_x.unwrap_or(0)
9357    }
9358
9359    pub fn clear_map_x(&mut self) {
9360        self.map_x = ::std::option::Option::None;
9361    }
9362
9363    pub fn has_map_x(&self) -> bool {
9364        self.map_x.is_some()
9365    }
9366
9367    // Param is passed by value, moved
9368    pub fn set_map_x(&mut self, v: i32) {
9369        self.map_x = ::std::option::Option::Some(v);
9370    }
9371
9372    // optional int32 map_y = 3;
9373
9374    pub fn map_y(&self) -> i32 {
9375        self.map_y.unwrap_or(0)
9376    }
9377
9378    pub fn clear_map_y(&mut self) {
9379        self.map_y = ::std::option::Option::None;
9380    }
9381
9382    pub fn has_map_y(&self) -> bool {
9383        self.map_y.is_some()
9384    }
9385
9386    // Param is passed by value, moved
9387    pub fn set_map_y(&mut self, v: i32) {
9388        self.map_y = ::std::option::Option::Some(v);
9389    }
9390
9391    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9392        let mut fields = ::std::vec::Vec::with_capacity(5);
9393        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9394        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9395            "map_blocks",
9396            |m: &BlockList| { &m.map_blocks },
9397            |m: &mut BlockList| { &mut m.map_blocks },
9398        ));
9399        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9400            "map_x",
9401            |m: &BlockList| { &m.map_x },
9402            |m: &mut BlockList| { &mut m.map_x },
9403        ));
9404        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9405            "map_y",
9406            |m: &BlockList| { &m.map_y },
9407            |m: &mut BlockList| { &mut m.map_y },
9408        ));
9409        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9410            "engravings",
9411            |m: &BlockList| { &m.engravings },
9412            |m: &mut BlockList| { &mut m.engravings },
9413        ));
9414        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9415            "ocean_waves",
9416            |m: &BlockList| { &m.ocean_waves },
9417            |m: &mut BlockList| { &mut m.ocean_waves },
9418        ));
9419        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BlockList>(
9420            "BlockList",
9421            fields,
9422            oneofs,
9423        )
9424    }
9425}
9426
9427impl ::protobuf::Message for BlockList {
9428    const NAME: &'static str = "BlockList";
9429
9430    fn is_initialized(&self) -> bool {
9431        for v in &self.map_blocks {
9432            if !v.is_initialized() {
9433                return false;
9434            }
9435        };
9436        for v in &self.engravings {
9437            if !v.is_initialized() {
9438                return false;
9439            }
9440        };
9441        for v in &self.ocean_waves {
9442            if !v.is_initialized() {
9443                return false;
9444            }
9445        };
9446        true
9447    }
9448
9449    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9450        while let Some(tag) = is.read_raw_tag_or_eof()? {
9451            match tag {
9452                10 => {
9453                    self.map_blocks.push(is.read_message()?);
9454                },
9455                16 => {
9456                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
9457                },
9458                24 => {
9459                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
9460                },
9461                34 => {
9462                    self.engravings.push(is.read_message()?);
9463                },
9464                42 => {
9465                    self.ocean_waves.push(is.read_message()?);
9466                },
9467                tag => {
9468                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9469                },
9470            };
9471        }
9472        ::std::result::Result::Ok(())
9473    }
9474
9475    // Compute sizes of nested messages
9476    #[allow(unused_variables)]
9477    fn compute_size(&self) -> u64 {
9478        let mut my_size = 0;
9479        for value in &self.map_blocks {
9480            let len = value.compute_size();
9481            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9482        };
9483        if let Some(v) = self.map_x {
9484            my_size += ::protobuf::rt::int32_size(2, v);
9485        }
9486        if let Some(v) = self.map_y {
9487            my_size += ::protobuf::rt::int32_size(3, v);
9488        }
9489        for value in &self.engravings {
9490            let len = value.compute_size();
9491            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9492        };
9493        for value in &self.ocean_waves {
9494            let len = value.compute_size();
9495            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9496        };
9497        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9498        self.special_fields.cached_size().set(my_size as u32);
9499        my_size
9500    }
9501
9502    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9503        for v in &self.map_blocks {
9504            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
9505        };
9506        if let Some(v) = self.map_x {
9507            os.write_int32(2, v)?;
9508        }
9509        if let Some(v) = self.map_y {
9510            os.write_int32(3, v)?;
9511        }
9512        for v in &self.engravings {
9513            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
9514        };
9515        for v in &self.ocean_waves {
9516            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
9517        };
9518        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9519        ::std::result::Result::Ok(())
9520    }
9521
9522    fn special_fields(&self) -> &::protobuf::SpecialFields {
9523        &self.special_fields
9524    }
9525
9526    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9527        &mut self.special_fields
9528    }
9529
9530    fn new() -> BlockList {
9531        BlockList::new()
9532    }
9533
9534    fn clear(&mut self) {
9535        self.map_blocks.clear();
9536        self.map_x = ::std::option::Option::None;
9537        self.map_y = ::std::option::Option::None;
9538        self.engravings.clear();
9539        self.ocean_waves.clear();
9540        self.special_fields.clear();
9541    }
9542
9543    fn default_instance() -> &'static BlockList {
9544        static instance: BlockList = BlockList {
9545            map_blocks: ::std::vec::Vec::new(),
9546            map_x: ::std::option::Option::None,
9547            map_y: ::std::option::Option::None,
9548            engravings: ::std::vec::Vec::new(),
9549            ocean_waves: ::std::vec::Vec::new(),
9550            special_fields: ::protobuf::SpecialFields::new(),
9551        };
9552        &instance
9553    }
9554}
9555
9556impl ::protobuf::MessageFull for BlockList {
9557    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9558        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9559        descriptor.get(|| file_descriptor().message_by_package_relative_name("BlockList").unwrap()).clone()
9560    }
9561}
9562
9563impl ::std::fmt::Display for BlockList {
9564    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9565        ::protobuf::text_format::fmt(self, f)
9566    }
9567}
9568
9569impl ::protobuf::reflect::ProtobufValue for BlockList {
9570    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9571}
9572
9573// @@protoc_insertion_point(message:RemoteFortressReader.PlantDef)
9574#[derive(PartialEq,Clone,Default,Debug)]
9575pub struct PlantDef {
9576    // message fields
9577    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_x)
9578    pub pos_x: ::std::option::Option<i32>,
9579    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_y)
9580    pub pos_y: ::std::option::Option<i32>,
9581    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.pos_z)
9582    pub pos_z: ::std::option::Option<i32>,
9583    // @@protoc_insertion_point(field:RemoteFortressReader.PlantDef.index)
9584    pub index: ::std::option::Option<i32>,
9585    // special fields
9586    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantDef.special_fields)
9587    pub special_fields: ::protobuf::SpecialFields,
9588}
9589
9590impl<'a> ::std::default::Default for &'a PlantDef {
9591    fn default() -> &'a PlantDef {
9592        <PlantDef as ::protobuf::Message>::default_instance()
9593    }
9594}
9595
9596impl PlantDef {
9597    pub fn new() -> PlantDef {
9598        ::std::default::Default::default()
9599    }
9600
9601    // required int32 pos_x = 1;
9602
9603    pub fn pos_x(&self) -> i32 {
9604        self.pos_x.unwrap_or(0)
9605    }
9606
9607    pub fn clear_pos_x(&mut self) {
9608        self.pos_x = ::std::option::Option::None;
9609    }
9610
9611    pub fn has_pos_x(&self) -> bool {
9612        self.pos_x.is_some()
9613    }
9614
9615    // Param is passed by value, moved
9616    pub fn set_pos_x(&mut self, v: i32) {
9617        self.pos_x = ::std::option::Option::Some(v);
9618    }
9619
9620    // required int32 pos_y = 2;
9621
9622    pub fn pos_y(&self) -> i32 {
9623        self.pos_y.unwrap_or(0)
9624    }
9625
9626    pub fn clear_pos_y(&mut self) {
9627        self.pos_y = ::std::option::Option::None;
9628    }
9629
9630    pub fn has_pos_y(&self) -> bool {
9631        self.pos_y.is_some()
9632    }
9633
9634    // Param is passed by value, moved
9635    pub fn set_pos_y(&mut self, v: i32) {
9636        self.pos_y = ::std::option::Option::Some(v);
9637    }
9638
9639    // required int32 pos_z = 3;
9640
9641    pub fn pos_z(&self) -> i32 {
9642        self.pos_z.unwrap_or(0)
9643    }
9644
9645    pub fn clear_pos_z(&mut self) {
9646        self.pos_z = ::std::option::Option::None;
9647    }
9648
9649    pub fn has_pos_z(&self) -> bool {
9650        self.pos_z.is_some()
9651    }
9652
9653    // Param is passed by value, moved
9654    pub fn set_pos_z(&mut self, v: i32) {
9655        self.pos_z = ::std::option::Option::Some(v);
9656    }
9657
9658    // required int32 index = 4;
9659
9660    pub fn index(&self) -> i32 {
9661        self.index.unwrap_or(0)
9662    }
9663
9664    pub fn clear_index(&mut self) {
9665        self.index = ::std::option::Option::None;
9666    }
9667
9668    pub fn has_index(&self) -> bool {
9669        self.index.is_some()
9670    }
9671
9672    // Param is passed by value, moved
9673    pub fn set_index(&mut self, v: i32) {
9674        self.index = ::std::option::Option::Some(v);
9675    }
9676
9677    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9678        let mut fields = ::std::vec::Vec::with_capacity(4);
9679        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9680        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9681            "pos_x",
9682            |m: &PlantDef| { &m.pos_x },
9683            |m: &mut PlantDef| { &mut m.pos_x },
9684        ));
9685        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9686            "pos_y",
9687            |m: &PlantDef| { &m.pos_y },
9688            |m: &mut PlantDef| { &mut m.pos_y },
9689        ));
9690        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9691            "pos_z",
9692            |m: &PlantDef| { &m.pos_z },
9693            |m: &mut PlantDef| { &mut m.pos_z },
9694        ));
9695        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
9696            "index",
9697            |m: &PlantDef| { &m.index },
9698            |m: &mut PlantDef| { &mut m.index },
9699        ));
9700        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantDef>(
9701            "PlantDef",
9702            fields,
9703            oneofs,
9704        )
9705    }
9706}
9707
9708impl ::protobuf::Message for PlantDef {
9709    const NAME: &'static str = "PlantDef";
9710
9711    fn is_initialized(&self) -> bool {
9712        if self.pos_x.is_none() {
9713            return false;
9714        }
9715        if self.pos_y.is_none() {
9716            return false;
9717        }
9718        if self.pos_z.is_none() {
9719            return false;
9720        }
9721        if self.index.is_none() {
9722            return false;
9723        }
9724        true
9725    }
9726
9727    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9728        while let Some(tag) = is.read_raw_tag_or_eof()? {
9729            match tag {
9730                8 => {
9731                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
9732                },
9733                16 => {
9734                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
9735                },
9736                24 => {
9737                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
9738                },
9739                32 => {
9740                    self.index = ::std::option::Option::Some(is.read_int32()?);
9741                },
9742                tag => {
9743                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9744                },
9745            };
9746        }
9747        ::std::result::Result::Ok(())
9748    }
9749
9750    // Compute sizes of nested messages
9751    #[allow(unused_variables)]
9752    fn compute_size(&self) -> u64 {
9753        let mut my_size = 0;
9754        if let Some(v) = self.pos_x {
9755            my_size += ::protobuf::rt::int32_size(1, v);
9756        }
9757        if let Some(v) = self.pos_y {
9758            my_size += ::protobuf::rt::int32_size(2, v);
9759        }
9760        if let Some(v) = self.pos_z {
9761            my_size += ::protobuf::rt::int32_size(3, v);
9762        }
9763        if let Some(v) = self.index {
9764            my_size += ::protobuf::rt::int32_size(4, v);
9765        }
9766        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9767        self.special_fields.cached_size().set(my_size as u32);
9768        my_size
9769    }
9770
9771    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9772        if let Some(v) = self.pos_x {
9773            os.write_int32(1, v)?;
9774        }
9775        if let Some(v) = self.pos_y {
9776            os.write_int32(2, v)?;
9777        }
9778        if let Some(v) = self.pos_z {
9779            os.write_int32(3, v)?;
9780        }
9781        if let Some(v) = self.index {
9782            os.write_int32(4, v)?;
9783        }
9784        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9785        ::std::result::Result::Ok(())
9786    }
9787
9788    fn special_fields(&self) -> &::protobuf::SpecialFields {
9789        &self.special_fields
9790    }
9791
9792    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9793        &mut self.special_fields
9794    }
9795
9796    fn new() -> PlantDef {
9797        PlantDef::new()
9798    }
9799
9800    fn clear(&mut self) {
9801        self.pos_x = ::std::option::Option::None;
9802        self.pos_y = ::std::option::Option::None;
9803        self.pos_z = ::std::option::Option::None;
9804        self.index = ::std::option::Option::None;
9805        self.special_fields.clear();
9806    }
9807
9808    fn default_instance() -> &'static PlantDef {
9809        static instance: PlantDef = PlantDef {
9810            pos_x: ::std::option::Option::None,
9811            pos_y: ::std::option::Option::None,
9812            pos_z: ::std::option::Option::None,
9813            index: ::std::option::Option::None,
9814            special_fields: ::protobuf::SpecialFields::new(),
9815        };
9816        &instance
9817    }
9818}
9819
9820impl ::protobuf::MessageFull for PlantDef {
9821    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9822        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9823        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantDef").unwrap()).clone()
9824    }
9825}
9826
9827impl ::std::fmt::Display for PlantDef {
9828    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9829        ::protobuf::text_format::fmt(self, f)
9830    }
9831}
9832
9833impl ::protobuf::reflect::ProtobufValue for PlantDef {
9834    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9835}
9836
9837// @@protoc_insertion_point(message:RemoteFortressReader.PlantList)
9838#[derive(PartialEq,Clone,Default,Debug)]
9839pub struct PlantList {
9840    // message fields
9841    // @@protoc_insertion_point(field:RemoteFortressReader.PlantList.plant_list)
9842    pub plant_list: ::std::vec::Vec<PlantDef>,
9843    // special fields
9844    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantList.special_fields)
9845    pub special_fields: ::protobuf::SpecialFields,
9846}
9847
9848impl<'a> ::std::default::Default for &'a PlantList {
9849    fn default() -> &'a PlantList {
9850        <PlantList as ::protobuf::Message>::default_instance()
9851    }
9852}
9853
9854impl PlantList {
9855    pub fn new() -> PlantList {
9856        ::std::default::Default::default()
9857    }
9858
9859    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
9860        let mut fields = ::std::vec::Vec::with_capacity(1);
9861        let mut oneofs = ::std::vec::Vec::with_capacity(0);
9862        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
9863            "plant_list",
9864            |m: &PlantList| { &m.plant_list },
9865            |m: &mut PlantList| { &mut m.plant_list },
9866        ));
9867        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantList>(
9868            "PlantList",
9869            fields,
9870            oneofs,
9871        )
9872    }
9873}
9874
9875impl ::protobuf::Message for PlantList {
9876    const NAME: &'static str = "PlantList";
9877
9878    fn is_initialized(&self) -> bool {
9879        for v in &self.plant_list {
9880            if !v.is_initialized() {
9881                return false;
9882            }
9883        };
9884        true
9885    }
9886
9887    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
9888        while let Some(tag) = is.read_raw_tag_or_eof()? {
9889            match tag {
9890                10 => {
9891                    self.plant_list.push(is.read_message()?);
9892                },
9893                tag => {
9894                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
9895                },
9896            };
9897        }
9898        ::std::result::Result::Ok(())
9899    }
9900
9901    // Compute sizes of nested messages
9902    #[allow(unused_variables)]
9903    fn compute_size(&self) -> u64 {
9904        let mut my_size = 0;
9905        for value in &self.plant_list {
9906            let len = value.compute_size();
9907            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
9908        };
9909        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
9910        self.special_fields.cached_size().set(my_size as u32);
9911        my_size
9912    }
9913
9914    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
9915        for v in &self.plant_list {
9916            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
9917        };
9918        os.write_unknown_fields(self.special_fields.unknown_fields())?;
9919        ::std::result::Result::Ok(())
9920    }
9921
9922    fn special_fields(&self) -> &::protobuf::SpecialFields {
9923        &self.special_fields
9924    }
9925
9926    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
9927        &mut self.special_fields
9928    }
9929
9930    fn new() -> PlantList {
9931        PlantList::new()
9932    }
9933
9934    fn clear(&mut self) {
9935        self.plant_list.clear();
9936        self.special_fields.clear();
9937    }
9938
9939    fn default_instance() -> &'static PlantList {
9940        static instance: PlantList = PlantList {
9941            plant_list: ::std::vec::Vec::new(),
9942            special_fields: ::protobuf::SpecialFields::new(),
9943        };
9944        &instance
9945    }
9946}
9947
9948impl ::protobuf::MessageFull for PlantList {
9949    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
9950        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
9951        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantList").unwrap()).clone()
9952    }
9953}
9954
9955impl ::std::fmt::Display for PlantList {
9956    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
9957        ::protobuf::text_format::fmt(self, f)
9958    }
9959}
9960
9961impl ::protobuf::reflect::ProtobufValue for PlantList {
9962    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
9963}
9964
9965// @@protoc_insertion_point(message:RemoteFortressReader.ViewInfo)
9966#[derive(PartialEq,Clone,Default,Debug)]
9967pub struct ViewInfo {
9968    // message fields
9969    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_x)
9970    pub view_pos_x: ::std::option::Option<i32>,
9971    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_y)
9972    pub view_pos_y: ::std::option::Option<i32>,
9973    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_pos_z)
9974    pub view_pos_z: ::std::option::Option<i32>,
9975    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_size_x)
9976    pub view_size_x: ::std::option::Option<i32>,
9977    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.view_size_y)
9978    pub view_size_y: ::std::option::Option<i32>,
9979    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_x)
9980    pub cursor_pos_x: ::std::option::Option<i32>,
9981    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_y)
9982    pub cursor_pos_y: ::std::option::Option<i32>,
9983    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.cursor_pos_z)
9984    pub cursor_pos_z: ::std::option::Option<i32>,
9985    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.follow_unit_id)
9986    pub follow_unit_id: ::std::option::Option<i32>,
9987    // @@protoc_insertion_point(field:RemoteFortressReader.ViewInfo.follow_item_id)
9988    pub follow_item_id: ::std::option::Option<i32>,
9989    // special fields
9990    // @@protoc_insertion_point(special_field:RemoteFortressReader.ViewInfo.special_fields)
9991    pub special_fields: ::protobuf::SpecialFields,
9992}
9993
9994impl<'a> ::std::default::Default for &'a ViewInfo {
9995    fn default() -> &'a ViewInfo {
9996        <ViewInfo as ::protobuf::Message>::default_instance()
9997    }
9998}
9999
10000impl ViewInfo {
10001    pub fn new() -> ViewInfo {
10002        ::std::default::Default::default()
10003    }
10004
10005    // optional int32 view_pos_x = 1;
10006
10007    pub fn view_pos_x(&self) -> i32 {
10008        self.view_pos_x.unwrap_or(0)
10009    }
10010
10011    pub fn clear_view_pos_x(&mut self) {
10012        self.view_pos_x = ::std::option::Option::None;
10013    }
10014
10015    pub fn has_view_pos_x(&self) -> bool {
10016        self.view_pos_x.is_some()
10017    }
10018
10019    // Param is passed by value, moved
10020    pub fn set_view_pos_x(&mut self, v: i32) {
10021        self.view_pos_x = ::std::option::Option::Some(v);
10022    }
10023
10024    // optional int32 view_pos_y = 2;
10025
10026    pub fn view_pos_y(&self) -> i32 {
10027        self.view_pos_y.unwrap_or(0)
10028    }
10029
10030    pub fn clear_view_pos_y(&mut self) {
10031        self.view_pos_y = ::std::option::Option::None;
10032    }
10033
10034    pub fn has_view_pos_y(&self) -> bool {
10035        self.view_pos_y.is_some()
10036    }
10037
10038    // Param is passed by value, moved
10039    pub fn set_view_pos_y(&mut self, v: i32) {
10040        self.view_pos_y = ::std::option::Option::Some(v);
10041    }
10042
10043    // optional int32 view_pos_z = 3;
10044
10045    pub fn view_pos_z(&self) -> i32 {
10046        self.view_pos_z.unwrap_or(0)
10047    }
10048
10049    pub fn clear_view_pos_z(&mut self) {
10050        self.view_pos_z = ::std::option::Option::None;
10051    }
10052
10053    pub fn has_view_pos_z(&self) -> bool {
10054        self.view_pos_z.is_some()
10055    }
10056
10057    // Param is passed by value, moved
10058    pub fn set_view_pos_z(&mut self, v: i32) {
10059        self.view_pos_z = ::std::option::Option::Some(v);
10060    }
10061
10062    // optional int32 view_size_x = 4;
10063
10064    pub fn view_size_x(&self) -> i32 {
10065        self.view_size_x.unwrap_or(0)
10066    }
10067
10068    pub fn clear_view_size_x(&mut self) {
10069        self.view_size_x = ::std::option::Option::None;
10070    }
10071
10072    pub fn has_view_size_x(&self) -> bool {
10073        self.view_size_x.is_some()
10074    }
10075
10076    // Param is passed by value, moved
10077    pub fn set_view_size_x(&mut self, v: i32) {
10078        self.view_size_x = ::std::option::Option::Some(v);
10079    }
10080
10081    // optional int32 view_size_y = 5;
10082
10083    pub fn view_size_y(&self) -> i32 {
10084        self.view_size_y.unwrap_or(0)
10085    }
10086
10087    pub fn clear_view_size_y(&mut self) {
10088        self.view_size_y = ::std::option::Option::None;
10089    }
10090
10091    pub fn has_view_size_y(&self) -> bool {
10092        self.view_size_y.is_some()
10093    }
10094
10095    // Param is passed by value, moved
10096    pub fn set_view_size_y(&mut self, v: i32) {
10097        self.view_size_y = ::std::option::Option::Some(v);
10098    }
10099
10100    // optional int32 cursor_pos_x = 6;
10101
10102    pub fn cursor_pos_x(&self) -> i32 {
10103        self.cursor_pos_x.unwrap_or(0)
10104    }
10105
10106    pub fn clear_cursor_pos_x(&mut self) {
10107        self.cursor_pos_x = ::std::option::Option::None;
10108    }
10109
10110    pub fn has_cursor_pos_x(&self) -> bool {
10111        self.cursor_pos_x.is_some()
10112    }
10113
10114    // Param is passed by value, moved
10115    pub fn set_cursor_pos_x(&mut self, v: i32) {
10116        self.cursor_pos_x = ::std::option::Option::Some(v);
10117    }
10118
10119    // optional int32 cursor_pos_y = 7;
10120
10121    pub fn cursor_pos_y(&self) -> i32 {
10122        self.cursor_pos_y.unwrap_or(0)
10123    }
10124
10125    pub fn clear_cursor_pos_y(&mut self) {
10126        self.cursor_pos_y = ::std::option::Option::None;
10127    }
10128
10129    pub fn has_cursor_pos_y(&self) -> bool {
10130        self.cursor_pos_y.is_some()
10131    }
10132
10133    // Param is passed by value, moved
10134    pub fn set_cursor_pos_y(&mut self, v: i32) {
10135        self.cursor_pos_y = ::std::option::Option::Some(v);
10136    }
10137
10138    // optional int32 cursor_pos_z = 8;
10139
10140    pub fn cursor_pos_z(&self) -> i32 {
10141        self.cursor_pos_z.unwrap_or(0)
10142    }
10143
10144    pub fn clear_cursor_pos_z(&mut self) {
10145        self.cursor_pos_z = ::std::option::Option::None;
10146    }
10147
10148    pub fn has_cursor_pos_z(&self) -> bool {
10149        self.cursor_pos_z.is_some()
10150    }
10151
10152    // Param is passed by value, moved
10153    pub fn set_cursor_pos_z(&mut self, v: i32) {
10154        self.cursor_pos_z = ::std::option::Option::Some(v);
10155    }
10156
10157    // optional int32 follow_unit_id = 9;
10158
10159    pub fn follow_unit_id(&self) -> i32 {
10160        self.follow_unit_id.unwrap_or(-1i32)
10161    }
10162
10163    pub fn clear_follow_unit_id(&mut self) {
10164        self.follow_unit_id = ::std::option::Option::None;
10165    }
10166
10167    pub fn has_follow_unit_id(&self) -> bool {
10168        self.follow_unit_id.is_some()
10169    }
10170
10171    // Param is passed by value, moved
10172    pub fn set_follow_unit_id(&mut self, v: i32) {
10173        self.follow_unit_id = ::std::option::Option::Some(v);
10174    }
10175
10176    // optional int32 follow_item_id = 10;
10177
10178    pub fn follow_item_id(&self) -> i32 {
10179        self.follow_item_id.unwrap_or(-1i32)
10180    }
10181
10182    pub fn clear_follow_item_id(&mut self) {
10183        self.follow_item_id = ::std::option::Option::None;
10184    }
10185
10186    pub fn has_follow_item_id(&self) -> bool {
10187        self.follow_item_id.is_some()
10188    }
10189
10190    // Param is passed by value, moved
10191    pub fn set_follow_item_id(&mut self, v: i32) {
10192        self.follow_item_id = ::std::option::Option::Some(v);
10193    }
10194
10195    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
10196        let mut fields = ::std::vec::Vec::with_capacity(10);
10197        let mut oneofs = ::std::vec::Vec::with_capacity(0);
10198        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10199            "view_pos_x",
10200            |m: &ViewInfo| { &m.view_pos_x },
10201            |m: &mut ViewInfo| { &mut m.view_pos_x },
10202        ));
10203        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10204            "view_pos_y",
10205            |m: &ViewInfo| { &m.view_pos_y },
10206            |m: &mut ViewInfo| { &mut m.view_pos_y },
10207        ));
10208        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10209            "view_pos_z",
10210            |m: &ViewInfo| { &m.view_pos_z },
10211            |m: &mut ViewInfo| { &mut m.view_pos_z },
10212        ));
10213        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10214            "view_size_x",
10215            |m: &ViewInfo| { &m.view_size_x },
10216            |m: &mut ViewInfo| { &mut m.view_size_x },
10217        ));
10218        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10219            "view_size_y",
10220            |m: &ViewInfo| { &m.view_size_y },
10221            |m: &mut ViewInfo| { &mut m.view_size_y },
10222        ));
10223        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10224            "cursor_pos_x",
10225            |m: &ViewInfo| { &m.cursor_pos_x },
10226            |m: &mut ViewInfo| { &mut m.cursor_pos_x },
10227        ));
10228        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10229            "cursor_pos_y",
10230            |m: &ViewInfo| { &m.cursor_pos_y },
10231            |m: &mut ViewInfo| { &mut m.cursor_pos_y },
10232        ));
10233        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10234            "cursor_pos_z",
10235            |m: &ViewInfo| { &m.cursor_pos_z },
10236            |m: &mut ViewInfo| { &mut m.cursor_pos_z },
10237        ));
10238        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10239            "follow_unit_id",
10240            |m: &ViewInfo| { &m.follow_unit_id },
10241            |m: &mut ViewInfo| { &mut m.follow_unit_id },
10242        ));
10243        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10244            "follow_item_id",
10245            |m: &ViewInfo| { &m.follow_item_id },
10246            |m: &mut ViewInfo| { &mut m.follow_item_id },
10247        ));
10248        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ViewInfo>(
10249            "ViewInfo",
10250            fields,
10251            oneofs,
10252        )
10253    }
10254}
10255
10256impl ::protobuf::Message for ViewInfo {
10257    const NAME: &'static str = "ViewInfo";
10258
10259    fn is_initialized(&self) -> bool {
10260        true
10261    }
10262
10263    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
10264        while let Some(tag) = is.read_raw_tag_or_eof()? {
10265            match tag {
10266                8 => {
10267                    self.view_pos_x = ::std::option::Option::Some(is.read_int32()?);
10268                },
10269                16 => {
10270                    self.view_pos_y = ::std::option::Option::Some(is.read_int32()?);
10271                },
10272                24 => {
10273                    self.view_pos_z = ::std::option::Option::Some(is.read_int32()?);
10274                },
10275                32 => {
10276                    self.view_size_x = ::std::option::Option::Some(is.read_int32()?);
10277                },
10278                40 => {
10279                    self.view_size_y = ::std::option::Option::Some(is.read_int32()?);
10280                },
10281                48 => {
10282                    self.cursor_pos_x = ::std::option::Option::Some(is.read_int32()?);
10283                },
10284                56 => {
10285                    self.cursor_pos_y = ::std::option::Option::Some(is.read_int32()?);
10286                },
10287                64 => {
10288                    self.cursor_pos_z = ::std::option::Option::Some(is.read_int32()?);
10289                },
10290                72 => {
10291                    self.follow_unit_id = ::std::option::Option::Some(is.read_int32()?);
10292                },
10293                80 => {
10294                    self.follow_item_id = ::std::option::Option::Some(is.read_int32()?);
10295                },
10296                tag => {
10297                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
10298                },
10299            };
10300        }
10301        ::std::result::Result::Ok(())
10302    }
10303
10304    // Compute sizes of nested messages
10305    #[allow(unused_variables)]
10306    fn compute_size(&self) -> u64 {
10307        let mut my_size = 0;
10308        if let Some(v) = self.view_pos_x {
10309            my_size += ::protobuf::rt::int32_size(1, v);
10310        }
10311        if let Some(v) = self.view_pos_y {
10312            my_size += ::protobuf::rt::int32_size(2, v);
10313        }
10314        if let Some(v) = self.view_pos_z {
10315            my_size += ::protobuf::rt::int32_size(3, v);
10316        }
10317        if let Some(v) = self.view_size_x {
10318            my_size += ::protobuf::rt::int32_size(4, v);
10319        }
10320        if let Some(v) = self.view_size_y {
10321            my_size += ::protobuf::rt::int32_size(5, v);
10322        }
10323        if let Some(v) = self.cursor_pos_x {
10324            my_size += ::protobuf::rt::int32_size(6, v);
10325        }
10326        if let Some(v) = self.cursor_pos_y {
10327            my_size += ::protobuf::rt::int32_size(7, v);
10328        }
10329        if let Some(v) = self.cursor_pos_z {
10330            my_size += ::protobuf::rt::int32_size(8, v);
10331        }
10332        if let Some(v) = self.follow_unit_id {
10333            my_size += ::protobuf::rt::int32_size(9, v);
10334        }
10335        if let Some(v) = self.follow_item_id {
10336            my_size += ::protobuf::rt::int32_size(10, v);
10337        }
10338        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
10339        self.special_fields.cached_size().set(my_size as u32);
10340        my_size
10341    }
10342
10343    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
10344        if let Some(v) = self.view_pos_x {
10345            os.write_int32(1, v)?;
10346        }
10347        if let Some(v) = self.view_pos_y {
10348            os.write_int32(2, v)?;
10349        }
10350        if let Some(v) = self.view_pos_z {
10351            os.write_int32(3, v)?;
10352        }
10353        if let Some(v) = self.view_size_x {
10354            os.write_int32(4, v)?;
10355        }
10356        if let Some(v) = self.view_size_y {
10357            os.write_int32(5, v)?;
10358        }
10359        if let Some(v) = self.cursor_pos_x {
10360            os.write_int32(6, v)?;
10361        }
10362        if let Some(v) = self.cursor_pos_y {
10363            os.write_int32(7, v)?;
10364        }
10365        if let Some(v) = self.cursor_pos_z {
10366            os.write_int32(8, v)?;
10367        }
10368        if let Some(v) = self.follow_unit_id {
10369            os.write_int32(9, v)?;
10370        }
10371        if let Some(v) = self.follow_item_id {
10372            os.write_int32(10, v)?;
10373        }
10374        os.write_unknown_fields(self.special_fields.unknown_fields())?;
10375        ::std::result::Result::Ok(())
10376    }
10377
10378    fn special_fields(&self) -> &::protobuf::SpecialFields {
10379        &self.special_fields
10380    }
10381
10382    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
10383        &mut self.special_fields
10384    }
10385
10386    fn new() -> ViewInfo {
10387        ViewInfo::new()
10388    }
10389
10390    fn clear(&mut self) {
10391        self.view_pos_x = ::std::option::Option::None;
10392        self.view_pos_y = ::std::option::Option::None;
10393        self.view_pos_z = ::std::option::Option::None;
10394        self.view_size_x = ::std::option::Option::None;
10395        self.view_size_y = ::std::option::Option::None;
10396        self.cursor_pos_x = ::std::option::Option::None;
10397        self.cursor_pos_y = ::std::option::Option::None;
10398        self.cursor_pos_z = ::std::option::Option::None;
10399        self.follow_unit_id = ::std::option::Option::None;
10400        self.follow_item_id = ::std::option::Option::None;
10401        self.special_fields.clear();
10402    }
10403
10404    fn default_instance() -> &'static ViewInfo {
10405        static instance: ViewInfo = ViewInfo {
10406            view_pos_x: ::std::option::Option::None,
10407            view_pos_y: ::std::option::Option::None,
10408            view_pos_z: ::std::option::Option::None,
10409            view_size_x: ::std::option::Option::None,
10410            view_size_y: ::std::option::Option::None,
10411            cursor_pos_x: ::std::option::Option::None,
10412            cursor_pos_y: ::std::option::Option::None,
10413            cursor_pos_z: ::std::option::Option::None,
10414            follow_unit_id: ::std::option::Option::None,
10415            follow_item_id: ::std::option::Option::None,
10416            special_fields: ::protobuf::SpecialFields::new(),
10417        };
10418        &instance
10419    }
10420}
10421
10422impl ::protobuf::MessageFull for ViewInfo {
10423    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
10424        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
10425        descriptor.get(|| file_descriptor().message_by_package_relative_name("ViewInfo").unwrap()).clone()
10426    }
10427}
10428
10429impl ::std::fmt::Display for ViewInfo {
10430    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10431        ::protobuf::text_format::fmt(self, f)
10432    }
10433}
10434
10435impl ::protobuf::reflect::ProtobufValue for ViewInfo {
10436    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
10437}
10438
10439// @@protoc_insertion_point(message:RemoteFortressReader.MapInfo)
10440#[derive(PartialEq,Clone,Default,Debug)]
10441pub struct MapInfo {
10442    // message fields
10443    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_x)
10444    pub block_size_x: ::std::option::Option<i32>,
10445    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_y)
10446    pub block_size_y: ::std::option::Option<i32>,
10447    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_size_z)
10448    pub block_size_z: ::std::option::Option<i32>,
10449    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_x)
10450    pub block_pos_x: ::std::option::Option<i32>,
10451    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_y)
10452    pub block_pos_y: ::std::option::Option<i32>,
10453    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.block_pos_z)
10454    pub block_pos_z: ::std::option::Option<i32>,
10455    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.world_name)
10456    pub world_name: ::std::option::Option<::std::string::String>,
10457    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.world_name_english)
10458    pub world_name_english: ::std::option::Option<::std::string::String>,
10459    // @@protoc_insertion_point(field:RemoteFortressReader.MapInfo.save_name)
10460    pub save_name: ::std::option::Option<::std::string::String>,
10461    // special fields
10462    // @@protoc_insertion_point(special_field:RemoteFortressReader.MapInfo.special_fields)
10463    pub special_fields: ::protobuf::SpecialFields,
10464}
10465
10466impl<'a> ::std::default::Default for &'a MapInfo {
10467    fn default() -> &'a MapInfo {
10468        <MapInfo as ::protobuf::Message>::default_instance()
10469    }
10470}
10471
10472impl MapInfo {
10473    pub fn new() -> MapInfo {
10474        ::std::default::Default::default()
10475    }
10476
10477    // optional int32 block_size_x = 1;
10478
10479    pub fn block_size_x(&self) -> i32 {
10480        self.block_size_x.unwrap_or(0)
10481    }
10482
10483    pub fn clear_block_size_x(&mut self) {
10484        self.block_size_x = ::std::option::Option::None;
10485    }
10486
10487    pub fn has_block_size_x(&self) -> bool {
10488        self.block_size_x.is_some()
10489    }
10490
10491    // Param is passed by value, moved
10492    pub fn set_block_size_x(&mut self, v: i32) {
10493        self.block_size_x = ::std::option::Option::Some(v);
10494    }
10495
10496    // optional int32 block_size_y = 2;
10497
10498    pub fn block_size_y(&self) -> i32 {
10499        self.block_size_y.unwrap_or(0)
10500    }
10501
10502    pub fn clear_block_size_y(&mut self) {
10503        self.block_size_y = ::std::option::Option::None;
10504    }
10505
10506    pub fn has_block_size_y(&self) -> bool {
10507        self.block_size_y.is_some()
10508    }
10509
10510    // Param is passed by value, moved
10511    pub fn set_block_size_y(&mut self, v: i32) {
10512        self.block_size_y = ::std::option::Option::Some(v);
10513    }
10514
10515    // optional int32 block_size_z = 3;
10516
10517    pub fn block_size_z(&self) -> i32 {
10518        self.block_size_z.unwrap_or(0)
10519    }
10520
10521    pub fn clear_block_size_z(&mut self) {
10522        self.block_size_z = ::std::option::Option::None;
10523    }
10524
10525    pub fn has_block_size_z(&self) -> bool {
10526        self.block_size_z.is_some()
10527    }
10528
10529    // Param is passed by value, moved
10530    pub fn set_block_size_z(&mut self, v: i32) {
10531        self.block_size_z = ::std::option::Option::Some(v);
10532    }
10533
10534    // optional int32 block_pos_x = 4;
10535
10536    pub fn block_pos_x(&self) -> i32 {
10537        self.block_pos_x.unwrap_or(0)
10538    }
10539
10540    pub fn clear_block_pos_x(&mut self) {
10541        self.block_pos_x = ::std::option::Option::None;
10542    }
10543
10544    pub fn has_block_pos_x(&self) -> bool {
10545        self.block_pos_x.is_some()
10546    }
10547
10548    // Param is passed by value, moved
10549    pub fn set_block_pos_x(&mut self, v: i32) {
10550        self.block_pos_x = ::std::option::Option::Some(v);
10551    }
10552
10553    // optional int32 block_pos_y = 5;
10554
10555    pub fn block_pos_y(&self) -> i32 {
10556        self.block_pos_y.unwrap_or(0)
10557    }
10558
10559    pub fn clear_block_pos_y(&mut self) {
10560        self.block_pos_y = ::std::option::Option::None;
10561    }
10562
10563    pub fn has_block_pos_y(&self) -> bool {
10564        self.block_pos_y.is_some()
10565    }
10566
10567    // Param is passed by value, moved
10568    pub fn set_block_pos_y(&mut self, v: i32) {
10569        self.block_pos_y = ::std::option::Option::Some(v);
10570    }
10571
10572    // optional int32 block_pos_z = 6;
10573
10574    pub fn block_pos_z(&self) -> i32 {
10575        self.block_pos_z.unwrap_or(0)
10576    }
10577
10578    pub fn clear_block_pos_z(&mut self) {
10579        self.block_pos_z = ::std::option::Option::None;
10580    }
10581
10582    pub fn has_block_pos_z(&self) -> bool {
10583        self.block_pos_z.is_some()
10584    }
10585
10586    // Param is passed by value, moved
10587    pub fn set_block_pos_z(&mut self, v: i32) {
10588        self.block_pos_z = ::std::option::Option::Some(v);
10589    }
10590
10591    // optional string world_name = 7;
10592
10593    pub fn world_name(&self) -> &str {
10594        match self.world_name.as_ref() {
10595            Some(v) => v,
10596            None => "",
10597        }
10598    }
10599
10600    pub fn clear_world_name(&mut self) {
10601        self.world_name = ::std::option::Option::None;
10602    }
10603
10604    pub fn has_world_name(&self) -> bool {
10605        self.world_name.is_some()
10606    }
10607
10608    // Param is passed by value, moved
10609    pub fn set_world_name(&mut self, v: ::std::string::String) {
10610        self.world_name = ::std::option::Option::Some(v);
10611    }
10612
10613    // Mutable pointer to the field.
10614    // If field is not initialized, it is initialized with default value first.
10615    pub fn mut_world_name(&mut self) -> &mut ::std::string::String {
10616        if self.world_name.is_none() {
10617            self.world_name = ::std::option::Option::Some(::std::string::String::new());
10618        }
10619        self.world_name.as_mut().unwrap()
10620    }
10621
10622    // Take field
10623    pub fn take_world_name(&mut self) -> ::std::string::String {
10624        self.world_name.take().unwrap_or_else(|| ::std::string::String::new())
10625    }
10626
10627    // optional string world_name_english = 8;
10628
10629    pub fn world_name_english(&self) -> &str {
10630        match self.world_name_english.as_ref() {
10631            Some(v) => v,
10632            None => "",
10633        }
10634    }
10635
10636    pub fn clear_world_name_english(&mut self) {
10637        self.world_name_english = ::std::option::Option::None;
10638    }
10639
10640    pub fn has_world_name_english(&self) -> bool {
10641        self.world_name_english.is_some()
10642    }
10643
10644    // Param is passed by value, moved
10645    pub fn set_world_name_english(&mut self, v: ::std::string::String) {
10646        self.world_name_english = ::std::option::Option::Some(v);
10647    }
10648
10649    // Mutable pointer to the field.
10650    // If field is not initialized, it is initialized with default value first.
10651    pub fn mut_world_name_english(&mut self) -> &mut ::std::string::String {
10652        if self.world_name_english.is_none() {
10653            self.world_name_english = ::std::option::Option::Some(::std::string::String::new());
10654        }
10655        self.world_name_english.as_mut().unwrap()
10656    }
10657
10658    // Take field
10659    pub fn take_world_name_english(&mut self) -> ::std::string::String {
10660        self.world_name_english.take().unwrap_or_else(|| ::std::string::String::new())
10661    }
10662
10663    // optional string save_name = 9;
10664
10665    pub fn save_name(&self) -> &str {
10666        match self.save_name.as_ref() {
10667            Some(v) => v,
10668            None => "",
10669        }
10670    }
10671
10672    pub fn clear_save_name(&mut self) {
10673        self.save_name = ::std::option::Option::None;
10674    }
10675
10676    pub fn has_save_name(&self) -> bool {
10677        self.save_name.is_some()
10678    }
10679
10680    // Param is passed by value, moved
10681    pub fn set_save_name(&mut self, v: ::std::string::String) {
10682        self.save_name = ::std::option::Option::Some(v);
10683    }
10684
10685    // Mutable pointer to the field.
10686    // If field is not initialized, it is initialized with default value first.
10687    pub fn mut_save_name(&mut self) -> &mut ::std::string::String {
10688        if self.save_name.is_none() {
10689            self.save_name = ::std::option::Option::Some(::std::string::String::new());
10690        }
10691        self.save_name.as_mut().unwrap()
10692    }
10693
10694    // Take field
10695    pub fn take_save_name(&mut self) -> ::std::string::String {
10696        self.save_name.take().unwrap_or_else(|| ::std::string::String::new())
10697    }
10698
10699    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
10700        let mut fields = ::std::vec::Vec::with_capacity(9);
10701        let mut oneofs = ::std::vec::Vec::with_capacity(0);
10702        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10703            "block_size_x",
10704            |m: &MapInfo| { &m.block_size_x },
10705            |m: &mut MapInfo| { &mut m.block_size_x },
10706        ));
10707        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10708            "block_size_y",
10709            |m: &MapInfo| { &m.block_size_y },
10710            |m: &mut MapInfo| { &mut m.block_size_y },
10711        ));
10712        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10713            "block_size_z",
10714            |m: &MapInfo| { &m.block_size_z },
10715            |m: &mut MapInfo| { &mut m.block_size_z },
10716        ));
10717        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10718            "block_pos_x",
10719            |m: &MapInfo| { &m.block_pos_x },
10720            |m: &mut MapInfo| { &mut m.block_pos_x },
10721        ));
10722        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10723            "block_pos_y",
10724            |m: &MapInfo| { &m.block_pos_y },
10725            |m: &mut MapInfo| { &mut m.block_pos_y },
10726        ));
10727        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10728            "block_pos_z",
10729            |m: &MapInfo| { &m.block_pos_z },
10730            |m: &mut MapInfo| { &mut m.block_pos_z },
10731        ));
10732        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10733            "world_name",
10734            |m: &MapInfo| { &m.world_name },
10735            |m: &mut MapInfo| { &mut m.world_name },
10736        ));
10737        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10738            "world_name_english",
10739            |m: &MapInfo| { &m.world_name_english },
10740            |m: &mut MapInfo| { &mut m.world_name_english },
10741        ));
10742        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
10743            "save_name",
10744            |m: &MapInfo| { &m.save_name },
10745            |m: &mut MapInfo| { &mut m.save_name },
10746        ));
10747        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<MapInfo>(
10748            "MapInfo",
10749            fields,
10750            oneofs,
10751        )
10752    }
10753}
10754
10755impl ::protobuf::Message for MapInfo {
10756    const NAME: &'static str = "MapInfo";
10757
10758    fn is_initialized(&self) -> bool {
10759        true
10760    }
10761
10762    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
10763        while let Some(tag) = is.read_raw_tag_or_eof()? {
10764            match tag {
10765                8 => {
10766                    self.block_size_x = ::std::option::Option::Some(is.read_int32()?);
10767                },
10768                16 => {
10769                    self.block_size_y = ::std::option::Option::Some(is.read_int32()?);
10770                },
10771                24 => {
10772                    self.block_size_z = ::std::option::Option::Some(is.read_int32()?);
10773                },
10774                32 => {
10775                    self.block_pos_x = ::std::option::Option::Some(is.read_int32()?);
10776                },
10777                40 => {
10778                    self.block_pos_y = ::std::option::Option::Some(is.read_int32()?);
10779                },
10780                48 => {
10781                    self.block_pos_z = ::std::option::Option::Some(is.read_int32()?);
10782                },
10783                58 => {
10784                    self.world_name = ::std::option::Option::Some(is.read_string()?);
10785                },
10786                66 => {
10787                    self.world_name_english = ::std::option::Option::Some(is.read_string()?);
10788                },
10789                74 => {
10790                    self.save_name = ::std::option::Option::Some(is.read_string()?);
10791                },
10792                tag => {
10793                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
10794                },
10795            };
10796        }
10797        ::std::result::Result::Ok(())
10798    }
10799
10800    // Compute sizes of nested messages
10801    #[allow(unused_variables)]
10802    fn compute_size(&self) -> u64 {
10803        let mut my_size = 0;
10804        if let Some(v) = self.block_size_x {
10805            my_size += ::protobuf::rt::int32_size(1, v);
10806        }
10807        if let Some(v) = self.block_size_y {
10808            my_size += ::protobuf::rt::int32_size(2, v);
10809        }
10810        if let Some(v) = self.block_size_z {
10811            my_size += ::protobuf::rt::int32_size(3, v);
10812        }
10813        if let Some(v) = self.block_pos_x {
10814            my_size += ::protobuf::rt::int32_size(4, v);
10815        }
10816        if let Some(v) = self.block_pos_y {
10817            my_size += ::protobuf::rt::int32_size(5, v);
10818        }
10819        if let Some(v) = self.block_pos_z {
10820            my_size += ::protobuf::rt::int32_size(6, v);
10821        }
10822        if let Some(v) = self.world_name.as_ref() {
10823            my_size += ::protobuf::rt::string_size(7, &v);
10824        }
10825        if let Some(v) = self.world_name_english.as_ref() {
10826            my_size += ::protobuf::rt::string_size(8, &v);
10827        }
10828        if let Some(v) = self.save_name.as_ref() {
10829            my_size += ::protobuf::rt::string_size(9, &v);
10830        }
10831        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
10832        self.special_fields.cached_size().set(my_size as u32);
10833        my_size
10834    }
10835
10836    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
10837        if let Some(v) = self.block_size_x {
10838            os.write_int32(1, v)?;
10839        }
10840        if let Some(v) = self.block_size_y {
10841            os.write_int32(2, v)?;
10842        }
10843        if let Some(v) = self.block_size_z {
10844            os.write_int32(3, v)?;
10845        }
10846        if let Some(v) = self.block_pos_x {
10847            os.write_int32(4, v)?;
10848        }
10849        if let Some(v) = self.block_pos_y {
10850            os.write_int32(5, v)?;
10851        }
10852        if let Some(v) = self.block_pos_z {
10853            os.write_int32(6, v)?;
10854        }
10855        if let Some(v) = self.world_name.as_ref() {
10856            os.write_string(7, v)?;
10857        }
10858        if let Some(v) = self.world_name_english.as_ref() {
10859            os.write_string(8, v)?;
10860        }
10861        if let Some(v) = self.save_name.as_ref() {
10862            os.write_string(9, v)?;
10863        }
10864        os.write_unknown_fields(self.special_fields.unknown_fields())?;
10865        ::std::result::Result::Ok(())
10866    }
10867
10868    fn special_fields(&self) -> &::protobuf::SpecialFields {
10869        &self.special_fields
10870    }
10871
10872    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
10873        &mut self.special_fields
10874    }
10875
10876    fn new() -> MapInfo {
10877        MapInfo::new()
10878    }
10879
10880    fn clear(&mut self) {
10881        self.block_size_x = ::std::option::Option::None;
10882        self.block_size_y = ::std::option::Option::None;
10883        self.block_size_z = ::std::option::Option::None;
10884        self.block_pos_x = ::std::option::Option::None;
10885        self.block_pos_y = ::std::option::Option::None;
10886        self.block_pos_z = ::std::option::Option::None;
10887        self.world_name = ::std::option::Option::None;
10888        self.world_name_english = ::std::option::Option::None;
10889        self.save_name = ::std::option::Option::None;
10890        self.special_fields.clear();
10891    }
10892
10893    fn default_instance() -> &'static MapInfo {
10894        static instance: MapInfo = MapInfo {
10895            block_size_x: ::std::option::Option::None,
10896            block_size_y: ::std::option::Option::None,
10897            block_size_z: ::std::option::Option::None,
10898            block_pos_x: ::std::option::Option::None,
10899            block_pos_y: ::std::option::Option::None,
10900            block_pos_z: ::std::option::Option::None,
10901            world_name: ::std::option::Option::None,
10902            world_name_english: ::std::option::Option::None,
10903            save_name: ::std::option::Option::None,
10904            special_fields: ::protobuf::SpecialFields::new(),
10905        };
10906        &instance
10907    }
10908}
10909
10910impl ::protobuf::MessageFull for MapInfo {
10911    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
10912        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
10913        descriptor.get(|| file_descriptor().message_by_package_relative_name("MapInfo").unwrap()).clone()
10914    }
10915}
10916
10917impl ::std::fmt::Display for MapInfo {
10918    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
10919        ::protobuf::text_format::fmt(self, f)
10920    }
10921}
10922
10923impl ::protobuf::reflect::ProtobufValue for MapInfo {
10924    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
10925}
10926
10927// @@protoc_insertion_point(message:RemoteFortressReader.Cloud)
10928#[derive(PartialEq,Clone,Default,Debug)]
10929pub struct Cloud {
10930    // message fields
10931    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.front)
10932    pub front: ::std::option::Option<::protobuf::EnumOrUnknown<FrontType>>,
10933    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.cumulus)
10934    pub cumulus: ::std::option::Option<::protobuf::EnumOrUnknown<CumulusType>>,
10935    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.cirrus)
10936    pub cirrus: ::std::option::Option<bool>,
10937    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.stratus)
10938    pub stratus: ::std::option::Option<::protobuf::EnumOrUnknown<StratusType>>,
10939    // @@protoc_insertion_point(field:RemoteFortressReader.Cloud.fog)
10940    pub fog: ::std::option::Option<::protobuf::EnumOrUnknown<FogType>>,
10941    // special fields
10942    // @@protoc_insertion_point(special_field:RemoteFortressReader.Cloud.special_fields)
10943    pub special_fields: ::protobuf::SpecialFields,
10944}
10945
10946impl<'a> ::std::default::Default for &'a Cloud {
10947    fn default() -> &'a Cloud {
10948        <Cloud as ::protobuf::Message>::default_instance()
10949    }
10950}
10951
10952impl Cloud {
10953    pub fn new() -> Cloud {
10954        ::std::default::Default::default()
10955    }
10956
10957    // optional .RemoteFortressReader.FrontType front = 1;
10958
10959    pub fn front(&self) -> FrontType {
10960        match self.front {
10961            Some(e) => e.enum_value_or(FrontType::FRONT_NONE),
10962            None => FrontType::FRONT_NONE,
10963        }
10964    }
10965
10966    pub fn clear_front(&mut self) {
10967        self.front = ::std::option::Option::None;
10968    }
10969
10970    pub fn has_front(&self) -> bool {
10971        self.front.is_some()
10972    }
10973
10974    // Param is passed by value, moved
10975    pub fn set_front(&mut self, v: FrontType) {
10976        self.front = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
10977    }
10978
10979    // optional .RemoteFortressReader.CumulusType cumulus = 2;
10980
10981    pub fn cumulus(&self) -> CumulusType {
10982        match self.cumulus {
10983            Some(e) => e.enum_value_or(CumulusType::CUMULUS_NONE),
10984            None => CumulusType::CUMULUS_NONE,
10985        }
10986    }
10987
10988    pub fn clear_cumulus(&mut self) {
10989        self.cumulus = ::std::option::Option::None;
10990    }
10991
10992    pub fn has_cumulus(&self) -> bool {
10993        self.cumulus.is_some()
10994    }
10995
10996    // Param is passed by value, moved
10997    pub fn set_cumulus(&mut self, v: CumulusType) {
10998        self.cumulus = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
10999    }
11000
11001    // optional bool cirrus = 3;
11002
11003    pub fn cirrus(&self) -> bool {
11004        self.cirrus.unwrap_or(false)
11005    }
11006
11007    pub fn clear_cirrus(&mut self) {
11008        self.cirrus = ::std::option::Option::None;
11009    }
11010
11011    pub fn has_cirrus(&self) -> bool {
11012        self.cirrus.is_some()
11013    }
11014
11015    // Param is passed by value, moved
11016    pub fn set_cirrus(&mut self, v: bool) {
11017        self.cirrus = ::std::option::Option::Some(v);
11018    }
11019
11020    // optional .RemoteFortressReader.StratusType stratus = 4;
11021
11022    pub fn stratus(&self) -> StratusType {
11023        match self.stratus {
11024            Some(e) => e.enum_value_or(StratusType::STRATUS_NONE),
11025            None => StratusType::STRATUS_NONE,
11026        }
11027    }
11028
11029    pub fn clear_stratus(&mut self) {
11030        self.stratus = ::std::option::Option::None;
11031    }
11032
11033    pub fn has_stratus(&self) -> bool {
11034        self.stratus.is_some()
11035    }
11036
11037    // Param is passed by value, moved
11038    pub fn set_stratus(&mut self, v: StratusType) {
11039        self.stratus = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11040    }
11041
11042    // optional .RemoteFortressReader.FogType fog = 5;
11043
11044    pub fn fog(&self) -> FogType {
11045        match self.fog {
11046            Some(e) => e.enum_value_or(FogType::FOG_NONE),
11047            None => FogType::FOG_NONE,
11048        }
11049    }
11050
11051    pub fn clear_fog(&mut self) {
11052        self.fog = ::std::option::Option::None;
11053    }
11054
11055    pub fn has_fog(&self) -> bool {
11056        self.fog.is_some()
11057    }
11058
11059    // Param is passed by value, moved
11060    pub fn set_fog(&mut self, v: FogType) {
11061        self.fog = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11062    }
11063
11064    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
11065        let mut fields = ::std::vec::Vec::with_capacity(5);
11066        let mut oneofs = ::std::vec::Vec::with_capacity(0);
11067        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11068            "front",
11069            |m: &Cloud| { &m.front },
11070            |m: &mut Cloud| { &mut m.front },
11071        ));
11072        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11073            "cumulus",
11074            |m: &Cloud| { &m.cumulus },
11075            |m: &mut Cloud| { &mut m.cumulus },
11076        ));
11077        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11078            "cirrus",
11079            |m: &Cloud| { &m.cirrus },
11080            |m: &mut Cloud| { &mut m.cirrus },
11081        ));
11082        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11083            "stratus",
11084            |m: &Cloud| { &m.stratus },
11085            |m: &mut Cloud| { &mut m.stratus },
11086        ));
11087        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11088            "fog",
11089            |m: &Cloud| { &m.fog },
11090            |m: &mut Cloud| { &mut m.fog },
11091        ));
11092        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Cloud>(
11093            "Cloud",
11094            fields,
11095            oneofs,
11096        )
11097    }
11098}
11099
11100impl ::protobuf::Message for Cloud {
11101    const NAME: &'static str = "Cloud";
11102
11103    fn is_initialized(&self) -> bool {
11104        true
11105    }
11106
11107    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
11108        while let Some(tag) = is.read_raw_tag_or_eof()? {
11109            match tag {
11110                8 => {
11111                    self.front = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11112                },
11113                16 => {
11114                    self.cumulus = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11115                },
11116                24 => {
11117                    self.cirrus = ::std::option::Option::Some(is.read_bool()?);
11118                },
11119                32 => {
11120                    self.stratus = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11121                },
11122                40 => {
11123                    self.fog = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11124                },
11125                tag => {
11126                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
11127                },
11128            };
11129        }
11130        ::std::result::Result::Ok(())
11131    }
11132
11133    // Compute sizes of nested messages
11134    #[allow(unused_variables)]
11135    fn compute_size(&self) -> u64 {
11136        let mut my_size = 0;
11137        if let Some(v) = self.front {
11138            my_size += ::protobuf::rt::int32_size(1, v.value());
11139        }
11140        if let Some(v) = self.cumulus {
11141            my_size += ::protobuf::rt::int32_size(2, v.value());
11142        }
11143        if let Some(v) = self.cirrus {
11144            my_size += 1 + 1;
11145        }
11146        if let Some(v) = self.stratus {
11147            my_size += ::protobuf::rt::int32_size(4, v.value());
11148        }
11149        if let Some(v) = self.fog {
11150            my_size += ::protobuf::rt::int32_size(5, v.value());
11151        }
11152        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
11153        self.special_fields.cached_size().set(my_size as u32);
11154        my_size
11155    }
11156
11157    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
11158        if let Some(v) = self.front {
11159            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
11160        }
11161        if let Some(v) = self.cumulus {
11162            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
11163        }
11164        if let Some(v) = self.cirrus {
11165            os.write_bool(3, v)?;
11166        }
11167        if let Some(v) = self.stratus {
11168            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
11169        }
11170        if let Some(v) = self.fog {
11171            os.write_enum(5, ::protobuf::EnumOrUnknown::value(&v))?;
11172        }
11173        os.write_unknown_fields(self.special_fields.unknown_fields())?;
11174        ::std::result::Result::Ok(())
11175    }
11176
11177    fn special_fields(&self) -> &::protobuf::SpecialFields {
11178        &self.special_fields
11179    }
11180
11181    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
11182        &mut self.special_fields
11183    }
11184
11185    fn new() -> Cloud {
11186        Cloud::new()
11187    }
11188
11189    fn clear(&mut self) {
11190        self.front = ::std::option::Option::None;
11191        self.cumulus = ::std::option::Option::None;
11192        self.cirrus = ::std::option::Option::None;
11193        self.stratus = ::std::option::Option::None;
11194        self.fog = ::std::option::Option::None;
11195        self.special_fields.clear();
11196    }
11197
11198    fn default_instance() -> &'static Cloud {
11199        static instance: Cloud = Cloud {
11200            front: ::std::option::Option::None,
11201            cumulus: ::std::option::Option::None,
11202            cirrus: ::std::option::Option::None,
11203            stratus: ::std::option::Option::None,
11204            fog: ::std::option::Option::None,
11205            special_fields: ::protobuf::SpecialFields::new(),
11206        };
11207        &instance
11208    }
11209}
11210
11211impl ::protobuf::MessageFull for Cloud {
11212    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
11213        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
11214        descriptor.get(|| file_descriptor().message_by_package_relative_name("Cloud").unwrap()).clone()
11215    }
11216}
11217
11218impl ::std::fmt::Display for Cloud {
11219    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
11220        ::protobuf::text_format::fmt(self, f)
11221    }
11222}
11223
11224impl ::protobuf::reflect::ProtobufValue for Cloud {
11225    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
11226}
11227
11228// @@protoc_insertion_point(message:RemoteFortressReader.WorldMap)
11229#[derive(PartialEq,Clone,Default,Debug)]
11230pub struct WorldMap {
11231    // message fields
11232    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_width)
11233    pub world_width: ::std::option::Option<i32>,
11234    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_height)
11235    pub world_height: ::std::option::Option<i32>,
11236    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.name)
11237    pub name: ::std::option::Option<::std::vec::Vec<u8>>,
11238    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.name_english)
11239    pub name_english: ::std::option::Option<::std::string::String>,
11240    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.elevation)
11241    pub elevation: ::std::vec::Vec<i32>,
11242    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.rainfall)
11243    pub rainfall: ::std::vec::Vec<i32>,
11244    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.vegetation)
11245    pub vegetation: ::std::vec::Vec<i32>,
11246    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.temperature)
11247    pub temperature: ::std::vec::Vec<i32>,
11248    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.evilness)
11249    pub evilness: ::std::vec::Vec<i32>,
11250    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.drainage)
11251    pub drainage: ::std::vec::Vec<i32>,
11252    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.volcanism)
11253    pub volcanism: ::std::vec::Vec<i32>,
11254    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.savagery)
11255    pub savagery: ::std::vec::Vec<i32>,
11256    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.clouds)
11257    pub clouds: ::std::vec::Vec<Cloud>,
11258    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.salinity)
11259    pub salinity: ::std::vec::Vec<i32>,
11260    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.map_x)
11261    pub map_x: ::std::option::Option<i32>,
11262    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.map_y)
11263    pub map_y: ::std::option::Option<i32>,
11264    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_x)
11265    pub center_x: ::std::option::Option<i32>,
11266    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_y)
11267    pub center_y: ::std::option::Option<i32>,
11268    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.center_z)
11269    pub center_z: ::std::option::Option<i32>,
11270    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.cur_year)
11271    pub cur_year: ::std::option::Option<i32>,
11272    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.cur_year_tick)
11273    pub cur_year_tick: ::std::option::Option<i32>,
11274    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.world_poles)
11275    pub world_poles: ::std::option::Option<::protobuf::EnumOrUnknown<WorldPoles>>,
11276    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.river_tiles)
11277    pub river_tiles: ::std::vec::Vec<RiverTile>,
11278    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.water_elevation)
11279    pub water_elevation: ::std::vec::Vec<i32>,
11280    // @@protoc_insertion_point(field:RemoteFortressReader.WorldMap.region_tiles)
11281    pub region_tiles: ::std::vec::Vec<RegionTile>,
11282    // special fields
11283    // @@protoc_insertion_point(special_field:RemoteFortressReader.WorldMap.special_fields)
11284    pub special_fields: ::protobuf::SpecialFields,
11285}
11286
11287impl<'a> ::std::default::Default for &'a WorldMap {
11288    fn default() -> &'a WorldMap {
11289        <WorldMap as ::protobuf::Message>::default_instance()
11290    }
11291}
11292
11293impl WorldMap {
11294    pub fn new() -> WorldMap {
11295        ::std::default::Default::default()
11296    }
11297
11298    // required int32 world_width = 1;
11299
11300    pub fn world_width(&self) -> i32 {
11301        self.world_width.unwrap_or(0)
11302    }
11303
11304    pub fn clear_world_width(&mut self) {
11305        self.world_width = ::std::option::Option::None;
11306    }
11307
11308    pub fn has_world_width(&self) -> bool {
11309        self.world_width.is_some()
11310    }
11311
11312    // Param is passed by value, moved
11313    pub fn set_world_width(&mut self, v: i32) {
11314        self.world_width = ::std::option::Option::Some(v);
11315    }
11316
11317    // required int32 world_height = 2;
11318
11319    pub fn world_height(&self) -> i32 {
11320        self.world_height.unwrap_or(0)
11321    }
11322
11323    pub fn clear_world_height(&mut self) {
11324        self.world_height = ::std::option::Option::None;
11325    }
11326
11327    pub fn has_world_height(&self) -> bool {
11328        self.world_height.is_some()
11329    }
11330
11331    // Param is passed by value, moved
11332    pub fn set_world_height(&mut self, v: i32) {
11333        self.world_height = ::std::option::Option::Some(v);
11334    }
11335
11336    // optional bytes name = 3;
11337
11338    pub fn name(&self) -> &[u8] {
11339        match self.name.as_ref() {
11340            Some(v) => v,
11341            None => &[],
11342        }
11343    }
11344
11345    pub fn clear_name(&mut self) {
11346        self.name = ::std::option::Option::None;
11347    }
11348
11349    pub fn has_name(&self) -> bool {
11350        self.name.is_some()
11351    }
11352
11353    // Param is passed by value, moved
11354    pub fn set_name(&mut self, v: ::std::vec::Vec<u8>) {
11355        self.name = ::std::option::Option::Some(v);
11356    }
11357
11358    // Mutable pointer to the field.
11359    // If field is not initialized, it is initialized with default value first.
11360    pub fn mut_name(&mut self) -> &mut ::std::vec::Vec<u8> {
11361        if self.name.is_none() {
11362            self.name = ::std::option::Option::Some(::std::vec::Vec::new());
11363        }
11364        self.name.as_mut().unwrap()
11365    }
11366
11367    // Take field
11368    pub fn take_name(&mut self) -> ::std::vec::Vec<u8> {
11369        self.name.take().unwrap_or_else(|| ::std::vec::Vec::new())
11370    }
11371
11372    // optional string name_english = 4;
11373
11374    pub fn name_english(&self) -> &str {
11375        match self.name_english.as_ref() {
11376            Some(v) => v,
11377            None => "",
11378        }
11379    }
11380
11381    pub fn clear_name_english(&mut self) {
11382        self.name_english = ::std::option::Option::None;
11383    }
11384
11385    pub fn has_name_english(&self) -> bool {
11386        self.name_english.is_some()
11387    }
11388
11389    // Param is passed by value, moved
11390    pub fn set_name_english(&mut self, v: ::std::string::String) {
11391        self.name_english = ::std::option::Option::Some(v);
11392    }
11393
11394    // Mutable pointer to the field.
11395    // If field is not initialized, it is initialized with default value first.
11396    pub fn mut_name_english(&mut self) -> &mut ::std::string::String {
11397        if self.name_english.is_none() {
11398            self.name_english = ::std::option::Option::Some(::std::string::String::new());
11399        }
11400        self.name_english.as_mut().unwrap()
11401    }
11402
11403    // Take field
11404    pub fn take_name_english(&mut self) -> ::std::string::String {
11405        self.name_english.take().unwrap_or_else(|| ::std::string::String::new())
11406    }
11407
11408    // optional int32 map_x = 15;
11409
11410    pub fn map_x(&self) -> i32 {
11411        self.map_x.unwrap_or(0)
11412    }
11413
11414    pub fn clear_map_x(&mut self) {
11415        self.map_x = ::std::option::Option::None;
11416    }
11417
11418    pub fn has_map_x(&self) -> bool {
11419        self.map_x.is_some()
11420    }
11421
11422    // Param is passed by value, moved
11423    pub fn set_map_x(&mut self, v: i32) {
11424        self.map_x = ::std::option::Option::Some(v);
11425    }
11426
11427    // optional int32 map_y = 16;
11428
11429    pub fn map_y(&self) -> i32 {
11430        self.map_y.unwrap_or(0)
11431    }
11432
11433    pub fn clear_map_y(&mut self) {
11434        self.map_y = ::std::option::Option::None;
11435    }
11436
11437    pub fn has_map_y(&self) -> bool {
11438        self.map_y.is_some()
11439    }
11440
11441    // Param is passed by value, moved
11442    pub fn set_map_y(&mut self, v: i32) {
11443        self.map_y = ::std::option::Option::Some(v);
11444    }
11445
11446    // optional int32 center_x = 17;
11447
11448    pub fn center_x(&self) -> i32 {
11449        self.center_x.unwrap_or(0)
11450    }
11451
11452    pub fn clear_center_x(&mut self) {
11453        self.center_x = ::std::option::Option::None;
11454    }
11455
11456    pub fn has_center_x(&self) -> bool {
11457        self.center_x.is_some()
11458    }
11459
11460    // Param is passed by value, moved
11461    pub fn set_center_x(&mut self, v: i32) {
11462        self.center_x = ::std::option::Option::Some(v);
11463    }
11464
11465    // optional int32 center_y = 18;
11466
11467    pub fn center_y(&self) -> i32 {
11468        self.center_y.unwrap_or(0)
11469    }
11470
11471    pub fn clear_center_y(&mut self) {
11472        self.center_y = ::std::option::Option::None;
11473    }
11474
11475    pub fn has_center_y(&self) -> bool {
11476        self.center_y.is_some()
11477    }
11478
11479    // Param is passed by value, moved
11480    pub fn set_center_y(&mut self, v: i32) {
11481        self.center_y = ::std::option::Option::Some(v);
11482    }
11483
11484    // optional int32 center_z = 19;
11485
11486    pub fn center_z(&self) -> i32 {
11487        self.center_z.unwrap_or(0)
11488    }
11489
11490    pub fn clear_center_z(&mut self) {
11491        self.center_z = ::std::option::Option::None;
11492    }
11493
11494    pub fn has_center_z(&self) -> bool {
11495        self.center_z.is_some()
11496    }
11497
11498    // Param is passed by value, moved
11499    pub fn set_center_z(&mut self, v: i32) {
11500        self.center_z = ::std::option::Option::Some(v);
11501    }
11502
11503    // optional int32 cur_year = 20;
11504
11505    pub fn cur_year(&self) -> i32 {
11506        self.cur_year.unwrap_or(0)
11507    }
11508
11509    pub fn clear_cur_year(&mut self) {
11510        self.cur_year = ::std::option::Option::None;
11511    }
11512
11513    pub fn has_cur_year(&self) -> bool {
11514        self.cur_year.is_some()
11515    }
11516
11517    // Param is passed by value, moved
11518    pub fn set_cur_year(&mut self, v: i32) {
11519        self.cur_year = ::std::option::Option::Some(v);
11520    }
11521
11522    // optional int32 cur_year_tick = 21;
11523
11524    pub fn cur_year_tick(&self) -> i32 {
11525        self.cur_year_tick.unwrap_or(0)
11526    }
11527
11528    pub fn clear_cur_year_tick(&mut self) {
11529        self.cur_year_tick = ::std::option::Option::None;
11530    }
11531
11532    pub fn has_cur_year_tick(&self) -> bool {
11533        self.cur_year_tick.is_some()
11534    }
11535
11536    // Param is passed by value, moved
11537    pub fn set_cur_year_tick(&mut self, v: i32) {
11538        self.cur_year_tick = ::std::option::Option::Some(v);
11539    }
11540
11541    // optional .RemoteFortressReader.WorldPoles world_poles = 22;
11542
11543    pub fn world_poles(&self) -> WorldPoles {
11544        match self.world_poles {
11545            Some(e) => e.enum_value_or(WorldPoles::NO_POLES),
11546            None => WorldPoles::NO_POLES,
11547        }
11548    }
11549
11550    pub fn clear_world_poles(&mut self) {
11551        self.world_poles = ::std::option::Option::None;
11552    }
11553
11554    pub fn has_world_poles(&self) -> bool {
11555        self.world_poles.is_some()
11556    }
11557
11558    // Param is passed by value, moved
11559    pub fn set_world_poles(&mut self, v: WorldPoles) {
11560        self.world_poles = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
11561    }
11562
11563    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
11564        let mut fields = ::std::vec::Vec::with_capacity(25);
11565        let mut oneofs = ::std::vec::Vec::with_capacity(0);
11566        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11567            "world_width",
11568            |m: &WorldMap| { &m.world_width },
11569            |m: &mut WorldMap| { &mut m.world_width },
11570        ));
11571        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11572            "world_height",
11573            |m: &WorldMap| { &m.world_height },
11574            |m: &mut WorldMap| { &mut m.world_height },
11575        ));
11576        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11577            "name",
11578            |m: &WorldMap| { &m.name },
11579            |m: &mut WorldMap| { &mut m.name },
11580        ));
11581        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11582            "name_english",
11583            |m: &WorldMap| { &m.name_english },
11584            |m: &mut WorldMap| { &mut m.name_english },
11585        ));
11586        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11587            "elevation",
11588            |m: &WorldMap| { &m.elevation },
11589            |m: &mut WorldMap| { &mut m.elevation },
11590        ));
11591        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11592            "rainfall",
11593            |m: &WorldMap| { &m.rainfall },
11594            |m: &mut WorldMap| { &mut m.rainfall },
11595        ));
11596        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11597            "vegetation",
11598            |m: &WorldMap| { &m.vegetation },
11599            |m: &mut WorldMap| { &mut m.vegetation },
11600        ));
11601        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11602            "temperature",
11603            |m: &WorldMap| { &m.temperature },
11604            |m: &mut WorldMap| { &mut m.temperature },
11605        ));
11606        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11607            "evilness",
11608            |m: &WorldMap| { &m.evilness },
11609            |m: &mut WorldMap| { &mut m.evilness },
11610        ));
11611        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11612            "drainage",
11613            |m: &WorldMap| { &m.drainage },
11614            |m: &mut WorldMap| { &mut m.drainage },
11615        ));
11616        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11617            "volcanism",
11618            |m: &WorldMap| { &m.volcanism },
11619            |m: &mut WorldMap| { &mut m.volcanism },
11620        ));
11621        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11622            "savagery",
11623            |m: &WorldMap| { &m.savagery },
11624            |m: &mut WorldMap| { &mut m.savagery },
11625        ));
11626        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11627            "clouds",
11628            |m: &WorldMap| { &m.clouds },
11629            |m: &mut WorldMap| { &mut m.clouds },
11630        ));
11631        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11632            "salinity",
11633            |m: &WorldMap| { &m.salinity },
11634            |m: &mut WorldMap| { &mut m.salinity },
11635        ));
11636        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11637            "map_x",
11638            |m: &WorldMap| { &m.map_x },
11639            |m: &mut WorldMap| { &mut m.map_x },
11640        ));
11641        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11642            "map_y",
11643            |m: &WorldMap| { &m.map_y },
11644            |m: &mut WorldMap| { &mut m.map_y },
11645        ));
11646        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11647            "center_x",
11648            |m: &WorldMap| { &m.center_x },
11649            |m: &mut WorldMap| { &mut m.center_x },
11650        ));
11651        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11652            "center_y",
11653            |m: &WorldMap| { &m.center_y },
11654            |m: &mut WorldMap| { &mut m.center_y },
11655        ));
11656        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11657            "center_z",
11658            |m: &WorldMap| { &m.center_z },
11659            |m: &mut WorldMap| { &mut m.center_z },
11660        ));
11661        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11662            "cur_year",
11663            |m: &WorldMap| { &m.cur_year },
11664            |m: &mut WorldMap| { &mut m.cur_year },
11665        ));
11666        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11667            "cur_year_tick",
11668            |m: &WorldMap| { &m.cur_year_tick },
11669            |m: &mut WorldMap| { &mut m.cur_year_tick },
11670        ));
11671        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
11672            "world_poles",
11673            |m: &WorldMap| { &m.world_poles },
11674            |m: &mut WorldMap| { &mut m.world_poles },
11675        ));
11676        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11677            "river_tiles",
11678            |m: &WorldMap| { &m.river_tiles },
11679            |m: &mut WorldMap| { &mut m.river_tiles },
11680        ));
11681        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11682            "water_elevation",
11683            |m: &WorldMap| { &m.water_elevation },
11684            |m: &mut WorldMap| { &mut m.water_elevation },
11685        ));
11686        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
11687            "region_tiles",
11688            |m: &WorldMap| { &m.region_tiles },
11689            |m: &mut WorldMap| { &mut m.region_tiles },
11690        ));
11691        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<WorldMap>(
11692            "WorldMap",
11693            fields,
11694            oneofs,
11695        )
11696    }
11697}
11698
11699impl ::protobuf::Message for WorldMap {
11700    const NAME: &'static str = "WorldMap";
11701
11702    fn is_initialized(&self) -> bool {
11703        if self.world_width.is_none() {
11704            return false;
11705        }
11706        if self.world_height.is_none() {
11707            return false;
11708        }
11709        for v in &self.clouds {
11710            if !v.is_initialized() {
11711                return false;
11712            }
11713        };
11714        for v in &self.river_tiles {
11715            if !v.is_initialized() {
11716                return false;
11717            }
11718        };
11719        for v in &self.region_tiles {
11720            if !v.is_initialized() {
11721                return false;
11722            }
11723        };
11724        true
11725    }
11726
11727    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
11728        while let Some(tag) = is.read_raw_tag_or_eof()? {
11729            match tag {
11730                8 => {
11731                    self.world_width = ::std::option::Option::Some(is.read_int32()?);
11732                },
11733                16 => {
11734                    self.world_height = ::std::option::Option::Some(is.read_int32()?);
11735                },
11736                26 => {
11737                    self.name = ::std::option::Option::Some(is.read_bytes()?);
11738                },
11739                34 => {
11740                    self.name_english = ::std::option::Option::Some(is.read_string()?);
11741                },
11742                42 => {
11743                    is.read_repeated_packed_int32_into(&mut self.elevation)?;
11744                },
11745                40 => {
11746                    self.elevation.push(is.read_int32()?);
11747                },
11748                50 => {
11749                    is.read_repeated_packed_int32_into(&mut self.rainfall)?;
11750                },
11751                48 => {
11752                    self.rainfall.push(is.read_int32()?);
11753                },
11754                58 => {
11755                    is.read_repeated_packed_int32_into(&mut self.vegetation)?;
11756                },
11757                56 => {
11758                    self.vegetation.push(is.read_int32()?);
11759                },
11760                66 => {
11761                    is.read_repeated_packed_int32_into(&mut self.temperature)?;
11762                },
11763                64 => {
11764                    self.temperature.push(is.read_int32()?);
11765                },
11766                74 => {
11767                    is.read_repeated_packed_int32_into(&mut self.evilness)?;
11768                },
11769                72 => {
11770                    self.evilness.push(is.read_int32()?);
11771                },
11772                82 => {
11773                    is.read_repeated_packed_int32_into(&mut self.drainage)?;
11774                },
11775                80 => {
11776                    self.drainage.push(is.read_int32()?);
11777                },
11778                90 => {
11779                    is.read_repeated_packed_int32_into(&mut self.volcanism)?;
11780                },
11781                88 => {
11782                    self.volcanism.push(is.read_int32()?);
11783                },
11784                98 => {
11785                    is.read_repeated_packed_int32_into(&mut self.savagery)?;
11786                },
11787                96 => {
11788                    self.savagery.push(is.read_int32()?);
11789                },
11790                106 => {
11791                    self.clouds.push(is.read_message()?);
11792                },
11793                114 => {
11794                    is.read_repeated_packed_int32_into(&mut self.salinity)?;
11795                },
11796                112 => {
11797                    self.salinity.push(is.read_int32()?);
11798                },
11799                120 => {
11800                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
11801                },
11802                128 => {
11803                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
11804                },
11805                136 => {
11806                    self.center_x = ::std::option::Option::Some(is.read_int32()?);
11807                },
11808                144 => {
11809                    self.center_y = ::std::option::Option::Some(is.read_int32()?);
11810                },
11811                152 => {
11812                    self.center_z = ::std::option::Option::Some(is.read_int32()?);
11813                },
11814                160 => {
11815                    self.cur_year = ::std::option::Option::Some(is.read_int32()?);
11816                },
11817                168 => {
11818                    self.cur_year_tick = ::std::option::Option::Some(is.read_int32()?);
11819                },
11820                176 => {
11821                    self.world_poles = ::std::option::Option::Some(is.read_enum_or_unknown()?);
11822                },
11823                186 => {
11824                    self.river_tiles.push(is.read_message()?);
11825                },
11826                194 => {
11827                    is.read_repeated_packed_int32_into(&mut self.water_elevation)?;
11828                },
11829                192 => {
11830                    self.water_elevation.push(is.read_int32()?);
11831                },
11832                202 => {
11833                    self.region_tiles.push(is.read_message()?);
11834                },
11835                tag => {
11836                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
11837                },
11838            };
11839        }
11840        ::std::result::Result::Ok(())
11841    }
11842
11843    // Compute sizes of nested messages
11844    #[allow(unused_variables)]
11845    fn compute_size(&self) -> u64 {
11846        let mut my_size = 0;
11847        if let Some(v) = self.world_width {
11848            my_size += ::protobuf::rt::int32_size(1, v);
11849        }
11850        if let Some(v) = self.world_height {
11851            my_size += ::protobuf::rt::int32_size(2, v);
11852        }
11853        if let Some(v) = self.name.as_ref() {
11854            my_size += ::protobuf::rt::bytes_size(3, &v);
11855        }
11856        if let Some(v) = self.name_english.as_ref() {
11857            my_size += ::protobuf::rt::string_size(4, &v);
11858        }
11859        for value in &self.elevation {
11860            my_size += ::protobuf::rt::int32_size(5, *value);
11861        };
11862        for value in &self.rainfall {
11863            my_size += ::protobuf::rt::int32_size(6, *value);
11864        };
11865        for value in &self.vegetation {
11866            my_size += ::protobuf::rt::int32_size(7, *value);
11867        };
11868        for value in &self.temperature {
11869            my_size += ::protobuf::rt::int32_size(8, *value);
11870        };
11871        for value in &self.evilness {
11872            my_size += ::protobuf::rt::int32_size(9, *value);
11873        };
11874        for value in &self.drainage {
11875            my_size += ::protobuf::rt::int32_size(10, *value);
11876        };
11877        for value in &self.volcanism {
11878            my_size += ::protobuf::rt::int32_size(11, *value);
11879        };
11880        for value in &self.savagery {
11881            my_size += ::protobuf::rt::int32_size(12, *value);
11882        };
11883        for value in &self.clouds {
11884            let len = value.compute_size();
11885            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11886        };
11887        for value in &self.salinity {
11888            my_size += ::protobuf::rt::int32_size(14, *value);
11889        };
11890        if let Some(v) = self.map_x {
11891            my_size += ::protobuf::rt::int32_size(15, v);
11892        }
11893        if let Some(v) = self.map_y {
11894            my_size += ::protobuf::rt::int32_size(16, v);
11895        }
11896        if let Some(v) = self.center_x {
11897            my_size += ::protobuf::rt::int32_size(17, v);
11898        }
11899        if let Some(v) = self.center_y {
11900            my_size += ::protobuf::rt::int32_size(18, v);
11901        }
11902        if let Some(v) = self.center_z {
11903            my_size += ::protobuf::rt::int32_size(19, v);
11904        }
11905        if let Some(v) = self.cur_year {
11906            my_size += ::protobuf::rt::int32_size(20, v);
11907        }
11908        if let Some(v) = self.cur_year_tick {
11909            my_size += ::protobuf::rt::int32_size(21, v);
11910        }
11911        if let Some(v) = self.world_poles {
11912            my_size += ::protobuf::rt::int32_size(22, v.value());
11913        }
11914        for value in &self.river_tiles {
11915            let len = value.compute_size();
11916            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11917        };
11918        for value in &self.water_elevation {
11919            my_size += ::protobuf::rt::int32_size(24, *value);
11920        };
11921        for value in &self.region_tiles {
11922            let len = value.compute_size();
11923            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
11924        };
11925        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
11926        self.special_fields.cached_size().set(my_size as u32);
11927        my_size
11928    }
11929
11930    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
11931        if let Some(v) = self.world_width {
11932            os.write_int32(1, v)?;
11933        }
11934        if let Some(v) = self.world_height {
11935            os.write_int32(2, v)?;
11936        }
11937        if let Some(v) = self.name.as_ref() {
11938            os.write_bytes(3, v)?;
11939        }
11940        if let Some(v) = self.name_english.as_ref() {
11941            os.write_string(4, v)?;
11942        }
11943        for v in &self.elevation {
11944            os.write_int32(5, *v)?;
11945        };
11946        for v in &self.rainfall {
11947            os.write_int32(6, *v)?;
11948        };
11949        for v in &self.vegetation {
11950            os.write_int32(7, *v)?;
11951        };
11952        for v in &self.temperature {
11953            os.write_int32(8, *v)?;
11954        };
11955        for v in &self.evilness {
11956            os.write_int32(9, *v)?;
11957        };
11958        for v in &self.drainage {
11959            os.write_int32(10, *v)?;
11960        };
11961        for v in &self.volcanism {
11962            os.write_int32(11, *v)?;
11963        };
11964        for v in &self.savagery {
11965            os.write_int32(12, *v)?;
11966        };
11967        for v in &self.clouds {
11968            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
11969        };
11970        for v in &self.salinity {
11971            os.write_int32(14, *v)?;
11972        };
11973        if let Some(v) = self.map_x {
11974            os.write_int32(15, v)?;
11975        }
11976        if let Some(v) = self.map_y {
11977            os.write_int32(16, v)?;
11978        }
11979        if let Some(v) = self.center_x {
11980            os.write_int32(17, v)?;
11981        }
11982        if let Some(v) = self.center_y {
11983            os.write_int32(18, v)?;
11984        }
11985        if let Some(v) = self.center_z {
11986            os.write_int32(19, v)?;
11987        }
11988        if let Some(v) = self.cur_year {
11989            os.write_int32(20, v)?;
11990        }
11991        if let Some(v) = self.cur_year_tick {
11992            os.write_int32(21, v)?;
11993        }
11994        if let Some(v) = self.world_poles {
11995            os.write_enum(22, ::protobuf::EnumOrUnknown::value(&v))?;
11996        }
11997        for v in &self.river_tiles {
11998            ::protobuf::rt::write_message_field_with_cached_size(23, v, os)?;
11999        };
12000        for v in &self.water_elevation {
12001            os.write_int32(24, *v)?;
12002        };
12003        for v in &self.region_tiles {
12004            ::protobuf::rt::write_message_field_with_cached_size(25, v, os)?;
12005        };
12006        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12007        ::std::result::Result::Ok(())
12008    }
12009
12010    fn special_fields(&self) -> &::protobuf::SpecialFields {
12011        &self.special_fields
12012    }
12013
12014    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12015        &mut self.special_fields
12016    }
12017
12018    fn new() -> WorldMap {
12019        WorldMap::new()
12020    }
12021
12022    fn clear(&mut self) {
12023        self.world_width = ::std::option::Option::None;
12024        self.world_height = ::std::option::Option::None;
12025        self.name = ::std::option::Option::None;
12026        self.name_english = ::std::option::Option::None;
12027        self.elevation.clear();
12028        self.rainfall.clear();
12029        self.vegetation.clear();
12030        self.temperature.clear();
12031        self.evilness.clear();
12032        self.drainage.clear();
12033        self.volcanism.clear();
12034        self.savagery.clear();
12035        self.clouds.clear();
12036        self.salinity.clear();
12037        self.map_x = ::std::option::Option::None;
12038        self.map_y = ::std::option::Option::None;
12039        self.center_x = ::std::option::Option::None;
12040        self.center_y = ::std::option::Option::None;
12041        self.center_z = ::std::option::Option::None;
12042        self.cur_year = ::std::option::Option::None;
12043        self.cur_year_tick = ::std::option::Option::None;
12044        self.world_poles = ::std::option::Option::None;
12045        self.river_tiles.clear();
12046        self.water_elevation.clear();
12047        self.region_tiles.clear();
12048        self.special_fields.clear();
12049    }
12050
12051    fn default_instance() -> &'static WorldMap {
12052        static instance: WorldMap = WorldMap {
12053            world_width: ::std::option::Option::None,
12054            world_height: ::std::option::Option::None,
12055            name: ::std::option::Option::None,
12056            name_english: ::std::option::Option::None,
12057            elevation: ::std::vec::Vec::new(),
12058            rainfall: ::std::vec::Vec::new(),
12059            vegetation: ::std::vec::Vec::new(),
12060            temperature: ::std::vec::Vec::new(),
12061            evilness: ::std::vec::Vec::new(),
12062            drainage: ::std::vec::Vec::new(),
12063            volcanism: ::std::vec::Vec::new(),
12064            savagery: ::std::vec::Vec::new(),
12065            clouds: ::std::vec::Vec::new(),
12066            salinity: ::std::vec::Vec::new(),
12067            map_x: ::std::option::Option::None,
12068            map_y: ::std::option::Option::None,
12069            center_x: ::std::option::Option::None,
12070            center_y: ::std::option::Option::None,
12071            center_z: ::std::option::Option::None,
12072            cur_year: ::std::option::Option::None,
12073            cur_year_tick: ::std::option::Option::None,
12074            world_poles: ::std::option::Option::None,
12075            river_tiles: ::std::vec::Vec::new(),
12076            water_elevation: ::std::vec::Vec::new(),
12077            region_tiles: ::std::vec::Vec::new(),
12078            special_fields: ::protobuf::SpecialFields::new(),
12079        };
12080        &instance
12081    }
12082}
12083
12084impl ::protobuf::MessageFull for WorldMap {
12085    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12086        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12087        descriptor.get(|| file_descriptor().message_by_package_relative_name("WorldMap").unwrap()).clone()
12088    }
12089}
12090
12091impl ::std::fmt::Display for WorldMap {
12092    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12093        ::protobuf::text_format::fmt(self, f)
12094    }
12095}
12096
12097impl ::protobuf::reflect::ProtobufValue for WorldMap {
12098    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12099}
12100
12101// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingWall)
12102#[derive(PartialEq,Clone,Default,Debug)]
12103pub struct SiteRealizationBuildingWall {
12104    // message fields
12105    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_x)
12106    pub start_x: ::std::option::Option<i32>,
12107    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_y)
12108    pub start_y: ::std::option::Option<i32>,
12109    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.start_z)
12110    pub start_z: ::std::option::Option<i32>,
12111    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_x)
12112    pub end_x: ::std::option::Option<i32>,
12113    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_y)
12114    pub end_y: ::std::option::Option<i32>,
12115    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingWall.end_z)
12116    pub end_z: ::std::option::Option<i32>,
12117    // special fields
12118    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingWall.special_fields)
12119    pub special_fields: ::protobuf::SpecialFields,
12120}
12121
12122impl<'a> ::std::default::Default for &'a SiteRealizationBuildingWall {
12123    fn default() -> &'a SiteRealizationBuildingWall {
12124        <SiteRealizationBuildingWall as ::protobuf::Message>::default_instance()
12125    }
12126}
12127
12128impl SiteRealizationBuildingWall {
12129    pub fn new() -> SiteRealizationBuildingWall {
12130        ::std::default::Default::default()
12131    }
12132
12133    // optional int32 start_x = 1;
12134
12135    pub fn start_x(&self) -> i32 {
12136        self.start_x.unwrap_or(0)
12137    }
12138
12139    pub fn clear_start_x(&mut self) {
12140        self.start_x = ::std::option::Option::None;
12141    }
12142
12143    pub fn has_start_x(&self) -> bool {
12144        self.start_x.is_some()
12145    }
12146
12147    // Param is passed by value, moved
12148    pub fn set_start_x(&mut self, v: i32) {
12149        self.start_x = ::std::option::Option::Some(v);
12150    }
12151
12152    // optional int32 start_y = 2;
12153
12154    pub fn start_y(&self) -> i32 {
12155        self.start_y.unwrap_or(0)
12156    }
12157
12158    pub fn clear_start_y(&mut self) {
12159        self.start_y = ::std::option::Option::None;
12160    }
12161
12162    pub fn has_start_y(&self) -> bool {
12163        self.start_y.is_some()
12164    }
12165
12166    // Param is passed by value, moved
12167    pub fn set_start_y(&mut self, v: i32) {
12168        self.start_y = ::std::option::Option::Some(v);
12169    }
12170
12171    // optional int32 start_z = 3;
12172
12173    pub fn start_z(&self) -> i32 {
12174        self.start_z.unwrap_or(0)
12175    }
12176
12177    pub fn clear_start_z(&mut self) {
12178        self.start_z = ::std::option::Option::None;
12179    }
12180
12181    pub fn has_start_z(&self) -> bool {
12182        self.start_z.is_some()
12183    }
12184
12185    // Param is passed by value, moved
12186    pub fn set_start_z(&mut self, v: i32) {
12187        self.start_z = ::std::option::Option::Some(v);
12188    }
12189
12190    // optional int32 end_x = 4;
12191
12192    pub fn end_x(&self) -> i32 {
12193        self.end_x.unwrap_or(0)
12194    }
12195
12196    pub fn clear_end_x(&mut self) {
12197        self.end_x = ::std::option::Option::None;
12198    }
12199
12200    pub fn has_end_x(&self) -> bool {
12201        self.end_x.is_some()
12202    }
12203
12204    // Param is passed by value, moved
12205    pub fn set_end_x(&mut self, v: i32) {
12206        self.end_x = ::std::option::Option::Some(v);
12207    }
12208
12209    // optional int32 end_y = 5;
12210
12211    pub fn end_y(&self) -> i32 {
12212        self.end_y.unwrap_or(0)
12213    }
12214
12215    pub fn clear_end_y(&mut self) {
12216        self.end_y = ::std::option::Option::None;
12217    }
12218
12219    pub fn has_end_y(&self) -> bool {
12220        self.end_y.is_some()
12221    }
12222
12223    // Param is passed by value, moved
12224    pub fn set_end_y(&mut self, v: i32) {
12225        self.end_y = ::std::option::Option::Some(v);
12226    }
12227
12228    // optional int32 end_z = 6;
12229
12230    pub fn end_z(&self) -> i32 {
12231        self.end_z.unwrap_or(0)
12232    }
12233
12234    pub fn clear_end_z(&mut self) {
12235        self.end_z = ::std::option::Option::None;
12236    }
12237
12238    pub fn has_end_z(&self) -> bool {
12239        self.end_z.is_some()
12240    }
12241
12242    // Param is passed by value, moved
12243    pub fn set_end_z(&mut self, v: i32) {
12244        self.end_z = ::std::option::Option::Some(v);
12245    }
12246
12247    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12248        let mut fields = ::std::vec::Vec::with_capacity(6);
12249        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12250        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12251            "start_x",
12252            |m: &SiteRealizationBuildingWall| { &m.start_x },
12253            |m: &mut SiteRealizationBuildingWall| { &mut m.start_x },
12254        ));
12255        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12256            "start_y",
12257            |m: &SiteRealizationBuildingWall| { &m.start_y },
12258            |m: &mut SiteRealizationBuildingWall| { &mut m.start_y },
12259        ));
12260        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12261            "start_z",
12262            |m: &SiteRealizationBuildingWall| { &m.start_z },
12263            |m: &mut SiteRealizationBuildingWall| { &mut m.start_z },
12264        ));
12265        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12266            "end_x",
12267            |m: &SiteRealizationBuildingWall| { &m.end_x },
12268            |m: &mut SiteRealizationBuildingWall| { &mut m.end_x },
12269        ));
12270        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12271            "end_y",
12272            |m: &SiteRealizationBuildingWall| { &m.end_y },
12273            |m: &mut SiteRealizationBuildingWall| { &mut m.end_y },
12274        ));
12275        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12276            "end_z",
12277            |m: &SiteRealizationBuildingWall| { &m.end_z },
12278            |m: &mut SiteRealizationBuildingWall| { &mut m.end_z },
12279        ));
12280        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingWall>(
12281            "SiteRealizationBuildingWall",
12282            fields,
12283            oneofs,
12284        )
12285    }
12286}
12287
12288impl ::protobuf::Message for SiteRealizationBuildingWall {
12289    const NAME: &'static str = "SiteRealizationBuildingWall";
12290
12291    fn is_initialized(&self) -> bool {
12292        true
12293    }
12294
12295    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12296        while let Some(tag) = is.read_raw_tag_or_eof()? {
12297            match tag {
12298                8 => {
12299                    self.start_x = ::std::option::Option::Some(is.read_int32()?);
12300                },
12301                16 => {
12302                    self.start_y = ::std::option::Option::Some(is.read_int32()?);
12303                },
12304                24 => {
12305                    self.start_z = ::std::option::Option::Some(is.read_int32()?);
12306                },
12307                32 => {
12308                    self.end_x = ::std::option::Option::Some(is.read_int32()?);
12309                },
12310                40 => {
12311                    self.end_y = ::std::option::Option::Some(is.read_int32()?);
12312                },
12313                48 => {
12314                    self.end_z = ::std::option::Option::Some(is.read_int32()?);
12315                },
12316                tag => {
12317                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12318                },
12319            };
12320        }
12321        ::std::result::Result::Ok(())
12322    }
12323
12324    // Compute sizes of nested messages
12325    #[allow(unused_variables)]
12326    fn compute_size(&self) -> u64 {
12327        let mut my_size = 0;
12328        if let Some(v) = self.start_x {
12329            my_size += ::protobuf::rt::int32_size(1, v);
12330        }
12331        if let Some(v) = self.start_y {
12332            my_size += ::protobuf::rt::int32_size(2, v);
12333        }
12334        if let Some(v) = self.start_z {
12335            my_size += ::protobuf::rt::int32_size(3, v);
12336        }
12337        if let Some(v) = self.end_x {
12338            my_size += ::protobuf::rt::int32_size(4, v);
12339        }
12340        if let Some(v) = self.end_y {
12341            my_size += ::protobuf::rt::int32_size(5, v);
12342        }
12343        if let Some(v) = self.end_z {
12344            my_size += ::protobuf::rt::int32_size(6, v);
12345        }
12346        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12347        self.special_fields.cached_size().set(my_size as u32);
12348        my_size
12349    }
12350
12351    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12352        if let Some(v) = self.start_x {
12353            os.write_int32(1, v)?;
12354        }
12355        if let Some(v) = self.start_y {
12356            os.write_int32(2, v)?;
12357        }
12358        if let Some(v) = self.start_z {
12359            os.write_int32(3, v)?;
12360        }
12361        if let Some(v) = self.end_x {
12362            os.write_int32(4, v)?;
12363        }
12364        if let Some(v) = self.end_y {
12365            os.write_int32(5, v)?;
12366        }
12367        if let Some(v) = self.end_z {
12368            os.write_int32(6, v)?;
12369        }
12370        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12371        ::std::result::Result::Ok(())
12372    }
12373
12374    fn special_fields(&self) -> &::protobuf::SpecialFields {
12375        &self.special_fields
12376    }
12377
12378    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12379        &mut self.special_fields
12380    }
12381
12382    fn new() -> SiteRealizationBuildingWall {
12383        SiteRealizationBuildingWall::new()
12384    }
12385
12386    fn clear(&mut self) {
12387        self.start_x = ::std::option::Option::None;
12388        self.start_y = ::std::option::Option::None;
12389        self.start_z = ::std::option::Option::None;
12390        self.end_x = ::std::option::Option::None;
12391        self.end_y = ::std::option::Option::None;
12392        self.end_z = ::std::option::Option::None;
12393        self.special_fields.clear();
12394    }
12395
12396    fn default_instance() -> &'static SiteRealizationBuildingWall {
12397        static instance: SiteRealizationBuildingWall = SiteRealizationBuildingWall {
12398            start_x: ::std::option::Option::None,
12399            start_y: ::std::option::Option::None,
12400            start_z: ::std::option::Option::None,
12401            end_x: ::std::option::Option::None,
12402            end_y: ::std::option::Option::None,
12403            end_z: ::std::option::Option::None,
12404            special_fields: ::protobuf::SpecialFields::new(),
12405        };
12406        &instance
12407    }
12408}
12409
12410impl ::protobuf::MessageFull for SiteRealizationBuildingWall {
12411    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12412        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12413        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingWall").unwrap()).clone()
12414    }
12415}
12416
12417impl ::std::fmt::Display for SiteRealizationBuildingWall {
12418    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12419        ::protobuf::text_format::fmt(self, f)
12420    }
12421}
12422
12423impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingWall {
12424    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12425}
12426
12427// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingTower)
12428#[derive(PartialEq,Clone,Default,Debug)]
12429pub struct SiteRealizationBuildingTower {
12430    // message fields
12431    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.roof_z)
12432    pub roof_z: ::std::option::Option<i32>,
12433    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.round)
12434    pub round: ::std::option::Option<bool>,
12435    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTower.goblin)
12436    pub goblin: ::std::option::Option<bool>,
12437    // special fields
12438    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingTower.special_fields)
12439    pub special_fields: ::protobuf::SpecialFields,
12440}
12441
12442impl<'a> ::std::default::Default for &'a SiteRealizationBuildingTower {
12443    fn default() -> &'a SiteRealizationBuildingTower {
12444        <SiteRealizationBuildingTower as ::protobuf::Message>::default_instance()
12445    }
12446}
12447
12448impl SiteRealizationBuildingTower {
12449    pub fn new() -> SiteRealizationBuildingTower {
12450        ::std::default::Default::default()
12451    }
12452
12453    // optional int32 roof_z = 1;
12454
12455    pub fn roof_z(&self) -> i32 {
12456        self.roof_z.unwrap_or(0)
12457    }
12458
12459    pub fn clear_roof_z(&mut self) {
12460        self.roof_z = ::std::option::Option::None;
12461    }
12462
12463    pub fn has_roof_z(&self) -> bool {
12464        self.roof_z.is_some()
12465    }
12466
12467    // Param is passed by value, moved
12468    pub fn set_roof_z(&mut self, v: i32) {
12469        self.roof_z = ::std::option::Option::Some(v);
12470    }
12471
12472    // optional bool round = 2;
12473
12474    pub fn round(&self) -> bool {
12475        self.round.unwrap_or(false)
12476    }
12477
12478    pub fn clear_round(&mut self) {
12479        self.round = ::std::option::Option::None;
12480    }
12481
12482    pub fn has_round(&self) -> bool {
12483        self.round.is_some()
12484    }
12485
12486    // Param is passed by value, moved
12487    pub fn set_round(&mut self, v: bool) {
12488        self.round = ::std::option::Option::Some(v);
12489    }
12490
12491    // optional bool goblin = 3;
12492
12493    pub fn goblin(&self) -> bool {
12494        self.goblin.unwrap_or(false)
12495    }
12496
12497    pub fn clear_goblin(&mut self) {
12498        self.goblin = ::std::option::Option::None;
12499    }
12500
12501    pub fn has_goblin(&self) -> bool {
12502        self.goblin.is_some()
12503    }
12504
12505    // Param is passed by value, moved
12506    pub fn set_goblin(&mut self, v: bool) {
12507        self.goblin = ::std::option::Option::Some(v);
12508    }
12509
12510    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12511        let mut fields = ::std::vec::Vec::with_capacity(3);
12512        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12513        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12514            "roof_z",
12515            |m: &SiteRealizationBuildingTower| { &m.roof_z },
12516            |m: &mut SiteRealizationBuildingTower| { &mut m.roof_z },
12517        ));
12518        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12519            "round",
12520            |m: &SiteRealizationBuildingTower| { &m.round },
12521            |m: &mut SiteRealizationBuildingTower| { &mut m.round },
12522        ));
12523        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12524            "goblin",
12525            |m: &SiteRealizationBuildingTower| { &m.goblin },
12526            |m: &mut SiteRealizationBuildingTower| { &mut m.goblin },
12527        ));
12528        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingTower>(
12529            "SiteRealizationBuildingTower",
12530            fields,
12531            oneofs,
12532        )
12533    }
12534}
12535
12536impl ::protobuf::Message for SiteRealizationBuildingTower {
12537    const NAME: &'static str = "SiteRealizationBuildingTower";
12538
12539    fn is_initialized(&self) -> bool {
12540        true
12541    }
12542
12543    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12544        while let Some(tag) = is.read_raw_tag_or_eof()? {
12545            match tag {
12546                8 => {
12547                    self.roof_z = ::std::option::Option::Some(is.read_int32()?);
12548                },
12549                16 => {
12550                    self.round = ::std::option::Option::Some(is.read_bool()?);
12551                },
12552                24 => {
12553                    self.goblin = ::std::option::Option::Some(is.read_bool()?);
12554                },
12555                tag => {
12556                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12557                },
12558            };
12559        }
12560        ::std::result::Result::Ok(())
12561    }
12562
12563    // Compute sizes of nested messages
12564    #[allow(unused_variables)]
12565    fn compute_size(&self) -> u64 {
12566        let mut my_size = 0;
12567        if let Some(v) = self.roof_z {
12568            my_size += ::protobuf::rt::int32_size(1, v);
12569        }
12570        if let Some(v) = self.round {
12571            my_size += 1 + 1;
12572        }
12573        if let Some(v) = self.goblin {
12574            my_size += 1 + 1;
12575        }
12576        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12577        self.special_fields.cached_size().set(my_size as u32);
12578        my_size
12579    }
12580
12581    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12582        if let Some(v) = self.roof_z {
12583            os.write_int32(1, v)?;
12584        }
12585        if let Some(v) = self.round {
12586            os.write_bool(2, v)?;
12587        }
12588        if let Some(v) = self.goblin {
12589            os.write_bool(3, v)?;
12590        }
12591        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12592        ::std::result::Result::Ok(())
12593    }
12594
12595    fn special_fields(&self) -> &::protobuf::SpecialFields {
12596        &self.special_fields
12597    }
12598
12599    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12600        &mut self.special_fields
12601    }
12602
12603    fn new() -> SiteRealizationBuildingTower {
12604        SiteRealizationBuildingTower::new()
12605    }
12606
12607    fn clear(&mut self) {
12608        self.roof_z = ::std::option::Option::None;
12609        self.round = ::std::option::Option::None;
12610        self.goblin = ::std::option::Option::None;
12611        self.special_fields.clear();
12612    }
12613
12614    fn default_instance() -> &'static SiteRealizationBuildingTower {
12615        static instance: SiteRealizationBuildingTower = SiteRealizationBuildingTower {
12616            roof_z: ::std::option::Option::None,
12617            round: ::std::option::Option::None,
12618            goblin: ::std::option::Option::None,
12619            special_fields: ::protobuf::SpecialFields::new(),
12620        };
12621        &instance
12622    }
12623}
12624
12625impl ::protobuf::MessageFull for SiteRealizationBuildingTower {
12626    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12627        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12628        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingTower").unwrap()).clone()
12629    }
12630}
12631
12632impl ::std::fmt::Display for SiteRealizationBuildingTower {
12633    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12634        ::protobuf::text_format::fmt(self, f)
12635    }
12636}
12637
12638impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingTower {
12639    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12640}
12641
12642// @@protoc_insertion_point(message:RemoteFortressReader.TrenchSpoke)
12643#[derive(PartialEq,Clone,Default,Debug)]
12644pub struct TrenchSpoke {
12645    // message fields
12646    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.mound_start)
12647    pub mound_start: ::std::option::Option<i32>,
12648    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.trench_start)
12649    pub trench_start: ::std::option::Option<i32>,
12650    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.trench_end)
12651    pub trench_end: ::std::option::Option<i32>,
12652    // @@protoc_insertion_point(field:RemoteFortressReader.TrenchSpoke.mound_end)
12653    pub mound_end: ::std::option::Option<i32>,
12654    // special fields
12655    // @@protoc_insertion_point(special_field:RemoteFortressReader.TrenchSpoke.special_fields)
12656    pub special_fields: ::protobuf::SpecialFields,
12657}
12658
12659impl<'a> ::std::default::Default for &'a TrenchSpoke {
12660    fn default() -> &'a TrenchSpoke {
12661        <TrenchSpoke as ::protobuf::Message>::default_instance()
12662    }
12663}
12664
12665impl TrenchSpoke {
12666    pub fn new() -> TrenchSpoke {
12667        ::std::default::Default::default()
12668    }
12669
12670    // optional int32 mound_start = 1;
12671
12672    pub fn mound_start(&self) -> i32 {
12673        self.mound_start.unwrap_or(0)
12674    }
12675
12676    pub fn clear_mound_start(&mut self) {
12677        self.mound_start = ::std::option::Option::None;
12678    }
12679
12680    pub fn has_mound_start(&self) -> bool {
12681        self.mound_start.is_some()
12682    }
12683
12684    // Param is passed by value, moved
12685    pub fn set_mound_start(&mut self, v: i32) {
12686        self.mound_start = ::std::option::Option::Some(v);
12687    }
12688
12689    // optional int32 trench_start = 2;
12690
12691    pub fn trench_start(&self) -> i32 {
12692        self.trench_start.unwrap_or(0)
12693    }
12694
12695    pub fn clear_trench_start(&mut self) {
12696        self.trench_start = ::std::option::Option::None;
12697    }
12698
12699    pub fn has_trench_start(&self) -> bool {
12700        self.trench_start.is_some()
12701    }
12702
12703    // Param is passed by value, moved
12704    pub fn set_trench_start(&mut self, v: i32) {
12705        self.trench_start = ::std::option::Option::Some(v);
12706    }
12707
12708    // optional int32 trench_end = 3;
12709
12710    pub fn trench_end(&self) -> i32 {
12711        self.trench_end.unwrap_or(0)
12712    }
12713
12714    pub fn clear_trench_end(&mut self) {
12715        self.trench_end = ::std::option::Option::None;
12716    }
12717
12718    pub fn has_trench_end(&self) -> bool {
12719        self.trench_end.is_some()
12720    }
12721
12722    // Param is passed by value, moved
12723    pub fn set_trench_end(&mut self, v: i32) {
12724        self.trench_end = ::std::option::Option::Some(v);
12725    }
12726
12727    // optional int32 mound_end = 4;
12728
12729    pub fn mound_end(&self) -> i32 {
12730        self.mound_end.unwrap_or(0)
12731    }
12732
12733    pub fn clear_mound_end(&mut self) {
12734        self.mound_end = ::std::option::Option::None;
12735    }
12736
12737    pub fn has_mound_end(&self) -> bool {
12738        self.mound_end.is_some()
12739    }
12740
12741    // Param is passed by value, moved
12742    pub fn set_mound_end(&mut self, v: i32) {
12743        self.mound_end = ::std::option::Option::Some(v);
12744    }
12745
12746    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12747        let mut fields = ::std::vec::Vec::with_capacity(4);
12748        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12749        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12750            "mound_start",
12751            |m: &TrenchSpoke| { &m.mound_start },
12752            |m: &mut TrenchSpoke| { &mut m.mound_start },
12753        ));
12754        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12755            "trench_start",
12756            |m: &TrenchSpoke| { &m.trench_start },
12757            |m: &mut TrenchSpoke| { &mut m.trench_start },
12758        ));
12759        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12760            "trench_end",
12761            |m: &TrenchSpoke| { &m.trench_end },
12762            |m: &mut TrenchSpoke| { &mut m.trench_end },
12763        ));
12764        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
12765            "mound_end",
12766            |m: &TrenchSpoke| { &m.mound_end },
12767            |m: &mut TrenchSpoke| { &mut m.mound_end },
12768        ));
12769        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TrenchSpoke>(
12770            "TrenchSpoke",
12771            fields,
12772            oneofs,
12773        )
12774    }
12775}
12776
12777impl ::protobuf::Message for TrenchSpoke {
12778    const NAME: &'static str = "TrenchSpoke";
12779
12780    fn is_initialized(&self) -> bool {
12781        true
12782    }
12783
12784    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12785        while let Some(tag) = is.read_raw_tag_or_eof()? {
12786            match tag {
12787                8 => {
12788                    self.mound_start = ::std::option::Option::Some(is.read_int32()?);
12789                },
12790                16 => {
12791                    self.trench_start = ::std::option::Option::Some(is.read_int32()?);
12792                },
12793                24 => {
12794                    self.trench_end = ::std::option::Option::Some(is.read_int32()?);
12795                },
12796                32 => {
12797                    self.mound_end = ::std::option::Option::Some(is.read_int32()?);
12798                },
12799                tag => {
12800                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12801                },
12802            };
12803        }
12804        ::std::result::Result::Ok(())
12805    }
12806
12807    // Compute sizes of nested messages
12808    #[allow(unused_variables)]
12809    fn compute_size(&self) -> u64 {
12810        let mut my_size = 0;
12811        if let Some(v) = self.mound_start {
12812            my_size += ::protobuf::rt::int32_size(1, v);
12813        }
12814        if let Some(v) = self.trench_start {
12815            my_size += ::protobuf::rt::int32_size(2, v);
12816        }
12817        if let Some(v) = self.trench_end {
12818            my_size += ::protobuf::rt::int32_size(3, v);
12819        }
12820        if let Some(v) = self.mound_end {
12821            my_size += ::protobuf::rt::int32_size(4, v);
12822        }
12823        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12824        self.special_fields.cached_size().set(my_size as u32);
12825        my_size
12826    }
12827
12828    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12829        if let Some(v) = self.mound_start {
12830            os.write_int32(1, v)?;
12831        }
12832        if let Some(v) = self.trench_start {
12833            os.write_int32(2, v)?;
12834        }
12835        if let Some(v) = self.trench_end {
12836            os.write_int32(3, v)?;
12837        }
12838        if let Some(v) = self.mound_end {
12839            os.write_int32(4, v)?;
12840        }
12841        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12842        ::std::result::Result::Ok(())
12843    }
12844
12845    fn special_fields(&self) -> &::protobuf::SpecialFields {
12846        &self.special_fields
12847    }
12848
12849    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12850        &mut self.special_fields
12851    }
12852
12853    fn new() -> TrenchSpoke {
12854        TrenchSpoke::new()
12855    }
12856
12857    fn clear(&mut self) {
12858        self.mound_start = ::std::option::Option::None;
12859        self.trench_start = ::std::option::Option::None;
12860        self.trench_end = ::std::option::Option::None;
12861        self.mound_end = ::std::option::Option::None;
12862        self.special_fields.clear();
12863    }
12864
12865    fn default_instance() -> &'static TrenchSpoke {
12866        static instance: TrenchSpoke = TrenchSpoke {
12867            mound_start: ::std::option::Option::None,
12868            trench_start: ::std::option::Option::None,
12869            trench_end: ::std::option::Option::None,
12870            mound_end: ::std::option::Option::None,
12871            special_fields: ::protobuf::SpecialFields::new(),
12872        };
12873        &instance
12874    }
12875}
12876
12877impl ::protobuf::MessageFull for TrenchSpoke {
12878    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
12879        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
12880        descriptor.get(|| file_descriptor().message_by_package_relative_name("TrenchSpoke").unwrap()).clone()
12881    }
12882}
12883
12884impl ::std::fmt::Display for TrenchSpoke {
12885    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
12886        ::protobuf::text_format::fmt(self, f)
12887    }
12888}
12889
12890impl ::protobuf::reflect::ProtobufValue for TrenchSpoke {
12891    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
12892}
12893
12894// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuildingTrenches)
12895#[derive(PartialEq,Clone,Default,Debug)]
12896pub struct SiteRealizationBuildingTrenches {
12897    // message fields
12898    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuildingTrenches.spokes)
12899    pub spokes: ::std::vec::Vec<TrenchSpoke>,
12900    // special fields
12901    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuildingTrenches.special_fields)
12902    pub special_fields: ::protobuf::SpecialFields,
12903}
12904
12905impl<'a> ::std::default::Default for &'a SiteRealizationBuildingTrenches {
12906    fn default() -> &'a SiteRealizationBuildingTrenches {
12907        <SiteRealizationBuildingTrenches as ::protobuf::Message>::default_instance()
12908    }
12909}
12910
12911impl SiteRealizationBuildingTrenches {
12912    pub fn new() -> SiteRealizationBuildingTrenches {
12913        ::std::default::Default::default()
12914    }
12915
12916    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
12917        let mut fields = ::std::vec::Vec::with_capacity(1);
12918        let mut oneofs = ::std::vec::Vec::with_capacity(0);
12919        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
12920            "spokes",
12921            |m: &SiteRealizationBuildingTrenches| { &m.spokes },
12922            |m: &mut SiteRealizationBuildingTrenches| { &mut m.spokes },
12923        ));
12924        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuildingTrenches>(
12925            "SiteRealizationBuildingTrenches",
12926            fields,
12927            oneofs,
12928        )
12929    }
12930}
12931
12932impl ::protobuf::Message for SiteRealizationBuildingTrenches {
12933    const NAME: &'static str = "SiteRealizationBuildingTrenches";
12934
12935    fn is_initialized(&self) -> bool {
12936        true
12937    }
12938
12939    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
12940        while let Some(tag) = is.read_raw_tag_or_eof()? {
12941            match tag {
12942                10 => {
12943                    self.spokes.push(is.read_message()?);
12944                },
12945                tag => {
12946                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
12947                },
12948            };
12949        }
12950        ::std::result::Result::Ok(())
12951    }
12952
12953    // Compute sizes of nested messages
12954    #[allow(unused_variables)]
12955    fn compute_size(&self) -> u64 {
12956        let mut my_size = 0;
12957        for value in &self.spokes {
12958            let len = value.compute_size();
12959            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
12960        };
12961        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
12962        self.special_fields.cached_size().set(my_size as u32);
12963        my_size
12964    }
12965
12966    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
12967        for v in &self.spokes {
12968            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
12969        };
12970        os.write_unknown_fields(self.special_fields.unknown_fields())?;
12971        ::std::result::Result::Ok(())
12972    }
12973
12974    fn special_fields(&self) -> &::protobuf::SpecialFields {
12975        &self.special_fields
12976    }
12977
12978    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
12979        &mut self.special_fields
12980    }
12981
12982    fn new() -> SiteRealizationBuildingTrenches {
12983        SiteRealizationBuildingTrenches::new()
12984    }
12985
12986    fn clear(&mut self) {
12987        self.spokes.clear();
12988        self.special_fields.clear();
12989    }
12990
12991    fn default_instance() -> &'static SiteRealizationBuildingTrenches {
12992        static instance: SiteRealizationBuildingTrenches = SiteRealizationBuildingTrenches {
12993            spokes: ::std::vec::Vec::new(),
12994            special_fields: ::protobuf::SpecialFields::new(),
12995        };
12996        &instance
12997    }
12998}
12999
13000impl ::protobuf::MessageFull for SiteRealizationBuildingTrenches {
13001    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
13002        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
13003        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuildingTrenches").unwrap()).clone()
13004    }
13005}
13006
13007impl ::std::fmt::Display for SiteRealizationBuildingTrenches {
13008    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13009        ::protobuf::text_format::fmt(self, f)
13010    }
13011}
13012
13013impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuildingTrenches {
13014    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
13015}
13016
13017// @@protoc_insertion_point(message:RemoteFortressReader.SiteRealizationBuilding)
13018#[derive(PartialEq,Clone,Default,Debug)]
13019pub struct SiteRealizationBuilding {
13020    // message fields
13021    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.id)
13022    pub id: ::std::option::Option<i32>,
13023    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.min_x)
13024    pub min_x: ::std::option::Option<i32>,
13025    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.min_y)
13026    pub min_y: ::std::option::Option<i32>,
13027    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.max_x)
13028    pub max_x: ::std::option::Option<i32>,
13029    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.max_y)
13030    pub max_y: ::std::option::Option<i32>,
13031    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.material)
13032    pub material: ::protobuf::MessageField<MatPair>,
13033    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.wall_info)
13034    pub wall_info: ::protobuf::MessageField<SiteRealizationBuildingWall>,
13035    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.tower_info)
13036    pub tower_info: ::protobuf::MessageField<SiteRealizationBuildingTower>,
13037    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.trench_info)
13038    pub trench_info: ::protobuf::MessageField<SiteRealizationBuildingTrenches>,
13039    // @@protoc_insertion_point(field:RemoteFortressReader.SiteRealizationBuilding.type)
13040    pub type_: ::std::option::Option<i32>,
13041    // special fields
13042    // @@protoc_insertion_point(special_field:RemoteFortressReader.SiteRealizationBuilding.special_fields)
13043    pub special_fields: ::protobuf::SpecialFields,
13044}
13045
13046impl<'a> ::std::default::Default for &'a SiteRealizationBuilding {
13047    fn default() -> &'a SiteRealizationBuilding {
13048        <SiteRealizationBuilding as ::protobuf::Message>::default_instance()
13049    }
13050}
13051
13052impl SiteRealizationBuilding {
13053    pub fn new() -> SiteRealizationBuilding {
13054        ::std::default::Default::default()
13055    }
13056
13057    // optional int32 id = 1;
13058
13059    pub fn id(&self) -> i32 {
13060        self.id.unwrap_or(0)
13061    }
13062
13063    pub fn clear_id(&mut self) {
13064        self.id = ::std::option::Option::None;
13065    }
13066
13067    pub fn has_id(&self) -> bool {
13068        self.id.is_some()
13069    }
13070
13071    // Param is passed by value, moved
13072    pub fn set_id(&mut self, v: i32) {
13073        self.id = ::std::option::Option::Some(v);
13074    }
13075
13076    // optional int32 min_x = 3;
13077
13078    pub fn min_x(&self) -> i32 {
13079        self.min_x.unwrap_or(0)
13080    }
13081
13082    pub fn clear_min_x(&mut self) {
13083        self.min_x = ::std::option::Option::None;
13084    }
13085
13086    pub fn has_min_x(&self) -> bool {
13087        self.min_x.is_some()
13088    }
13089
13090    // Param is passed by value, moved
13091    pub fn set_min_x(&mut self, v: i32) {
13092        self.min_x = ::std::option::Option::Some(v);
13093    }
13094
13095    // optional int32 min_y = 4;
13096
13097    pub fn min_y(&self) -> i32 {
13098        self.min_y.unwrap_or(0)
13099    }
13100
13101    pub fn clear_min_y(&mut self) {
13102        self.min_y = ::std::option::Option::None;
13103    }
13104
13105    pub fn has_min_y(&self) -> bool {
13106        self.min_y.is_some()
13107    }
13108
13109    // Param is passed by value, moved
13110    pub fn set_min_y(&mut self, v: i32) {
13111        self.min_y = ::std::option::Option::Some(v);
13112    }
13113
13114    // optional int32 max_x = 5;
13115
13116    pub fn max_x(&self) -> i32 {
13117        self.max_x.unwrap_or(0)
13118    }
13119
13120    pub fn clear_max_x(&mut self) {
13121        self.max_x = ::std::option::Option::None;
13122    }
13123
13124    pub fn has_max_x(&self) -> bool {
13125        self.max_x.is_some()
13126    }
13127
13128    // Param is passed by value, moved
13129    pub fn set_max_x(&mut self, v: i32) {
13130        self.max_x = ::std::option::Option::Some(v);
13131    }
13132
13133    // optional int32 max_y = 6;
13134
13135    pub fn max_y(&self) -> i32 {
13136        self.max_y.unwrap_or(0)
13137    }
13138
13139    pub fn clear_max_y(&mut self) {
13140        self.max_y = ::std::option::Option::None;
13141    }
13142
13143    pub fn has_max_y(&self) -> bool {
13144        self.max_y.is_some()
13145    }
13146
13147    // Param is passed by value, moved
13148    pub fn set_max_y(&mut self, v: i32) {
13149        self.max_y = ::std::option::Option::Some(v);
13150    }
13151
13152    // optional int32 type = 11;
13153
13154    pub fn type_(&self) -> i32 {
13155        self.type_.unwrap_or(0)
13156    }
13157
13158    pub fn clear_type_(&mut self) {
13159        self.type_ = ::std::option::Option::None;
13160    }
13161
13162    pub fn has_type(&self) -> bool {
13163        self.type_.is_some()
13164    }
13165
13166    // Param is passed by value, moved
13167    pub fn set_type(&mut self, v: i32) {
13168        self.type_ = ::std::option::Option::Some(v);
13169    }
13170
13171    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
13172        let mut fields = ::std::vec::Vec::with_capacity(10);
13173        let mut oneofs = ::std::vec::Vec::with_capacity(0);
13174        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13175            "id",
13176            |m: &SiteRealizationBuilding| { &m.id },
13177            |m: &mut SiteRealizationBuilding| { &mut m.id },
13178        ));
13179        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13180            "min_x",
13181            |m: &SiteRealizationBuilding| { &m.min_x },
13182            |m: &mut SiteRealizationBuilding| { &mut m.min_x },
13183        ));
13184        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13185            "min_y",
13186            |m: &SiteRealizationBuilding| { &m.min_y },
13187            |m: &mut SiteRealizationBuilding| { &mut m.min_y },
13188        ));
13189        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13190            "max_x",
13191            |m: &SiteRealizationBuilding| { &m.max_x },
13192            |m: &mut SiteRealizationBuilding| { &mut m.max_x },
13193        ));
13194        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13195            "max_y",
13196            |m: &SiteRealizationBuilding| { &m.max_y },
13197            |m: &mut SiteRealizationBuilding| { &mut m.max_y },
13198        ));
13199        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
13200            "material",
13201            |m: &SiteRealizationBuilding| { &m.material },
13202            |m: &mut SiteRealizationBuilding| { &mut m.material },
13203        ));
13204        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingWall>(
13205            "wall_info",
13206            |m: &SiteRealizationBuilding| { &m.wall_info },
13207            |m: &mut SiteRealizationBuilding| { &mut m.wall_info },
13208        ));
13209        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingTower>(
13210            "tower_info",
13211            |m: &SiteRealizationBuilding| { &m.tower_info },
13212            |m: &mut SiteRealizationBuilding| { &mut m.tower_info },
13213        ));
13214        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, SiteRealizationBuildingTrenches>(
13215            "trench_info",
13216            |m: &SiteRealizationBuilding| { &m.trench_info },
13217            |m: &mut SiteRealizationBuilding| { &mut m.trench_info },
13218        ));
13219        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13220            "type",
13221            |m: &SiteRealizationBuilding| { &m.type_ },
13222            |m: &mut SiteRealizationBuilding| { &mut m.type_ },
13223        ));
13224        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SiteRealizationBuilding>(
13225            "SiteRealizationBuilding",
13226            fields,
13227            oneofs,
13228        )
13229    }
13230}
13231
13232impl ::protobuf::Message for SiteRealizationBuilding {
13233    const NAME: &'static str = "SiteRealizationBuilding";
13234
13235    fn is_initialized(&self) -> bool {
13236        for v in &self.material {
13237            if !v.is_initialized() {
13238                return false;
13239            }
13240        };
13241        for v in &self.wall_info {
13242            if !v.is_initialized() {
13243                return false;
13244            }
13245        };
13246        for v in &self.tower_info {
13247            if !v.is_initialized() {
13248                return false;
13249            }
13250        };
13251        for v in &self.trench_info {
13252            if !v.is_initialized() {
13253                return false;
13254            }
13255        };
13256        true
13257    }
13258
13259    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
13260        while let Some(tag) = is.read_raw_tag_or_eof()? {
13261            match tag {
13262                8 => {
13263                    self.id = ::std::option::Option::Some(is.read_int32()?);
13264                },
13265                24 => {
13266                    self.min_x = ::std::option::Option::Some(is.read_int32()?);
13267                },
13268                32 => {
13269                    self.min_y = ::std::option::Option::Some(is.read_int32()?);
13270                },
13271                40 => {
13272                    self.max_x = ::std::option::Option::Some(is.read_int32()?);
13273                },
13274                48 => {
13275                    self.max_y = ::std::option::Option::Some(is.read_int32()?);
13276                },
13277                58 => {
13278                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
13279                },
13280                66 => {
13281                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.wall_info)?;
13282                },
13283                74 => {
13284                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.tower_info)?;
13285                },
13286                82 => {
13287                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.trench_info)?;
13288                },
13289                88 => {
13290                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
13291                },
13292                tag => {
13293                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
13294                },
13295            };
13296        }
13297        ::std::result::Result::Ok(())
13298    }
13299
13300    // Compute sizes of nested messages
13301    #[allow(unused_variables)]
13302    fn compute_size(&self) -> u64 {
13303        let mut my_size = 0;
13304        if let Some(v) = self.id {
13305            my_size += ::protobuf::rt::int32_size(1, v);
13306        }
13307        if let Some(v) = self.min_x {
13308            my_size += ::protobuf::rt::int32_size(3, v);
13309        }
13310        if let Some(v) = self.min_y {
13311            my_size += ::protobuf::rt::int32_size(4, v);
13312        }
13313        if let Some(v) = self.max_x {
13314            my_size += ::protobuf::rt::int32_size(5, v);
13315        }
13316        if let Some(v) = self.max_y {
13317            my_size += ::protobuf::rt::int32_size(6, v);
13318        }
13319        if let Some(v) = self.material.as_ref() {
13320            let len = v.compute_size();
13321            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13322        }
13323        if let Some(v) = self.wall_info.as_ref() {
13324            let len = v.compute_size();
13325            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13326        }
13327        if let Some(v) = self.tower_info.as_ref() {
13328            let len = v.compute_size();
13329            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13330        }
13331        if let Some(v) = self.trench_info.as_ref() {
13332            let len = v.compute_size();
13333            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13334        }
13335        if let Some(v) = self.type_ {
13336            my_size += ::protobuf::rt::int32_size(11, v);
13337        }
13338        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
13339        self.special_fields.cached_size().set(my_size as u32);
13340        my_size
13341    }
13342
13343    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
13344        if let Some(v) = self.id {
13345            os.write_int32(1, v)?;
13346        }
13347        if let Some(v) = self.min_x {
13348            os.write_int32(3, v)?;
13349        }
13350        if let Some(v) = self.min_y {
13351            os.write_int32(4, v)?;
13352        }
13353        if let Some(v) = self.max_x {
13354            os.write_int32(5, v)?;
13355        }
13356        if let Some(v) = self.max_y {
13357            os.write_int32(6, v)?;
13358        }
13359        if let Some(v) = self.material.as_ref() {
13360            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
13361        }
13362        if let Some(v) = self.wall_info.as_ref() {
13363            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
13364        }
13365        if let Some(v) = self.tower_info.as_ref() {
13366            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
13367        }
13368        if let Some(v) = self.trench_info.as_ref() {
13369            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
13370        }
13371        if let Some(v) = self.type_ {
13372            os.write_int32(11, v)?;
13373        }
13374        os.write_unknown_fields(self.special_fields.unknown_fields())?;
13375        ::std::result::Result::Ok(())
13376    }
13377
13378    fn special_fields(&self) -> &::protobuf::SpecialFields {
13379        &self.special_fields
13380    }
13381
13382    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
13383        &mut self.special_fields
13384    }
13385
13386    fn new() -> SiteRealizationBuilding {
13387        SiteRealizationBuilding::new()
13388    }
13389
13390    fn clear(&mut self) {
13391        self.id = ::std::option::Option::None;
13392        self.min_x = ::std::option::Option::None;
13393        self.min_y = ::std::option::Option::None;
13394        self.max_x = ::std::option::Option::None;
13395        self.max_y = ::std::option::Option::None;
13396        self.material.clear();
13397        self.wall_info.clear();
13398        self.tower_info.clear();
13399        self.trench_info.clear();
13400        self.type_ = ::std::option::Option::None;
13401        self.special_fields.clear();
13402    }
13403
13404    fn default_instance() -> &'static SiteRealizationBuilding {
13405        static instance: SiteRealizationBuilding = SiteRealizationBuilding {
13406            id: ::std::option::Option::None,
13407            min_x: ::std::option::Option::None,
13408            min_y: ::std::option::Option::None,
13409            max_x: ::std::option::Option::None,
13410            max_y: ::std::option::Option::None,
13411            material: ::protobuf::MessageField::none(),
13412            wall_info: ::protobuf::MessageField::none(),
13413            tower_info: ::protobuf::MessageField::none(),
13414            trench_info: ::protobuf::MessageField::none(),
13415            type_: ::std::option::Option::None,
13416            special_fields: ::protobuf::SpecialFields::new(),
13417        };
13418        &instance
13419    }
13420}
13421
13422impl ::protobuf::MessageFull for SiteRealizationBuilding {
13423    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
13424        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
13425        descriptor.get(|| file_descriptor().message_by_package_relative_name("SiteRealizationBuilding").unwrap()).clone()
13426    }
13427}
13428
13429impl ::std::fmt::Display for SiteRealizationBuilding {
13430    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
13431        ::protobuf::text_format::fmt(self, f)
13432    }
13433}
13434
13435impl ::protobuf::reflect::ProtobufValue for SiteRealizationBuilding {
13436    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
13437}
13438
13439// @@protoc_insertion_point(message:RemoteFortressReader.RegionTile)
13440#[derive(PartialEq,Clone,Default,Debug)]
13441pub struct RegionTile {
13442    // message fields
13443    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.elevation)
13444    pub elevation: ::std::option::Option<i32>,
13445    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.rainfall)
13446    pub rainfall: ::std::option::Option<i32>,
13447    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.vegetation)
13448    pub vegetation: ::std::option::Option<i32>,
13449    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.temperature)
13450    pub temperature: ::std::option::Option<i32>,
13451    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.evilness)
13452    pub evilness: ::std::option::Option<i32>,
13453    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.drainage)
13454    pub drainage: ::std::option::Option<i32>,
13455    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.volcanism)
13456    pub volcanism: ::std::option::Option<i32>,
13457    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.savagery)
13458    pub savagery: ::std::option::Option<i32>,
13459    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.salinity)
13460    pub salinity: ::std::option::Option<i32>,
13461    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.river_tiles)
13462    pub river_tiles: ::protobuf::MessageField<RiverTile>,
13463    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.water_elevation)
13464    pub water_elevation: ::std::option::Option<i32>,
13465    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.surface_material)
13466    pub surface_material: ::protobuf::MessageField<MatPair>,
13467    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.plant_materials)
13468    pub plant_materials: ::std::vec::Vec<MatPair>,
13469    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.buildings)
13470    pub buildings: ::std::vec::Vec<SiteRealizationBuilding>,
13471    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.stone_materials)
13472    pub stone_materials: ::std::vec::Vec<MatPair>,
13473    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.tree_materials)
13474    pub tree_materials: ::std::vec::Vec<MatPair>,
13475    // @@protoc_insertion_point(field:RemoteFortressReader.RegionTile.snow)
13476    pub snow: ::std::option::Option<i32>,
13477    // special fields
13478    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionTile.special_fields)
13479    pub special_fields: ::protobuf::SpecialFields,
13480}
13481
13482impl<'a> ::std::default::Default for &'a RegionTile {
13483    fn default() -> &'a RegionTile {
13484        <RegionTile as ::protobuf::Message>::default_instance()
13485    }
13486}
13487
13488impl RegionTile {
13489    pub fn new() -> RegionTile {
13490        ::std::default::Default::default()
13491    }
13492
13493    // optional int32 elevation = 1;
13494
13495    pub fn elevation(&self) -> i32 {
13496        self.elevation.unwrap_or(0)
13497    }
13498
13499    pub fn clear_elevation(&mut self) {
13500        self.elevation = ::std::option::Option::None;
13501    }
13502
13503    pub fn has_elevation(&self) -> bool {
13504        self.elevation.is_some()
13505    }
13506
13507    // Param is passed by value, moved
13508    pub fn set_elevation(&mut self, v: i32) {
13509        self.elevation = ::std::option::Option::Some(v);
13510    }
13511
13512    // optional int32 rainfall = 2;
13513
13514    pub fn rainfall(&self) -> i32 {
13515        self.rainfall.unwrap_or(0)
13516    }
13517
13518    pub fn clear_rainfall(&mut self) {
13519        self.rainfall = ::std::option::Option::None;
13520    }
13521
13522    pub fn has_rainfall(&self) -> bool {
13523        self.rainfall.is_some()
13524    }
13525
13526    // Param is passed by value, moved
13527    pub fn set_rainfall(&mut self, v: i32) {
13528        self.rainfall = ::std::option::Option::Some(v);
13529    }
13530
13531    // optional int32 vegetation = 3;
13532
13533    pub fn vegetation(&self) -> i32 {
13534        self.vegetation.unwrap_or(0)
13535    }
13536
13537    pub fn clear_vegetation(&mut self) {
13538        self.vegetation = ::std::option::Option::None;
13539    }
13540
13541    pub fn has_vegetation(&self) -> bool {
13542        self.vegetation.is_some()
13543    }
13544
13545    // Param is passed by value, moved
13546    pub fn set_vegetation(&mut self, v: i32) {
13547        self.vegetation = ::std::option::Option::Some(v);
13548    }
13549
13550    // optional int32 temperature = 4;
13551
13552    pub fn temperature(&self) -> i32 {
13553        self.temperature.unwrap_or(0)
13554    }
13555
13556    pub fn clear_temperature(&mut self) {
13557        self.temperature = ::std::option::Option::None;
13558    }
13559
13560    pub fn has_temperature(&self) -> bool {
13561        self.temperature.is_some()
13562    }
13563
13564    // Param is passed by value, moved
13565    pub fn set_temperature(&mut self, v: i32) {
13566        self.temperature = ::std::option::Option::Some(v);
13567    }
13568
13569    // optional int32 evilness = 5;
13570
13571    pub fn evilness(&self) -> i32 {
13572        self.evilness.unwrap_or(0)
13573    }
13574
13575    pub fn clear_evilness(&mut self) {
13576        self.evilness = ::std::option::Option::None;
13577    }
13578
13579    pub fn has_evilness(&self) -> bool {
13580        self.evilness.is_some()
13581    }
13582
13583    // Param is passed by value, moved
13584    pub fn set_evilness(&mut self, v: i32) {
13585        self.evilness = ::std::option::Option::Some(v);
13586    }
13587
13588    // optional int32 drainage = 6;
13589
13590    pub fn drainage(&self) -> i32 {
13591        self.drainage.unwrap_or(0)
13592    }
13593
13594    pub fn clear_drainage(&mut self) {
13595        self.drainage = ::std::option::Option::None;
13596    }
13597
13598    pub fn has_drainage(&self) -> bool {
13599        self.drainage.is_some()
13600    }
13601
13602    // Param is passed by value, moved
13603    pub fn set_drainage(&mut self, v: i32) {
13604        self.drainage = ::std::option::Option::Some(v);
13605    }
13606
13607    // optional int32 volcanism = 7;
13608
13609    pub fn volcanism(&self) -> i32 {
13610        self.volcanism.unwrap_or(0)
13611    }
13612
13613    pub fn clear_volcanism(&mut self) {
13614        self.volcanism = ::std::option::Option::None;
13615    }
13616
13617    pub fn has_volcanism(&self) -> bool {
13618        self.volcanism.is_some()
13619    }
13620
13621    // Param is passed by value, moved
13622    pub fn set_volcanism(&mut self, v: i32) {
13623        self.volcanism = ::std::option::Option::Some(v);
13624    }
13625
13626    // optional int32 savagery = 8;
13627
13628    pub fn savagery(&self) -> i32 {
13629        self.savagery.unwrap_or(0)
13630    }
13631
13632    pub fn clear_savagery(&mut self) {
13633        self.savagery = ::std::option::Option::None;
13634    }
13635
13636    pub fn has_savagery(&self) -> bool {
13637        self.savagery.is_some()
13638    }
13639
13640    // Param is passed by value, moved
13641    pub fn set_savagery(&mut self, v: i32) {
13642        self.savagery = ::std::option::Option::Some(v);
13643    }
13644
13645    // optional int32 salinity = 9;
13646
13647    pub fn salinity(&self) -> i32 {
13648        self.salinity.unwrap_or(0)
13649    }
13650
13651    pub fn clear_salinity(&mut self) {
13652        self.salinity = ::std::option::Option::None;
13653    }
13654
13655    pub fn has_salinity(&self) -> bool {
13656        self.salinity.is_some()
13657    }
13658
13659    // Param is passed by value, moved
13660    pub fn set_salinity(&mut self, v: i32) {
13661        self.salinity = ::std::option::Option::Some(v);
13662    }
13663
13664    // optional int32 water_elevation = 11;
13665
13666    pub fn water_elevation(&self) -> i32 {
13667        self.water_elevation.unwrap_or(0)
13668    }
13669
13670    pub fn clear_water_elevation(&mut self) {
13671        self.water_elevation = ::std::option::Option::None;
13672    }
13673
13674    pub fn has_water_elevation(&self) -> bool {
13675        self.water_elevation.is_some()
13676    }
13677
13678    // Param is passed by value, moved
13679    pub fn set_water_elevation(&mut self, v: i32) {
13680        self.water_elevation = ::std::option::Option::Some(v);
13681    }
13682
13683    // optional int32 snow = 17;
13684
13685    pub fn snow(&self) -> i32 {
13686        self.snow.unwrap_or(0)
13687    }
13688
13689    pub fn clear_snow(&mut self) {
13690        self.snow = ::std::option::Option::None;
13691    }
13692
13693    pub fn has_snow(&self) -> bool {
13694        self.snow.is_some()
13695    }
13696
13697    // Param is passed by value, moved
13698    pub fn set_snow(&mut self, v: i32) {
13699        self.snow = ::std::option::Option::Some(v);
13700    }
13701
13702    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
13703        let mut fields = ::std::vec::Vec::with_capacity(17);
13704        let mut oneofs = ::std::vec::Vec::with_capacity(0);
13705        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13706            "elevation",
13707            |m: &RegionTile| { &m.elevation },
13708            |m: &mut RegionTile| { &mut m.elevation },
13709        ));
13710        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13711            "rainfall",
13712            |m: &RegionTile| { &m.rainfall },
13713            |m: &mut RegionTile| { &mut m.rainfall },
13714        ));
13715        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13716            "vegetation",
13717            |m: &RegionTile| { &m.vegetation },
13718            |m: &mut RegionTile| { &mut m.vegetation },
13719        ));
13720        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13721            "temperature",
13722            |m: &RegionTile| { &m.temperature },
13723            |m: &mut RegionTile| { &mut m.temperature },
13724        ));
13725        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13726            "evilness",
13727            |m: &RegionTile| { &m.evilness },
13728            |m: &mut RegionTile| { &mut m.evilness },
13729        ));
13730        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13731            "drainage",
13732            |m: &RegionTile| { &m.drainage },
13733            |m: &mut RegionTile| { &mut m.drainage },
13734        ));
13735        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13736            "volcanism",
13737            |m: &RegionTile| { &m.volcanism },
13738            |m: &mut RegionTile| { &mut m.volcanism },
13739        ));
13740        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13741            "savagery",
13742            |m: &RegionTile| { &m.savagery },
13743            |m: &mut RegionTile| { &mut m.savagery },
13744        ));
13745        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13746            "salinity",
13747            |m: &RegionTile| { &m.salinity },
13748            |m: &mut RegionTile| { &mut m.salinity },
13749        ));
13750        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RiverTile>(
13751            "river_tiles",
13752            |m: &RegionTile| { &m.river_tiles },
13753            |m: &mut RegionTile| { &mut m.river_tiles },
13754        ));
13755        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13756            "water_elevation",
13757            |m: &RegionTile| { &m.water_elevation },
13758            |m: &mut RegionTile| { &mut m.water_elevation },
13759        ));
13760        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
13761            "surface_material",
13762            |m: &RegionTile| { &m.surface_material },
13763            |m: &mut RegionTile| { &mut m.surface_material },
13764        ));
13765        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13766            "plant_materials",
13767            |m: &RegionTile| { &m.plant_materials },
13768            |m: &mut RegionTile| { &mut m.plant_materials },
13769        ));
13770        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13771            "buildings",
13772            |m: &RegionTile| { &m.buildings },
13773            |m: &mut RegionTile| { &mut m.buildings },
13774        ));
13775        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13776            "stone_materials",
13777            |m: &RegionTile| { &m.stone_materials },
13778            |m: &mut RegionTile| { &mut m.stone_materials },
13779        ));
13780        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
13781            "tree_materials",
13782            |m: &RegionTile| { &m.tree_materials },
13783            |m: &mut RegionTile| { &mut m.tree_materials },
13784        ));
13785        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
13786            "snow",
13787            |m: &RegionTile| { &m.snow },
13788            |m: &mut RegionTile| { &mut m.snow },
13789        ));
13790        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionTile>(
13791            "RegionTile",
13792            fields,
13793            oneofs,
13794        )
13795    }
13796}
13797
13798impl ::protobuf::Message for RegionTile {
13799    const NAME: &'static str = "RegionTile";
13800
13801    fn is_initialized(&self) -> bool {
13802        for v in &self.river_tiles {
13803            if !v.is_initialized() {
13804                return false;
13805            }
13806        };
13807        for v in &self.surface_material {
13808            if !v.is_initialized() {
13809                return false;
13810            }
13811        };
13812        for v in &self.plant_materials {
13813            if !v.is_initialized() {
13814                return false;
13815            }
13816        };
13817        for v in &self.buildings {
13818            if !v.is_initialized() {
13819                return false;
13820            }
13821        };
13822        for v in &self.stone_materials {
13823            if !v.is_initialized() {
13824                return false;
13825            }
13826        };
13827        for v in &self.tree_materials {
13828            if !v.is_initialized() {
13829                return false;
13830            }
13831        };
13832        true
13833    }
13834
13835    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
13836        while let Some(tag) = is.read_raw_tag_or_eof()? {
13837            match tag {
13838                8 => {
13839                    self.elevation = ::std::option::Option::Some(is.read_int32()?);
13840                },
13841                16 => {
13842                    self.rainfall = ::std::option::Option::Some(is.read_int32()?);
13843                },
13844                24 => {
13845                    self.vegetation = ::std::option::Option::Some(is.read_int32()?);
13846                },
13847                32 => {
13848                    self.temperature = ::std::option::Option::Some(is.read_int32()?);
13849                },
13850                40 => {
13851                    self.evilness = ::std::option::Option::Some(is.read_int32()?);
13852                },
13853                48 => {
13854                    self.drainage = ::std::option::Option::Some(is.read_int32()?);
13855                },
13856                56 => {
13857                    self.volcanism = ::std::option::Option::Some(is.read_int32()?);
13858                },
13859                64 => {
13860                    self.savagery = ::std::option::Option::Some(is.read_int32()?);
13861                },
13862                72 => {
13863                    self.salinity = ::std::option::Option::Some(is.read_int32()?);
13864                },
13865                82 => {
13866                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.river_tiles)?;
13867                },
13868                88 => {
13869                    self.water_elevation = ::std::option::Option::Some(is.read_int32()?);
13870                },
13871                98 => {
13872                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.surface_material)?;
13873                },
13874                106 => {
13875                    self.plant_materials.push(is.read_message()?);
13876                },
13877                114 => {
13878                    self.buildings.push(is.read_message()?);
13879                },
13880                122 => {
13881                    self.stone_materials.push(is.read_message()?);
13882                },
13883                130 => {
13884                    self.tree_materials.push(is.read_message()?);
13885                },
13886                136 => {
13887                    self.snow = ::std::option::Option::Some(is.read_int32()?);
13888                },
13889                tag => {
13890                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
13891                },
13892            };
13893        }
13894        ::std::result::Result::Ok(())
13895    }
13896
13897    // Compute sizes of nested messages
13898    #[allow(unused_variables)]
13899    fn compute_size(&self) -> u64 {
13900        let mut my_size = 0;
13901        if let Some(v) = self.elevation {
13902            my_size += ::protobuf::rt::int32_size(1, v);
13903        }
13904        if let Some(v) = self.rainfall {
13905            my_size += ::protobuf::rt::int32_size(2, v);
13906        }
13907        if let Some(v) = self.vegetation {
13908            my_size += ::protobuf::rt::int32_size(3, v);
13909        }
13910        if let Some(v) = self.temperature {
13911            my_size += ::protobuf::rt::int32_size(4, v);
13912        }
13913        if let Some(v) = self.evilness {
13914            my_size += ::protobuf::rt::int32_size(5, v);
13915        }
13916        if let Some(v) = self.drainage {
13917            my_size += ::protobuf::rt::int32_size(6, v);
13918        }
13919        if let Some(v) = self.volcanism {
13920            my_size += ::protobuf::rt::int32_size(7, v);
13921        }
13922        if let Some(v) = self.savagery {
13923            my_size += ::protobuf::rt::int32_size(8, v);
13924        }
13925        if let Some(v) = self.salinity {
13926            my_size += ::protobuf::rt::int32_size(9, v);
13927        }
13928        if let Some(v) = self.river_tiles.as_ref() {
13929            let len = v.compute_size();
13930            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13931        }
13932        if let Some(v) = self.water_elevation {
13933            my_size += ::protobuf::rt::int32_size(11, v);
13934        }
13935        if let Some(v) = self.surface_material.as_ref() {
13936            let len = v.compute_size();
13937            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13938        }
13939        for value in &self.plant_materials {
13940            let len = value.compute_size();
13941            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13942        };
13943        for value in &self.buildings {
13944            let len = value.compute_size();
13945            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13946        };
13947        for value in &self.stone_materials {
13948            let len = value.compute_size();
13949            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13950        };
13951        for value in &self.tree_materials {
13952            let len = value.compute_size();
13953            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
13954        };
13955        if let Some(v) = self.snow {
13956            my_size += ::protobuf::rt::int32_size(17, v);
13957        }
13958        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
13959        self.special_fields.cached_size().set(my_size as u32);
13960        my_size
13961    }
13962
13963    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
13964        if let Some(v) = self.elevation {
13965            os.write_int32(1, v)?;
13966        }
13967        if let Some(v) = self.rainfall {
13968            os.write_int32(2, v)?;
13969        }
13970        if let Some(v) = self.vegetation {
13971            os.write_int32(3, v)?;
13972        }
13973        if let Some(v) = self.temperature {
13974            os.write_int32(4, v)?;
13975        }
13976        if let Some(v) = self.evilness {
13977            os.write_int32(5, v)?;
13978        }
13979        if let Some(v) = self.drainage {
13980            os.write_int32(6, v)?;
13981        }
13982        if let Some(v) = self.volcanism {
13983            os.write_int32(7, v)?;
13984        }
13985        if let Some(v) = self.savagery {
13986            os.write_int32(8, v)?;
13987        }
13988        if let Some(v) = self.salinity {
13989            os.write_int32(9, v)?;
13990        }
13991        if let Some(v) = self.river_tiles.as_ref() {
13992            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
13993        }
13994        if let Some(v) = self.water_elevation {
13995            os.write_int32(11, v)?;
13996        }
13997        if let Some(v) = self.surface_material.as_ref() {
13998            ::protobuf::rt::write_message_field_with_cached_size(12, v, os)?;
13999        }
14000        for v in &self.plant_materials {
14001            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
14002        };
14003        for v in &self.buildings {
14004            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
14005        };
14006        for v in &self.stone_materials {
14007            ::protobuf::rt::write_message_field_with_cached_size(15, v, os)?;
14008        };
14009        for v in &self.tree_materials {
14010            ::protobuf::rt::write_message_field_with_cached_size(16, v, os)?;
14011        };
14012        if let Some(v) = self.snow {
14013            os.write_int32(17, v)?;
14014        }
14015        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14016        ::std::result::Result::Ok(())
14017    }
14018
14019    fn special_fields(&self) -> &::protobuf::SpecialFields {
14020        &self.special_fields
14021    }
14022
14023    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14024        &mut self.special_fields
14025    }
14026
14027    fn new() -> RegionTile {
14028        RegionTile::new()
14029    }
14030
14031    fn clear(&mut self) {
14032        self.elevation = ::std::option::Option::None;
14033        self.rainfall = ::std::option::Option::None;
14034        self.vegetation = ::std::option::Option::None;
14035        self.temperature = ::std::option::Option::None;
14036        self.evilness = ::std::option::Option::None;
14037        self.drainage = ::std::option::Option::None;
14038        self.volcanism = ::std::option::Option::None;
14039        self.savagery = ::std::option::Option::None;
14040        self.salinity = ::std::option::Option::None;
14041        self.river_tiles.clear();
14042        self.water_elevation = ::std::option::Option::None;
14043        self.surface_material.clear();
14044        self.plant_materials.clear();
14045        self.buildings.clear();
14046        self.stone_materials.clear();
14047        self.tree_materials.clear();
14048        self.snow = ::std::option::Option::None;
14049        self.special_fields.clear();
14050    }
14051
14052    fn default_instance() -> &'static RegionTile {
14053        static instance: RegionTile = RegionTile {
14054            elevation: ::std::option::Option::None,
14055            rainfall: ::std::option::Option::None,
14056            vegetation: ::std::option::Option::None,
14057            temperature: ::std::option::Option::None,
14058            evilness: ::std::option::Option::None,
14059            drainage: ::std::option::Option::None,
14060            volcanism: ::std::option::Option::None,
14061            savagery: ::std::option::Option::None,
14062            salinity: ::std::option::Option::None,
14063            river_tiles: ::protobuf::MessageField::none(),
14064            water_elevation: ::std::option::Option::None,
14065            surface_material: ::protobuf::MessageField::none(),
14066            plant_materials: ::std::vec::Vec::new(),
14067            buildings: ::std::vec::Vec::new(),
14068            stone_materials: ::std::vec::Vec::new(),
14069            tree_materials: ::std::vec::Vec::new(),
14070            snow: ::std::option::Option::None,
14071            special_fields: ::protobuf::SpecialFields::new(),
14072        };
14073        &instance
14074    }
14075}
14076
14077impl ::protobuf::MessageFull for RegionTile {
14078    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14079        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14080        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionTile").unwrap()).clone()
14081    }
14082}
14083
14084impl ::std::fmt::Display for RegionTile {
14085    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14086        ::protobuf::text_format::fmt(self, f)
14087    }
14088}
14089
14090impl ::protobuf::reflect::ProtobufValue for RegionTile {
14091    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14092}
14093
14094// @@protoc_insertion_point(message:RemoteFortressReader.RegionMap)
14095#[derive(PartialEq,Clone,Default,Debug)]
14096pub struct RegionMap {
14097    // message fields
14098    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.map_x)
14099    pub map_x: ::std::option::Option<i32>,
14100    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.map_y)
14101    pub map_y: ::std::option::Option<i32>,
14102    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.name)
14103    pub name: ::std::option::Option<::std::string::String>,
14104    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.name_english)
14105    pub name_english: ::std::option::Option<::std::string::String>,
14106    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMap.tiles)
14107    pub tiles: ::std::vec::Vec<RegionTile>,
14108    // special fields
14109    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionMap.special_fields)
14110    pub special_fields: ::protobuf::SpecialFields,
14111}
14112
14113impl<'a> ::std::default::Default for &'a RegionMap {
14114    fn default() -> &'a RegionMap {
14115        <RegionMap as ::protobuf::Message>::default_instance()
14116    }
14117}
14118
14119impl RegionMap {
14120    pub fn new() -> RegionMap {
14121        ::std::default::Default::default()
14122    }
14123
14124    // optional int32 map_x = 1;
14125
14126    pub fn map_x(&self) -> i32 {
14127        self.map_x.unwrap_or(0)
14128    }
14129
14130    pub fn clear_map_x(&mut self) {
14131        self.map_x = ::std::option::Option::None;
14132    }
14133
14134    pub fn has_map_x(&self) -> bool {
14135        self.map_x.is_some()
14136    }
14137
14138    // Param is passed by value, moved
14139    pub fn set_map_x(&mut self, v: i32) {
14140        self.map_x = ::std::option::Option::Some(v);
14141    }
14142
14143    // optional int32 map_y = 2;
14144
14145    pub fn map_y(&self) -> i32 {
14146        self.map_y.unwrap_or(0)
14147    }
14148
14149    pub fn clear_map_y(&mut self) {
14150        self.map_y = ::std::option::Option::None;
14151    }
14152
14153    pub fn has_map_y(&self) -> bool {
14154        self.map_y.is_some()
14155    }
14156
14157    // Param is passed by value, moved
14158    pub fn set_map_y(&mut self, v: i32) {
14159        self.map_y = ::std::option::Option::Some(v);
14160    }
14161
14162    // optional string name = 3;
14163
14164    pub fn name(&self) -> &str {
14165        match self.name.as_ref() {
14166            Some(v) => v,
14167            None => "",
14168        }
14169    }
14170
14171    pub fn clear_name(&mut self) {
14172        self.name = ::std::option::Option::None;
14173    }
14174
14175    pub fn has_name(&self) -> bool {
14176        self.name.is_some()
14177    }
14178
14179    // Param is passed by value, moved
14180    pub fn set_name(&mut self, v: ::std::string::String) {
14181        self.name = ::std::option::Option::Some(v);
14182    }
14183
14184    // Mutable pointer to the field.
14185    // If field is not initialized, it is initialized with default value first.
14186    pub fn mut_name(&mut self) -> &mut ::std::string::String {
14187        if self.name.is_none() {
14188            self.name = ::std::option::Option::Some(::std::string::String::new());
14189        }
14190        self.name.as_mut().unwrap()
14191    }
14192
14193    // Take field
14194    pub fn take_name(&mut self) -> ::std::string::String {
14195        self.name.take().unwrap_or_else(|| ::std::string::String::new())
14196    }
14197
14198    // optional string name_english = 4;
14199
14200    pub fn name_english(&self) -> &str {
14201        match self.name_english.as_ref() {
14202            Some(v) => v,
14203            None => "",
14204        }
14205    }
14206
14207    pub fn clear_name_english(&mut self) {
14208        self.name_english = ::std::option::Option::None;
14209    }
14210
14211    pub fn has_name_english(&self) -> bool {
14212        self.name_english.is_some()
14213    }
14214
14215    // Param is passed by value, moved
14216    pub fn set_name_english(&mut self, v: ::std::string::String) {
14217        self.name_english = ::std::option::Option::Some(v);
14218    }
14219
14220    // Mutable pointer to the field.
14221    // If field is not initialized, it is initialized with default value first.
14222    pub fn mut_name_english(&mut self) -> &mut ::std::string::String {
14223        if self.name_english.is_none() {
14224            self.name_english = ::std::option::Option::Some(::std::string::String::new());
14225        }
14226        self.name_english.as_mut().unwrap()
14227    }
14228
14229    // Take field
14230    pub fn take_name_english(&mut self) -> ::std::string::String {
14231        self.name_english.take().unwrap_or_else(|| ::std::string::String::new())
14232    }
14233
14234    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14235        let mut fields = ::std::vec::Vec::with_capacity(5);
14236        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14237        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14238            "map_x",
14239            |m: &RegionMap| { &m.map_x },
14240            |m: &mut RegionMap| { &mut m.map_x },
14241        ));
14242        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14243            "map_y",
14244            |m: &RegionMap| { &m.map_y },
14245            |m: &mut RegionMap| { &mut m.map_y },
14246        ));
14247        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14248            "name",
14249            |m: &RegionMap| { &m.name },
14250            |m: &mut RegionMap| { &mut m.name },
14251        ));
14252        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14253            "name_english",
14254            |m: &RegionMap| { &m.name_english },
14255            |m: &mut RegionMap| { &mut m.name_english },
14256        ));
14257        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14258            "tiles",
14259            |m: &RegionMap| { &m.tiles },
14260            |m: &mut RegionMap| { &mut m.tiles },
14261        ));
14262        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionMap>(
14263            "RegionMap",
14264            fields,
14265            oneofs,
14266        )
14267    }
14268}
14269
14270impl ::protobuf::Message for RegionMap {
14271    const NAME: &'static str = "RegionMap";
14272
14273    fn is_initialized(&self) -> bool {
14274        for v in &self.tiles {
14275            if !v.is_initialized() {
14276                return false;
14277            }
14278        };
14279        true
14280    }
14281
14282    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14283        while let Some(tag) = is.read_raw_tag_or_eof()? {
14284            match tag {
14285                8 => {
14286                    self.map_x = ::std::option::Option::Some(is.read_int32()?);
14287                },
14288                16 => {
14289                    self.map_y = ::std::option::Option::Some(is.read_int32()?);
14290                },
14291                26 => {
14292                    self.name = ::std::option::Option::Some(is.read_string()?);
14293                },
14294                34 => {
14295                    self.name_english = ::std::option::Option::Some(is.read_string()?);
14296                },
14297                42 => {
14298                    self.tiles.push(is.read_message()?);
14299                },
14300                tag => {
14301                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14302                },
14303            };
14304        }
14305        ::std::result::Result::Ok(())
14306    }
14307
14308    // Compute sizes of nested messages
14309    #[allow(unused_variables)]
14310    fn compute_size(&self) -> u64 {
14311        let mut my_size = 0;
14312        if let Some(v) = self.map_x {
14313            my_size += ::protobuf::rt::int32_size(1, v);
14314        }
14315        if let Some(v) = self.map_y {
14316            my_size += ::protobuf::rt::int32_size(2, v);
14317        }
14318        if let Some(v) = self.name.as_ref() {
14319            my_size += ::protobuf::rt::string_size(3, &v);
14320        }
14321        if let Some(v) = self.name_english.as_ref() {
14322            my_size += ::protobuf::rt::string_size(4, &v);
14323        }
14324        for value in &self.tiles {
14325            let len = value.compute_size();
14326            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14327        };
14328        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14329        self.special_fields.cached_size().set(my_size as u32);
14330        my_size
14331    }
14332
14333    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14334        if let Some(v) = self.map_x {
14335            os.write_int32(1, v)?;
14336        }
14337        if let Some(v) = self.map_y {
14338            os.write_int32(2, v)?;
14339        }
14340        if let Some(v) = self.name.as_ref() {
14341            os.write_string(3, v)?;
14342        }
14343        if let Some(v) = self.name_english.as_ref() {
14344            os.write_string(4, v)?;
14345        }
14346        for v in &self.tiles {
14347            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
14348        };
14349        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14350        ::std::result::Result::Ok(())
14351    }
14352
14353    fn special_fields(&self) -> &::protobuf::SpecialFields {
14354        &self.special_fields
14355    }
14356
14357    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14358        &mut self.special_fields
14359    }
14360
14361    fn new() -> RegionMap {
14362        RegionMap::new()
14363    }
14364
14365    fn clear(&mut self) {
14366        self.map_x = ::std::option::Option::None;
14367        self.map_y = ::std::option::Option::None;
14368        self.name = ::std::option::Option::None;
14369        self.name_english = ::std::option::Option::None;
14370        self.tiles.clear();
14371        self.special_fields.clear();
14372    }
14373
14374    fn default_instance() -> &'static RegionMap {
14375        static instance: RegionMap = RegionMap {
14376            map_x: ::std::option::Option::None,
14377            map_y: ::std::option::Option::None,
14378            name: ::std::option::Option::None,
14379            name_english: ::std::option::Option::None,
14380            tiles: ::std::vec::Vec::new(),
14381            special_fields: ::protobuf::SpecialFields::new(),
14382        };
14383        &instance
14384    }
14385}
14386
14387impl ::protobuf::MessageFull for RegionMap {
14388    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14389        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14390        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionMap").unwrap()).clone()
14391    }
14392}
14393
14394impl ::std::fmt::Display for RegionMap {
14395    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14396        ::protobuf::text_format::fmt(self, f)
14397    }
14398}
14399
14400impl ::protobuf::reflect::ProtobufValue for RegionMap {
14401    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14402}
14403
14404// @@protoc_insertion_point(message:RemoteFortressReader.RegionMaps)
14405#[derive(PartialEq,Clone,Default,Debug)]
14406pub struct RegionMaps {
14407    // message fields
14408    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMaps.world_maps)
14409    pub world_maps: ::std::vec::Vec<WorldMap>,
14410    // @@protoc_insertion_point(field:RemoteFortressReader.RegionMaps.region_maps)
14411    pub region_maps: ::std::vec::Vec<RegionMap>,
14412    // special fields
14413    // @@protoc_insertion_point(special_field:RemoteFortressReader.RegionMaps.special_fields)
14414    pub special_fields: ::protobuf::SpecialFields,
14415}
14416
14417impl<'a> ::std::default::Default for &'a RegionMaps {
14418    fn default() -> &'a RegionMaps {
14419        <RegionMaps as ::protobuf::Message>::default_instance()
14420    }
14421}
14422
14423impl RegionMaps {
14424    pub fn new() -> RegionMaps {
14425        ::std::default::Default::default()
14426    }
14427
14428    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14429        let mut fields = ::std::vec::Vec::with_capacity(2);
14430        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14431        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14432            "world_maps",
14433            |m: &RegionMaps| { &m.world_maps },
14434            |m: &mut RegionMaps| { &mut m.world_maps },
14435        ));
14436        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14437            "region_maps",
14438            |m: &RegionMaps| { &m.region_maps },
14439            |m: &mut RegionMaps| { &mut m.region_maps },
14440        ));
14441        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RegionMaps>(
14442            "RegionMaps",
14443            fields,
14444            oneofs,
14445        )
14446    }
14447}
14448
14449impl ::protobuf::Message for RegionMaps {
14450    const NAME: &'static str = "RegionMaps";
14451
14452    fn is_initialized(&self) -> bool {
14453        for v in &self.world_maps {
14454            if !v.is_initialized() {
14455                return false;
14456            }
14457        };
14458        for v in &self.region_maps {
14459            if !v.is_initialized() {
14460                return false;
14461            }
14462        };
14463        true
14464    }
14465
14466    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14467        while let Some(tag) = is.read_raw_tag_or_eof()? {
14468            match tag {
14469                10 => {
14470                    self.world_maps.push(is.read_message()?);
14471                },
14472                18 => {
14473                    self.region_maps.push(is.read_message()?);
14474                },
14475                tag => {
14476                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14477                },
14478            };
14479        }
14480        ::std::result::Result::Ok(())
14481    }
14482
14483    // Compute sizes of nested messages
14484    #[allow(unused_variables)]
14485    fn compute_size(&self) -> u64 {
14486        let mut my_size = 0;
14487        for value in &self.world_maps {
14488            let len = value.compute_size();
14489            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14490        };
14491        for value in &self.region_maps {
14492            let len = value.compute_size();
14493            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14494        };
14495        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14496        self.special_fields.cached_size().set(my_size as u32);
14497        my_size
14498    }
14499
14500    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14501        for v in &self.world_maps {
14502            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
14503        };
14504        for v in &self.region_maps {
14505            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
14506        };
14507        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14508        ::std::result::Result::Ok(())
14509    }
14510
14511    fn special_fields(&self) -> &::protobuf::SpecialFields {
14512        &self.special_fields
14513    }
14514
14515    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14516        &mut self.special_fields
14517    }
14518
14519    fn new() -> RegionMaps {
14520        RegionMaps::new()
14521    }
14522
14523    fn clear(&mut self) {
14524        self.world_maps.clear();
14525        self.region_maps.clear();
14526        self.special_fields.clear();
14527    }
14528
14529    fn default_instance() -> &'static RegionMaps {
14530        static instance: RegionMaps = RegionMaps {
14531            world_maps: ::std::vec::Vec::new(),
14532            region_maps: ::std::vec::Vec::new(),
14533            special_fields: ::protobuf::SpecialFields::new(),
14534        };
14535        &instance
14536    }
14537}
14538
14539impl ::protobuf::MessageFull for RegionMaps {
14540    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14541        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14542        descriptor.get(|| file_descriptor().message_by_package_relative_name("RegionMaps").unwrap()).clone()
14543    }
14544}
14545
14546impl ::std::fmt::Display for RegionMaps {
14547    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14548        ::protobuf::text_format::fmt(self, f)
14549    }
14550}
14551
14552impl ::protobuf::reflect::ProtobufValue for RegionMaps {
14553    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14554}
14555
14556// @@protoc_insertion_point(message:RemoteFortressReader.PatternDescriptor)
14557#[derive(PartialEq,Clone,Default,Debug)]
14558pub struct PatternDescriptor {
14559    // message fields
14560    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.id)
14561    pub id: ::std::option::Option<::std::string::String>,
14562    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.colors)
14563    pub colors: ::std::vec::Vec<ColorDefinition>,
14564    // @@protoc_insertion_point(field:RemoteFortressReader.PatternDescriptor.pattern)
14565    pub pattern: ::std::option::Option<::protobuf::EnumOrUnknown<PatternType>>,
14566    // special fields
14567    // @@protoc_insertion_point(special_field:RemoteFortressReader.PatternDescriptor.special_fields)
14568    pub special_fields: ::protobuf::SpecialFields,
14569}
14570
14571impl<'a> ::std::default::Default for &'a PatternDescriptor {
14572    fn default() -> &'a PatternDescriptor {
14573        <PatternDescriptor as ::protobuf::Message>::default_instance()
14574    }
14575}
14576
14577impl PatternDescriptor {
14578    pub fn new() -> PatternDescriptor {
14579        ::std::default::Default::default()
14580    }
14581
14582    // optional string id = 1;
14583
14584    pub fn id(&self) -> &str {
14585        match self.id.as_ref() {
14586            Some(v) => v,
14587            None => "",
14588        }
14589    }
14590
14591    pub fn clear_id(&mut self) {
14592        self.id = ::std::option::Option::None;
14593    }
14594
14595    pub fn has_id(&self) -> bool {
14596        self.id.is_some()
14597    }
14598
14599    // Param is passed by value, moved
14600    pub fn set_id(&mut self, v: ::std::string::String) {
14601        self.id = ::std::option::Option::Some(v);
14602    }
14603
14604    // Mutable pointer to the field.
14605    // If field is not initialized, it is initialized with default value first.
14606    pub fn mut_id(&mut self) -> &mut ::std::string::String {
14607        if self.id.is_none() {
14608            self.id = ::std::option::Option::Some(::std::string::String::new());
14609        }
14610        self.id.as_mut().unwrap()
14611    }
14612
14613    // Take field
14614    pub fn take_id(&mut self) -> ::std::string::String {
14615        self.id.take().unwrap_or_else(|| ::std::string::String::new())
14616    }
14617
14618    // optional .RemoteFortressReader.PatternType pattern = 3;
14619
14620    pub fn pattern(&self) -> PatternType {
14621        match self.pattern {
14622            Some(e) => e.enum_value_or(PatternType::MONOTONE),
14623            None => PatternType::MONOTONE,
14624        }
14625    }
14626
14627    pub fn clear_pattern(&mut self) {
14628        self.pattern = ::std::option::Option::None;
14629    }
14630
14631    pub fn has_pattern(&self) -> bool {
14632        self.pattern.is_some()
14633    }
14634
14635    // Param is passed by value, moved
14636    pub fn set_pattern(&mut self, v: PatternType) {
14637        self.pattern = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
14638    }
14639
14640    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14641        let mut fields = ::std::vec::Vec::with_capacity(3);
14642        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14643        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14644            "id",
14645            |m: &PatternDescriptor| { &m.id },
14646            |m: &mut PatternDescriptor| { &mut m.id },
14647        ));
14648        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14649            "colors",
14650            |m: &PatternDescriptor| { &m.colors },
14651            |m: &mut PatternDescriptor| { &mut m.colors },
14652        ));
14653        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14654            "pattern",
14655            |m: &PatternDescriptor| { &m.pattern },
14656            |m: &mut PatternDescriptor| { &mut m.pattern },
14657        ));
14658        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PatternDescriptor>(
14659            "PatternDescriptor",
14660            fields,
14661            oneofs,
14662        )
14663    }
14664}
14665
14666impl ::protobuf::Message for PatternDescriptor {
14667    const NAME: &'static str = "PatternDescriptor";
14668
14669    fn is_initialized(&self) -> bool {
14670        for v in &self.colors {
14671            if !v.is_initialized() {
14672                return false;
14673            }
14674        };
14675        true
14676    }
14677
14678    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14679        while let Some(tag) = is.read_raw_tag_or_eof()? {
14680            match tag {
14681                10 => {
14682                    self.id = ::std::option::Option::Some(is.read_string()?);
14683                },
14684                18 => {
14685                    self.colors.push(is.read_message()?);
14686                },
14687                24 => {
14688                    self.pattern = ::std::option::Option::Some(is.read_enum_or_unknown()?);
14689                },
14690                tag => {
14691                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14692                },
14693            };
14694        }
14695        ::std::result::Result::Ok(())
14696    }
14697
14698    // Compute sizes of nested messages
14699    #[allow(unused_variables)]
14700    fn compute_size(&self) -> u64 {
14701        let mut my_size = 0;
14702        if let Some(v) = self.id.as_ref() {
14703            my_size += ::protobuf::rt::string_size(1, &v);
14704        }
14705        for value in &self.colors {
14706            let len = value.compute_size();
14707            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14708        };
14709        if let Some(v) = self.pattern {
14710            my_size += ::protobuf::rt::int32_size(3, v.value());
14711        }
14712        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14713        self.special_fields.cached_size().set(my_size as u32);
14714        my_size
14715    }
14716
14717    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
14718        if let Some(v) = self.id.as_ref() {
14719            os.write_string(1, v)?;
14720        }
14721        for v in &self.colors {
14722            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
14723        };
14724        if let Some(v) = self.pattern {
14725            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
14726        }
14727        os.write_unknown_fields(self.special_fields.unknown_fields())?;
14728        ::std::result::Result::Ok(())
14729    }
14730
14731    fn special_fields(&self) -> &::protobuf::SpecialFields {
14732        &self.special_fields
14733    }
14734
14735    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
14736        &mut self.special_fields
14737    }
14738
14739    fn new() -> PatternDescriptor {
14740        PatternDescriptor::new()
14741    }
14742
14743    fn clear(&mut self) {
14744        self.id = ::std::option::Option::None;
14745        self.colors.clear();
14746        self.pattern = ::std::option::Option::None;
14747        self.special_fields.clear();
14748    }
14749
14750    fn default_instance() -> &'static PatternDescriptor {
14751        static instance: PatternDescriptor = PatternDescriptor {
14752            id: ::std::option::Option::None,
14753            colors: ::std::vec::Vec::new(),
14754            pattern: ::std::option::Option::None,
14755            special_fields: ::protobuf::SpecialFields::new(),
14756        };
14757        &instance
14758    }
14759}
14760
14761impl ::protobuf::MessageFull for PatternDescriptor {
14762    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
14763        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
14764        descriptor.get(|| file_descriptor().message_by_package_relative_name("PatternDescriptor").unwrap()).clone()
14765    }
14766}
14767
14768impl ::std::fmt::Display for PatternDescriptor {
14769    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
14770        ::protobuf::text_format::fmt(self, f)
14771    }
14772}
14773
14774impl ::protobuf::reflect::ProtobufValue for PatternDescriptor {
14775    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
14776}
14777
14778// @@protoc_insertion_point(message:RemoteFortressReader.ColorModifierRaw)
14779#[derive(PartialEq,Clone,Default,Debug)]
14780pub struct ColorModifierRaw {
14781    // message fields
14782    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.patterns)
14783    pub patterns: ::std::vec::Vec<PatternDescriptor>,
14784    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.body_part_id)
14785    pub body_part_id: ::std::vec::Vec<i32>,
14786    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.tissue_layer_id)
14787    pub tissue_layer_id: ::std::vec::Vec<i32>,
14788    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.start_date)
14789    pub start_date: ::std::option::Option<i32>,
14790    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.end_date)
14791    pub end_date: ::std::option::Option<i32>,
14792    // @@protoc_insertion_point(field:RemoteFortressReader.ColorModifierRaw.part)
14793    pub part: ::std::option::Option<::std::string::String>,
14794    // special fields
14795    // @@protoc_insertion_point(special_field:RemoteFortressReader.ColorModifierRaw.special_fields)
14796    pub special_fields: ::protobuf::SpecialFields,
14797}
14798
14799impl<'a> ::std::default::Default for &'a ColorModifierRaw {
14800    fn default() -> &'a ColorModifierRaw {
14801        <ColorModifierRaw as ::protobuf::Message>::default_instance()
14802    }
14803}
14804
14805impl ColorModifierRaw {
14806    pub fn new() -> ColorModifierRaw {
14807        ::std::default::Default::default()
14808    }
14809
14810    // optional int32 start_date = 4;
14811
14812    pub fn start_date(&self) -> i32 {
14813        self.start_date.unwrap_or(0)
14814    }
14815
14816    pub fn clear_start_date(&mut self) {
14817        self.start_date = ::std::option::Option::None;
14818    }
14819
14820    pub fn has_start_date(&self) -> bool {
14821        self.start_date.is_some()
14822    }
14823
14824    // Param is passed by value, moved
14825    pub fn set_start_date(&mut self, v: i32) {
14826        self.start_date = ::std::option::Option::Some(v);
14827    }
14828
14829    // optional int32 end_date = 5;
14830
14831    pub fn end_date(&self) -> i32 {
14832        self.end_date.unwrap_or(0)
14833    }
14834
14835    pub fn clear_end_date(&mut self) {
14836        self.end_date = ::std::option::Option::None;
14837    }
14838
14839    pub fn has_end_date(&self) -> bool {
14840        self.end_date.is_some()
14841    }
14842
14843    // Param is passed by value, moved
14844    pub fn set_end_date(&mut self, v: i32) {
14845        self.end_date = ::std::option::Option::Some(v);
14846    }
14847
14848    // optional string part = 6;
14849
14850    pub fn part(&self) -> &str {
14851        match self.part.as_ref() {
14852            Some(v) => v,
14853            None => "",
14854        }
14855    }
14856
14857    pub fn clear_part(&mut self) {
14858        self.part = ::std::option::Option::None;
14859    }
14860
14861    pub fn has_part(&self) -> bool {
14862        self.part.is_some()
14863    }
14864
14865    // Param is passed by value, moved
14866    pub fn set_part(&mut self, v: ::std::string::String) {
14867        self.part = ::std::option::Option::Some(v);
14868    }
14869
14870    // Mutable pointer to the field.
14871    // If field is not initialized, it is initialized with default value first.
14872    pub fn mut_part(&mut self) -> &mut ::std::string::String {
14873        if self.part.is_none() {
14874            self.part = ::std::option::Option::Some(::std::string::String::new());
14875        }
14876        self.part.as_mut().unwrap()
14877    }
14878
14879    // Take field
14880    pub fn take_part(&mut self) -> ::std::string::String {
14881        self.part.take().unwrap_or_else(|| ::std::string::String::new())
14882    }
14883
14884    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
14885        let mut fields = ::std::vec::Vec::with_capacity(6);
14886        let mut oneofs = ::std::vec::Vec::with_capacity(0);
14887        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14888            "patterns",
14889            |m: &ColorModifierRaw| { &m.patterns },
14890            |m: &mut ColorModifierRaw| { &mut m.patterns },
14891        ));
14892        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14893            "body_part_id",
14894            |m: &ColorModifierRaw| { &m.body_part_id },
14895            |m: &mut ColorModifierRaw| { &mut m.body_part_id },
14896        ));
14897        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
14898            "tissue_layer_id",
14899            |m: &ColorModifierRaw| { &m.tissue_layer_id },
14900            |m: &mut ColorModifierRaw| { &mut m.tissue_layer_id },
14901        ));
14902        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14903            "start_date",
14904            |m: &ColorModifierRaw| { &m.start_date },
14905            |m: &mut ColorModifierRaw| { &mut m.start_date },
14906        ));
14907        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14908            "end_date",
14909            |m: &ColorModifierRaw| { &m.end_date },
14910            |m: &mut ColorModifierRaw| { &mut m.end_date },
14911        ));
14912        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
14913            "part",
14914            |m: &ColorModifierRaw| { &m.part },
14915            |m: &mut ColorModifierRaw| { &mut m.part },
14916        ));
14917        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ColorModifierRaw>(
14918            "ColorModifierRaw",
14919            fields,
14920            oneofs,
14921        )
14922    }
14923}
14924
14925impl ::protobuf::Message for ColorModifierRaw {
14926    const NAME: &'static str = "ColorModifierRaw";
14927
14928    fn is_initialized(&self) -> bool {
14929        for v in &self.patterns {
14930            if !v.is_initialized() {
14931                return false;
14932            }
14933        };
14934        true
14935    }
14936
14937    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
14938        while let Some(tag) = is.read_raw_tag_or_eof()? {
14939            match tag {
14940                10 => {
14941                    self.patterns.push(is.read_message()?);
14942                },
14943                18 => {
14944                    is.read_repeated_packed_int32_into(&mut self.body_part_id)?;
14945                },
14946                16 => {
14947                    self.body_part_id.push(is.read_int32()?);
14948                },
14949                26 => {
14950                    is.read_repeated_packed_int32_into(&mut self.tissue_layer_id)?;
14951                },
14952                24 => {
14953                    self.tissue_layer_id.push(is.read_int32()?);
14954                },
14955                32 => {
14956                    self.start_date = ::std::option::Option::Some(is.read_int32()?);
14957                },
14958                40 => {
14959                    self.end_date = ::std::option::Option::Some(is.read_int32()?);
14960                },
14961                50 => {
14962                    self.part = ::std::option::Option::Some(is.read_string()?);
14963                },
14964                tag => {
14965                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
14966                },
14967            };
14968        }
14969        ::std::result::Result::Ok(())
14970    }
14971
14972    // Compute sizes of nested messages
14973    #[allow(unused_variables)]
14974    fn compute_size(&self) -> u64 {
14975        let mut my_size = 0;
14976        for value in &self.patterns {
14977            let len = value.compute_size();
14978            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
14979        };
14980        for value in &self.body_part_id {
14981            my_size += ::protobuf::rt::int32_size(2, *value);
14982        };
14983        for value in &self.tissue_layer_id {
14984            my_size += ::protobuf::rt::int32_size(3, *value);
14985        };
14986        if let Some(v) = self.start_date {
14987            my_size += ::protobuf::rt::int32_size(4, v);
14988        }
14989        if let Some(v) = self.end_date {
14990            my_size += ::protobuf::rt::int32_size(5, v);
14991        }
14992        if let Some(v) = self.part.as_ref() {
14993            my_size += ::protobuf::rt::string_size(6, &v);
14994        }
14995        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
14996        self.special_fields.cached_size().set(my_size as u32);
14997        my_size
14998    }
14999
15000    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15001        for v in &self.patterns {
15002            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
15003        };
15004        for v in &self.body_part_id {
15005            os.write_int32(2, *v)?;
15006        };
15007        for v in &self.tissue_layer_id {
15008            os.write_int32(3, *v)?;
15009        };
15010        if let Some(v) = self.start_date {
15011            os.write_int32(4, v)?;
15012        }
15013        if let Some(v) = self.end_date {
15014            os.write_int32(5, v)?;
15015        }
15016        if let Some(v) = self.part.as_ref() {
15017            os.write_string(6, v)?;
15018        }
15019        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15020        ::std::result::Result::Ok(())
15021    }
15022
15023    fn special_fields(&self) -> &::protobuf::SpecialFields {
15024        &self.special_fields
15025    }
15026
15027    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15028        &mut self.special_fields
15029    }
15030
15031    fn new() -> ColorModifierRaw {
15032        ColorModifierRaw::new()
15033    }
15034
15035    fn clear(&mut self) {
15036        self.patterns.clear();
15037        self.body_part_id.clear();
15038        self.tissue_layer_id.clear();
15039        self.start_date = ::std::option::Option::None;
15040        self.end_date = ::std::option::Option::None;
15041        self.part = ::std::option::Option::None;
15042        self.special_fields.clear();
15043    }
15044
15045    fn default_instance() -> &'static ColorModifierRaw {
15046        static instance: ColorModifierRaw = ColorModifierRaw {
15047            patterns: ::std::vec::Vec::new(),
15048            body_part_id: ::std::vec::Vec::new(),
15049            tissue_layer_id: ::std::vec::Vec::new(),
15050            start_date: ::std::option::Option::None,
15051            end_date: ::std::option::Option::None,
15052            part: ::std::option::Option::None,
15053            special_fields: ::protobuf::SpecialFields::new(),
15054        };
15055        &instance
15056    }
15057}
15058
15059impl ::protobuf::MessageFull for ColorModifierRaw {
15060    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15061        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15062        descriptor.get(|| file_descriptor().message_by_package_relative_name("ColorModifierRaw").unwrap()).clone()
15063    }
15064}
15065
15066impl ::std::fmt::Display for ColorModifierRaw {
15067    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15068        ::protobuf::text_format::fmt(self, f)
15069    }
15070}
15071
15072impl ::protobuf::reflect::ProtobufValue for ColorModifierRaw {
15073    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15074}
15075
15076// @@protoc_insertion_point(message:RemoteFortressReader.BodyPartLayerRaw)
15077#[derive(PartialEq,Clone,Default,Debug)]
15078pub struct BodyPartLayerRaw {
15079    // message fields
15080    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.layer_name)
15081    pub layer_name: ::std::option::Option<::std::string::String>,
15082    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.tissue_id)
15083    pub tissue_id: ::std::option::Option<i32>,
15084    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.layer_depth)
15085    pub layer_depth: ::std::option::Option<i32>,
15086    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartLayerRaw.bp_modifiers)
15087    pub bp_modifiers: ::std::vec::Vec<i32>,
15088    // special fields
15089    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodyPartLayerRaw.special_fields)
15090    pub special_fields: ::protobuf::SpecialFields,
15091}
15092
15093impl<'a> ::std::default::Default for &'a BodyPartLayerRaw {
15094    fn default() -> &'a BodyPartLayerRaw {
15095        <BodyPartLayerRaw as ::protobuf::Message>::default_instance()
15096    }
15097}
15098
15099impl BodyPartLayerRaw {
15100    pub fn new() -> BodyPartLayerRaw {
15101        ::std::default::Default::default()
15102    }
15103
15104    // optional string layer_name = 1;
15105
15106    pub fn layer_name(&self) -> &str {
15107        match self.layer_name.as_ref() {
15108            Some(v) => v,
15109            None => "",
15110        }
15111    }
15112
15113    pub fn clear_layer_name(&mut self) {
15114        self.layer_name = ::std::option::Option::None;
15115    }
15116
15117    pub fn has_layer_name(&self) -> bool {
15118        self.layer_name.is_some()
15119    }
15120
15121    // Param is passed by value, moved
15122    pub fn set_layer_name(&mut self, v: ::std::string::String) {
15123        self.layer_name = ::std::option::Option::Some(v);
15124    }
15125
15126    // Mutable pointer to the field.
15127    // If field is not initialized, it is initialized with default value first.
15128    pub fn mut_layer_name(&mut self) -> &mut ::std::string::String {
15129        if self.layer_name.is_none() {
15130            self.layer_name = ::std::option::Option::Some(::std::string::String::new());
15131        }
15132        self.layer_name.as_mut().unwrap()
15133    }
15134
15135    // Take field
15136    pub fn take_layer_name(&mut self) -> ::std::string::String {
15137        self.layer_name.take().unwrap_or_else(|| ::std::string::String::new())
15138    }
15139
15140    // optional int32 tissue_id = 2;
15141
15142    pub fn tissue_id(&self) -> i32 {
15143        self.tissue_id.unwrap_or(0)
15144    }
15145
15146    pub fn clear_tissue_id(&mut self) {
15147        self.tissue_id = ::std::option::Option::None;
15148    }
15149
15150    pub fn has_tissue_id(&self) -> bool {
15151        self.tissue_id.is_some()
15152    }
15153
15154    // Param is passed by value, moved
15155    pub fn set_tissue_id(&mut self, v: i32) {
15156        self.tissue_id = ::std::option::Option::Some(v);
15157    }
15158
15159    // optional int32 layer_depth = 3;
15160
15161    pub fn layer_depth(&self) -> i32 {
15162        self.layer_depth.unwrap_or(0)
15163    }
15164
15165    pub fn clear_layer_depth(&mut self) {
15166        self.layer_depth = ::std::option::Option::None;
15167    }
15168
15169    pub fn has_layer_depth(&self) -> bool {
15170        self.layer_depth.is_some()
15171    }
15172
15173    // Param is passed by value, moved
15174    pub fn set_layer_depth(&mut self, v: i32) {
15175        self.layer_depth = ::std::option::Option::Some(v);
15176    }
15177
15178    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15179        let mut fields = ::std::vec::Vec::with_capacity(4);
15180        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15181        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15182            "layer_name",
15183            |m: &BodyPartLayerRaw| { &m.layer_name },
15184            |m: &mut BodyPartLayerRaw| { &mut m.layer_name },
15185        ));
15186        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15187            "tissue_id",
15188            |m: &BodyPartLayerRaw| { &m.tissue_id },
15189            |m: &mut BodyPartLayerRaw| { &mut m.tissue_id },
15190        ));
15191        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15192            "layer_depth",
15193            |m: &BodyPartLayerRaw| { &m.layer_depth },
15194            |m: &mut BodyPartLayerRaw| { &mut m.layer_depth },
15195        ));
15196        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15197            "bp_modifiers",
15198            |m: &BodyPartLayerRaw| { &m.bp_modifiers },
15199            |m: &mut BodyPartLayerRaw| { &mut m.bp_modifiers },
15200        ));
15201        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodyPartLayerRaw>(
15202            "BodyPartLayerRaw",
15203            fields,
15204            oneofs,
15205        )
15206    }
15207}
15208
15209impl ::protobuf::Message for BodyPartLayerRaw {
15210    const NAME: &'static str = "BodyPartLayerRaw";
15211
15212    fn is_initialized(&self) -> bool {
15213        true
15214    }
15215
15216    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15217        while let Some(tag) = is.read_raw_tag_or_eof()? {
15218            match tag {
15219                10 => {
15220                    self.layer_name = ::std::option::Option::Some(is.read_string()?);
15221                },
15222                16 => {
15223                    self.tissue_id = ::std::option::Option::Some(is.read_int32()?);
15224                },
15225                24 => {
15226                    self.layer_depth = ::std::option::Option::Some(is.read_int32()?);
15227                },
15228                34 => {
15229                    is.read_repeated_packed_int32_into(&mut self.bp_modifiers)?;
15230                },
15231                32 => {
15232                    self.bp_modifiers.push(is.read_int32()?);
15233                },
15234                tag => {
15235                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15236                },
15237            };
15238        }
15239        ::std::result::Result::Ok(())
15240    }
15241
15242    // Compute sizes of nested messages
15243    #[allow(unused_variables)]
15244    fn compute_size(&self) -> u64 {
15245        let mut my_size = 0;
15246        if let Some(v) = self.layer_name.as_ref() {
15247            my_size += ::protobuf::rt::string_size(1, &v);
15248        }
15249        if let Some(v) = self.tissue_id {
15250            my_size += ::protobuf::rt::int32_size(2, v);
15251        }
15252        if let Some(v) = self.layer_depth {
15253            my_size += ::protobuf::rt::int32_size(3, v);
15254        }
15255        for value in &self.bp_modifiers {
15256            my_size += ::protobuf::rt::int32_size(4, *value);
15257        };
15258        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15259        self.special_fields.cached_size().set(my_size as u32);
15260        my_size
15261    }
15262
15263    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15264        if let Some(v) = self.layer_name.as_ref() {
15265            os.write_string(1, v)?;
15266        }
15267        if let Some(v) = self.tissue_id {
15268            os.write_int32(2, v)?;
15269        }
15270        if let Some(v) = self.layer_depth {
15271            os.write_int32(3, v)?;
15272        }
15273        for v in &self.bp_modifiers {
15274            os.write_int32(4, *v)?;
15275        };
15276        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15277        ::std::result::Result::Ok(())
15278    }
15279
15280    fn special_fields(&self) -> &::protobuf::SpecialFields {
15281        &self.special_fields
15282    }
15283
15284    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15285        &mut self.special_fields
15286    }
15287
15288    fn new() -> BodyPartLayerRaw {
15289        BodyPartLayerRaw::new()
15290    }
15291
15292    fn clear(&mut self) {
15293        self.layer_name = ::std::option::Option::None;
15294        self.tissue_id = ::std::option::Option::None;
15295        self.layer_depth = ::std::option::Option::None;
15296        self.bp_modifiers.clear();
15297        self.special_fields.clear();
15298    }
15299
15300    fn default_instance() -> &'static BodyPartLayerRaw {
15301        static instance: BodyPartLayerRaw = BodyPartLayerRaw {
15302            layer_name: ::std::option::Option::None,
15303            tissue_id: ::std::option::Option::None,
15304            layer_depth: ::std::option::Option::None,
15305            bp_modifiers: ::std::vec::Vec::new(),
15306            special_fields: ::protobuf::SpecialFields::new(),
15307        };
15308        &instance
15309    }
15310}
15311
15312impl ::protobuf::MessageFull for BodyPartLayerRaw {
15313    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15314        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15315        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodyPartLayerRaw").unwrap()).clone()
15316    }
15317}
15318
15319impl ::std::fmt::Display for BodyPartLayerRaw {
15320    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15321        ::protobuf::text_format::fmt(self, f)
15322    }
15323}
15324
15325impl ::protobuf::reflect::ProtobufValue for BodyPartLayerRaw {
15326    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15327}
15328
15329// @@protoc_insertion_point(message:RemoteFortressReader.BodyPartRaw)
15330#[derive(PartialEq,Clone,Default,Debug)]
15331pub struct BodyPartRaw {
15332    // message fields
15333    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.token)
15334    pub token: ::std::option::Option<::std::string::String>,
15335    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.category)
15336    pub category: ::std::option::Option<::std::string::String>,
15337    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.parent)
15338    pub parent: ::std::option::Option<i32>,
15339    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.flags)
15340    pub flags: ::std::vec::Vec<bool>,
15341    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.layers)
15342    pub layers: ::std::vec::Vec<BodyPartLayerRaw>,
15343    // @@protoc_insertion_point(field:RemoteFortressReader.BodyPartRaw.relsize)
15344    pub relsize: ::std::option::Option<i32>,
15345    // special fields
15346    // @@protoc_insertion_point(special_field:RemoteFortressReader.BodyPartRaw.special_fields)
15347    pub special_fields: ::protobuf::SpecialFields,
15348}
15349
15350impl<'a> ::std::default::Default for &'a BodyPartRaw {
15351    fn default() -> &'a BodyPartRaw {
15352        <BodyPartRaw as ::protobuf::Message>::default_instance()
15353    }
15354}
15355
15356impl BodyPartRaw {
15357    pub fn new() -> BodyPartRaw {
15358        ::std::default::Default::default()
15359    }
15360
15361    // optional string token = 1;
15362
15363    pub fn token(&self) -> &str {
15364        match self.token.as_ref() {
15365            Some(v) => v,
15366            None => "",
15367        }
15368    }
15369
15370    pub fn clear_token(&mut self) {
15371        self.token = ::std::option::Option::None;
15372    }
15373
15374    pub fn has_token(&self) -> bool {
15375        self.token.is_some()
15376    }
15377
15378    // Param is passed by value, moved
15379    pub fn set_token(&mut self, v: ::std::string::String) {
15380        self.token = ::std::option::Option::Some(v);
15381    }
15382
15383    // Mutable pointer to the field.
15384    // If field is not initialized, it is initialized with default value first.
15385    pub fn mut_token(&mut self) -> &mut ::std::string::String {
15386        if self.token.is_none() {
15387            self.token = ::std::option::Option::Some(::std::string::String::new());
15388        }
15389        self.token.as_mut().unwrap()
15390    }
15391
15392    // Take field
15393    pub fn take_token(&mut self) -> ::std::string::String {
15394        self.token.take().unwrap_or_else(|| ::std::string::String::new())
15395    }
15396
15397    // optional string category = 2;
15398
15399    pub fn category(&self) -> &str {
15400        match self.category.as_ref() {
15401            Some(v) => v,
15402            None => "",
15403        }
15404    }
15405
15406    pub fn clear_category(&mut self) {
15407        self.category = ::std::option::Option::None;
15408    }
15409
15410    pub fn has_category(&self) -> bool {
15411        self.category.is_some()
15412    }
15413
15414    // Param is passed by value, moved
15415    pub fn set_category(&mut self, v: ::std::string::String) {
15416        self.category = ::std::option::Option::Some(v);
15417    }
15418
15419    // Mutable pointer to the field.
15420    // If field is not initialized, it is initialized with default value first.
15421    pub fn mut_category(&mut self) -> &mut ::std::string::String {
15422        if self.category.is_none() {
15423            self.category = ::std::option::Option::Some(::std::string::String::new());
15424        }
15425        self.category.as_mut().unwrap()
15426    }
15427
15428    // Take field
15429    pub fn take_category(&mut self) -> ::std::string::String {
15430        self.category.take().unwrap_or_else(|| ::std::string::String::new())
15431    }
15432
15433    // optional int32 parent = 3;
15434
15435    pub fn parent(&self) -> i32 {
15436        self.parent.unwrap_or(0)
15437    }
15438
15439    pub fn clear_parent(&mut self) {
15440        self.parent = ::std::option::Option::None;
15441    }
15442
15443    pub fn has_parent(&self) -> bool {
15444        self.parent.is_some()
15445    }
15446
15447    // Param is passed by value, moved
15448    pub fn set_parent(&mut self, v: i32) {
15449        self.parent = ::std::option::Option::Some(v);
15450    }
15451
15452    // optional int32 relsize = 6;
15453
15454    pub fn relsize(&self) -> i32 {
15455        self.relsize.unwrap_or(0)
15456    }
15457
15458    pub fn clear_relsize(&mut self) {
15459        self.relsize = ::std::option::Option::None;
15460    }
15461
15462    pub fn has_relsize(&self) -> bool {
15463        self.relsize.is_some()
15464    }
15465
15466    // Param is passed by value, moved
15467    pub fn set_relsize(&mut self, v: i32) {
15468        self.relsize = ::std::option::Option::Some(v);
15469    }
15470
15471    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15472        let mut fields = ::std::vec::Vec::with_capacity(6);
15473        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15474        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15475            "token",
15476            |m: &BodyPartRaw| { &m.token },
15477            |m: &mut BodyPartRaw| { &mut m.token },
15478        ));
15479        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15480            "category",
15481            |m: &BodyPartRaw| { &m.category },
15482            |m: &mut BodyPartRaw| { &mut m.category },
15483        ));
15484        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15485            "parent",
15486            |m: &BodyPartRaw| { &m.parent },
15487            |m: &mut BodyPartRaw| { &mut m.parent },
15488        ));
15489        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15490            "flags",
15491            |m: &BodyPartRaw| { &m.flags },
15492            |m: &mut BodyPartRaw| { &mut m.flags },
15493        ));
15494        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
15495            "layers",
15496            |m: &BodyPartRaw| { &m.layers },
15497            |m: &mut BodyPartRaw| { &mut m.layers },
15498        ));
15499        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15500            "relsize",
15501            |m: &BodyPartRaw| { &m.relsize },
15502            |m: &mut BodyPartRaw| { &mut m.relsize },
15503        ));
15504        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BodyPartRaw>(
15505            "BodyPartRaw",
15506            fields,
15507            oneofs,
15508        )
15509    }
15510}
15511
15512impl ::protobuf::Message for BodyPartRaw {
15513    const NAME: &'static str = "BodyPartRaw";
15514
15515    fn is_initialized(&self) -> bool {
15516        true
15517    }
15518
15519    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15520        while let Some(tag) = is.read_raw_tag_or_eof()? {
15521            match tag {
15522                10 => {
15523                    self.token = ::std::option::Option::Some(is.read_string()?);
15524                },
15525                18 => {
15526                    self.category = ::std::option::Option::Some(is.read_string()?);
15527                },
15528                24 => {
15529                    self.parent = ::std::option::Option::Some(is.read_int32()?);
15530                },
15531                34 => {
15532                    is.read_repeated_packed_bool_into(&mut self.flags)?;
15533                },
15534                32 => {
15535                    self.flags.push(is.read_bool()?);
15536                },
15537                42 => {
15538                    self.layers.push(is.read_message()?);
15539                },
15540                48 => {
15541                    self.relsize = ::std::option::Option::Some(is.read_int32()?);
15542                },
15543                tag => {
15544                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15545                },
15546            };
15547        }
15548        ::std::result::Result::Ok(())
15549    }
15550
15551    // Compute sizes of nested messages
15552    #[allow(unused_variables)]
15553    fn compute_size(&self) -> u64 {
15554        let mut my_size = 0;
15555        if let Some(v) = self.token.as_ref() {
15556            my_size += ::protobuf::rt::string_size(1, &v);
15557        }
15558        if let Some(v) = self.category.as_ref() {
15559            my_size += ::protobuf::rt::string_size(2, &v);
15560        }
15561        if let Some(v) = self.parent {
15562            my_size += ::protobuf::rt::int32_size(3, v);
15563        }
15564        my_size += 2 * self.flags.len() as u64;
15565        for value in &self.layers {
15566            let len = value.compute_size();
15567            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
15568        };
15569        if let Some(v) = self.relsize {
15570            my_size += ::protobuf::rt::int32_size(6, v);
15571        }
15572        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15573        self.special_fields.cached_size().set(my_size as u32);
15574        my_size
15575    }
15576
15577    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15578        if let Some(v) = self.token.as_ref() {
15579            os.write_string(1, v)?;
15580        }
15581        if let Some(v) = self.category.as_ref() {
15582            os.write_string(2, v)?;
15583        }
15584        if let Some(v) = self.parent {
15585            os.write_int32(3, v)?;
15586        }
15587        for v in &self.flags {
15588            os.write_bool(4, *v)?;
15589        };
15590        for v in &self.layers {
15591            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
15592        };
15593        if let Some(v) = self.relsize {
15594            os.write_int32(6, v)?;
15595        }
15596        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15597        ::std::result::Result::Ok(())
15598    }
15599
15600    fn special_fields(&self) -> &::protobuf::SpecialFields {
15601        &self.special_fields
15602    }
15603
15604    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15605        &mut self.special_fields
15606    }
15607
15608    fn new() -> BodyPartRaw {
15609        BodyPartRaw::new()
15610    }
15611
15612    fn clear(&mut self) {
15613        self.token = ::std::option::Option::None;
15614        self.category = ::std::option::Option::None;
15615        self.parent = ::std::option::Option::None;
15616        self.flags.clear();
15617        self.layers.clear();
15618        self.relsize = ::std::option::Option::None;
15619        self.special_fields.clear();
15620    }
15621
15622    fn default_instance() -> &'static BodyPartRaw {
15623        static instance: BodyPartRaw = BodyPartRaw {
15624            token: ::std::option::Option::None,
15625            category: ::std::option::Option::None,
15626            parent: ::std::option::Option::None,
15627            flags: ::std::vec::Vec::new(),
15628            layers: ::std::vec::Vec::new(),
15629            relsize: ::std::option::Option::None,
15630            special_fields: ::protobuf::SpecialFields::new(),
15631        };
15632        &instance
15633    }
15634}
15635
15636impl ::protobuf::MessageFull for BodyPartRaw {
15637    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15638        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15639        descriptor.get(|| file_descriptor().message_by_package_relative_name("BodyPartRaw").unwrap()).clone()
15640    }
15641}
15642
15643impl ::std::fmt::Display for BodyPartRaw {
15644    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15645        ::protobuf::text_format::fmt(self, f)
15646    }
15647}
15648
15649impl ::protobuf::reflect::ProtobufValue for BodyPartRaw {
15650    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15651}
15652
15653// @@protoc_insertion_point(message:RemoteFortressReader.BpAppearanceModifier)
15654#[derive(PartialEq,Clone,Default,Debug)]
15655pub struct BpAppearanceModifier {
15656    // message fields
15657    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.type)
15658    pub type_: ::std::option::Option<::std::string::String>,
15659    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.mod_min)
15660    pub mod_min: ::std::option::Option<i32>,
15661    // @@protoc_insertion_point(field:RemoteFortressReader.BpAppearanceModifier.mod_max)
15662    pub mod_max: ::std::option::Option<i32>,
15663    // special fields
15664    // @@protoc_insertion_point(special_field:RemoteFortressReader.BpAppearanceModifier.special_fields)
15665    pub special_fields: ::protobuf::SpecialFields,
15666}
15667
15668impl<'a> ::std::default::Default for &'a BpAppearanceModifier {
15669    fn default() -> &'a BpAppearanceModifier {
15670        <BpAppearanceModifier as ::protobuf::Message>::default_instance()
15671    }
15672}
15673
15674impl BpAppearanceModifier {
15675    pub fn new() -> BpAppearanceModifier {
15676        ::std::default::Default::default()
15677    }
15678
15679    // optional string type = 1;
15680
15681    pub fn type_(&self) -> &str {
15682        match self.type_.as_ref() {
15683            Some(v) => v,
15684            None => "",
15685        }
15686    }
15687
15688    pub fn clear_type_(&mut self) {
15689        self.type_ = ::std::option::Option::None;
15690    }
15691
15692    pub fn has_type(&self) -> bool {
15693        self.type_.is_some()
15694    }
15695
15696    // Param is passed by value, moved
15697    pub fn set_type(&mut self, v: ::std::string::String) {
15698        self.type_ = ::std::option::Option::Some(v);
15699    }
15700
15701    // Mutable pointer to the field.
15702    // If field is not initialized, it is initialized with default value first.
15703    pub fn mut_type(&mut self) -> &mut ::std::string::String {
15704        if self.type_.is_none() {
15705            self.type_ = ::std::option::Option::Some(::std::string::String::new());
15706        }
15707        self.type_.as_mut().unwrap()
15708    }
15709
15710    // Take field
15711    pub fn take_type_(&mut self) -> ::std::string::String {
15712        self.type_.take().unwrap_or_else(|| ::std::string::String::new())
15713    }
15714
15715    // optional int32 mod_min = 2;
15716
15717    pub fn mod_min(&self) -> i32 {
15718        self.mod_min.unwrap_or(0)
15719    }
15720
15721    pub fn clear_mod_min(&mut self) {
15722        self.mod_min = ::std::option::Option::None;
15723    }
15724
15725    pub fn has_mod_min(&self) -> bool {
15726        self.mod_min.is_some()
15727    }
15728
15729    // Param is passed by value, moved
15730    pub fn set_mod_min(&mut self, v: i32) {
15731        self.mod_min = ::std::option::Option::Some(v);
15732    }
15733
15734    // optional int32 mod_max = 3;
15735
15736    pub fn mod_max(&self) -> i32 {
15737        self.mod_max.unwrap_or(0)
15738    }
15739
15740    pub fn clear_mod_max(&mut self) {
15741        self.mod_max = ::std::option::Option::None;
15742    }
15743
15744    pub fn has_mod_max(&self) -> bool {
15745        self.mod_max.is_some()
15746    }
15747
15748    // Param is passed by value, moved
15749    pub fn set_mod_max(&mut self, v: i32) {
15750        self.mod_max = ::std::option::Option::Some(v);
15751    }
15752
15753    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
15754        let mut fields = ::std::vec::Vec::with_capacity(3);
15755        let mut oneofs = ::std::vec::Vec::with_capacity(0);
15756        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15757            "type",
15758            |m: &BpAppearanceModifier| { &m.type_ },
15759            |m: &mut BpAppearanceModifier| { &mut m.type_ },
15760        ));
15761        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15762            "mod_min",
15763            |m: &BpAppearanceModifier| { &m.mod_min },
15764            |m: &mut BpAppearanceModifier| { &mut m.mod_min },
15765        ));
15766        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
15767            "mod_max",
15768            |m: &BpAppearanceModifier| { &m.mod_max },
15769            |m: &mut BpAppearanceModifier| { &mut m.mod_max },
15770        ));
15771        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<BpAppearanceModifier>(
15772            "BpAppearanceModifier",
15773            fields,
15774            oneofs,
15775        )
15776    }
15777}
15778
15779impl ::protobuf::Message for BpAppearanceModifier {
15780    const NAME: &'static str = "BpAppearanceModifier";
15781
15782    fn is_initialized(&self) -> bool {
15783        true
15784    }
15785
15786    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
15787        while let Some(tag) = is.read_raw_tag_or_eof()? {
15788            match tag {
15789                10 => {
15790                    self.type_ = ::std::option::Option::Some(is.read_string()?);
15791                },
15792                16 => {
15793                    self.mod_min = ::std::option::Option::Some(is.read_int32()?);
15794                },
15795                24 => {
15796                    self.mod_max = ::std::option::Option::Some(is.read_int32()?);
15797                },
15798                tag => {
15799                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
15800                },
15801            };
15802        }
15803        ::std::result::Result::Ok(())
15804    }
15805
15806    // Compute sizes of nested messages
15807    #[allow(unused_variables)]
15808    fn compute_size(&self) -> u64 {
15809        let mut my_size = 0;
15810        if let Some(v) = self.type_.as_ref() {
15811            my_size += ::protobuf::rt::string_size(1, &v);
15812        }
15813        if let Some(v) = self.mod_min {
15814            my_size += ::protobuf::rt::int32_size(2, v);
15815        }
15816        if let Some(v) = self.mod_max {
15817            my_size += ::protobuf::rt::int32_size(3, v);
15818        }
15819        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
15820        self.special_fields.cached_size().set(my_size as u32);
15821        my_size
15822    }
15823
15824    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
15825        if let Some(v) = self.type_.as_ref() {
15826            os.write_string(1, v)?;
15827        }
15828        if let Some(v) = self.mod_min {
15829            os.write_int32(2, v)?;
15830        }
15831        if let Some(v) = self.mod_max {
15832            os.write_int32(3, v)?;
15833        }
15834        os.write_unknown_fields(self.special_fields.unknown_fields())?;
15835        ::std::result::Result::Ok(())
15836    }
15837
15838    fn special_fields(&self) -> &::protobuf::SpecialFields {
15839        &self.special_fields
15840    }
15841
15842    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
15843        &mut self.special_fields
15844    }
15845
15846    fn new() -> BpAppearanceModifier {
15847        BpAppearanceModifier::new()
15848    }
15849
15850    fn clear(&mut self) {
15851        self.type_ = ::std::option::Option::None;
15852        self.mod_min = ::std::option::Option::None;
15853        self.mod_max = ::std::option::Option::None;
15854        self.special_fields.clear();
15855    }
15856
15857    fn default_instance() -> &'static BpAppearanceModifier {
15858        static instance: BpAppearanceModifier = BpAppearanceModifier {
15859            type_: ::std::option::Option::None,
15860            mod_min: ::std::option::Option::None,
15861            mod_max: ::std::option::Option::None,
15862            special_fields: ::protobuf::SpecialFields::new(),
15863        };
15864        &instance
15865    }
15866}
15867
15868impl ::protobuf::MessageFull for BpAppearanceModifier {
15869    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
15870        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
15871        descriptor.get(|| file_descriptor().message_by_package_relative_name("BpAppearanceModifier").unwrap()).clone()
15872    }
15873}
15874
15875impl ::std::fmt::Display for BpAppearanceModifier {
15876    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
15877        ::protobuf::text_format::fmt(self, f)
15878    }
15879}
15880
15881impl ::protobuf::reflect::ProtobufValue for BpAppearanceModifier {
15882    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
15883}
15884
15885// @@protoc_insertion_point(message:RemoteFortressReader.TissueRaw)
15886#[derive(PartialEq,Clone,Default,Debug)]
15887pub struct TissueRaw {
15888    // message fields
15889    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.id)
15890    pub id: ::std::option::Option<::std::string::String>,
15891    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.name)
15892    pub name: ::std::option::Option<::std::string::String>,
15893    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.material)
15894    pub material: ::protobuf::MessageField<MatPair>,
15895    // @@protoc_insertion_point(field:RemoteFortressReader.TissueRaw.subordinate_to_tissue)
15896    pub subordinate_to_tissue: ::std::option::Option<::std::string::String>,
15897    // special fields
15898    // @@protoc_insertion_point(special_field:RemoteFortressReader.TissueRaw.special_fields)
15899    pub special_fields: ::protobuf::SpecialFields,
15900}
15901
15902impl<'a> ::std::default::Default for &'a TissueRaw {
15903    fn default() -> &'a TissueRaw {
15904        <TissueRaw as ::protobuf::Message>::default_instance()
15905    }
15906}
15907
15908impl TissueRaw {
15909    pub fn new() -> TissueRaw {
15910        ::std::default::Default::default()
15911    }
15912
15913    // optional string id = 1;
15914
15915    pub fn id(&self) -> &str {
15916        match self.id.as_ref() {
15917            Some(v) => v,
15918            None => "",
15919        }
15920    }
15921
15922    pub fn clear_id(&mut self) {
15923        self.id = ::std::option::Option::None;
15924    }
15925
15926    pub fn has_id(&self) -> bool {
15927        self.id.is_some()
15928    }
15929
15930    // Param is passed by value, moved
15931    pub fn set_id(&mut self, v: ::std::string::String) {
15932        self.id = ::std::option::Option::Some(v);
15933    }
15934
15935    // Mutable pointer to the field.
15936    // If field is not initialized, it is initialized with default value first.
15937    pub fn mut_id(&mut self) -> &mut ::std::string::String {
15938        if self.id.is_none() {
15939            self.id = ::std::option::Option::Some(::std::string::String::new());
15940        }
15941        self.id.as_mut().unwrap()
15942    }
15943
15944    // Take field
15945    pub fn take_id(&mut self) -> ::std::string::String {
15946        self.id.take().unwrap_or_else(|| ::std::string::String::new())
15947    }
15948
15949    // optional string name = 2;
15950
15951    pub fn name(&self) -> &str {
15952        match self.name.as_ref() {
15953            Some(v) => v,
15954            None => "",
15955        }
15956    }
15957
15958    pub fn clear_name(&mut self) {
15959        self.name = ::std::option::Option::None;
15960    }
15961
15962    pub fn has_name(&self) -> bool {
15963        self.name.is_some()
15964    }
15965
15966    // Param is passed by value, moved
15967    pub fn set_name(&mut self, v: ::std::string::String) {
15968        self.name = ::std::option::Option::Some(v);
15969    }
15970
15971    // Mutable pointer to the field.
15972    // If field is not initialized, it is initialized with default value first.
15973    pub fn mut_name(&mut self) -> &mut ::std::string::String {
15974        if self.name.is_none() {
15975            self.name = ::std::option::Option::Some(::std::string::String::new());
15976        }
15977        self.name.as_mut().unwrap()
15978    }
15979
15980    // Take field
15981    pub fn take_name(&mut self) -> ::std::string::String {
15982        self.name.take().unwrap_or_else(|| ::std::string::String::new())
15983    }
15984
15985    // optional string subordinate_to_tissue = 4;
15986
15987    pub fn subordinate_to_tissue(&self) -> &str {
15988        match self.subordinate_to_tissue.as_ref() {
15989            Some(v) => v,
15990            None => "",
15991        }
15992    }
15993
15994    pub fn clear_subordinate_to_tissue(&mut self) {
15995        self.subordinate_to_tissue = ::std::option::Option::None;
15996    }
15997
15998    pub fn has_subordinate_to_tissue(&self) -> bool {
15999        self.subordinate_to_tissue.is_some()
16000    }
16001
16002    // Param is passed by value, moved
16003    pub fn set_subordinate_to_tissue(&mut self, v: ::std::string::String) {
16004        self.subordinate_to_tissue = ::std::option::Option::Some(v);
16005    }
16006
16007    // Mutable pointer to the field.
16008    // If field is not initialized, it is initialized with default value first.
16009    pub fn mut_subordinate_to_tissue(&mut self) -> &mut ::std::string::String {
16010        if self.subordinate_to_tissue.is_none() {
16011            self.subordinate_to_tissue = ::std::option::Option::Some(::std::string::String::new());
16012        }
16013        self.subordinate_to_tissue.as_mut().unwrap()
16014    }
16015
16016    // Take field
16017    pub fn take_subordinate_to_tissue(&mut self) -> ::std::string::String {
16018        self.subordinate_to_tissue.take().unwrap_or_else(|| ::std::string::String::new())
16019    }
16020
16021    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16022        let mut fields = ::std::vec::Vec::with_capacity(4);
16023        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16024        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16025            "id",
16026            |m: &TissueRaw| { &m.id },
16027            |m: &mut TissueRaw| { &mut m.id },
16028        ));
16029        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16030            "name",
16031            |m: &TissueRaw| { &m.name },
16032            |m: &mut TissueRaw| { &mut m.name },
16033        ));
16034        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
16035            "material",
16036            |m: &TissueRaw| { &m.material },
16037            |m: &mut TissueRaw| { &mut m.material },
16038        ));
16039        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16040            "subordinate_to_tissue",
16041            |m: &TissueRaw| { &m.subordinate_to_tissue },
16042            |m: &mut TissueRaw| { &mut m.subordinate_to_tissue },
16043        ));
16044        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TissueRaw>(
16045            "TissueRaw",
16046            fields,
16047            oneofs,
16048        )
16049    }
16050}
16051
16052impl ::protobuf::Message for TissueRaw {
16053    const NAME: &'static str = "TissueRaw";
16054
16055    fn is_initialized(&self) -> bool {
16056        for v in &self.material {
16057            if !v.is_initialized() {
16058                return false;
16059            }
16060        };
16061        true
16062    }
16063
16064    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16065        while let Some(tag) = is.read_raw_tag_or_eof()? {
16066            match tag {
16067                10 => {
16068                    self.id = ::std::option::Option::Some(is.read_string()?);
16069                },
16070                18 => {
16071                    self.name = ::std::option::Option::Some(is.read_string()?);
16072                },
16073                26 => {
16074                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
16075                },
16076                34 => {
16077                    self.subordinate_to_tissue = ::std::option::Option::Some(is.read_string()?);
16078                },
16079                tag => {
16080                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
16081                },
16082            };
16083        }
16084        ::std::result::Result::Ok(())
16085    }
16086
16087    // Compute sizes of nested messages
16088    #[allow(unused_variables)]
16089    fn compute_size(&self) -> u64 {
16090        let mut my_size = 0;
16091        if let Some(v) = self.id.as_ref() {
16092            my_size += ::protobuf::rt::string_size(1, &v);
16093        }
16094        if let Some(v) = self.name.as_ref() {
16095            my_size += ::protobuf::rt::string_size(2, &v);
16096        }
16097        if let Some(v) = self.material.as_ref() {
16098            let len = v.compute_size();
16099            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16100        }
16101        if let Some(v) = self.subordinate_to_tissue.as_ref() {
16102            my_size += ::protobuf::rt::string_size(4, &v);
16103        }
16104        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
16105        self.special_fields.cached_size().set(my_size as u32);
16106        my_size
16107    }
16108
16109    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
16110        if let Some(v) = self.id.as_ref() {
16111            os.write_string(1, v)?;
16112        }
16113        if let Some(v) = self.name.as_ref() {
16114            os.write_string(2, v)?;
16115        }
16116        if let Some(v) = self.material.as_ref() {
16117            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
16118        }
16119        if let Some(v) = self.subordinate_to_tissue.as_ref() {
16120            os.write_string(4, v)?;
16121        }
16122        os.write_unknown_fields(self.special_fields.unknown_fields())?;
16123        ::std::result::Result::Ok(())
16124    }
16125
16126    fn special_fields(&self) -> &::protobuf::SpecialFields {
16127        &self.special_fields
16128    }
16129
16130    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
16131        &mut self.special_fields
16132    }
16133
16134    fn new() -> TissueRaw {
16135        TissueRaw::new()
16136    }
16137
16138    fn clear(&mut self) {
16139        self.id = ::std::option::Option::None;
16140        self.name = ::std::option::Option::None;
16141        self.material.clear();
16142        self.subordinate_to_tissue = ::std::option::Option::None;
16143        self.special_fields.clear();
16144    }
16145
16146    fn default_instance() -> &'static TissueRaw {
16147        static instance: TissueRaw = TissueRaw {
16148            id: ::std::option::Option::None,
16149            name: ::std::option::Option::None,
16150            material: ::protobuf::MessageField::none(),
16151            subordinate_to_tissue: ::std::option::Option::None,
16152            special_fields: ::protobuf::SpecialFields::new(),
16153        };
16154        &instance
16155    }
16156}
16157
16158impl ::protobuf::MessageFull for TissueRaw {
16159    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
16160        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
16161        descriptor.get(|| file_descriptor().message_by_package_relative_name("TissueRaw").unwrap()).clone()
16162    }
16163}
16164
16165impl ::std::fmt::Display for TissueRaw {
16166    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16167        ::protobuf::text_format::fmt(self, f)
16168    }
16169}
16170
16171impl ::protobuf::reflect::ProtobufValue for TissueRaw {
16172    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
16173}
16174
16175// @@protoc_insertion_point(message:RemoteFortressReader.CasteRaw)
16176#[derive(PartialEq,Clone,Default,Debug)]
16177pub struct CasteRaw {
16178    // message fields
16179    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.index)
16180    pub index: ::std::option::Option<i32>,
16181    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.caste_id)
16182    pub caste_id: ::std::option::Option<::std::string::String>,
16183    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.caste_name)
16184    pub caste_name: ::std::vec::Vec<::std::string::String>,
16185    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.baby_name)
16186    pub baby_name: ::std::vec::Vec<::std::string::String>,
16187    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.child_name)
16188    pub child_name: ::std::vec::Vec<::std::string::String>,
16189    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.gender)
16190    pub gender: ::std::option::Option<i32>,
16191    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.body_parts)
16192    pub body_parts: ::std::vec::Vec<BodyPartRaw>,
16193    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.total_relsize)
16194    pub total_relsize: ::std::option::Option<i32>,
16195    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.modifiers)
16196    pub modifiers: ::std::vec::Vec<BpAppearanceModifier>,
16197    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.modifier_idx)
16198    pub modifier_idx: ::std::vec::Vec<i32>,
16199    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.part_idx)
16200    pub part_idx: ::std::vec::Vec<i32>,
16201    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.layer_idx)
16202    pub layer_idx: ::std::vec::Vec<i32>,
16203    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.body_appearance_modifiers)
16204    pub body_appearance_modifiers: ::std::vec::Vec<BpAppearanceModifier>,
16205    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.color_modifiers)
16206    pub color_modifiers: ::std::vec::Vec<ColorModifierRaw>,
16207    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.description)
16208    pub description: ::std::option::Option<::std::string::String>,
16209    // @@protoc_insertion_point(field:RemoteFortressReader.CasteRaw.adult_size)
16210    pub adult_size: ::std::option::Option<i32>,
16211    // special fields
16212    // @@protoc_insertion_point(special_field:RemoteFortressReader.CasteRaw.special_fields)
16213    pub special_fields: ::protobuf::SpecialFields,
16214}
16215
16216impl<'a> ::std::default::Default for &'a CasteRaw {
16217    fn default() -> &'a CasteRaw {
16218        <CasteRaw as ::protobuf::Message>::default_instance()
16219    }
16220}
16221
16222impl CasteRaw {
16223    pub fn new() -> CasteRaw {
16224        ::std::default::Default::default()
16225    }
16226
16227    // optional int32 index = 1;
16228
16229    pub fn index(&self) -> i32 {
16230        self.index.unwrap_or(0)
16231    }
16232
16233    pub fn clear_index(&mut self) {
16234        self.index = ::std::option::Option::None;
16235    }
16236
16237    pub fn has_index(&self) -> bool {
16238        self.index.is_some()
16239    }
16240
16241    // Param is passed by value, moved
16242    pub fn set_index(&mut self, v: i32) {
16243        self.index = ::std::option::Option::Some(v);
16244    }
16245
16246    // optional string caste_id = 2;
16247
16248    pub fn caste_id(&self) -> &str {
16249        match self.caste_id.as_ref() {
16250            Some(v) => v,
16251            None => "",
16252        }
16253    }
16254
16255    pub fn clear_caste_id(&mut self) {
16256        self.caste_id = ::std::option::Option::None;
16257    }
16258
16259    pub fn has_caste_id(&self) -> bool {
16260        self.caste_id.is_some()
16261    }
16262
16263    // Param is passed by value, moved
16264    pub fn set_caste_id(&mut self, v: ::std::string::String) {
16265        self.caste_id = ::std::option::Option::Some(v);
16266    }
16267
16268    // Mutable pointer to the field.
16269    // If field is not initialized, it is initialized with default value first.
16270    pub fn mut_caste_id(&mut self) -> &mut ::std::string::String {
16271        if self.caste_id.is_none() {
16272            self.caste_id = ::std::option::Option::Some(::std::string::String::new());
16273        }
16274        self.caste_id.as_mut().unwrap()
16275    }
16276
16277    // Take field
16278    pub fn take_caste_id(&mut self) -> ::std::string::String {
16279        self.caste_id.take().unwrap_or_else(|| ::std::string::String::new())
16280    }
16281
16282    // optional int32 gender = 6;
16283
16284    pub fn gender(&self) -> i32 {
16285        self.gender.unwrap_or(0)
16286    }
16287
16288    pub fn clear_gender(&mut self) {
16289        self.gender = ::std::option::Option::None;
16290    }
16291
16292    pub fn has_gender(&self) -> bool {
16293        self.gender.is_some()
16294    }
16295
16296    // Param is passed by value, moved
16297    pub fn set_gender(&mut self, v: i32) {
16298        self.gender = ::std::option::Option::Some(v);
16299    }
16300
16301    // optional int32 total_relsize = 8;
16302
16303    pub fn total_relsize(&self) -> i32 {
16304        self.total_relsize.unwrap_or(0)
16305    }
16306
16307    pub fn clear_total_relsize(&mut self) {
16308        self.total_relsize = ::std::option::Option::None;
16309    }
16310
16311    pub fn has_total_relsize(&self) -> bool {
16312        self.total_relsize.is_some()
16313    }
16314
16315    // Param is passed by value, moved
16316    pub fn set_total_relsize(&mut self, v: i32) {
16317        self.total_relsize = ::std::option::Option::Some(v);
16318    }
16319
16320    // optional string description = 15;
16321
16322    pub fn description(&self) -> &str {
16323        match self.description.as_ref() {
16324            Some(v) => v,
16325            None => "",
16326        }
16327    }
16328
16329    pub fn clear_description(&mut self) {
16330        self.description = ::std::option::Option::None;
16331    }
16332
16333    pub fn has_description(&self) -> bool {
16334        self.description.is_some()
16335    }
16336
16337    // Param is passed by value, moved
16338    pub fn set_description(&mut self, v: ::std::string::String) {
16339        self.description = ::std::option::Option::Some(v);
16340    }
16341
16342    // Mutable pointer to the field.
16343    // If field is not initialized, it is initialized with default value first.
16344    pub fn mut_description(&mut self) -> &mut ::std::string::String {
16345        if self.description.is_none() {
16346            self.description = ::std::option::Option::Some(::std::string::String::new());
16347        }
16348        self.description.as_mut().unwrap()
16349    }
16350
16351    // Take field
16352    pub fn take_description(&mut self) -> ::std::string::String {
16353        self.description.take().unwrap_or_else(|| ::std::string::String::new())
16354    }
16355
16356    // optional int32 adult_size = 16;
16357
16358    pub fn adult_size(&self) -> i32 {
16359        self.adult_size.unwrap_or(0)
16360    }
16361
16362    pub fn clear_adult_size(&mut self) {
16363        self.adult_size = ::std::option::Option::None;
16364    }
16365
16366    pub fn has_adult_size(&self) -> bool {
16367        self.adult_size.is_some()
16368    }
16369
16370    // Param is passed by value, moved
16371    pub fn set_adult_size(&mut self, v: i32) {
16372        self.adult_size = ::std::option::Option::Some(v);
16373    }
16374
16375    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16376        let mut fields = ::std::vec::Vec::with_capacity(16);
16377        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16378        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16379            "index",
16380            |m: &CasteRaw| { &m.index },
16381            |m: &mut CasteRaw| { &mut m.index },
16382        ));
16383        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16384            "caste_id",
16385            |m: &CasteRaw| { &m.caste_id },
16386            |m: &mut CasteRaw| { &mut m.caste_id },
16387        ));
16388        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16389            "caste_name",
16390            |m: &CasteRaw| { &m.caste_name },
16391            |m: &mut CasteRaw| { &mut m.caste_name },
16392        ));
16393        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16394            "baby_name",
16395            |m: &CasteRaw| { &m.baby_name },
16396            |m: &mut CasteRaw| { &mut m.baby_name },
16397        ));
16398        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16399            "child_name",
16400            |m: &CasteRaw| { &m.child_name },
16401            |m: &mut CasteRaw| { &mut m.child_name },
16402        ));
16403        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16404            "gender",
16405            |m: &CasteRaw| { &m.gender },
16406            |m: &mut CasteRaw| { &mut m.gender },
16407        ));
16408        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16409            "body_parts",
16410            |m: &CasteRaw| { &m.body_parts },
16411            |m: &mut CasteRaw| { &mut m.body_parts },
16412        ));
16413        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16414            "total_relsize",
16415            |m: &CasteRaw| { &m.total_relsize },
16416            |m: &mut CasteRaw| { &mut m.total_relsize },
16417        ));
16418        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16419            "modifiers",
16420            |m: &CasteRaw| { &m.modifiers },
16421            |m: &mut CasteRaw| { &mut m.modifiers },
16422        ));
16423        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16424            "modifier_idx",
16425            |m: &CasteRaw| { &m.modifier_idx },
16426            |m: &mut CasteRaw| { &mut m.modifier_idx },
16427        ));
16428        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16429            "part_idx",
16430            |m: &CasteRaw| { &m.part_idx },
16431            |m: &mut CasteRaw| { &mut m.part_idx },
16432        ));
16433        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16434            "layer_idx",
16435            |m: &CasteRaw| { &m.layer_idx },
16436            |m: &mut CasteRaw| { &mut m.layer_idx },
16437        ));
16438        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16439            "body_appearance_modifiers",
16440            |m: &CasteRaw| { &m.body_appearance_modifiers },
16441            |m: &mut CasteRaw| { &mut m.body_appearance_modifiers },
16442        ));
16443        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16444            "color_modifiers",
16445            |m: &CasteRaw| { &m.color_modifiers },
16446            |m: &mut CasteRaw| { &mut m.color_modifiers },
16447        ));
16448        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16449            "description",
16450            |m: &CasteRaw| { &m.description },
16451            |m: &mut CasteRaw| { &mut m.description },
16452        ));
16453        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16454            "adult_size",
16455            |m: &CasteRaw| { &m.adult_size },
16456            |m: &mut CasteRaw| { &mut m.adult_size },
16457        ));
16458        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CasteRaw>(
16459            "CasteRaw",
16460            fields,
16461            oneofs,
16462        )
16463    }
16464}
16465
16466impl ::protobuf::Message for CasteRaw {
16467    const NAME: &'static str = "CasteRaw";
16468
16469    fn is_initialized(&self) -> bool {
16470        for v in &self.body_parts {
16471            if !v.is_initialized() {
16472                return false;
16473            }
16474        };
16475        for v in &self.modifiers {
16476            if !v.is_initialized() {
16477                return false;
16478            }
16479        };
16480        for v in &self.body_appearance_modifiers {
16481            if !v.is_initialized() {
16482                return false;
16483            }
16484        };
16485        for v in &self.color_modifiers {
16486            if !v.is_initialized() {
16487                return false;
16488            }
16489        };
16490        true
16491    }
16492
16493    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16494        while let Some(tag) = is.read_raw_tag_or_eof()? {
16495            match tag {
16496                8 => {
16497                    self.index = ::std::option::Option::Some(is.read_int32()?);
16498                },
16499                18 => {
16500                    self.caste_id = ::std::option::Option::Some(is.read_string()?);
16501                },
16502                26 => {
16503                    self.caste_name.push(is.read_string()?);
16504                },
16505                34 => {
16506                    self.baby_name.push(is.read_string()?);
16507                },
16508                42 => {
16509                    self.child_name.push(is.read_string()?);
16510                },
16511                48 => {
16512                    self.gender = ::std::option::Option::Some(is.read_int32()?);
16513                },
16514                58 => {
16515                    self.body_parts.push(is.read_message()?);
16516                },
16517                64 => {
16518                    self.total_relsize = ::std::option::Option::Some(is.read_int32()?);
16519                },
16520                74 => {
16521                    self.modifiers.push(is.read_message()?);
16522                },
16523                82 => {
16524                    is.read_repeated_packed_int32_into(&mut self.modifier_idx)?;
16525                },
16526                80 => {
16527                    self.modifier_idx.push(is.read_int32()?);
16528                },
16529                90 => {
16530                    is.read_repeated_packed_int32_into(&mut self.part_idx)?;
16531                },
16532                88 => {
16533                    self.part_idx.push(is.read_int32()?);
16534                },
16535                98 => {
16536                    is.read_repeated_packed_int32_into(&mut self.layer_idx)?;
16537                },
16538                96 => {
16539                    self.layer_idx.push(is.read_int32()?);
16540                },
16541                106 => {
16542                    self.body_appearance_modifiers.push(is.read_message()?);
16543                },
16544                114 => {
16545                    self.color_modifiers.push(is.read_message()?);
16546                },
16547                122 => {
16548                    self.description = ::std::option::Option::Some(is.read_string()?);
16549                },
16550                128 => {
16551                    self.adult_size = ::std::option::Option::Some(is.read_int32()?);
16552                },
16553                tag => {
16554                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
16555                },
16556            };
16557        }
16558        ::std::result::Result::Ok(())
16559    }
16560
16561    // Compute sizes of nested messages
16562    #[allow(unused_variables)]
16563    fn compute_size(&self) -> u64 {
16564        let mut my_size = 0;
16565        if let Some(v) = self.index {
16566            my_size += ::protobuf::rt::int32_size(1, v);
16567        }
16568        if let Some(v) = self.caste_id.as_ref() {
16569            my_size += ::protobuf::rt::string_size(2, &v);
16570        }
16571        for value in &self.caste_name {
16572            my_size += ::protobuf::rt::string_size(3, &value);
16573        };
16574        for value in &self.baby_name {
16575            my_size += ::protobuf::rt::string_size(4, &value);
16576        };
16577        for value in &self.child_name {
16578            my_size += ::protobuf::rt::string_size(5, &value);
16579        };
16580        if let Some(v) = self.gender {
16581            my_size += ::protobuf::rt::int32_size(6, v);
16582        }
16583        for value in &self.body_parts {
16584            let len = value.compute_size();
16585            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16586        };
16587        if let Some(v) = self.total_relsize {
16588            my_size += ::protobuf::rt::int32_size(8, v);
16589        }
16590        for value in &self.modifiers {
16591            let len = value.compute_size();
16592            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16593        };
16594        for value in &self.modifier_idx {
16595            my_size += ::protobuf::rt::int32_size(10, *value);
16596        };
16597        for value in &self.part_idx {
16598            my_size += ::protobuf::rt::int32_size(11, *value);
16599        };
16600        for value in &self.layer_idx {
16601            my_size += ::protobuf::rt::int32_size(12, *value);
16602        };
16603        for value in &self.body_appearance_modifiers {
16604            let len = value.compute_size();
16605            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16606        };
16607        for value in &self.color_modifiers {
16608            let len = value.compute_size();
16609            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
16610        };
16611        if let Some(v) = self.description.as_ref() {
16612            my_size += ::protobuf::rt::string_size(15, &v);
16613        }
16614        if let Some(v) = self.adult_size {
16615            my_size += ::protobuf::rt::int32_size(16, v);
16616        }
16617        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
16618        self.special_fields.cached_size().set(my_size as u32);
16619        my_size
16620    }
16621
16622    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
16623        if let Some(v) = self.index {
16624            os.write_int32(1, v)?;
16625        }
16626        if let Some(v) = self.caste_id.as_ref() {
16627            os.write_string(2, v)?;
16628        }
16629        for v in &self.caste_name {
16630            os.write_string(3, &v)?;
16631        };
16632        for v in &self.baby_name {
16633            os.write_string(4, &v)?;
16634        };
16635        for v in &self.child_name {
16636            os.write_string(5, &v)?;
16637        };
16638        if let Some(v) = self.gender {
16639            os.write_int32(6, v)?;
16640        }
16641        for v in &self.body_parts {
16642            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
16643        };
16644        if let Some(v) = self.total_relsize {
16645            os.write_int32(8, v)?;
16646        }
16647        for v in &self.modifiers {
16648            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
16649        };
16650        for v in &self.modifier_idx {
16651            os.write_int32(10, *v)?;
16652        };
16653        for v in &self.part_idx {
16654            os.write_int32(11, *v)?;
16655        };
16656        for v in &self.layer_idx {
16657            os.write_int32(12, *v)?;
16658        };
16659        for v in &self.body_appearance_modifiers {
16660            ::protobuf::rt::write_message_field_with_cached_size(13, v, os)?;
16661        };
16662        for v in &self.color_modifiers {
16663            ::protobuf::rt::write_message_field_with_cached_size(14, v, os)?;
16664        };
16665        if let Some(v) = self.description.as_ref() {
16666            os.write_string(15, v)?;
16667        }
16668        if let Some(v) = self.adult_size {
16669            os.write_int32(16, v)?;
16670        }
16671        os.write_unknown_fields(self.special_fields.unknown_fields())?;
16672        ::std::result::Result::Ok(())
16673    }
16674
16675    fn special_fields(&self) -> &::protobuf::SpecialFields {
16676        &self.special_fields
16677    }
16678
16679    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
16680        &mut self.special_fields
16681    }
16682
16683    fn new() -> CasteRaw {
16684        CasteRaw::new()
16685    }
16686
16687    fn clear(&mut self) {
16688        self.index = ::std::option::Option::None;
16689        self.caste_id = ::std::option::Option::None;
16690        self.caste_name.clear();
16691        self.baby_name.clear();
16692        self.child_name.clear();
16693        self.gender = ::std::option::Option::None;
16694        self.body_parts.clear();
16695        self.total_relsize = ::std::option::Option::None;
16696        self.modifiers.clear();
16697        self.modifier_idx.clear();
16698        self.part_idx.clear();
16699        self.layer_idx.clear();
16700        self.body_appearance_modifiers.clear();
16701        self.color_modifiers.clear();
16702        self.description = ::std::option::Option::None;
16703        self.adult_size = ::std::option::Option::None;
16704        self.special_fields.clear();
16705    }
16706
16707    fn default_instance() -> &'static CasteRaw {
16708        static instance: CasteRaw = CasteRaw {
16709            index: ::std::option::Option::None,
16710            caste_id: ::std::option::Option::None,
16711            caste_name: ::std::vec::Vec::new(),
16712            baby_name: ::std::vec::Vec::new(),
16713            child_name: ::std::vec::Vec::new(),
16714            gender: ::std::option::Option::None,
16715            body_parts: ::std::vec::Vec::new(),
16716            total_relsize: ::std::option::Option::None,
16717            modifiers: ::std::vec::Vec::new(),
16718            modifier_idx: ::std::vec::Vec::new(),
16719            part_idx: ::std::vec::Vec::new(),
16720            layer_idx: ::std::vec::Vec::new(),
16721            body_appearance_modifiers: ::std::vec::Vec::new(),
16722            color_modifiers: ::std::vec::Vec::new(),
16723            description: ::std::option::Option::None,
16724            adult_size: ::std::option::Option::None,
16725            special_fields: ::protobuf::SpecialFields::new(),
16726        };
16727        &instance
16728    }
16729}
16730
16731impl ::protobuf::MessageFull for CasteRaw {
16732    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
16733        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
16734        descriptor.get(|| file_descriptor().message_by_package_relative_name("CasteRaw").unwrap()).clone()
16735    }
16736}
16737
16738impl ::std::fmt::Display for CasteRaw {
16739    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
16740        ::protobuf::text_format::fmt(self, f)
16741    }
16742}
16743
16744impl ::protobuf::reflect::ProtobufValue for CasteRaw {
16745    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
16746}
16747
16748// @@protoc_insertion_point(message:RemoteFortressReader.CreatureRaw)
16749#[derive(PartialEq,Clone,Default,Debug)]
16750pub struct CreatureRaw {
16751    // message fields
16752    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.index)
16753    pub index: ::std::option::Option<i32>,
16754    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_id)
16755    pub creature_id: ::std::option::Option<::std::string::String>,
16756    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.name)
16757    pub name: ::std::vec::Vec<::std::string::String>,
16758    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.general_baby_name)
16759    pub general_baby_name: ::std::vec::Vec<::std::string::String>,
16760    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.general_child_name)
16761    pub general_child_name: ::std::vec::Vec<::std::string::String>,
16762    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_tile)
16763    pub creature_tile: ::std::option::Option<i32>,
16764    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.creature_soldier_tile)
16765    pub creature_soldier_tile: ::std::option::Option<i32>,
16766    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.color)
16767    pub color: ::protobuf::MessageField<ColorDefinition>,
16768    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.adultsize)
16769    pub adultsize: ::std::option::Option<i32>,
16770    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.caste)
16771    pub caste: ::std::vec::Vec<CasteRaw>,
16772    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.tissues)
16773    pub tissues: ::std::vec::Vec<TissueRaw>,
16774    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRaw.flags)
16775    pub flags: ::std::vec::Vec<bool>,
16776    // special fields
16777    // @@protoc_insertion_point(special_field:RemoteFortressReader.CreatureRaw.special_fields)
16778    pub special_fields: ::protobuf::SpecialFields,
16779}
16780
16781impl<'a> ::std::default::Default for &'a CreatureRaw {
16782    fn default() -> &'a CreatureRaw {
16783        <CreatureRaw as ::protobuf::Message>::default_instance()
16784    }
16785}
16786
16787impl CreatureRaw {
16788    pub fn new() -> CreatureRaw {
16789        ::std::default::Default::default()
16790    }
16791
16792    // optional int32 index = 1;
16793
16794    pub fn index(&self) -> i32 {
16795        self.index.unwrap_or(0)
16796    }
16797
16798    pub fn clear_index(&mut self) {
16799        self.index = ::std::option::Option::None;
16800    }
16801
16802    pub fn has_index(&self) -> bool {
16803        self.index.is_some()
16804    }
16805
16806    // Param is passed by value, moved
16807    pub fn set_index(&mut self, v: i32) {
16808        self.index = ::std::option::Option::Some(v);
16809    }
16810
16811    // optional string creature_id = 2;
16812
16813    pub fn creature_id(&self) -> &str {
16814        match self.creature_id.as_ref() {
16815            Some(v) => v,
16816            None => "",
16817        }
16818    }
16819
16820    pub fn clear_creature_id(&mut self) {
16821        self.creature_id = ::std::option::Option::None;
16822    }
16823
16824    pub fn has_creature_id(&self) -> bool {
16825        self.creature_id.is_some()
16826    }
16827
16828    // Param is passed by value, moved
16829    pub fn set_creature_id(&mut self, v: ::std::string::String) {
16830        self.creature_id = ::std::option::Option::Some(v);
16831    }
16832
16833    // Mutable pointer to the field.
16834    // If field is not initialized, it is initialized with default value first.
16835    pub fn mut_creature_id(&mut self) -> &mut ::std::string::String {
16836        if self.creature_id.is_none() {
16837            self.creature_id = ::std::option::Option::Some(::std::string::String::new());
16838        }
16839        self.creature_id.as_mut().unwrap()
16840    }
16841
16842    // Take field
16843    pub fn take_creature_id(&mut self) -> ::std::string::String {
16844        self.creature_id.take().unwrap_or_else(|| ::std::string::String::new())
16845    }
16846
16847    // optional int32 creature_tile = 6;
16848
16849    pub fn creature_tile(&self) -> i32 {
16850        self.creature_tile.unwrap_or(0)
16851    }
16852
16853    pub fn clear_creature_tile(&mut self) {
16854        self.creature_tile = ::std::option::Option::None;
16855    }
16856
16857    pub fn has_creature_tile(&self) -> bool {
16858        self.creature_tile.is_some()
16859    }
16860
16861    // Param is passed by value, moved
16862    pub fn set_creature_tile(&mut self, v: i32) {
16863        self.creature_tile = ::std::option::Option::Some(v);
16864    }
16865
16866    // optional int32 creature_soldier_tile = 7;
16867
16868    pub fn creature_soldier_tile(&self) -> i32 {
16869        self.creature_soldier_tile.unwrap_or(0)
16870    }
16871
16872    pub fn clear_creature_soldier_tile(&mut self) {
16873        self.creature_soldier_tile = ::std::option::Option::None;
16874    }
16875
16876    pub fn has_creature_soldier_tile(&self) -> bool {
16877        self.creature_soldier_tile.is_some()
16878    }
16879
16880    // Param is passed by value, moved
16881    pub fn set_creature_soldier_tile(&mut self, v: i32) {
16882        self.creature_soldier_tile = ::std::option::Option::Some(v);
16883    }
16884
16885    // optional int32 adultsize = 9;
16886
16887    pub fn adultsize(&self) -> i32 {
16888        self.adultsize.unwrap_or(0)
16889    }
16890
16891    pub fn clear_adultsize(&mut self) {
16892        self.adultsize = ::std::option::Option::None;
16893    }
16894
16895    pub fn has_adultsize(&self) -> bool {
16896        self.adultsize.is_some()
16897    }
16898
16899    // Param is passed by value, moved
16900    pub fn set_adultsize(&mut self, v: i32) {
16901        self.adultsize = ::std::option::Option::Some(v);
16902    }
16903
16904    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
16905        let mut fields = ::std::vec::Vec::with_capacity(12);
16906        let mut oneofs = ::std::vec::Vec::with_capacity(0);
16907        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16908            "index",
16909            |m: &CreatureRaw| { &m.index },
16910            |m: &mut CreatureRaw| { &mut m.index },
16911        ));
16912        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16913            "creature_id",
16914            |m: &CreatureRaw| { &m.creature_id },
16915            |m: &mut CreatureRaw| { &mut m.creature_id },
16916        ));
16917        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16918            "name",
16919            |m: &CreatureRaw| { &m.name },
16920            |m: &mut CreatureRaw| { &mut m.name },
16921        ));
16922        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16923            "general_baby_name",
16924            |m: &CreatureRaw| { &m.general_baby_name },
16925            |m: &mut CreatureRaw| { &mut m.general_baby_name },
16926        ));
16927        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16928            "general_child_name",
16929            |m: &CreatureRaw| { &m.general_child_name },
16930            |m: &mut CreatureRaw| { &mut m.general_child_name },
16931        ));
16932        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16933            "creature_tile",
16934            |m: &CreatureRaw| { &m.creature_tile },
16935            |m: &mut CreatureRaw| { &mut m.creature_tile },
16936        ));
16937        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16938            "creature_soldier_tile",
16939            |m: &CreatureRaw| { &m.creature_soldier_tile },
16940            |m: &mut CreatureRaw| { &mut m.creature_soldier_tile },
16941        ));
16942        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
16943            "color",
16944            |m: &CreatureRaw| { &m.color },
16945            |m: &mut CreatureRaw| { &mut m.color },
16946        ));
16947        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
16948            "adultsize",
16949            |m: &CreatureRaw| { &m.adultsize },
16950            |m: &mut CreatureRaw| { &mut m.adultsize },
16951        ));
16952        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16953            "caste",
16954            |m: &CreatureRaw| { &m.caste },
16955            |m: &mut CreatureRaw| { &mut m.caste },
16956        ));
16957        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16958            "tissues",
16959            |m: &CreatureRaw| { &m.tissues },
16960            |m: &mut CreatureRaw| { &mut m.tissues },
16961        ));
16962        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
16963            "flags",
16964            |m: &CreatureRaw| { &m.flags },
16965            |m: &mut CreatureRaw| { &mut m.flags },
16966        ));
16967        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CreatureRaw>(
16968            "CreatureRaw",
16969            fields,
16970            oneofs,
16971        )
16972    }
16973}
16974
16975impl ::protobuf::Message for CreatureRaw {
16976    const NAME: &'static str = "CreatureRaw";
16977
16978    fn is_initialized(&self) -> bool {
16979        for v in &self.color {
16980            if !v.is_initialized() {
16981                return false;
16982            }
16983        };
16984        for v in &self.caste {
16985            if !v.is_initialized() {
16986                return false;
16987            }
16988        };
16989        for v in &self.tissues {
16990            if !v.is_initialized() {
16991                return false;
16992            }
16993        };
16994        true
16995    }
16996
16997    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
16998        while let Some(tag) = is.read_raw_tag_or_eof()? {
16999            match tag {
17000                8 => {
17001                    self.index = ::std::option::Option::Some(is.read_int32()?);
17002                },
17003                18 => {
17004                    self.creature_id = ::std::option::Option::Some(is.read_string()?);
17005                },
17006                26 => {
17007                    self.name.push(is.read_string()?);
17008                },
17009                34 => {
17010                    self.general_baby_name.push(is.read_string()?);
17011                },
17012                42 => {
17013                    self.general_child_name.push(is.read_string()?);
17014                },
17015                48 => {
17016                    self.creature_tile = ::std::option::Option::Some(is.read_int32()?);
17017                },
17018                56 => {
17019                    self.creature_soldier_tile = ::std::option::Option::Some(is.read_int32()?);
17020                },
17021                66 => {
17022                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.color)?;
17023                },
17024                72 => {
17025                    self.adultsize = ::std::option::Option::Some(is.read_int32()?);
17026                },
17027                82 => {
17028                    self.caste.push(is.read_message()?);
17029                },
17030                90 => {
17031                    self.tissues.push(is.read_message()?);
17032                },
17033                98 => {
17034                    is.read_repeated_packed_bool_into(&mut self.flags)?;
17035                },
17036                96 => {
17037                    self.flags.push(is.read_bool()?);
17038                },
17039                tag => {
17040                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17041                },
17042            };
17043        }
17044        ::std::result::Result::Ok(())
17045    }
17046
17047    // Compute sizes of nested messages
17048    #[allow(unused_variables)]
17049    fn compute_size(&self) -> u64 {
17050        let mut my_size = 0;
17051        if let Some(v) = self.index {
17052            my_size += ::protobuf::rt::int32_size(1, v);
17053        }
17054        if let Some(v) = self.creature_id.as_ref() {
17055            my_size += ::protobuf::rt::string_size(2, &v);
17056        }
17057        for value in &self.name {
17058            my_size += ::protobuf::rt::string_size(3, &value);
17059        };
17060        for value in &self.general_baby_name {
17061            my_size += ::protobuf::rt::string_size(4, &value);
17062        };
17063        for value in &self.general_child_name {
17064            my_size += ::protobuf::rt::string_size(5, &value);
17065        };
17066        if let Some(v) = self.creature_tile {
17067            my_size += ::protobuf::rt::int32_size(6, v);
17068        }
17069        if let Some(v) = self.creature_soldier_tile {
17070            my_size += ::protobuf::rt::int32_size(7, v);
17071        }
17072        if let Some(v) = self.color.as_ref() {
17073            let len = v.compute_size();
17074            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17075        }
17076        if let Some(v) = self.adultsize {
17077            my_size += ::protobuf::rt::int32_size(9, v);
17078        }
17079        for value in &self.caste {
17080            let len = value.compute_size();
17081            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17082        };
17083        for value in &self.tissues {
17084            let len = value.compute_size();
17085            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17086        };
17087        my_size += 2 * self.flags.len() as u64;
17088        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17089        self.special_fields.cached_size().set(my_size as u32);
17090        my_size
17091    }
17092
17093    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17094        if let Some(v) = self.index {
17095            os.write_int32(1, v)?;
17096        }
17097        if let Some(v) = self.creature_id.as_ref() {
17098            os.write_string(2, v)?;
17099        }
17100        for v in &self.name {
17101            os.write_string(3, &v)?;
17102        };
17103        for v in &self.general_baby_name {
17104            os.write_string(4, &v)?;
17105        };
17106        for v in &self.general_child_name {
17107            os.write_string(5, &v)?;
17108        };
17109        if let Some(v) = self.creature_tile {
17110            os.write_int32(6, v)?;
17111        }
17112        if let Some(v) = self.creature_soldier_tile {
17113            os.write_int32(7, v)?;
17114        }
17115        if let Some(v) = self.color.as_ref() {
17116            ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?;
17117        }
17118        if let Some(v) = self.adultsize {
17119            os.write_int32(9, v)?;
17120        }
17121        for v in &self.caste {
17122            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
17123        };
17124        for v in &self.tissues {
17125            ::protobuf::rt::write_message_field_with_cached_size(11, v, os)?;
17126        };
17127        for v in &self.flags {
17128            os.write_bool(12, *v)?;
17129        };
17130        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17131        ::std::result::Result::Ok(())
17132    }
17133
17134    fn special_fields(&self) -> &::protobuf::SpecialFields {
17135        &self.special_fields
17136    }
17137
17138    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17139        &mut self.special_fields
17140    }
17141
17142    fn new() -> CreatureRaw {
17143        CreatureRaw::new()
17144    }
17145
17146    fn clear(&mut self) {
17147        self.index = ::std::option::Option::None;
17148        self.creature_id = ::std::option::Option::None;
17149        self.name.clear();
17150        self.general_baby_name.clear();
17151        self.general_child_name.clear();
17152        self.creature_tile = ::std::option::Option::None;
17153        self.creature_soldier_tile = ::std::option::Option::None;
17154        self.color.clear();
17155        self.adultsize = ::std::option::Option::None;
17156        self.caste.clear();
17157        self.tissues.clear();
17158        self.flags.clear();
17159        self.special_fields.clear();
17160    }
17161
17162    fn default_instance() -> &'static CreatureRaw {
17163        static instance: CreatureRaw = CreatureRaw {
17164            index: ::std::option::Option::None,
17165            creature_id: ::std::option::Option::None,
17166            name: ::std::vec::Vec::new(),
17167            general_baby_name: ::std::vec::Vec::new(),
17168            general_child_name: ::std::vec::Vec::new(),
17169            creature_tile: ::std::option::Option::None,
17170            creature_soldier_tile: ::std::option::Option::None,
17171            color: ::protobuf::MessageField::none(),
17172            adultsize: ::std::option::Option::None,
17173            caste: ::std::vec::Vec::new(),
17174            tissues: ::std::vec::Vec::new(),
17175            flags: ::std::vec::Vec::new(),
17176            special_fields: ::protobuf::SpecialFields::new(),
17177        };
17178        &instance
17179    }
17180}
17181
17182impl ::protobuf::MessageFull for CreatureRaw {
17183    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17184        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17185        descriptor.get(|| file_descriptor().message_by_package_relative_name("CreatureRaw").unwrap()).clone()
17186    }
17187}
17188
17189impl ::std::fmt::Display for CreatureRaw {
17190    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17191        ::protobuf::text_format::fmt(self, f)
17192    }
17193}
17194
17195impl ::protobuf::reflect::ProtobufValue for CreatureRaw {
17196    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17197}
17198
17199// @@protoc_insertion_point(message:RemoteFortressReader.CreatureRawList)
17200#[derive(PartialEq,Clone,Default,Debug)]
17201pub struct CreatureRawList {
17202    // message fields
17203    // @@protoc_insertion_point(field:RemoteFortressReader.CreatureRawList.creature_raws)
17204    pub creature_raws: ::std::vec::Vec<CreatureRaw>,
17205    // special fields
17206    // @@protoc_insertion_point(special_field:RemoteFortressReader.CreatureRawList.special_fields)
17207    pub special_fields: ::protobuf::SpecialFields,
17208}
17209
17210impl<'a> ::std::default::Default for &'a CreatureRawList {
17211    fn default() -> &'a CreatureRawList {
17212        <CreatureRawList as ::protobuf::Message>::default_instance()
17213    }
17214}
17215
17216impl CreatureRawList {
17217    pub fn new() -> CreatureRawList {
17218        ::std::default::Default::default()
17219    }
17220
17221    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17222        let mut fields = ::std::vec::Vec::with_capacity(1);
17223        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17224        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17225            "creature_raws",
17226            |m: &CreatureRawList| { &m.creature_raws },
17227            |m: &mut CreatureRawList| { &mut m.creature_raws },
17228        ));
17229        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CreatureRawList>(
17230            "CreatureRawList",
17231            fields,
17232            oneofs,
17233        )
17234    }
17235}
17236
17237impl ::protobuf::Message for CreatureRawList {
17238    const NAME: &'static str = "CreatureRawList";
17239
17240    fn is_initialized(&self) -> bool {
17241        for v in &self.creature_raws {
17242            if !v.is_initialized() {
17243                return false;
17244            }
17245        };
17246        true
17247    }
17248
17249    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17250        while let Some(tag) = is.read_raw_tag_or_eof()? {
17251            match tag {
17252                10 => {
17253                    self.creature_raws.push(is.read_message()?);
17254                },
17255                tag => {
17256                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17257                },
17258            };
17259        }
17260        ::std::result::Result::Ok(())
17261    }
17262
17263    // Compute sizes of nested messages
17264    #[allow(unused_variables)]
17265    fn compute_size(&self) -> u64 {
17266        let mut my_size = 0;
17267        for value in &self.creature_raws {
17268            let len = value.compute_size();
17269            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17270        };
17271        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17272        self.special_fields.cached_size().set(my_size as u32);
17273        my_size
17274    }
17275
17276    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17277        for v in &self.creature_raws {
17278            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
17279        };
17280        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17281        ::std::result::Result::Ok(())
17282    }
17283
17284    fn special_fields(&self) -> &::protobuf::SpecialFields {
17285        &self.special_fields
17286    }
17287
17288    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17289        &mut self.special_fields
17290    }
17291
17292    fn new() -> CreatureRawList {
17293        CreatureRawList::new()
17294    }
17295
17296    fn clear(&mut self) {
17297        self.creature_raws.clear();
17298        self.special_fields.clear();
17299    }
17300
17301    fn default_instance() -> &'static CreatureRawList {
17302        static instance: CreatureRawList = CreatureRawList {
17303            creature_raws: ::std::vec::Vec::new(),
17304            special_fields: ::protobuf::SpecialFields::new(),
17305        };
17306        &instance
17307    }
17308}
17309
17310impl ::protobuf::MessageFull for CreatureRawList {
17311    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17312        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17313        descriptor.get(|| file_descriptor().message_by_package_relative_name("CreatureRawList").unwrap()).clone()
17314    }
17315}
17316
17317impl ::std::fmt::Display for CreatureRawList {
17318    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17319        ::protobuf::text_format::fmt(self, f)
17320    }
17321}
17322
17323impl ::protobuf::reflect::ProtobufValue for CreatureRawList {
17324    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17325}
17326
17327// @@protoc_insertion_point(message:RemoteFortressReader.Army)
17328#[derive(PartialEq,Clone,Default,Debug)]
17329pub struct Army {
17330    // message fields
17331    // @@protoc_insertion_point(field:RemoteFortressReader.Army.id)
17332    pub id: ::std::option::Option<i32>,
17333    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_x)
17334    pub pos_x: ::std::option::Option<i32>,
17335    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_y)
17336    pub pos_y: ::std::option::Option<i32>,
17337    // @@protoc_insertion_point(field:RemoteFortressReader.Army.pos_z)
17338    pub pos_z: ::std::option::Option<i32>,
17339    // @@protoc_insertion_point(field:RemoteFortressReader.Army.leader)
17340    pub leader: ::protobuf::MessageField<UnitDefinition>,
17341    // @@protoc_insertion_point(field:RemoteFortressReader.Army.members)
17342    pub members: ::std::vec::Vec<UnitDefinition>,
17343    // @@protoc_insertion_point(field:RemoteFortressReader.Army.flags)
17344    pub flags: ::std::option::Option<u32>,
17345    // special fields
17346    // @@protoc_insertion_point(special_field:RemoteFortressReader.Army.special_fields)
17347    pub special_fields: ::protobuf::SpecialFields,
17348}
17349
17350impl<'a> ::std::default::Default for &'a Army {
17351    fn default() -> &'a Army {
17352        <Army as ::protobuf::Message>::default_instance()
17353    }
17354}
17355
17356impl Army {
17357    pub fn new() -> Army {
17358        ::std::default::Default::default()
17359    }
17360
17361    // optional int32 id = 1;
17362
17363    pub fn id(&self) -> i32 {
17364        self.id.unwrap_or(0)
17365    }
17366
17367    pub fn clear_id(&mut self) {
17368        self.id = ::std::option::Option::None;
17369    }
17370
17371    pub fn has_id(&self) -> bool {
17372        self.id.is_some()
17373    }
17374
17375    // Param is passed by value, moved
17376    pub fn set_id(&mut self, v: i32) {
17377        self.id = ::std::option::Option::Some(v);
17378    }
17379
17380    // optional int32 pos_x = 2;
17381
17382    pub fn pos_x(&self) -> i32 {
17383        self.pos_x.unwrap_or(0)
17384    }
17385
17386    pub fn clear_pos_x(&mut self) {
17387        self.pos_x = ::std::option::Option::None;
17388    }
17389
17390    pub fn has_pos_x(&self) -> bool {
17391        self.pos_x.is_some()
17392    }
17393
17394    // Param is passed by value, moved
17395    pub fn set_pos_x(&mut self, v: i32) {
17396        self.pos_x = ::std::option::Option::Some(v);
17397    }
17398
17399    // optional int32 pos_y = 3;
17400
17401    pub fn pos_y(&self) -> i32 {
17402        self.pos_y.unwrap_or(0)
17403    }
17404
17405    pub fn clear_pos_y(&mut self) {
17406        self.pos_y = ::std::option::Option::None;
17407    }
17408
17409    pub fn has_pos_y(&self) -> bool {
17410        self.pos_y.is_some()
17411    }
17412
17413    // Param is passed by value, moved
17414    pub fn set_pos_y(&mut self, v: i32) {
17415        self.pos_y = ::std::option::Option::Some(v);
17416    }
17417
17418    // optional int32 pos_z = 4;
17419
17420    pub fn pos_z(&self) -> i32 {
17421        self.pos_z.unwrap_or(0)
17422    }
17423
17424    pub fn clear_pos_z(&mut self) {
17425        self.pos_z = ::std::option::Option::None;
17426    }
17427
17428    pub fn has_pos_z(&self) -> bool {
17429        self.pos_z.is_some()
17430    }
17431
17432    // Param is passed by value, moved
17433    pub fn set_pos_z(&mut self, v: i32) {
17434        self.pos_z = ::std::option::Option::Some(v);
17435    }
17436
17437    // optional uint32 flags = 7;
17438
17439    pub fn flags(&self) -> u32 {
17440        self.flags.unwrap_or(0)
17441    }
17442
17443    pub fn clear_flags(&mut self) {
17444        self.flags = ::std::option::Option::None;
17445    }
17446
17447    pub fn has_flags(&self) -> bool {
17448        self.flags.is_some()
17449    }
17450
17451    // Param is passed by value, moved
17452    pub fn set_flags(&mut self, v: u32) {
17453        self.flags = ::std::option::Option::Some(v);
17454    }
17455
17456    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17457        let mut fields = ::std::vec::Vec::with_capacity(7);
17458        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17459        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17460            "id",
17461            |m: &Army| { &m.id },
17462            |m: &mut Army| { &mut m.id },
17463        ));
17464        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17465            "pos_x",
17466            |m: &Army| { &m.pos_x },
17467            |m: &mut Army| { &mut m.pos_x },
17468        ));
17469        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17470            "pos_y",
17471            |m: &Army| { &m.pos_y },
17472            |m: &mut Army| { &mut m.pos_y },
17473        ));
17474        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17475            "pos_z",
17476            |m: &Army| { &m.pos_z },
17477            |m: &mut Army| { &mut m.pos_z },
17478        ));
17479        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, UnitDefinition>(
17480            "leader",
17481            |m: &Army| { &m.leader },
17482            |m: &mut Army| { &mut m.leader },
17483        ));
17484        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17485            "members",
17486            |m: &Army| { &m.members },
17487            |m: &mut Army| { &mut m.members },
17488        ));
17489        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17490            "flags",
17491            |m: &Army| { &m.flags },
17492            |m: &mut Army| { &mut m.flags },
17493        ));
17494        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Army>(
17495            "Army",
17496            fields,
17497            oneofs,
17498        )
17499    }
17500}
17501
17502impl ::protobuf::Message for Army {
17503    const NAME: &'static str = "Army";
17504
17505    fn is_initialized(&self) -> bool {
17506        for v in &self.leader {
17507            if !v.is_initialized() {
17508                return false;
17509            }
17510        };
17511        for v in &self.members {
17512            if !v.is_initialized() {
17513                return false;
17514            }
17515        };
17516        true
17517    }
17518
17519    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17520        while let Some(tag) = is.read_raw_tag_or_eof()? {
17521            match tag {
17522                8 => {
17523                    self.id = ::std::option::Option::Some(is.read_int32()?);
17524                },
17525                16 => {
17526                    self.pos_x = ::std::option::Option::Some(is.read_int32()?);
17527                },
17528                24 => {
17529                    self.pos_y = ::std::option::Option::Some(is.read_int32()?);
17530                },
17531                32 => {
17532                    self.pos_z = ::std::option::Option::Some(is.read_int32()?);
17533                },
17534                42 => {
17535                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.leader)?;
17536                },
17537                50 => {
17538                    self.members.push(is.read_message()?);
17539                },
17540                56 => {
17541                    self.flags = ::std::option::Option::Some(is.read_uint32()?);
17542                },
17543                tag => {
17544                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17545                },
17546            };
17547        }
17548        ::std::result::Result::Ok(())
17549    }
17550
17551    // Compute sizes of nested messages
17552    #[allow(unused_variables)]
17553    fn compute_size(&self) -> u64 {
17554        let mut my_size = 0;
17555        if let Some(v) = self.id {
17556            my_size += ::protobuf::rt::int32_size(1, v);
17557        }
17558        if let Some(v) = self.pos_x {
17559            my_size += ::protobuf::rt::int32_size(2, v);
17560        }
17561        if let Some(v) = self.pos_y {
17562            my_size += ::protobuf::rt::int32_size(3, v);
17563        }
17564        if let Some(v) = self.pos_z {
17565            my_size += ::protobuf::rt::int32_size(4, v);
17566        }
17567        if let Some(v) = self.leader.as_ref() {
17568            let len = v.compute_size();
17569            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17570        }
17571        for value in &self.members {
17572            let len = value.compute_size();
17573            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17574        };
17575        if let Some(v) = self.flags {
17576            my_size += ::protobuf::rt::uint32_size(7, v);
17577        }
17578        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17579        self.special_fields.cached_size().set(my_size as u32);
17580        my_size
17581    }
17582
17583    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17584        if let Some(v) = self.id {
17585            os.write_int32(1, v)?;
17586        }
17587        if let Some(v) = self.pos_x {
17588            os.write_int32(2, v)?;
17589        }
17590        if let Some(v) = self.pos_y {
17591            os.write_int32(3, v)?;
17592        }
17593        if let Some(v) = self.pos_z {
17594            os.write_int32(4, v)?;
17595        }
17596        if let Some(v) = self.leader.as_ref() {
17597            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
17598        }
17599        for v in &self.members {
17600            ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?;
17601        };
17602        if let Some(v) = self.flags {
17603            os.write_uint32(7, v)?;
17604        }
17605        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17606        ::std::result::Result::Ok(())
17607    }
17608
17609    fn special_fields(&self) -> &::protobuf::SpecialFields {
17610        &self.special_fields
17611    }
17612
17613    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17614        &mut self.special_fields
17615    }
17616
17617    fn new() -> Army {
17618        Army::new()
17619    }
17620
17621    fn clear(&mut self) {
17622        self.id = ::std::option::Option::None;
17623        self.pos_x = ::std::option::Option::None;
17624        self.pos_y = ::std::option::Option::None;
17625        self.pos_z = ::std::option::Option::None;
17626        self.leader.clear();
17627        self.members.clear();
17628        self.flags = ::std::option::Option::None;
17629        self.special_fields.clear();
17630    }
17631
17632    fn default_instance() -> &'static Army {
17633        static instance: Army = Army {
17634            id: ::std::option::Option::None,
17635            pos_x: ::std::option::Option::None,
17636            pos_y: ::std::option::Option::None,
17637            pos_z: ::std::option::Option::None,
17638            leader: ::protobuf::MessageField::none(),
17639            members: ::std::vec::Vec::new(),
17640            flags: ::std::option::Option::None,
17641            special_fields: ::protobuf::SpecialFields::new(),
17642        };
17643        &instance
17644    }
17645}
17646
17647impl ::protobuf::MessageFull for Army {
17648    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17649        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17650        descriptor.get(|| file_descriptor().message_by_package_relative_name("Army").unwrap()).clone()
17651    }
17652}
17653
17654impl ::std::fmt::Display for Army {
17655    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17656        ::protobuf::text_format::fmt(self, f)
17657    }
17658}
17659
17660impl ::protobuf::reflect::ProtobufValue for Army {
17661    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17662}
17663
17664// @@protoc_insertion_point(message:RemoteFortressReader.ArmyList)
17665#[derive(PartialEq,Clone,Default,Debug)]
17666pub struct ArmyList {
17667    // message fields
17668    // @@protoc_insertion_point(field:RemoteFortressReader.ArmyList.armies)
17669    pub armies: ::std::vec::Vec<Army>,
17670    // special fields
17671    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArmyList.special_fields)
17672    pub special_fields: ::protobuf::SpecialFields,
17673}
17674
17675impl<'a> ::std::default::Default for &'a ArmyList {
17676    fn default() -> &'a ArmyList {
17677        <ArmyList as ::protobuf::Message>::default_instance()
17678    }
17679}
17680
17681impl ArmyList {
17682    pub fn new() -> ArmyList {
17683        ::std::default::Default::default()
17684    }
17685
17686    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17687        let mut fields = ::std::vec::Vec::with_capacity(1);
17688        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17689        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
17690            "armies",
17691            |m: &ArmyList| { &m.armies },
17692            |m: &mut ArmyList| { &mut m.armies },
17693        ));
17694        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArmyList>(
17695            "ArmyList",
17696            fields,
17697            oneofs,
17698        )
17699    }
17700}
17701
17702impl ::protobuf::Message for ArmyList {
17703    const NAME: &'static str = "ArmyList";
17704
17705    fn is_initialized(&self) -> bool {
17706        for v in &self.armies {
17707            if !v.is_initialized() {
17708                return false;
17709            }
17710        };
17711        true
17712    }
17713
17714    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17715        while let Some(tag) = is.read_raw_tag_or_eof()? {
17716            match tag {
17717                10 => {
17718                    self.armies.push(is.read_message()?);
17719                },
17720                tag => {
17721                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17722                },
17723            };
17724        }
17725        ::std::result::Result::Ok(())
17726    }
17727
17728    // Compute sizes of nested messages
17729    #[allow(unused_variables)]
17730    fn compute_size(&self) -> u64 {
17731        let mut my_size = 0;
17732        for value in &self.armies {
17733            let len = value.compute_size();
17734            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
17735        };
17736        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
17737        self.special_fields.cached_size().set(my_size as u32);
17738        my_size
17739    }
17740
17741    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
17742        for v in &self.armies {
17743            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
17744        };
17745        os.write_unknown_fields(self.special_fields.unknown_fields())?;
17746        ::std::result::Result::Ok(())
17747    }
17748
17749    fn special_fields(&self) -> &::protobuf::SpecialFields {
17750        &self.special_fields
17751    }
17752
17753    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
17754        &mut self.special_fields
17755    }
17756
17757    fn new() -> ArmyList {
17758        ArmyList::new()
17759    }
17760
17761    fn clear(&mut self) {
17762        self.armies.clear();
17763        self.special_fields.clear();
17764    }
17765
17766    fn default_instance() -> &'static ArmyList {
17767        static instance: ArmyList = ArmyList {
17768            armies: ::std::vec::Vec::new(),
17769            special_fields: ::protobuf::SpecialFields::new(),
17770        };
17771        &instance
17772    }
17773}
17774
17775impl ::protobuf::MessageFull for ArmyList {
17776    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
17777        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
17778        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArmyList").unwrap()).clone()
17779    }
17780}
17781
17782impl ::std::fmt::Display for ArmyList {
17783    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
17784        ::protobuf::text_format::fmt(self, f)
17785    }
17786}
17787
17788impl ::protobuf::reflect::ProtobufValue for ArmyList {
17789    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
17790}
17791
17792// @@protoc_insertion_point(message:RemoteFortressReader.GrowthPrint)
17793#[derive(PartialEq,Clone,Default,Debug)]
17794pub struct GrowthPrint {
17795    // message fields
17796    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.priority)
17797    pub priority: ::std::option::Option<i32>,
17798    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.color)
17799    pub color: ::std::option::Option<i32>,
17800    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.timing_start)
17801    pub timing_start: ::std::option::Option<i32>,
17802    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.timing_end)
17803    pub timing_end: ::std::option::Option<i32>,
17804    // @@protoc_insertion_point(field:RemoteFortressReader.GrowthPrint.tile)
17805    pub tile: ::std::option::Option<i32>,
17806    // special fields
17807    // @@protoc_insertion_point(special_field:RemoteFortressReader.GrowthPrint.special_fields)
17808    pub special_fields: ::protobuf::SpecialFields,
17809}
17810
17811impl<'a> ::std::default::Default for &'a GrowthPrint {
17812    fn default() -> &'a GrowthPrint {
17813        <GrowthPrint as ::protobuf::Message>::default_instance()
17814    }
17815}
17816
17817impl GrowthPrint {
17818    pub fn new() -> GrowthPrint {
17819        ::std::default::Default::default()
17820    }
17821
17822    // optional int32 priority = 1;
17823
17824    pub fn priority(&self) -> i32 {
17825        self.priority.unwrap_or(0)
17826    }
17827
17828    pub fn clear_priority(&mut self) {
17829        self.priority = ::std::option::Option::None;
17830    }
17831
17832    pub fn has_priority(&self) -> bool {
17833        self.priority.is_some()
17834    }
17835
17836    // Param is passed by value, moved
17837    pub fn set_priority(&mut self, v: i32) {
17838        self.priority = ::std::option::Option::Some(v);
17839    }
17840
17841    // optional int32 color = 2;
17842
17843    pub fn color(&self) -> i32 {
17844        self.color.unwrap_or(0)
17845    }
17846
17847    pub fn clear_color(&mut self) {
17848        self.color = ::std::option::Option::None;
17849    }
17850
17851    pub fn has_color(&self) -> bool {
17852        self.color.is_some()
17853    }
17854
17855    // Param is passed by value, moved
17856    pub fn set_color(&mut self, v: i32) {
17857        self.color = ::std::option::Option::Some(v);
17858    }
17859
17860    // optional int32 timing_start = 3;
17861
17862    pub fn timing_start(&self) -> i32 {
17863        self.timing_start.unwrap_or(0)
17864    }
17865
17866    pub fn clear_timing_start(&mut self) {
17867        self.timing_start = ::std::option::Option::None;
17868    }
17869
17870    pub fn has_timing_start(&self) -> bool {
17871        self.timing_start.is_some()
17872    }
17873
17874    // Param is passed by value, moved
17875    pub fn set_timing_start(&mut self, v: i32) {
17876        self.timing_start = ::std::option::Option::Some(v);
17877    }
17878
17879    // optional int32 timing_end = 4;
17880
17881    pub fn timing_end(&self) -> i32 {
17882        self.timing_end.unwrap_or(0)
17883    }
17884
17885    pub fn clear_timing_end(&mut self) {
17886        self.timing_end = ::std::option::Option::None;
17887    }
17888
17889    pub fn has_timing_end(&self) -> bool {
17890        self.timing_end.is_some()
17891    }
17892
17893    // Param is passed by value, moved
17894    pub fn set_timing_end(&mut self, v: i32) {
17895        self.timing_end = ::std::option::Option::Some(v);
17896    }
17897
17898    // optional int32 tile = 5;
17899
17900    pub fn tile(&self) -> i32 {
17901        self.tile.unwrap_or(0)
17902    }
17903
17904    pub fn clear_tile(&mut self) {
17905        self.tile = ::std::option::Option::None;
17906    }
17907
17908    pub fn has_tile(&self) -> bool {
17909        self.tile.is_some()
17910    }
17911
17912    // Param is passed by value, moved
17913    pub fn set_tile(&mut self, v: i32) {
17914        self.tile = ::std::option::Option::Some(v);
17915    }
17916
17917    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
17918        let mut fields = ::std::vec::Vec::with_capacity(5);
17919        let mut oneofs = ::std::vec::Vec::with_capacity(0);
17920        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17921            "priority",
17922            |m: &GrowthPrint| { &m.priority },
17923            |m: &mut GrowthPrint| { &mut m.priority },
17924        ));
17925        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17926            "color",
17927            |m: &GrowthPrint| { &m.color },
17928            |m: &mut GrowthPrint| { &mut m.color },
17929        ));
17930        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17931            "timing_start",
17932            |m: &GrowthPrint| { &m.timing_start },
17933            |m: &mut GrowthPrint| { &mut m.timing_start },
17934        ));
17935        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17936            "timing_end",
17937            |m: &GrowthPrint| { &m.timing_end },
17938            |m: &mut GrowthPrint| { &mut m.timing_end },
17939        ));
17940        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
17941            "tile",
17942            |m: &GrowthPrint| { &m.tile },
17943            |m: &mut GrowthPrint| { &mut m.tile },
17944        ));
17945        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GrowthPrint>(
17946            "GrowthPrint",
17947            fields,
17948            oneofs,
17949        )
17950    }
17951}
17952
17953impl ::protobuf::Message for GrowthPrint {
17954    const NAME: &'static str = "GrowthPrint";
17955
17956    fn is_initialized(&self) -> bool {
17957        true
17958    }
17959
17960    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
17961        while let Some(tag) = is.read_raw_tag_or_eof()? {
17962            match tag {
17963                8 => {
17964                    self.priority = ::std::option::Option::Some(is.read_int32()?);
17965                },
17966                16 => {
17967                    self.color = ::std::option::Option::Some(is.read_int32()?);
17968                },
17969                24 => {
17970                    self.timing_start = ::std::option::Option::Some(is.read_int32()?);
17971                },
17972                32 => {
17973                    self.timing_end = ::std::option::Option::Some(is.read_int32()?);
17974                },
17975                40 => {
17976                    self.tile = ::std::option::Option::Some(is.read_int32()?);
17977                },
17978                tag => {
17979                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
17980                },
17981            };
17982        }
17983        ::std::result::Result::Ok(())
17984    }
17985
17986    // Compute sizes of nested messages
17987    #[allow(unused_variables)]
17988    fn compute_size(&self) -> u64 {
17989        let mut my_size = 0;
17990        if let Some(v) = self.priority {
17991            my_size += ::protobuf::rt::int32_size(1, v);
17992        }
17993        if let Some(v) = self.color {
17994            my_size += ::protobuf::rt::int32_size(2, v);
17995        }
17996        if let Some(v) = self.timing_start {
17997            my_size += ::protobuf::rt::int32_size(3, v);
17998        }
17999        if let Some(v) = self.timing_end {
18000            my_size += ::protobuf::rt::int32_size(4, v);
18001        }
18002        if let Some(v) = self.tile {
18003            my_size += ::protobuf::rt::int32_size(5, v);
18004        }
18005        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
18006        self.special_fields.cached_size().set(my_size as u32);
18007        my_size
18008    }
18009
18010    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
18011        if let Some(v) = self.priority {
18012            os.write_int32(1, v)?;
18013        }
18014        if let Some(v) = self.color {
18015            os.write_int32(2, v)?;
18016        }
18017        if let Some(v) = self.timing_start {
18018            os.write_int32(3, v)?;
18019        }
18020        if let Some(v) = self.timing_end {
18021            os.write_int32(4, v)?;
18022        }
18023        if let Some(v) = self.tile {
18024            os.write_int32(5, v)?;
18025        }
18026        os.write_unknown_fields(self.special_fields.unknown_fields())?;
18027        ::std::result::Result::Ok(())
18028    }
18029
18030    fn special_fields(&self) -> &::protobuf::SpecialFields {
18031        &self.special_fields
18032    }
18033
18034    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
18035        &mut self.special_fields
18036    }
18037
18038    fn new() -> GrowthPrint {
18039        GrowthPrint::new()
18040    }
18041
18042    fn clear(&mut self) {
18043        self.priority = ::std::option::Option::None;
18044        self.color = ::std::option::Option::None;
18045        self.timing_start = ::std::option::Option::None;
18046        self.timing_end = ::std::option::Option::None;
18047        self.tile = ::std::option::Option::None;
18048        self.special_fields.clear();
18049    }
18050
18051    fn default_instance() -> &'static GrowthPrint {
18052        static instance: GrowthPrint = GrowthPrint {
18053            priority: ::std::option::Option::None,
18054            color: ::std::option::Option::None,
18055            timing_start: ::std::option::Option::None,
18056            timing_end: ::std::option::Option::None,
18057            tile: ::std::option::Option::None,
18058            special_fields: ::protobuf::SpecialFields::new(),
18059        };
18060        &instance
18061    }
18062}
18063
18064impl ::protobuf::MessageFull for GrowthPrint {
18065    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
18066        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
18067        descriptor.get(|| file_descriptor().message_by_package_relative_name("GrowthPrint").unwrap()).clone()
18068    }
18069}
18070
18071impl ::std::fmt::Display for GrowthPrint {
18072    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18073        ::protobuf::text_format::fmt(self, f)
18074    }
18075}
18076
18077impl ::protobuf::reflect::ProtobufValue for GrowthPrint {
18078    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
18079}
18080
18081// @@protoc_insertion_point(message:RemoteFortressReader.TreeGrowth)
18082#[derive(PartialEq,Clone,Default,Debug)]
18083pub struct TreeGrowth {
18084    // message fields
18085    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.index)
18086    pub index: ::std::option::Option<i32>,
18087    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.id)
18088    pub id: ::std::option::Option<::std::string::String>,
18089    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.name)
18090    pub name: ::std::option::Option<::std::string::String>,
18091    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.mat)
18092    pub mat: ::protobuf::MessageField<MatPair>,
18093    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.prints)
18094    pub prints: ::std::vec::Vec<GrowthPrint>,
18095    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.timing_start)
18096    pub timing_start: ::std::option::Option<i32>,
18097    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.timing_end)
18098    pub timing_end: ::std::option::Option<i32>,
18099    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.twigs)
18100    pub twigs: ::std::option::Option<bool>,
18101    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.light_branches)
18102    pub light_branches: ::std::option::Option<bool>,
18103    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.heavy_branches)
18104    pub heavy_branches: ::std::option::Option<bool>,
18105    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk)
18106    pub trunk: ::std::option::Option<bool>,
18107    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.roots)
18108    pub roots: ::std::option::Option<bool>,
18109    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.cap)
18110    pub cap: ::std::option::Option<bool>,
18111    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.sapling)
18112    pub sapling: ::std::option::Option<bool>,
18113    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk_height_start)
18114    pub trunk_height_start: ::std::option::Option<i32>,
18115    // @@protoc_insertion_point(field:RemoteFortressReader.TreeGrowth.trunk_height_end)
18116    pub trunk_height_end: ::std::option::Option<i32>,
18117    // special fields
18118    // @@protoc_insertion_point(special_field:RemoteFortressReader.TreeGrowth.special_fields)
18119    pub special_fields: ::protobuf::SpecialFields,
18120}
18121
18122impl<'a> ::std::default::Default for &'a TreeGrowth {
18123    fn default() -> &'a TreeGrowth {
18124        <TreeGrowth as ::protobuf::Message>::default_instance()
18125    }
18126}
18127
18128impl TreeGrowth {
18129    pub fn new() -> TreeGrowth {
18130        ::std::default::Default::default()
18131    }
18132
18133    // optional int32 index = 1;
18134
18135    pub fn index(&self) -> i32 {
18136        self.index.unwrap_or(0)
18137    }
18138
18139    pub fn clear_index(&mut self) {
18140        self.index = ::std::option::Option::None;
18141    }
18142
18143    pub fn has_index(&self) -> bool {
18144        self.index.is_some()
18145    }
18146
18147    // Param is passed by value, moved
18148    pub fn set_index(&mut self, v: i32) {
18149        self.index = ::std::option::Option::Some(v);
18150    }
18151
18152    // optional string id = 2;
18153
18154    pub fn id(&self) -> &str {
18155        match self.id.as_ref() {
18156            Some(v) => v,
18157            None => "",
18158        }
18159    }
18160
18161    pub fn clear_id(&mut self) {
18162        self.id = ::std::option::Option::None;
18163    }
18164
18165    pub fn has_id(&self) -> bool {
18166        self.id.is_some()
18167    }
18168
18169    // Param is passed by value, moved
18170    pub fn set_id(&mut self, v: ::std::string::String) {
18171        self.id = ::std::option::Option::Some(v);
18172    }
18173
18174    // Mutable pointer to the field.
18175    // If field is not initialized, it is initialized with default value first.
18176    pub fn mut_id(&mut self) -> &mut ::std::string::String {
18177        if self.id.is_none() {
18178            self.id = ::std::option::Option::Some(::std::string::String::new());
18179        }
18180        self.id.as_mut().unwrap()
18181    }
18182
18183    // Take field
18184    pub fn take_id(&mut self) -> ::std::string::String {
18185        self.id.take().unwrap_or_else(|| ::std::string::String::new())
18186    }
18187
18188    // optional string name = 3;
18189
18190    pub fn name(&self) -> &str {
18191        match self.name.as_ref() {
18192            Some(v) => v,
18193            None => "",
18194        }
18195    }
18196
18197    pub fn clear_name(&mut self) {
18198        self.name = ::std::option::Option::None;
18199    }
18200
18201    pub fn has_name(&self) -> bool {
18202        self.name.is_some()
18203    }
18204
18205    // Param is passed by value, moved
18206    pub fn set_name(&mut self, v: ::std::string::String) {
18207        self.name = ::std::option::Option::Some(v);
18208    }
18209
18210    // Mutable pointer to the field.
18211    // If field is not initialized, it is initialized with default value first.
18212    pub fn mut_name(&mut self) -> &mut ::std::string::String {
18213        if self.name.is_none() {
18214            self.name = ::std::option::Option::Some(::std::string::String::new());
18215        }
18216        self.name.as_mut().unwrap()
18217    }
18218
18219    // Take field
18220    pub fn take_name(&mut self) -> ::std::string::String {
18221        self.name.take().unwrap_or_else(|| ::std::string::String::new())
18222    }
18223
18224    // optional int32 timing_start = 6;
18225
18226    pub fn timing_start(&self) -> i32 {
18227        self.timing_start.unwrap_or(0)
18228    }
18229
18230    pub fn clear_timing_start(&mut self) {
18231        self.timing_start = ::std::option::Option::None;
18232    }
18233
18234    pub fn has_timing_start(&self) -> bool {
18235        self.timing_start.is_some()
18236    }
18237
18238    // Param is passed by value, moved
18239    pub fn set_timing_start(&mut self, v: i32) {
18240        self.timing_start = ::std::option::Option::Some(v);
18241    }
18242
18243    // optional int32 timing_end = 7;
18244
18245    pub fn timing_end(&self) -> i32 {
18246        self.timing_end.unwrap_or(0)
18247    }
18248
18249    pub fn clear_timing_end(&mut self) {
18250        self.timing_end = ::std::option::Option::None;
18251    }
18252
18253    pub fn has_timing_end(&self) -> bool {
18254        self.timing_end.is_some()
18255    }
18256
18257    // Param is passed by value, moved
18258    pub fn set_timing_end(&mut self, v: i32) {
18259        self.timing_end = ::std::option::Option::Some(v);
18260    }
18261
18262    // optional bool twigs = 8;
18263
18264    pub fn twigs(&self) -> bool {
18265        self.twigs.unwrap_or(false)
18266    }
18267
18268    pub fn clear_twigs(&mut self) {
18269        self.twigs = ::std::option::Option::None;
18270    }
18271
18272    pub fn has_twigs(&self) -> bool {
18273        self.twigs.is_some()
18274    }
18275
18276    // Param is passed by value, moved
18277    pub fn set_twigs(&mut self, v: bool) {
18278        self.twigs = ::std::option::Option::Some(v);
18279    }
18280
18281    // optional bool light_branches = 9;
18282
18283    pub fn light_branches(&self) -> bool {
18284        self.light_branches.unwrap_or(false)
18285    }
18286
18287    pub fn clear_light_branches(&mut self) {
18288        self.light_branches = ::std::option::Option::None;
18289    }
18290
18291    pub fn has_light_branches(&self) -> bool {
18292        self.light_branches.is_some()
18293    }
18294
18295    // Param is passed by value, moved
18296    pub fn set_light_branches(&mut self, v: bool) {
18297        self.light_branches = ::std::option::Option::Some(v);
18298    }
18299
18300    // optional bool heavy_branches = 10;
18301
18302    pub fn heavy_branches(&self) -> bool {
18303        self.heavy_branches.unwrap_or(false)
18304    }
18305
18306    pub fn clear_heavy_branches(&mut self) {
18307        self.heavy_branches = ::std::option::Option::None;
18308    }
18309
18310    pub fn has_heavy_branches(&self) -> bool {
18311        self.heavy_branches.is_some()
18312    }
18313
18314    // Param is passed by value, moved
18315    pub fn set_heavy_branches(&mut self, v: bool) {
18316        self.heavy_branches = ::std::option::Option::Some(v);
18317    }
18318
18319    // optional bool trunk = 11;
18320
18321    pub fn trunk(&self) -> bool {
18322        self.trunk.unwrap_or(false)
18323    }
18324
18325    pub fn clear_trunk(&mut self) {
18326        self.trunk = ::std::option::Option::None;
18327    }
18328
18329    pub fn has_trunk(&self) -> bool {
18330        self.trunk.is_some()
18331    }
18332
18333    // Param is passed by value, moved
18334    pub fn set_trunk(&mut self, v: bool) {
18335        self.trunk = ::std::option::Option::Some(v);
18336    }
18337
18338    // optional bool roots = 12;
18339
18340    pub fn roots(&self) -> bool {
18341        self.roots.unwrap_or(false)
18342    }
18343
18344    pub fn clear_roots(&mut self) {
18345        self.roots = ::std::option::Option::None;
18346    }
18347
18348    pub fn has_roots(&self) -> bool {
18349        self.roots.is_some()
18350    }
18351
18352    // Param is passed by value, moved
18353    pub fn set_roots(&mut self, v: bool) {
18354        self.roots = ::std::option::Option::Some(v);
18355    }
18356
18357    // optional bool cap = 13;
18358
18359    pub fn cap(&self) -> bool {
18360        self.cap.unwrap_or(false)
18361    }
18362
18363    pub fn clear_cap(&mut self) {
18364        self.cap = ::std::option::Option::None;
18365    }
18366
18367    pub fn has_cap(&self) -> bool {
18368        self.cap.is_some()
18369    }
18370
18371    // Param is passed by value, moved
18372    pub fn set_cap(&mut self, v: bool) {
18373        self.cap = ::std::option::Option::Some(v);
18374    }
18375
18376    // optional bool sapling = 14;
18377
18378    pub fn sapling(&self) -> bool {
18379        self.sapling.unwrap_or(false)
18380    }
18381
18382    pub fn clear_sapling(&mut self) {
18383        self.sapling = ::std::option::Option::None;
18384    }
18385
18386    pub fn has_sapling(&self) -> bool {
18387        self.sapling.is_some()
18388    }
18389
18390    // Param is passed by value, moved
18391    pub fn set_sapling(&mut self, v: bool) {
18392        self.sapling = ::std::option::Option::Some(v);
18393    }
18394
18395    // optional int32 trunk_height_start = 15;
18396
18397    pub fn trunk_height_start(&self) -> i32 {
18398        self.trunk_height_start.unwrap_or(0)
18399    }
18400
18401    pub fn clear_trunk_height_start(&mut self) {
18402        self.trunk_height_start = ::std::option::Option::None;
18403    }
18404
18405    pub fn has_trunk_height_start(&self) -> bool {
18406        self.trunk_height_start.is_some()
18407    }
18408
18409    // Param is passed by value, moved
18410    pub fn set_trunk_height_start(&mut self, v: i32) {
18411        self.trunk_height_start = ::std::option::Option::Some(v);
18412    }
18413
18414    // optional int32 trunk_height_end = 16;
18415
18416    pub fn trunk_height_end(&self) -> i32 {
18417        self.trunk_height_end.unwrap_or(0)
18418    }
18419
18420    pub fn clear_trunk_height_end(&mut self) {
18421        self.trunk_height_end = ::std::option::Option::None;
18422    }
18423
18424    pub fn has_trunk_height_end(&self) -> bool {
18425        self.trunk_height_end.is_some()
18426    }
18427
18428    // Param is passed by value, moved
18429    pub fn set_trunk_height_end(&mut self, v: i32) {
18430        self.trunk_height_end = ::std::option::Option::Some(v);
18431    }
18432
18433    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
18434        let mut fields = ::std::vec::Vec::with_capacity(16);
18435        let mut oneofs = ::std::vec::Vec::with_capacity(0);
18436        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18437            "index",
18438            |m: &TreeGrowth| { &m.index },
18439            |m: &mut TreeGrowth| { &mut m.index },
18440        ));
18441        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18442            "id",
18443            |m: &TreeGrowth| { &m.id },
18444            |m: &mut TreeGrowth| { &mut m.id },
18445        ));
18446        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18447            "name",
18448            |m: &TreeGrowth| { &m.name },
18449            |m: &mut TreeGrowth| { &mut m.name },
18450        ));
18451        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
18452            "mat",
18453            |m: &TreeGrowth| { &m.mat },
18454            |m: &mut TreeGrowth| { &mut m.mat },
18455        ));
18456        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
18457            "prints",
18458            |m: &TreeGrowth| { &m.prints },
18459            |m: &mut TreeGrowth| { &mut m.prints },
18460        ));
18461        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18462            "timing_start",
18463            |m: &TreeGrowth| { &m.timing_start },
18464            |m: &mut TreeGrowth| { &mut m.timing_start },
18465        ));
18466        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18467            "timing_end",
18468            |m: &TreeGrowth| { &m.timing_end },
18469            |m: &mut TreeGrowth| { &mut m.timing_end },
18470        ));
18471        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18472            "twigs",
18473            |m: &TreeGrowth| { &m.twigs },
18474            |m: &mut TreeGrowth| { &mut m.twigs },
18475        ));
18476        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18477            "light_branches",
18478            |m: &TreeGrowth| { &m.light_branches },
18479            |m: &mut TreeGrowth| { &mut m.light_branches },
18480        ));
18481        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18482            "heavy_branches",
18483            |m: &TreeGrowth| { &m.heavy_branches },
18484            |m: &mut TreeGrowth| { &mut m.heavy_branches },
18485        ));
18486        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18487            "trunk",
18488            |m: &TreeGrowth| { &m.trunk },
18489            |m: &mut TreeGrowth| { &mut m.trunk },
18490        ));
18491        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18492            "roots",
18493            |m: &TreeGrowth| { &m.roots },
18494            |m: &mut TreeGrowth| { &mut m.roots },
18495        ));
18496        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18497            "cap",
18498            |m: &TreeGrowth| { &m.cap },
18499            |m: &mut TreeGrowth| { &mut m.cap },
18500        ));
18501        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18502            "sapling",
18503            |m: &TreeGrowth| { &m.sapling },
18504            |m: &mut TreeGrowth| { &mut m.sapling },
18505        ));
18506        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18507            "trunk_height_start",
18508            |m: &TreeGrowth| { &m.trunk_height_start },
18509            |m: &mut TreeGrowth| { &mut m.trunk_height_start },
18510        ));
18511        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18512            "trunk_height_end",
18513            |m: &TreeGrowth| { &m.trunk_height_end },
18514            |m: &mut TreeGrowth| { &mut m.trunk_height_end },
18515        ));
18516        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TreeGrowth>(
18517            "TreeGrowth",
18518            fields,
18519            oneofs,
18520        )
18521    }
18522}
18523
18524impl ::protobuf::Message for TreeGrowth {
18525    const NAME: &'static str = "TreeGrowth";
18526
18527    fn is_initialized(&self) -> bool {
18528        for v in &self.mat {
18529            if !v.is_initialized() {
18530                return false;
18531            }
18532        };
18533        for v in &self.prints {
18534            if !v.is_initialized() {
18535                return false;
18536            }
18537        };
18538        true
18539    }
18540
18541    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
18542        while let Some(tag) = is.read_raw_tag_or_eof()? {
18543            match tag {
18544                8 => {
18545                    self.index = ::std::option::Option::Some(is.read_int32()?);
18546                },
18547                18 => {
18548                    self.id = ::std::option::Option::Some(is.read_string()?);
18549                },
18550                26 => {
18551                    self.name = ::std::option::Option::Some(is.read_string()?);
18552                },
18553                34 => {
18554                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.mat)?;
18555                },
18556                42 => {
18557                    self.prints.push(is.read_message()?);
18558                },
18559                48 => {
18560                    self.timing_start = ::std::option::Option::Some(is.read_int32()?);
18561                },
18562                56 => {
18563                    self.timing_end = ::std::option::Option::Some(is.read_int32()?);
18564                },
18565                64 => {
18566                    self.twigs = ::std::option::Option::Some(is.read_bool()?);
18567                },
18568                72 => {
18569                    self.light_branches = ::std::option::Option::Some(is.read_bool()?);
18570                },
18571                80 => {
18572                    self.heavy_branches = ::std::option::Option::Some(is.read_bool()?);
18573                },
18574                88 => {
18575                    self.trunk = ::std::option::Option::Some(is.read_bool()?);
18576                },
18577                96 => {
18578                    self.roots = ::std::option::Option::Some(is.read_bool()?);
18579                },
18580                104 => {
18581                    self.cap = ::std::option::Option::Some(is.read_bool()?);
18582                },
18583                112 => {
18584                    self.sapling = ::std::option::Option::Some(is.read_bool()?);
18585                },
18586                120 => {
18587                    self.trunk_height_start = ::std::option::Option::Some(is.read_int32()?);
18588                },
18589                128 => {
18590                    self.trunk_height_end = ::std::option::Option::Some(is.read_int32()?);
18591                },
18592                tag => {
18593                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
18594                },
18595            };
18596        }
18597        ::std::result::Result::Ok(())
18598    }
18599
18600    // Compute sizes of nested messages
18601    #[allow(unused_variables)]
18602    fn compute_size(&self) -> u64 {
18603        let mut my_size = 0;
18604        if let Some(v) = self.index {
18605            my_size += ::protobuf::rt::int32_size(1, v);
18606        }
18607        if let Some(v) = self.id.as_ref() {
18608            my_size += ::protobuf::rt::string_size(2, &v);
18609        }
18610        if let Some(v) = self.name.as_ref() {
18611            my_size += ::protobuf::rt::string_size(3, &v);
18612        }
18613        if let Some(v) = self.mat.as_ref() {
18614            let len = v.compute_size();
18615            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
18616        }
18617        for value in &self.prints {
18618            let len = value.compute_size();
18619            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
18620        };
18621        if let Some(v) = self.timing_start {
18622            my_size += ::protobuf::rt::int32_size(6, v);
18623        }
18624        if let Some(v) = self.timing_end {
18625            my_size += ::protobuf::rt::int32_size(7, v);
18626        }
18627        if let Some(v) = self.twigs {
18628            my_size += 1 + 1;
18629        }
18630        if let Some(v) = self.light_branches {
18631            my_size += 1 + 1;
18632        }
18633        if let Some(v) = self.heavy_branches {
18634            my_size += 1 + 1;
18635        }
18636        if let Some(v) = self.trunk {
18637            my_size += 1 + 1;
18638        }
18639        if let Some(v) = self.roots {
18640            my_size += 1 + 1;
18641        }
18642        if let Some(v) = self.cap {
18643            my_size += 1 + 1;
18644        }
18645        if let Some(v) = self.sapling {
18646            my_size += 1 + 1;
18647        }
18648        if let Some(v) = self.trunk_height_start {
18649            my_size += ::protobuf::rt::int32_size(15, v);
18650        }
18651        if let Some(v) = self.trunk_height_end {
18652            my_size += ::protobuf::rt::int32_size(16, v);
18653        }
18654        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
18655        self.special_fields.cached_size().set(my_size as u32);
18656        my_size
18657    }
18658
18659    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
18660        if let Some(v) = self.index {
18661            os.write_int32(1, v)?;
18662        }
18663        if let Some(v) = self.id.as_ref() {
18664            os.write_string(2, v)?;
18665        }
18666        if let Some(v) = self.name.as_ref() {
18667            os.write_string(3, v)?;
18668        }
18669        if let Some(v) = self.mat.as_ref() {
18670            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
18671        }
18672        for v in &self.prints {
18673            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
18674        };
18675        if let Some(v) = self.timing_start {
18676            os.write_int32(6, v)?;
18677        }
18678        if let Some(v) = self.timing_end {
18679            os.write_int32(7, v)?;
18680        }
18681        if let Some(v) = self.twigs {
18682            os.write_bool(8, v)?;
18683        }
18684        if let Some(v) = self.light_branches {
18685            os.write_bool(9, v)?;
18686        }
18687        if let Some(v) = self.heavy_branches {
18688            os.write_bool(10, v)?;
18689        }
18690        if let Some(v) = self.trunk {
18691            os.write_bool(11, v)?;
18692        }
18693        if let Some(v) = self.roots {
18694            os.write_bool(12, v)?;
18695        }
18696        if let Some(v) = self.cap {
18697            os.write_bool(13, v)?;
18698        }
18699        if let Some(v) = self.sapling {
18700            os.write_bool(14, v)?;
18701        }
18702        if let Some(v) = self.trunk_height_start {
18703            os.write_int32(15, v)?;
18704        }
18705        if let Some(v) = self.trunk_height_end {
18706            os.write_int32(16, v)?;
18707        }
18708        os.write_unknown_fields(self.special_fields.unknown_fields())?;
18709        ::std::result::Result::Ok(())
18710    }
18711
18712    fn special_fields(&self) -> &::protobuf::SpecialFields {
18713        &self.special_fields
18714    }
18715
18716    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
18717        &mut self.special_fields
18718    }
18719
18720    fn new() -> TreeGrowth {
18721        TreeGrowth::new()
18722    }
18723
18724    fn clear(&mut self) {
18725        self.index = ::std::option::Option::None;
18726        self.id = ::std::option::Option::None;
18727        self.name = ::std::option::Option::None;
18728        self.mat.clear();
18729        self.prints.clear();
18730        self.timing_start = ::std::option::Option::None;
18731        self.timing_end = ::std::option::Option::None;
18732        self.twigs = ::std::option::Option::None;
18733        self.light_branches = ::std::option::Option::None;
18734        self.heavy_branches = ::std::option::Option::None;
18735        self.trunk = ::std::option::Option::None;
18736        self.roots = ::std::option::Option::None;
18737        self.cap = ::std::option::Option::None;
18738        self.sapling = ::std::option::Option::None;
18739        self.trunk_height_start = ::std::option::Option::None;
18740        self.trunk_height_end = ::std::option::Option::None;
18741        self.special_fields.clear();
18742    }
18743
18744    fn default_instance() -> &'static TreeGrowth {
18745        static instance: TreeGrowth = TreeGrowth {
18746            index: ::std::option::Option::None,
18747            id: ::std::option::Option::None,
18748            name: ::std::option::Option::None,
18749            mat: ::protobuf::MessageField::none(),
18750            prints: ::std::vec::Vec::new(),
18751            timing_start: ::std::option::Option::None,
18752            timing_end: ::std::option::Option::None,
18753            twigs: ::std::option::Option::None,
18754            light_branches: ::std::option::Option::None,
18755            heavy_branches: ::std::option::Option::None,
18756            trunk: ::std::option::Option::None,
18757            roots: ::std::option::Option::None,
18758            cap: ::std::option::Option::None,
18759            sapling: ::std::option::Option::None,
18760            trunk_height_start: ::std::option::Option::None,
18761            trunk_height_end: ::std::option::Option::None,
18762            special_fields: ::protobuf::SpecialFields::new(),
18763        };
18764        &instance
18765    }
18766}
18767
18768impl ::protobuf::MessageFull for TreeGrowth {
18769    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
18770        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
18771        descriptor.get(|| file_descriptor().message_by_package_relative_name("TreeGrowth").unwrap()).clone()
18772    }
18773}
18774
18775impl ::std::fmt::Display for TreeGrowth {
18776    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
18777        ::protobuf::text_format::fmt(self, f)
18778    }
18779}
18780
18781impl ::protobuf::reflect::ProtobufValue for TreeGrowth {
18782    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
18783}
18784
18785// @@protoc_insertion_point(message:RemoteFortressReader.PlantRaw)
18786#[derive(PartialEq,Clone,Default,Debug)]
18787pub struct PlantRaw {
18788    // message fields
18789    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.index)
18790    pub index: ::std::option::Option<i32>,
18791    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.id)
18792    pub id: ::std::option::Option<::std::string::String>,
18793    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.name)
18794    pub name: ::std::option::Option<::std::string::String>,
18795    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.growths)
18796    pub growths: ::std::vec::Vec<TreeGrowth>,
18797    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRaw.tile)
18798    pub tile: ::std::option::Option<i32>,
18799    // special fields
18800    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantRaw.special_fields)
18801    pub special_fields: ::protobuf::SpecialFields,
18802}
18803
18804impl<'a> ::std::default::Default for &'a PlantRaw {
18805    fn default() -> &'a PlantRaw {
18806        <PlantRaw as ::protobuf::Message>::default_instance()
18807    }
18808}
18809
18810impl PlantRaw {
18811    pub fn new() -> PlantRaw {
18812        ::std::default::Default::default()
18813    }
18814
18815    // optional int32 index = 1;
18816
18817    pub fn index(&self) -> i32 {
18818        self.index.unwrap_or(0)
18819    }
18820
18821    pub fn clear_index(&mut self) {
18822        self.index = ::std::option::Option::None;
18823    }
18824
18825    pub fn has_index(&self) -> bool {
18826        self.index.is_some()
18827    }
18828
18829    // Param is passed by value, moved
18830    pub fn set_index(&mut self, v: i32) {
18831        self.index = ::std::option::Option::Some(v);
18832    }
18833
18834    // optional string id = 2;
18835
18836    pub fn id(&self) -> &str {
18837        match self.id.as_ref() {
18838            Some(v) => v,
18839            None => "",
18840        }
18841    }
18842
18843    pub fn clear_id(&mut self) {
18844        self.id = ::std::option::Option::None;
18845    }
18846
18847    pub fn has_id(&self) -> bool {
18848        self.id.is_some()
18849    }
18850
18851    // Param is passed by value, moved
18852    pub fn set_id(&mut self, v: ::std::string::String) {
18853        self.id = ::std::option::Option::Some(v);
18854    }
18855
18856    // Mutable pointer to the field.
18857    // If field is not initialized, it is initialized with default value first.
18858    pub fn mut_id(&mut self) -> &mut ::std::string::String {
18859        if self.id.is_none() {
18860            self.id = ::std::option::Option::Some(::std::string::String::new());
18861        }
18862        self.id.as_mut().unwrap()
18863    }
18864
18865    // Take field
18866    pub fn take_id(&mut self) -> ::std::string::String {
18867        self.id.take().unwrap_or_else(|| ::std::string::String::new())
18868    }
18869
18870    // optional string name = 3;
18871
18872    pub fn name(&self) -> &str {
18873        match self.name.as_ref() {
18874            Some(v) => v,
18875            None => "",
18876        }
18877    }
18878
18879    pub fn clear_name(&mut self) {
18880        self.name = ::std::option::Option::None;
18881    }
18882
18883    pub fn has_name(&self) -> bool {
18884        self.name.is_some()
18885    }
18886
18887    // Param is passed by value, moved
18888    pub fn set_name(&mut self, v: ::std::string::String) {
18889        self.name = ::std::option::Option::Some(v);
18890    }
18891
18892    // Mutable pointer to the field.
18893    // If field is not initialized, it is initialized with default value first.
18894    pub fn mut_name(&mut self) -> &mut ::std::string::String {
18895        if self.name.is_none() {
18896            self.name = ::std::option::Option::Some(::std::string::String::new());
18897        }
18898        self.name.as_mut().unwrap()
18899    }
18900
18901    // Take field
18902    pub fn take_name(&mut self) -> ::std::string::String {
18903        self.name.take().unwrap_or_else(|| ::std::string::String::new())
18904    }
18905
18906    // optional int32 tile = 5;
18907
18908    pub fn tile(&self) -> i32 {
18909        self.tile.unwrap_or(0)
18910    }
18911
18912    pub fn clear_tile(&mut self) {
18913        self.tile = ::std::option::Option::None;
18914    }
18915
18916    pub fn has_tile(&self) -> bool {
18917        self.tile.is_some()
18918    }
18919
18920    // Param is passed by value, moved
18921    pub fn set_tile(&mut self, v: i32) {
18922        self.tile = ::std::option::Option::Some(v);
18923    }
18924
18925    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
18926        let mut fields = ::std::vec::Vec::with_capacity(5);
18927        let mut oneofs = ::std::vec::Vec::with_capacity(0);
18928        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18929            "index",
18930            |m: &PlantRaw| { &m.index },
18931            |m: &mut PlantRaw| { &mut m.index },
18932        ));
18933        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18934            "id",
18935            |m: &PlantRaw| { &m.id },
18936            |m: &mut PlantRaw| { &mut m.id },
18937        ));
18938        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18939            "name",
18940            |m: &PlantRaw| { &m.name },
18941            |m: &mut PlantRaw| { &mut m.name },
18942        ));
18943        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
18944            "growths",
18945            |m: &PlantRaw| { &m.growths },
18946            |m: &mut PlantRaw| { &mut m.growths },
18947        ));
18948        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
18949            "tile",
18950            |m: &PlantRaw| { &m.tile },
18951            |m: &mut PlantRaw| { &mut m.tile },
18952        ));
18953        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantRaw>(
18954            "PlantRaw",
18955            fields,
18956            oneofs,
18957        )
18958    }
18959}
18960
18961impl ::protobuf::Message for PlantRaw {
18962    const NAME: &'static str = "PlantRaw";
18963
18964    fn is_initialized(&self) -> bool {
18965        for v in &self.growths {
18966            if !v.is_initialized() {
18967                return false;
18968            }
18969        };
18970        true
18971    }
18972
18973    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
18974        while let Some(tag) = is.read_raw_tag_or_eof()? {
18975            match tag {
18976                8 => {
18977                    self.index = ::std::option::Option::Some(is.read_int32()?);
18978                },
18979                18 => {
18980                    self.id = ::std::option::Option::Some(is.read_string()?);
18981                },
18982                26 => {
18983                    self.name = ::std::option::Option::Some(is.read_string()?);
18984                },
18985                34 => {
18986                    self.growths.push(is.read_message()?);
18987                },
18988                40 => {
18989                    self.tile = ::std::option::Option::Some(is.read_int32()?);
18990                },
18991                tag => {
18992                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
18993                },
18994            };
18995        }
18996        ::std::result::Result::Ok(())
18997    }
18998
18999    // Compute sizes of nested messages
19000    #[allow(unused_variables)]
19001    fn compute_size(&self) -> u64 {
19002        let mut my_size = 0;
19003        if let Some(v) = self.index {
19004            my_size += ::protobuf::rt::int32_size(1, v);
19005        }
19006        if let Some(v) = self.id.as_ref() {
19007            my_size += ::protobuf::rt::string_size(2, &v);
19008        }
19009        if let Some(v) = self.name.as_ref() {
19010            my_size += ::protobuf::rt::string_size(3, &v);
19011        }
19012        for value in &self.growths {
19013            let len = value.compute_size();
19014            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19015        };
19016        if let Some(v) = self.tile {
19017            my_size += ::protobuf::rt::int32_size(5, v);
19018        }
19019        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19020        self.special_fields.cached_size().set(my_size as u32);
19021        my_size
19022    }
19023
19024    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19025        if let Some(v) = self.index {
19026            os.write_int32(1, v)?;
19027        }
19028        if let Some(v) = self.id.as_ref() {
19029            os.write_string(2, v)?;
19030        }
19031        if let Some(v) = self.name.as_ref() {
19032            os.write_string(3, v)?;
19033        }
19034        for v in &self.growths {
19035            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
19036        };
19037        if let Some(v) = self.tile {
19038            os.write_int32(5, v)?;
19039        }
19040        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19041        ::std::result::Result::Ok(())
19042    }
19043
19044    fn special_fields(&self) -> &::protobuf::SpecialFields {
19045        &self.special_fields
19046    }
19047
19048    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19049        &mut self.special_fields
19050    }
19051
19052    fn new() -> PlantRaw {
19053        PlantRaw::new()
19054    }
19055
19056    fn clear(&mut self) {
19057        self.index = ::std::option::Option::None;
19058        self.id = ::std::option::Option::None;
19059        self.name = ::std::option::Option::None;
19060        self.growths.clear();
19061        self.tile = ::std::option::Option::None;
19062        self.special_fields.clear();
19063    }
19064
19065    fn default_instance() -> &'static PlantRaw {
19066        static instance: PlantRaw = PlantRaw {
19067            index: ::std::option::Option::None,
19068            id: ::std::option::Option::None,
19069            name: ::std::option::Option::None,
19070            growths: ::std::vec::Vec::new(),
19071            tile: ::std::option::Option::None,
19072            special_fields: ::protobuf::SpecialFields::new(),
19073        };
19074        &instance
19075    }
19076}
19077
19078impl ::protobuf::MessageFull for PlantRaw {
19079    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19080        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19081        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantRaw").unwrap()).clone()
19082    }
19083}
19084
19085impl ::std::fmt::Display for PlantRaw {
19086    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19087        ::protobuf::text_format::fmt(self, f)
19088    }
19089}
19090
19091impl ::protobuf::reflect::ProtobufValue for PlantRaw {
19092    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19093}
19094
19095// @@protoc_insertion_point(message:RemoteFortressReader.PlantRawList)
19096#[derive(PartialEq,Clone,Default,Debug)]
19097pub struct PlantRawList {
19098    // message fields
19099    // @@protoc_insertion_point(field:RemoteFortressReader.PlantRawList.plant_raws)
19100    pub plant_raws: ::std::vec::Vec<PlantRaw>,
19101    // special fields
19102    // @@protoc_insertion_point(special_field:RemoteFortressReader.PlantRawList.special_fields)
19103    pub special_fields: ::protobuf::SpecialFields,
19104}
19105
19106impl<'a> ::std::default::Default for &'a PlantRawList {
19107    fn default() -> &'a PlantRawList {
19108        <PlantRawList as ::protobuf::Message>::default_instance()
19109    }
19110}
19111
19112impl PlantRawList {
19113    pub fn new() -> PlantRawList {
19114        ::std::default::Default::default()
19115    }
19116
19117    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19118        let mut fields = ::std::vec::Vec::with_capacity(1);
19119        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19120        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
19121            "plant_raws",
19122            |m: &PlantRawList| { &m.plant_raws },
19123            |m: &mut PlantRawList| { &mut m.plant_raws },
19124        ));
19125        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<PlantRawList>(
19126            "PlantRawList",
19127            fields,
19128            oneofs,
19129        )
19130    }
19131}
19132
19133impl ::protobuf::Message for PlantRawList {
19134    const NAME: &'static str = "PlantRawList";
19135
19136    fn is_initialized(&self) -> bool {
19137        for v in &self.plant_raws {
19138            if !v.is_initialized() {
19139                return false;
19140            }
19141        };
19142        true
19143    }
19144
19145    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19146        while let Some(tag) = is.read_raw_tag_or_eof()? {
19147            match tag {
19148                10 => {
19149                    self.plant_raws.push(is.read_message()?);
19150                },
19151                tag => {
19152                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19153                },
19154            };
19155        }
19156        ::std::result::Result::Ok(())
19157    }
19158
19159    // Compute sizes of nested messages
19160    #[allow(unused_variables)]
19161    fn compute_size(&self) -> u64 {
19162        let mut my_size = 0;
19163        for value in &self.plant_raws {
19164            let len = value.compute_size();
19165            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19166        };
19167        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19168        self.special_fields.cached_size().set(my_size as u32);
19169        my_size
19170    }
19171
19172    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19173        for v in &self.plant_raws {
19174            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
19175        };
19176        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19177        ::std::result::Result::Ok(())
19178    }
19179
19180    fn special_fields(&self) -> &::protobuf::SpecialFields {
19181        &self.special_fields
19182    }
19183
19184    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19185        &mut self.special_fields
19186    }
19187
19188    fn new() -> PlantRawList {
19189        PlantRawList::new()
19190    }
19191
19192    fn clear(&mut self) {
19193        self.plant_raws.clear();
19194        self.special_fields.clear();
19195    }
19196
19197    fn default_instance() -> &'static PlantRawList {
19198        static instance: PlantRawList = PlantRawList {
19199            plant_raws: ::std::vec::Vec::new(),
19200            special_fields: ::protobuf::SpecialFields::new(),
19201        };
19202        &instance
19203    }
19204}
19205
19206impl ::protobuf::MessageFull for PlantRawList {
19207    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19208        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19209        descriptor.get(|| file_descriptor().message_by_package_relative_name("PlantRawList").unwrap()).clone()
19210    }
19211}
19212
19213impl ::std::fmt::Display for PlantRawList {
19214    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19215        ::protobuf::text_format::fmt(self, f)
19216    }
19217}
19218
19219impl ::protobuf::reflect::ProtobufValue for PlantRawList {
19220    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19221}
19222
19223// @@protoc_insertion_point(message:RemoteFortressReader.ScreenTile)
19224#[derive(PartialEq,Clone,Default,Debug)]
19225pub struct ScreenTile {
19226    // message fields
19227    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.character)
19228    pub character: ::std::option::Option<u32>,
19229    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.foreground)
19230    pub foreground: ::std::option::Option<u32>,
19231    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenTile.background)
19232    pub background: ::std::option::Option<u32>,
19233    // special fields
19234    // @@protoc_insertion_point(special_field:RemoteFortressReader.ScreenTile.special_fields)
19235    pub special_fields: ::protobuf::SpecialFields,
19236}
19237
19238impl<'a> ::std::default::Default for &'a ScreenTile {
19239    fn default() -> &'a ScreenTile {
19240        <ScreenTile as ::protobuf::Message>::default_instance()
19241    }
19242}
19243
19244impl ScreenTile {
19245    pub fn new() -> ScreenTile {
19246        ::std::default::Default::default()
19247    }
19248
19249    // optional uint32 character = 1;
19250
19251    pub fn character(&self) -> u32 {
19252        self.character.unwrap_or(0)
19253    }
19254
19255    pub fn clear_character(&mut self) {
19256        self.character = ::std::option::Option::None;
19257    }
19258
19259    pub fn has_character(&self) -> bool {
19260        self.character.is_some()
19261    }
19262
19263    // Param is passed by value, moved
19264    pub fn set_character(&mut self, v: u32) {
19265        self.character = ::std::option::Option::Some(v);
19266    }
19267
19268    // optional uint32 foreground = 2;
19269
19270    pub fn foreground(&self) -> u32 {
19271        self.foreground.unwrap_or(0)
19272    }
19273
19274    pub fn clear_foreground(&mut self) {
19275        self.foreground = ::std::option::Option::None;
19276    }
19277
19278    pub fn has_foreground(&self) -> bool {
19279        self.foreground.is_some()
19280    }
19281
19282    // Param is passed by value, moved
19283    pub fn set_foreground(&mut self, v: u32) {
19284        self.foreground = ::std::option::Option::Some(v);
19285    }
19286
19287    // optional uint32 background = 3;
19288
19289    pub fn background(&self) -> u32 {
19290        self.background.unwrap_or(0)
19291    }
19292
19293    pub fn clear_background(&mut self) {
19294        self.background = ::std::option::Option::None;
19295    }
19296
19297    pub fn has_background(&self) -> bool {
19298        self.background.is_some()
19299    }
19300
19301    // Param is passed by value, moved
19302    pub fn set_background(&mut self, v: u32) {
19303        self.background = ::std::option::Option::Some(v);
19304    }
19305
19306    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19307        let mut fields = ::std::vec::Vec::with_capacity(3);
19308        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19309        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19310            "character",
19311            |m: &ScreenTile| { &m.character },
19312            |m: &mut ScreenTile| { &mut m.character },
19313        ));
19314        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19315            "foreground",
19316            |m: &ScreenTile| { &m.foreground },
19317            |m: &mut ScreenTile| { &mut m.foreground },
19318        ));
19319        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19320            "background",
19321            |m: &ScreenTile| { &m.background },
19322            |m: &mut ScreenTile| { &mut m.background },
19323        ));
19324        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ScreenTile>(
19325            "ScreenTile",
19326            fields,
19327            oneofs,
19328        )
19329    }
19330}
19331
19332impl ::protobuf::Message for ScreenTile {
19333    const NAME: &'static str = "ScreenTile";
19334
19335    fn is_initialized(&self) -> bool {
19336        true
19337    }
19338
19339    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19340        while let Some(tag) = is.read_raw_tag_or_eof()? {
19341            match tag {
19342                8 => {
19343                    self.character = ::std::option::Option::Some(is.read_uint32()?);
19344                },
19345                16 => {
19346                    self.foreground = ::std::option::Option::Some(is.read_uint32()?);
19347                },
19348                24 => {
19349                    self.background = ::std::option::Option::Some(is.read_uint32()?);
19350                },
19351                tag => {
19352                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19353                },
19354            };
19355        }
19356        ::std::result::Result::Ok(())
19357    }
19358
19359    // Compute sizes of nested messages
19360    #[allow(unused_variables)]
19361    fn compute_size(&self) -> u64 {
19362        let mut my_size = 0;
19363        if let Some(v) = self.character {
19364            my_size += ::protobuf::rt::uint32_size(1, v);
19365        }
19366        if let Some(v) = self.foreground {
19367            my_size += ::protobuf::rt::uint32_size(2, v);
19368        }
19369        if let Some(v) = self.background {
19370            my_size += ::protobuf::rt::uint32_size(3, v);
19371        }
19372        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19373        self.special_fields.cached_size().set(my_size as u32);
19374        my_size
19375    }
19376
19377    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19378        if let Some(v) = self.character {
19379            os.write_uint32(1, v)?;
19380        }
19381        if let Some(v) = self.foreground {
19382            os.write_uint32(2, v)?;
19383        }
19384        if let Some(v) = self.background {
19385            os.write_uint32(3, v)?;
19386        }
19387        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19388        ::std::result::Result::Ok(())
19389    }
19390
19391    fn special_fields(&self) -> &::protobuf::SpecialFields {
19392        &self.special_fields
19393    }
19394
19395    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19396        &mut self.special_fields
19397    }
19398
19399    fn new() -> ScreenTile {
19400        ScreenTile::new()
19401    }
19402
19403    fn clear(&mut self) {
19404        self.character = ::std::option::Option::None;
19405        self.foreground = ::std::option::Option::None;
19406        self.background = ::std::option::Option::None;
19407        self.special_fields.clear();
19408    }
19409
19410    fn default_instance() -> &'static ScreenTile {
19411        static instance: ScreenTile = ScreenTile {
19412            character: ::std::option::Option::None,
19413            foreground: ::std::option::Option::None,
19414            background: ::std::option::Option::None,
19415            special_fields: ::protobuf::SpecialFields::new(),
19416        };
19417        &instance
19418    }
19419}
19420
19421impl ::protobuf::MessageFull for ScreenTile {
19422    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19423        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19424        descriptor.get(|| file_descriptor().message_by_package_relative_name("ScreenTile").unwrap()).clone()
19425    }
19426}
19427
19428impl ::std::fmt::Display for ScreenTile {
19429    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19430        ::protobuf::text_format::fmt(self, f)
19431    }
19432}
19433
19434impl ::protobuf::reflect::ProtobufValue for ScreenTile {
19435    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19436}
19437
19438// @@protoc_insertion_point(message:RemoteFortressReader.ScreenCapture)
19439#[derive(PartialEq,Clone,Default,Debug)]
19440pub struct ScreenCapture {
19441    // message fields
19442    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.width)
19443    pub width: ::std::option::Option<u32>,
19444    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.height)
19445    pub height: ::std::option::Option<u32>,
19446    // @@protoc_insertion_point(field:RemoteFortressReader.ScreenCapture.tiles)
19447    pub tiles: ::std::vec::Vec<ScreenTile>,
19448    // special fields
19449    // @@protoc_insertion_point(special_field:RemoteFortressReader.ScreenCapture.special_fields)
19450    pub special_fields: ::protobuf::SpecialFields,
19451}
19452
19453impl<'a> ::std::default::Default for &'a ScreenCapture {
19454    fn default() -> &'a ScreenCapture {
19455        <ScreenCapture as ::protobuf::Message>::default_instance()
19456    }
19457}
19458
19459impl ScreenCapture {
19460    pub fn new() -> ScreenCapture {
19461        ::std::default::Default::default()
19462    }
19463
19464    // optional uint32 width = 1;
19465
19466    pub fn width(&self) -> u32 {
19467        self.width.unwrap_or(0)
19468    }
19469
19470    pub fn clear_width(&mut self) {
19471        self.width = ::std::option::Option::None;
19472    }
19473
19474    pub fn has_width(&self) -> bool {
19475        self.width.is_some()
19476    }
19477
19478    // Param is passed by value, moved
19479    pub fn set_width(&mut self, v: u32) {
19480        self.width = ::std::option::Option::Some(v);
19481    }
19482
19483    // optional uint32 height = 2;
19484
19485    pub fn height(&self) -> u32 {
19486        self.height.unwrap_or(0)
19487    }
19488
19489    pub fn clear_height(&mut self) {
19490        self.height = ::std::option::Option::None;
19491    }
19492
19493    pub fn has_height(&self) -> bool {
19494        self.height.is_some()
19495    }
19496
19497    // Param is passed by value, moved
19498    pub fn set_height(&mut self, v: u32) {
19499        self.height = ::std::option::Option::Some(v);
19500    }
19501
19502    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19503        let mut fields = ::std::vec::Vec::with_capacity(3);
19504        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19505        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19506            "width",
19507            |m: &ScreenCapture| { &m.width },
19508            |m: &mut ScreenCapture| { &mut m.width },
19509        ));
19510        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19511            "height",
19512            |m: &ScreenCapture| { &m.height },
19513            |m: &mut ScreenCapture| { &mut m.height },
19514        ));
19515        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
19516            "tiles",
19517            |m: &ScreenCapture| { &m.tiles },
19518            |m: &mut ScreenCapture| { &mut m.tiles },
19519        ));
19520        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ScreenCapture>(
19521            "ScreenCapture",
19522            fields,
19523            oneofs,
19524        )
19525    }
19526}
19527
19528impl ::protobuf::Message for ScreenCapture {
19529    const NAME: &'static str = "ScreenCapture";
19530
19531    fn is_initialized(&self) -> bool {
19532        true
19533    }
19534
19535    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19536        while let Some(tag) = is.read_raw_tag_or_eof()? {
19537            match tag {
19538                8 => {
19539                    self.width = ::std::option::Option::Some(is.read_uint32()?);
19540                },
19541                16 => {
19542                    self.height = ::std::option::Option::Some(is.read_uint32()?);
19543                },
19544                26 => {
19545                    self.tiles.push(is.read_message()?);
19546                },
19547                tag => {
19548                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19549                },
19550            };
19551        }
19552        ::std::result::Result::Ok(())
19553    }
19554
19555    // Compute sizes of nested messages
19556    #[allow(unused_variables)]
19557    fn compute_size(&self) -> u64 {
19558        let mut my_size = 0;
19559        if let Some(v) = self.width {
19560            my_size += ::protobuf::rt::uint32_size(1, v);
19561        }
19562        if let Some(v) = self.height {
19563            my_size += ::protobuf::rt::uint32_size(2, v);
19564        }
19565        for value in &self.tiles {
19566            let len = value.compute_size();
19567            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
19568        };
19569        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19570        self.special_fields.cached_size().set(my_size as u32);
19571        my_size
19572    }
19573
19574    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19575        if let Some(v) = self.width {
19576            os.write_uint32(1, v)?;
19577        }
19578        if let Some(v) = self.height {
19579            os.write_uint32(2, v)?;
19580        }
19581        for v in &self.tiles {
19582            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
19583        };
19584        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19585        ::std::result::Result::Ok(())
19586    }
19587
19588    fn special_fields(&self) -> &::protobuf::SpecialFields {
19589        &self.special_fields
19590    }
19591
19592    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19593        &mut self.special_fields
19594    }
19595
19596    fn new() -> ScreenCapture {
19597        ScreenCapture::new()
19598    }
19599
19600    fn clear(&mut self) {
19601        self.width = ::std::option::Option::None;
19602        self.height = ::std::option::Option::None;
19603        self.tiles.clear();
19604        self.special_fields.clear();
19605    }
19606
19607    fn default_instance() -> &'static ScreenCapture {
19608        static instance: ScreenCapture = ScreenCapture {
19609            width: ::std::option::Option::None,
19610            height: ::std::option::Option::None,
19611            tiles: ::std::vec::Vec::new(),
19612            special_fields: ::protobuf::SpecialFields::new(),
19613        };
19614        &instance
19615    }
19616}
19617
19618impl ::protobuf::MessageFull for ScreenCapture {
19619    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19620        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19621        descriptor.get(|| file_descriptor().message_by_package_relative_name("ScreenCapture").unwrap()).clone()
19622    }
19623}
19624
19625impl ::std::fmt::Display for ScreenCapture {
19626    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19627        ::protobuf::text_format::fmt(self, f)
19628    }
19629}
19630
19631impl ::protobuf::reflect::ProtobufValue for ScreenCapture {
19632    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19633}
19634
19635// @@protoc_insertion_point(message:RemoteFortressReader.KeyboardEvent)
19636#[derive(PartialEq,Clone,Default,Debug)]
19637pub struct KeyboardEvent {
19638    // message fields
19639    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.type)
19640    pub type_: ::std::option::Option<u32>,
19641    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.which)
19642    pub which: ::std::option::Option<u32>,
19643    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.state)
19644    pub state: ::std::option::Option<u32>,
19645    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.scancode)
19646    pub scancode: ::std::option::Option<u32>,
19647    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.sym)
19648    pub sym: ::std::option::Option<u32>,
19649    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.mod)
19650    pub mod_: ::std::option::Option<u32>,
19651    // @@protoc_insertion_point(field:RemoteFortressReader.KeyboardEvent.unicode)
19652    pub unicode: ::std::option::Option<u32>,
19653    // special fields
19654    // @@protoc_insertion_point(special_field:RemoteFortressReader.KeyboardEvent.special_fields)
19655    pub special_fields: ::protobuf::SpecialFields,
19656}
19657
19658impl<'a> ::std::default::Default for &'a KeyboardEvent {
19659    fn default() -> &'a KeyboardEvent {
19660        <KeyboardEvent as ::protobuf::Message>::default_instance()
19661    }
19662}
19663
19664impl KeyboardEvent {
19665    pub fn new() -> KeyboardEvent {
19666        ::std::default::Default::default()
19667    }
19668
19669    // optional uint32 type = 1;
19670
19671    pub fn type_(&self) -> u32 {
19672        self.type_.unwrap_or(0)
19673    }
19674
19675    pub fn clear_type_(&mut self) {
19676        self.type_ = ::std::option::Option::None;
19677    }
19678
19679    pub fn has_type(&self) -> bool {
19680        self.type_.is_some()
19681    }
19682
19683    // Param is passed by value, moved
19684    pub fn set_type(&mut self, v: u32) {
19685        self.type_ = ::std::option::Option::Some(v);
19686    }
19687
19688    // optional uint32 which = 2;
19689
19690    pub fn which(&self) -> u32 {
19691        self.which.unwrap_or(0)
19692    }
19693
19694    pub fn clear_which(&mut self) {
19695        self.which = ::std::option::Option::None;
19696    }
19697
19698    pub fn has_which(&self) -> bool {
19699        self.which.is_some()
19700    }
19701
19702    // Param is passed by value, moved
19703    pub fn set_which(&mut self, v: u32) {
19704        self.which = ::std::option::Option::Some(v);
19705    }
19706
19707    // optional uint32 state = 3;
19708
19709    pub fn state(&self) -> u32 {
19710        self.state.unwrap_or(0)
19711    }
19712
19713    pub fn clear_state(&mut self) {
19714        self.state = ::std::option::Option::None;
19715    }
19716
19717    pub fn has_state(&self) -> bool {
19718        self.state.is_some()
19719    }
19720
19721    // Param is passed by value, moved
19722    pub fn set_state(&mut self, v: u32) {
19723        self.state = ::std::option::Option::Some(v);
19724    }
19725
19726    // optional uint32 scancode = 4;
19727
19728    pub fn scancode(&self) -> u32 {
19729        self.scancode.unwrap_or(0)
19730    }
19731
19732    pub fn clear_scancode(&mut self) {
19733        self.scancode = ::std::option::Option::None;
19734    }
19735
19736    pub fn has_scancode(&self) -> bool {
19737        self.scancode.is_some()
19738    }
19739
19740    // Param is passed by value, moved
19741    pub fn set_scancode(&mut self, v: u32) {
19742        self.scancode = ::std::option::Option::Some(v);
19743    }
19744
19745    // optional uint32 sym = 5;
19746
19747    pub fn sym(&self) -> u32 {
19748        self.sym.unwrap_or(0)
19749    }
19750
19751    pub fn clear_sym(&mut self) {
19752        self.sym = ::std::option::Option::None;
19753    }
19754
19755    pub fn has_sym(&self) -> bool {
19756        self.sym.is_some()
19757    }
19758
19759    // Param is passed by value, moved
19760    pub fn set_sym(&mut self, v: u32) {
19761        self.sym = ::std::option::Option::Some(v);
19762    }
19763
19764    // optional uint32 mod = 6;
19765
19766    pub fn mod_(&self) -> u32 {
19767        self.mod_.unwrap_or(0)
19768    }
19769
19770    pub fn clear_mod_(&mut self) {
19771        self.mod_ = ::std::option::Option::None;
19772    }
19773
19774    pub fn has_mod(&self) -> bool {
19775        self.mod_.is_some()
19776    }
19777
19778    // Param is passed by value, moved
19779    pub fn set_mod(&mut self, v: u32) {
19780        self.mod_ = ::std::option::Option::Some(v);
19781    }
19782
19783    // optional uint32 unicode = 7;
19784
19785    pub fn unicode(&self) -> u32 {
19786        self.unicode.unwrap_or(0)
19787    }
19788
19789    pub fn clear_unicode(&mut self) {
19790        self.unicode = ::std::option::Option::None;
19791    }
19792
19793    pub fn has_unicode(&self) -> bool {
19794        self.unicode.is_some()
19795    }
19796
19797    // Param is passed by value, moved
19798    pub fn set_unicode(&mut self, v: u32) {
19799        self.unicode = ::std::option::Option::Some(v);
19800    }
19801
19802    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
19803        let mut fields = ::std::vec::Vec::with_capacity(7);
19804        let mut oneofs = ::std::vec::Vec::with_capacity(0);
19805        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19806            "type",
19807            |m: &KeyboardEvent| { &m.type_ },
19808            |m: &mut KeyboardEvent| { &mut m.type_ },
19809        ));
19810        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19811            "which",
19812            |m: &KeyboardEvent| { &m.which },
19813            |m: &mut KeyboardEvent| { &mut m.which },
19814        ));
19815        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19816            "state",
19817            |m: &KeyboardEvent| { &m.state },
19818            |m: &mut KeyboardEvent| { &mut m.state },
19819        ));
19820        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19821            "scancode",
19822            |m: &KeyboardEvent| { &m.scancode },
19823            |m: &mut KeyboardEvent| { &mut m.scancode },
19824        ));
19825        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19826            "sym",
19827            |m: &KeyboardEvent| { &m.sym },
19828            |m: &mut KeyboardEvent| { &mut m.sym },
19829        ));
19830        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19831            "mod",
19832            |m: &KeyboardEvent| { &m.mod_ },
19833            |m: &mut KeyboardEvent| { &mut m.mod_ },
19834        ));
19835        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
19836            "unicode",
19837            |m: &KeyboardEvent| { &m.unicode },
19838            |m: &mut KeyboardEvent| { &mut m.unicode },
19839        ));
19840        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<KeyboardEvent>(
19841            "KeyboardEvent",
19842            fields,
19843            oneofs,
19844        )
19845    }
19846}
19847
19848impl ::protobuf::Message for KeyboardEvent {
19849    const NAME: &'static str = "KeyboardEvent";
19850
19851    fn is_initialized(&self) -> bool {
19852        true
19853    }
19854
19855    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
19856        while let Some(tag) = is.read_raw_tag_or_eof()? {
19857            match tag {
19858                8 => {
19859                    self.type_ = ::std::option::Option::Some(is.read_uint32()?);
19860                },
19861                16 => {
19862                    self.which = ::std::option::Option::Some(is.read_uint32()?);
19863                },
19864                24 => {
19865                    self.state = ::std::option::Option::Some(is.read_uint32()?);
19866                },
19867                32 => {
19868                    self.scancode = ::std::option::Option::Some(is.read_uint32()?);
19869                },
19870                40 => {
19871                    self.sym = ::std::option::Option::Some(is.read_uint32()?);
19872                },
19873                48 => {
19874                    self.mod_ = ::std::option::Option::Some(is.read_uint32()?);
19875                },
19876                56 => {
19877                    self.unicode = ::std::option::Option::Some(is.read_uint32()?);
19878                },
19879                tag => {
19880                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
19881                },
19882            };
19883        }
19884        ::std::result::Result::Ok(())
19885    }
19886
19887    // Compute sizes of nested messages
19888    #[allow(unused_variables)]
19889    fn compute_size(&self) -> u64 {
19890        let mut my_size = 0;
19891        if let Some(v) = self.type_ {
19892            my_size += ::protobuf::rt::uint32_size(1, v);
19893        }
19894        if let Some(v) = self.which {
19895            my_size += ::protobuf::rt::uint32_size(2, v);
19896        }
19897        if let Some(v) = self.state {
19898            my_size += ::protobuf::rt::uint32_size(3, v);
19899        }
19900        if let Some(v) = self.scancode {
19901            my_size += ::protobuf::rt::uint32_size(4, v);
19902        }
19903        if let Some(v) = self.sym {
19904            my_size += ::protobuf::rt::uint32_size(5, v);
19905        }
19906        if let Some(v) = self.mod_ {
19907            my_size += ::protobuf::rt::uint32_size(6, v);
19908        }
19909        if let Some(v) = self.unicode {
19910            my_size += ::protobuf::rt::uint32_size(7, v);
19911        }
19912        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
19913        self.special_fields.cached_size().set(my_size as u32);
19914        my_size
19915    }
19916
19917    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
19918        if let Some(v) = self.type_ {
19919            os.write_uint32(1, v)?;
19920        }
19921        if let Some(v) = self.which {
19922            os.write_uint32(2, v)?;
19923        }
19924        if let Some(v) = self.state {
19925            os.write_uint32(3, v)?;
19926        }
19927        if let Some(v) = self.scancode {
19928            os.write_uint32(4, v)?;
19929        }
19930        if let Some(v) = self.sym {
19931            os.write_uint32(5, v)?;
19932        }
19933        if let Some(v) = self.mod_ {
19934            os.write_uint32(6, v)?;
19935        }
19936        if let Some(v) = self.unicode {
19937            os.write_uint32(7, v)?;
19938        }
19939        os.write_unknown_fields(self.special_fields.unknown_fields())?;
19940        ::std::result::Result::Ok(())
19941    }
19942
19943    fn special_fields(&self) -> &::protobuf::SpecialFields {
19944        &self.special_fields
19945    }
19946
19947    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
19948        &mut self.special_fields
19949    }
19950
19951    fn new() -> KeyboardEvent {
19952        KeyboardEvent::new()
19953    }
19954
19955    fn clear(&mut self) {
19956        self.type_ = ::std::option::Option::None;
19957        self.which = ::std::option::Option::None;
19958        self.state = ::std::option::Option::None;
19959        self.scancode = ::std::option::Option::None;
19960        self.sym = ::std::option::Option::None;
19961        self.mod_ = ::std::option::Option::None;
19962        self.unicode = ::std::option::Option::None;
19963        self.special_fields.clear();
19964    }
19965
19966    fn default_instance() -> &'static KeyboardEvent {
19967        static instance: KeyboardEvent = KeyboardEvent {
19968            type_: ::std::option::Option::None,
19969            which: ::std::option::Option::None,
19970            state: ::std::option::Option::None,
19971            scancode: ::std::option::Option::None,
19972            sym: ::std::option::Option::None,
19973            mod_: ::std::option::Option::None,
19974            unicode: ::std::option::Option::None,
19975            special_fields: ::protobuf::SpecialFields::new(),
19976        };
19977        &instance
19978    }
19979}
19980
19981impl ::protobuf::MessageFull for KeyboardEvent {
19982    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
19983        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
19984        descriptor.get(|| file_descriptor().message_by_package_relative_name("KeyboardEvent").unwrap()).clone()
19985    }
19986}
19987
19988impl ::std::fmt::Display for KeyboardEvent {
19989    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
19990        ::protobuf::text_format::fmt(self, f)
19991    }
19992}
19993
19994impl ::protobuf::reflect::ProtobufValue for KeyboardEvent {
19995    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
19996}
19997
19998// @@protoc_insertion_point(message:RemoteFortressReader.DigCommand)
19999#[derive(PartialEq,Clone,Default,Debug)]
20000pub struct DigCommand {
20001    // message fields
20002    // @@protoc_insertion_point(field:RemoteFortressReader.DigCommand.designation)
20003    pub designation: ::std::option::Option<::protobuf::EnumOrUnknown<TileDigDesignation>>,
20004    // @@protoc_insertion_point(field:RemoteFortressReader.DigCommand.locations)
20005    pub locations: ::std::vec::Vec<Coord>,
20006    // special fields
20007    // @@protoc_insertion_point(special_field:RemoteFortressReader.DigCommand.special_fields)
20008    pub special_fields: ::protobuf::SpecialFields,
20009}
20010
20011impl<'a> ::std::default::Default for &'a DigCommand {
20012    fn default() -> &'a DigCommand {
20013        <DigCommand as ::protobuf::Message>::default_instance()
20014    }
20015}
20016
20017impl DigCommand {
20018    pub fn new() -> DigCommand {
20019        ::std::default::Default::default()
20020    }
20021
20022    // optional .RemoteFortressReader.TileDigDesignation designation = 1;
20023
20024    pub fn designation(&self) -> TileDigDesignation {
20025        match self.designation {
20026            Some(e) => e.enum_value_or(TileDigDesignation::NO_DIG),
20027            None => TileDigDesignation::NO_DIG,
20028        }
20029    }
20030
20031    pub fn clear_designation(&mut self) {
20032        self.designation = ::std::option::Option::None;
20033    }
20034
20035    pub fn has_designation(&self) -> bool {
20036        self.designation.is_some()
20037    }
20038
20039    // Param is passed by value, moved
20040    pub fn set_designation(&mut self, v: TileDigDesignation) {
20041        self.designation = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
20042    }
20043
20044    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20045        let mut fields = ::std::vec::Vec::with_capacity(2);
20046        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20047        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20048            "designation",
20049            |m: &DigCommand| { &m.designation },
20050            |m: &mut DigCommand| { &mut m.designation },
20051        ));
20052        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
20053            "locations",
20054            |m: &DigCommand| { &m.locations },
20055            |m: &mut DigCommand| { &mut m.locations },
20056        ));
20057        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DigCommand>(
20058            "DigCommand",
20059            fields,
20060            oneofs,
20061        )
20062    }
20063}
20064
20065impl ::protobuf::Message for DigCommand {
20066    const NAME: &'static str = "DigCommand";
20067
20068    fn is_initialized(&self) -> bool {
20069        true
20070    }
20071
20072    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20073        while let Some(tag) = is.read_raw_tag_or_eof()? {
20074            match tag {
20075                8 => {
20076                    self.designation = ::std::option::Option::Some(is.read_enum_or_unknown()?);
20077                },
20078                18 => {
20079                    self.locations.push(is.read_message()?);
20080                },
20081                tag => {
20082                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20083                },
20084            };
20085        }
20086        ::std::result::Result::Ok(())
20087    }
20088
20089    // Compute sizes of nested messages
20090    #[allow(unused_variables)]
20091    fn compute_size(&self) -> u64 {
20092        let mut my_size = 0;
20093        if let Some(v) = self.designation {
20094            my_size += ::protobuf::rt::int32_size(1, v.value());
20095        }
20096        for value in &self.locations {
20097            let len = value.compute_size();
20098            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
20099        };
20100        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20101        self.special_fields.cached_size().set(my_size as u32);
20102        my_size
20103    }
20104
20105    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20106        if let Some(v) = self.designation {
20107            os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
20108        }
20109        for v in &self.locations {
20110            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
20111        };
20112        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20113        ::std::result::Result::Ok(())
20114    }
20115
20116    fn special_fields(&self) -> &::protobuf::SpecialFields {
20117        &self.special_fields
20118    }
20119
20120    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20121        &mut self.special_fields
20122    }
20123
20124    fn new() -> DigCommand {
20125        DigCommand::new()
20126    }
20127
20128    fn clear(&mut self) {
20129        self.designation = ::std::option::Option::None;
20130        self.locations.clear();
20131        self.special_fields.clear();
20132    }
20133
20134    fn default_instance() -> &'static DigCommand {
20135        static instance: DigCommand = DigCommand {
20136            designation: ::std::option::Option::None,
20137            locations: ::std::vec::Vec::new(),
20138            special_fields: ::protobuf::SpecialFields::new(),
20139        };
20140        &instance
20141    }
20142}
20143
20144impl ::protobuf::MessageFull for DigCommand {
20145    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20146        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20147        descriptor.get(|| file_descriptor().message_by_package_relative_name("DigCommand").unwrap()).clone()
20148    }
20149}
20150
20151impl ::std::fmt::Display for DigCommand {
20152    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20153        ::protobuf::text_format::fmt(self, f)
20154    }
20155}
20156
20157impl ::protobuf::reflect::ProtobufValue for DigCommand {
20158    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20159}
20160
20161// @@protoc_insertion_point(message:RemoteFortressReader.SingleBool)
20162#[derive(PartialEq,Clone,Default,Debug)]
20163pub struct SingleBool {
20164    // message fields
20165    // @@protoc_insertion_point(field:RemoteFortressReader.SingleBool.Value)
20166    pub Value: ::std::option::Option<bool>,
20167    // special fields
20168    // @@protoc_insertion_point(special_field:RemoteFortressReader.SingleBool.special_fields)
20169    pub special_fields: ::protobuf::SpecialFields,
20170}
20171
20172impl<'a> ::std::default::Default for &'a SingleBool {
20173    fn default() -> &'a SingleBool {
20174        <SingleBool as ::protobuf::Message>::default_instance()
20175    }
20176}
20177
20178impl SingleBool {
20179    pub fn new() -> SingleBool {
20180        ::std::default::Default::default()
20181    }
20182
20183    // optional bool Value = 1;
20184
20185    pub fn Value(&self) -> bool {
20186        self.Value.unwrap_or(false)
20187    }
20188
20189    pub fn clear_Value(&mut self) {
20190        self.Value = ::std::option::Option::None;
20191    }
20192
20193    pub fn has_Value(&self) -> bool {
20194        self.Value.is_some()
20195    }
20196
20197    // Param is passed by value, moved
20198    pub fn set_Value(&mut self, v: bool) {
20199        self.Value = ::std::option::Option::Some(v);
20200    }
20201
20202    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20203        let mut fields = ::std::vec::Vec::with_capacity(1);
20204        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20205        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20206            "Value",
20207            |m: &SingleBool| { &m.Value },
20208            |m: &mut SingleBool| { &mut m.Value },
20209        ));
20210        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SingleBool>(
20211            "SingleBool",
20212            fields,
20213            oneofs,
20214        )
20215    }
20216}
20217
20218impl ::protobuf::Message for SingleBool {
20219    const NAME: &'static str = "SingleBool";
20220
20221    fn is_initialized(&self) -> bool {
20222        true
20223    }
20224
20225    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20226        while let Some(tag) = is.read_raw_tag_or_eof()? {
20227            match tag {
20228                8 => {
20229                    self.Value = ::std::option::Option::Some(is.read_bool()?);
20230                },
20231                tag => {
20232                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20233                },
20234            };
20235        }
20236        ::std::result::Result::Ok(())
20237    }
20238
20239    // Compute sizes of nested messages
20240    #[allow(unused_variables)]
20241    fn compute_size(&self) -> u64 {
20242        let mut my_size = 0;
20243        if let Some(v) = self.Value {
20244            my_size += 1 + 1;
20245        }
20246        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20247        self.special_fields.cached_size().set(my_size as u32);
20248        my_size
20249    }
20250
20251    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20252        if let Some(v) = self.Value {
20253            os.write_bool(1, v)?;
20254        }
20255        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20256        ::std::result::Result::Ok(())
20257    }
20258
20259    fn special_fields(&self) -> &::protobuf::SpecialFields {
20260        &self.special_fields
20261    }
20262
20263    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20264        &mut self.special_fields
20265    }
20266
20267    fn new() -> SingleBool {
20268        SingleBool::new()
20269    }
20270
20271    fn clear(&mut self) {
20272        self.Value = ::std::option::Option::None;
20273        self.special_fields.clear();
20274    }
20275
20276    fn default_instance() -> &'static SingleBool {
20277        static instance: SingleBool = SingleBool {
20278            Value: ::std::option::Option::None,
20279            special_fields: ::protobuf::SpecialFields::new(),
20280        };
20281        &instance
20282    }
20283}
20284
20285impl ::protobuf::MessageFull for SingleBool {
20286    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20287        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20288        descriptor.get(|| file_descriptor().message_by_package_relative_name("SingleBool").unwrap()).clone()
20289    }
20290}
20291
20292impl ::std::fmt::Display for SingleBool {
20293    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20294        ::protobuf::text_format::fmt(self, f)
20295    }
20296}
20297
20298impl ::protobuf::reflect::ProtobufValue for SingleBool {
20299    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20300}
20301
20302// @@protoc_insertion_point(message:RemoteFortressReader.VersionInfo)
20303#[derive(PartialEq,Clone,Default,Debug)]
20304pub struct VersionInfo {
20305    // message fields
20306    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.dwarf_fortress_version)
20307    pub dwarf_fortress_version: ::std::option::Option<::std::string::String>,
20308    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.dfhack_version)
20309    pub dfhack_version: ::std::option::Option<::std::string::String>,
20310    // @@protoc_insertion_point(field:RemoteFortressReader.VersionInfo.remote_fortress_reader_version)
20311    pub remote_fortress_reader_version: ::std::option::Option<::std::string::String>,
20312    // special fields
20313    // @@protoc_insertion_point(special_field:RemoteFortressReader.VersionInfo.special_fields)
20314    pub special_fields: ::protobuf::SpecialFields,
20315}
20316
20317impl<'a> ::std::default::Default for &'a VersionInfo {
20318    fn default() -> &'a VersionInfo {
20319        <VersionInfo as ::protobuf::Message>::default_instance()
20320    }
20321}
20322
20323impl VersionInfo {
20324    pub fn new() -> VersionInfo {
20325        ::std::default::Default::default()
20326    }
20327
20328    // optional string dwarf_fortress_version = 1;
20329
20330    pub fn dwarf_fortress_version(&self) -> &str {
20331        match self.dwarf_fortress_version.as_ref() {
20332            Some(v) => v,
20333            None => "",
20334        }
20335    }
20336
20337    pub fn clear_dwarf_fortress_version(&mut self) {
20338        self.dwarf_fortress_version = ::std::option::Option::None;
20339    }
20340
20341    pub fn has_dwarf_fortress_version(&self) -> bool {
20342        self.dwarf_fortress_version.is_some()
20343    }
20344
20345    // Param is passed by value, moved
20346    pub fn set_dwarf_fortress_version(&mut self, v: ::std::string::String) {
20347        self.dwarf_fortress_version = ::std::option::Option::Some(v);
20348    }
20349
20350    // Mutable pointer to the field.
20351    // If field is not initialized, it is initialized with default value first.
20352    pub fn mut_dwarf_fortress_version(&mut self) -> &mut ::std::string::String {
20353        if self.dwarf_fortress_version.is_none() {
20354            self.dwarf_fortress_version = ::std::option::Option::Some(::std::string::String::new());
20355        }
20356        self.dwarf_fortress_version.as_mut().unwrap()
20357    }
20358
20359    // Take field
20360    pub fn take_dwarf_fortress_version(&mut self) -> ::std::string::String {
20361        self.dwarf_fortress_version.take().unwrap_or_else(|| ::std::string::String::new())
20362    }
20363
20364    // optional string dfhack_version = 2;
20365
20366    pub fn dfhack_version(&self) -> &str {
20367        match self.dfhack_version.as_ref() {
20368            Some(v) => v,
20369            None => "",
20370        }
20371    }
20372
20373    pub fn clear_dfhack_version(&mut self) {
20374        self.dfhack_version = ::std::option::Option::None;
20375    }
20376
20377    pub fn has_dfhack_version(&self) -> bool {
20378        self.dfhack_version.is_some()
20379    }
20380
20381    // Param is passed by value, moved
20382    pub fn set_dfhack_version(&mut self, v: ::std::string::String) {
20383        self.dfhack_version = ::std::option::Option::Some(v);
20384    }
20385
20386    // Mutable pointer to the field.
20387    // If field is not initialized, it is initialized with default value first.
20388    pub fn mut_dfhack_version(&mut self) -> &mut ::std::string::String {
20389        if self.dfhack_version.is_none() {
20390            self.dfhack_version = ::std::option::Option::Some(::std::string::String::new());
20391        }
20392        self.dfhack_version.as_mut().unwrap()
20393    }
20394
20395    // Take field
20396    pub fn take_dfhack_version(&mut self) -> ::std::string::String {
20397        self.dfhack_version.take().unwrap_or_else(|| ::std::string::String::new())
20398    }
20399
20400    // optional string remote_fortress_reader_version = 3;
20401
20402    pub fn remote_fortress_reader_version(&self) -> &str {
20403        match self.remote_fortress_reader_version.as_ref() {
20404            Some(v) => v,
20405            None => "",
20406        }
20407    }
20408
20409    pub fn clear_remote_fortress_reader_version(&mut self) {
20410        self.remote_fortress_reader_version = ::std::option::Option::None;
20411    }
20412
20413    pub fn has_remote_fortress_reader_version(&self) -> bool {
20414        self.remote_fortress_reader_version.is_some()
20415    }
20416
20417    // Param is passed by value, moved
20418    pub fn set_remote_fortress_reader_version(&mut self, v: ::std::string::String) {
20419        self.remote_fortress_reader_version = ::std::option::Option::Some(v);
20420    }
20421
20422    // Mutable pointer to the field.
20423    // If field is not initialized, it is initialized with default value first.
20424    pub fn mut_remote_fortress_reader_version(&mut self) -> &mut ::std::string::String {
20425        if self.remote_fortress_reader_version.is_none() {
20426            self.remote_fortress_reader_version = ::std::option::Option::Some(::std::string::String::new());
20427        }
20428        self.remote_fortress_reader_version.as_mut().unwrap()
20429    }
20430
20431    // Take field
20432    pub fn take_remote_fortress_reader_version(&mut self) -> ::std::string::String {
20433        self.remote_fortress_reader_version.take().unwrap_or_else(|| ::std::string::String::new())
20434    }
20435
20436    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20437        let mut fields = ::std::vec::Vec::with_capacity(3);
20438        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20439        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20440            "dwarf_fortress_version",
20441            |m: &VersionInfo| { &m.dwarf_fortress_version },
20442            |m: &mut VersionInfo| { &mut m.dwarf_fortress_version },
20443        ));
20444        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20445            "dfhack_version",
20446            |m: &VersionInfo| { &m.dfhack_version },
20447            |m: &mut VersionInfo| { &mut m.dfhack_version },
20448        ));
20449        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20450            "remote_fortress_reader_version",
20451            |m: &VersionInfo| { &m.remote_fortress_reader_version },
20452            |m: &mut VersionInfo| { &mut m.remote_fortress_reader_version },
20453        ));
20454        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<VersionInfo>(
20455            "VersionInfo",
20456            fields,
20457            oneofs,
20458        )
20459    }
20460}
20461
20462impl ::protobuf::Message for VersionInfo {
20463    const NAME: &'static str = "VersionInfo";
20464
20465    fn is_initialized(&self) -> bool {
20466        true
20467    }
20468
20469    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20470        while let Some(tag) = is.read_raw_tag_or_eof()? {
20471            match tag {
20472                10 => {
20473                    self.dwarf_fortress_version = ::std::option::Option::Some(is.read_string()?);
20474                },
20475                18 => {
20476                    self.dfhack_version = ::std::option::Option::Some(is.read_string()?);
20477                },
20478                26 => {
20479                    self.remote_fortress_reader_version = ::std::option::Option::Some(is.read_string()?);
20480                },
20481                tag => {
20482                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20483                },
20484            };
20485        }
20486        ::std::result::Result::Ok(())
20487    }
20488
20489    // Compute sizes of nested messages
20490    #[allow(unused_variables)]
20491    fn compute_size(&self) -> u64 {
20492        let mut my_size = 0;
20493        if let Some(v) = self.dwarf_fortress_version.as_ref() {
20494            my_size += ::protobuf::rt::string_size(1, &v);
20495        }
20496        if let Some(v) = self.dfhack_version.as_ref() {
20497            my_size += ::protobuf::rt::string_size(2, &v);
20498        }
20499        if let Some(v) = self.remote_fortress_reader_version.as_ref() {
20500            my_size += ::protobuf::rt::string_size(3, &v);
20501        }
20502        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20503        self.special_fields.cached_size().set(my_size as u32);
20504        my_size
20505    }
20506
20507    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20508        if let Some(v) = self.dwarf_fortress_version.as_ref() {
20509            os.write_string(1, v)?;
20510        }
20511        if let Some(v) = self.dfhack_version.as_ref() {
20512            os.write_string(2, v)?;
20513        }
20514        if let Some(v) = self.remote_fortress_reader_version.as_ref() {
20515            os.write_string(3, v)?;
20516        }
20517        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20518        ::std::result::Result::Ok(())
20519    }
20520
20521    fn special_fields(&self) -> &::protobuf::SpecialFields {
20522        &self.special_fields
20523    }
20524
20525    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20526        &mut self.special_fields
20527    }
20528
20529    fn new() -> VersionInfo {
20530        VersionInfo::new()
20531    }
20532
20533    fn clear(&mut self) {
20534        self.dwarf_fortress_version = ::std::option::Option::None;
20535        self.dfhack_version = ::std::option::Option::None;
20536        self.remote_fortress_reader_version = ::std::option::Option::None;
20537        self.special_fields.clear();
20538    }
20539
20540    fn default_instance() -> &'static VersionInfo {
20541        static instance: VersionInfo = VersionInfo {
20542            dwarf_fortress_version: ::std::option::Option::None,
20543            dfhack_version: ::std::option::Option::None,
20544            remote_fortress_reader_version: ::std::option::Option::None,
20545            special_fields: ::protobuf::SpecialFields::new(),
20546        };
20547        &instance
20548    }
20549}
20550
20551impl ::protobuf::MessageFull for VersionInfo {
20552    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20553        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20554        descriptor.get(|| file_descriptor().message_by_package_relative_name("VersionInfo").unwrap()).clone()
20555    }
20556}
20557
20558impl ::std::fmt::Display for VersionInfo {
20559    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20560        ::protobuf::text_format::fmt(self, f)
20561    }
20562}
20563
20564impl ::protobuf::reflect::ProtobufValue for VersionInfo {
20565    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20566}
20567
20568// @@protoc_insertion_point(message:RemoteFortressReader.ListRequest)
20569#[derive(PartialEq,Clone,Default,Debug)]
20570pub struct ListRequest {
20571    // message fields
20572    // @@protoc_insertion_point(field:RemoteFortressReader.ListRequest.list_start)
20573    pub list_start: ::std::option::Option<i32>,
20574    // @@protoc_insertion_point(field:RemoteFortressReader.ListRequest.list_end)
20575    pub list_end: ::std::option::Option<i32>,
20576    // special fields
20577    // @@protoc_insertion_point(special_field:RemoteFortressReader.ListRequest.special_fields)
20578    pub special_fields: ::protobuf::SpecialFields,
20579}
20580
20581impl<'a> ::std::default::Default for &'a ListRequest {
20582    fn default() -> &'a ListRequest {
20583        <ListRequest as ::protobuf::Message>::default_instance()
20584    }
20585}
20586
20587impl ListRequest {
20588    pub fn new() -> ListRequest {
20589        ::std::default::Default::default()
20590    }
20591
20592    // optional int32 list_start = 1;
20593
20594    pub fn list_start(&self) -> i32 {
20595        self.list_start.unwrap_or(0)
20596    }
20597
20598    pub fn clear_list_start(&mut self) {
20599        self.list_start = ::std::option::Option::None;
20600    }
20601
20602    pub fn has_list_start(&self) -> bool {
20603        self.list_start.is_some()
20604    }
20605
20606    // Param is passed by value, moved
20607    pub fn set_list_start(&mut self, v: i32) {
20608        self.list_start = ::std::option::Option::Some(v);
20609    }
20610
20611    // optional int32 list_end = 2;
20612
20613    pub fn list_end(&self) -> i32 {
20614        self.list_end.unwrap_or(0)
20615    }
20616
20617    pub fn clear_list_end(&mut self) {
20618        self.list_end = ::std::option::Option::None;
20619    }
20620
20621    pub fn has_list_end(&self) -> bool {
20622        self.list_end.is_some()
20623    }
20624
20625    // Param is passed by value, moved
20626    pub fn set_list_end(&mut self, v: i32) {
20627        self.list_end = ::std::option::Option::Some(v);
20628    }
20629
20630    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20631        let mut fields = ::std::vec::Vec::with_capacity(2);
20632        let mut oneofs = ::std::vec::Vec::with_capacity(0);
20633        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20634            "list_start",
20635            |m: &ListRequest| { &m.list_start },
20636            |m: &mut ListRequest| { &mut m.list_start },
20637        ));
20638        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
20639            "list_end",
20640            |m: &ListRequest| { &m.list_end },
20641            |m: &mut ListRequest| { &mut m.list_end },
20642        ));
20643        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ListRequest>(
20644            "ListRequest",
20645            fields,
20646            oneofs,
20647        )
20648    }
20649}
20650
20651impl ::protobuf::Message for ListRequest {
20652    const NAME: &'static str = "ListRequest";
20653
20654    fn is_initialized(&self) -> bool {
20655        true
20656    }
20657
20658    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
20659        while let Some(tag) = is.read_raw_tag_or_eof()? {
20660            match tag {
20661                8 => {
20662                    self.list_start = ::std::option::Option::Some(is.read_int32()?);
20663                },
20664                16 => {
20665                    self.list_end = ::std::option::Option::Some(is.read_int32()?);
20666                },
20667                tag => {
20668                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
20669                },
20670            };
20671        }
20672        ::std::result::Result::Ok(())
20673    }
20674
20675    // Compute sizes of nested messages
20676    #[allow(unused_variables)]
20677    fn compute_size(&self) -> u64 {
20678        let mut my_size = 0;
20679        if let Some(v) = self.list_start {
20680            my_size += ::protobuf::rt::int32_size(1, v);
20681        }
20682        if let Some(v) = self.list_end {
20683            my_size += ::protobuf::rt::int32_size(2, v);
20684        }
20685        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
20686        self.special_fields.cached_size().set(my_size as u32);
20687        my_size
20688    }
20689
20690    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
20691        if let Some(v) = self.list_start {
20692            os.write_int32(1, v)?;
20693        }
20694        if let Some(v) = self.list_end {
20695            os.write_int32(2, v)?;
20696        }
20697        os.write_unknown_fields(self.special_fields.unknown_fields())?;
20698        ::std::result::Result::Ok(())
20699    }
20700
20701    fn special_fields(&self) -> &::protobuf::SpecialFields {
20702        &self.special_fields
20703    }
20704
20705    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
20706        &mut self.special_fields
20707    }
20708
20709    fn new() -> ListRequest {
20710        ListRequest::new()
20711    }
20712
20713    fn clear(&mut self) {
20714        self.list_start = ::std::option::Option::None;
20715        self.list_end = ::std::option::Option::None;
20716        self.special_fields.clear();
20717    }
20718
20719    fn default_instance() -> &'static ListRequest {
20720        static instance: ListRequest = ListRequest {
20721            list_start: ::std::option::Option::None,
20722            list_end: ::std::option::Option::None,
20723            special_fields: ::protobuf::SpecialFields::new(),
20724        };
20725        &instance
20726    }
20727}
20728
20729impl ::protobuf::MessageFull for ListRequest {
20730    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
20731        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
20732        descriptor.get(|| file_descriptor().message_by_package_relative_name("ListRequest").unwrap()).clone()
20733    }
20734}
20735
20736impl ::std::fmt::Display for ListRequest {
20737    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
20738        ::protobuf::text_format::fmt(self, f)
20739    }
20740}
20741
20742impl ::protobuf::reflect::ProtobufValue for ListRequest {
20743    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
20744}
20745
20746// @@protoc_insertion_point(message:RemoteFortressReader.Report)
20747#[derive(PartialEq,Clone,Default,Debug)]
20748pub struct Report {
20749    // message fields
20750    // @@protoc_insertion_point(field:RemoteFortressReader.Report.type)
20751    pub type_: ::std::option::Option<i32>,
20752    // @@protoc_insertion_point(field:RemoteFortressReader.Report.text)
20753    pub text: ::std::option::Option<::std::string::String>,
20754    // @@protoc_insertion_point(field:RemoteFortressReader.Report.color)
20755    pub color: ::protobuf::MessageField<ColorDefinition>,
20756    // @@protoc_insertion_point(field:RemoteFortressReader.Report.duration)
20757    pub duration: ::std::option::Option<i32>,
20758    // @@protoc_insertion_point(field:RemoteFortressReader.Report.continuation)
20759    pub continuation: ::std::option::Option<bool>,
20760    // @@protoc_insertion_point(field:RemoteFortressReader.Report.unconscious)
20761    pub unconscious: ::std::option::Option<bool>,
20762    // @@protoc_insertion_point(field:RemoteFortressReader.Report.announcement)
20763    pub announcement: ::std::option::Option<bool>,
20764    // @@protoc_insertion_point(field:RemoteFortressReader.Report.repeat_count)
20765    pub repeat_count: ::std::option::Option<i32>,
20766    // @@protoc_insertion_point(field:RemoteFortressReader.Report.pos)
20767    pub pos: ::protobuf::MessageField<Coord>,
20768    // @@protoc_insertion_point(field:RemoteFortressReader.Report.id)
20769    pub id: ::std::option::Option<i32>,
20770    // @@protoc_insertion_point(field:RemoteFortressReader.Report.year)
20771    pub year: ::std::option::Option<i32>,
20772    // @@protoc_insertion_point(field:RemoteFortressReader.Report.time)
20773    pub time: ::std::option::Option<i32>,
20774    // special fields
20775    // @@protoc_insertion_point(special_field:RemoteFortressReader.Report.special_fields)
20776    pub special_fields: ::protobuf::SpecialFields,
20777}
20778
20779impl<'a> ::std::default::Default for &'a Report {
20780    fn default() -> &'a Report {
20781        <Report as ::protobuf::Message>::default_instance()
20782    }
20783}
20784
20785impl Report {
20786    pub fn new() -> Report {
20787        ::std::default::Default::default()
20788    }
20789
20790    // optional int32 type = 1;
20791
20792    pub fn type_(&self) -> i32 {
20793        self.type_.unwrap_or(0)
20794    }
20795
20796    pub fn clear_type_(&mut self) {
20797        self.type_ = ::std::option::Option::None;
20798    }
20799
20800    pub fn has_type(&self) -> bool {
20801        self.type_.is_some()
20802    }
20803
20804    // Param is passed by value, moved
20805    pub fn set_type(&mut self, v: i32) {
20806        self.type_ = ::std::option::Option::Some(v);
20807    }
20808
20809    // optional string text = 2;
20810
20811    pub fn text(&self) -> &str {
20812        match self.text.as_ref() {
20813            Some(v) => v,
20814            None => "",
20815        }
20816    }
20817
20818    pub fn clear_text(&mut self) {
20819        self.text = ::std::option::Option::None;
20820    }
20821
20822    pub fn has_text(&self) -> bool {
20823        self.text.is_some()
20824    }
20825
20826    // Param is passed by value, moved
20827    pub fn set_text(&mut self, v: ::std::string::String) {
20828        self.text = ::std::option::Option::Some(v);
20829    }
20830
20831    // Mutable pointer to the field.
20832    // If field is not initialized, it is initialized with default value first.
20833    pub fn mut_text(&mut self) -> &mut ::std::string::String {
20834        if self.text.is_none() {
20835            self.text = ::std::option::Option::Some(::std::string::String::new());
20836        }
20837        self.text.as_mut().unwrap()
20838    }
20839
20840    // Take field
20841    pub fn take_text(&mut self) -> ::std::string::String {
20842        self.text.take().unwrap_or_else(|| ::std::string::String::new())
20843    }
20844
20845    // optional int32 duration = 4;
20846
20847    pub fn duration(&self) -> i32 {
20848        self.duration.unwrap_or(0)
20849    }
20850
20851    pub fn clear_duration(&mut self) {
20852        self.duration = ::std::option::Option::None;
20853    }
20854
20855    pub fn has_duration(&self) -> bool {
20856        self.duration.is_some()
20857    }
20858
20859    // Param is passed by value, moved
20860    pub fn set_duration(&mut self, v: i32) {
20861        self.duration = ::std::option::Option::Some(v);
20862    }
20863
20864    // optional bool continuation = 5;
20865
20866    pub fn continuation(&self) -> bool {
20867        self.continuation.unwrap_or(false)
20868    }
20869
20870    pub fn clear_continuation(&mut self) {
20871        self.continuation = ::std::option::Option::None;
20872    }
20873
20874    pub fn has_continuation(&self) -> bool {
20875        self.continuation.is_some()
20876    }
20877
20878    // Param is passed by value, moved
20879    pub fn set_continuation(&mut self, v: bool) {
20880        self.continuation = ::std::option::Option::Some(v);
20881    }
20882
20883    // optional bool unconscious = 6;
20884
20885    pub fn unconscious(&self) -> bool {
20886        self.unconscious.unwrap_or(false)
20887    }
20888
20889    pub fn clear_unconscious(&mut self) {
20890        self.unconscious = ::std::option::Option::None;
20891    }
20892
20893    pub fn has_unconscious(&self) -> bool {
20894        self.unconscious.is_some()
20895    }
20896
20897    // Param is passed by value, moved
20898    pub fn set_unconscious(&mut self, v: bool) {
20899        self.unconscious = ::std::option::Option::Some(v);
20900    }
20901
20902    // optional bool announcement = 7;
20903
20904    pub fn announcement(&self) -> bool {
20905        self.announcement.unwrap_or(false)
20906    }
20907
20908    pub fn clear_announcement(&mut self) {
20909        self.announcement = ::std::option::Option::None;
20910    }
20911
20912    pub fn has_announcement(&self) -> bool {
20913        self.announcement.is_some()
20914    }
20915
20916    // Param is passed by value, moved
20917    pub fn set_announcement(&mut self, v: bool) {
20918        self.announcement = ::std::option::Option::Some(v);
20919    }
20920
20921    // optional int32 repeat_count = 8;
20922
20923    pub fn repeat_count(&self) -> i32 {
20924        self.repeat_count.unwrap_or(0)
20925    }
20926
20927    pub fn clear_repeat_count(&mut self) {
20928        self.repeat_count = ::std::option::Option::None;
20929    }
20930
20931    pub fn has_repeat_count(&self) -> bool {
20932        self.repeat_count.is_some()
20933    }
20934
20935    // Param is passed by value, moved
20936    pub fn set_repeat_count(&mut self, v: i32) {
20937        self.repeat_count = ::std::option::Option::Some(v);
20938    }
20939
20940    // optional int32 id = 10;
20941
20942    pub fn id(&self) -> i32 {
20943        self.id.unwrap_or(0)
20944    }
20945
20946    pub fn clear_id(&mut self) {
20947        self.id = ::std::option::Option::None;
20948    }
20949
20950    pub fn has_id(&self) -> bool {
20951        self.id.is_some()
20952    }
20953
20954    // Param is passed by value, moved
20955    pub fn set_id(&mut self, v: i32) {
20956        self.id = ::std::option::Option::Some(v);
20957    }
20958
20959    // optional int32 year = 11;
20960
20961    pub fn year(&self) -> i32 {
20962        self.year.unwrap_or(0)
20963    }
20964
20965    pub fn clear_year(&mut self) {
20966        self.year = ::std::option::Option::None;
20967    }
20968
20969    pub fn has_year(&self) -> bool {
20970        self.year.is_some()
20971    }
20972
20973    // Param is passed by value, moved
20974    pub fn set_year(&mut self, v: i32) {
20975        self.year = ::std::option::Option::Some(v);
20976    }
20977
20978    // optional int32 time = 12;
20979
20980    pub fn time(&self) -> i32 {
20981        self.time.unwrap_or(0)
20982    }
20983
20984    pub fn clear_time(&mut self) {
20985        self.time = ::std::option::Option::None;
20986    }
20987
20988    pub fn has_time(&self) -> bool {
20989        self.time.is_some()
20990    }
20991
20992    // Param is passed by value, moved
20993    pub fn set_time(&mut self, v: i32) {
20994        self.time = ::std::option::Option::Some(v);
20995    }
20996
20997    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
20998        let mut fields = ::std::vec::Vec::with_capacity(12);
20999        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21000        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21001            "type",
21002            |m: &Report| { &m.type_ },
21003            |m: &mut Report| { &mut m.type_ },
21004        ));
21005        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21006            "text",
21007            |m: &Report| { &m.text },
21008            |m: &mut Report| { &mut m.text },
21009        ));
21010        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ColorDefinition>(
21011            "color",
21012            |m: &Report| { &m.color },
21013            |m: &mut Report| { &mut m.color },
21014        ));
21015        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21016            "duration",
21017            |m: &Report| { &m.duration },
21018            |m: &mut Report| { &mut m.duration },
21019        ));
21020        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21021            "continuation",
21022            |m: &Report| { &m.continuation },
21023            |m: &mut Report| { &mut m.continuation },
21024        ));
21025        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21026            "unconscious",
21027            |m: &Report| { &m.unconscious },
21028            |m: &mut Report| { &mut m.unconscious },
21029        ));
21030        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21031            "announcement",
21032            |m: &Report| { &m.announcement },
21033            |m: &mut Report| { &mut m.announcement },
21034        ));
21035        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21036            "repeat_count",
21037            |m: &Report| { &m.repeat_count },
21038            |m: &mut Report| { &mut m.repeat_count },
21039        ));
21040        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
21041            "pos",
21042            |m: &Report| { &m.pos },
21043            |m: &mut Report| { &mut m.pos },
21044        ));
21045        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21046            "id",
21047            |m: &Report| { &m.id },
21048            |m: &mut Report| { &mut m.id },
21049        ));
21050        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21051            "year",
21052            |m: &Report| { &m.year },
21053            |m: &mut Report| { &mut m.year },
21054        ));
21055        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21056            "time",
21057            |m: &Report| { &m.time },
21058            |m: &mut Report| { &mut m.time },
21059        ));
21060        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Report>(
21061            "Report",
21062            fields,
21063            oneofs,
21064        )
21065    }
21066}
21067
21068impl ::protobuf::Message for Report {
21069    const NAME: &'static str = "Report";
21070
21071    fn is_initialized(&self) -> bool {
21072        for v in &self.color {
21073            if !v.is_initialized() {
21074                return false;
21075            }
21076        };
21077        for v in &self.pos {
21078            if !v.is_initialized() {
21079                return false;
21080            }
21081        };
21082        true
21083    }
21084
21085    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21086        while let Some(tag) = is.read_raw_tag_or_eof()? {
21087            match tag {
21088                8 => {
21089                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
21090                },
21091                18 => {
21092                    self.text = ::std::option::Option::Some(is.read_string()?);
21093                },
21094                26 => {
21095                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.color)?;
21096                },
21097                32 => {
21098                    self.duration = ::std::option::Option::Some(is.read_int32()?);
21099                },
21100                40 => {
21101                    self.continuation = ::std::option::Option::Some(is.read_bool()?);
21102                },
21103                48 => {
21104                    self.unconscious = ::std::option::Option::Some(is.read_bool()?);
21105                },
21106                56 => {
21107                    self.announcement = ::std::option::Option::Some(is.read_bool()?);
21108                },
21109                64 => {
21110                    self.repeat_count = ::std::option::Option::Some(is.read_int32()?);
21111                },
21112                74 => {
21113                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
21114                },
21115                80 => {
21116                    self.id = ::std::option::Option::Some(is.read_int32()?);
21117                },
21118                88 => {
21119                    self.year = ::std::option::Option::Some(is.read_int32()?);
21120                },
21121                96 => {
21122                    self.time = ::std::option::Option::Some(is.read_int32()?);
21123                },
21124                tag => {
21125                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21126                },
21127            };
21128        }
21129        ::std::result::Result::Ok(())
21130    }
21131
21132    // Compute sizes of nested messages
21133    #[allow(unused_variables)]
21134    fn compute_size(&self) -> u64 {
21135        let mut my_size = 0;
21136        if let Some(v) = self.type_ {
21137            my_size += ::protobuf::rt::int32_size(1, v);
21138        }
21139        if let Some(v) = self.text.as_ref() {
21140            my_size += ::protobuf::rt::string_size(2, &v);
21141        }
21142        if let Some(v) = self.color.as_ref() {
21143            let len = v.compute_size();
21144            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21145        }
21146        if let Some(v) = self.duration {
21147            my_size += ::protobuf::rt::int32_size(4, v);
21148        }
21149        if let Some(v) = self.continuation {
21150            my_size += 1 + 1;
21151        }
21152        if let Some(v) = self.unconscious {
21153            my_size += 1 + 1;
21154        }
21155        if let Some(v) = self.announcement {
21156            my_size += 1 + 1;
21157        }
21158        if let Some(v) = self.repeat_count {
21159            my_size += ::protobuf::rt::int32_size(8, v);
21160        }
21161        if let Some(v) = self.pos.as_ref() {
21162            let len = v.compute_size();
21163            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21164        }
21165        if let Some(v) = self.id {
21166            my_size += ::protobuf::rt::int32_size(10, v);
21167        }
21168        if let Some(v) = self.year {
21169            my_size += ::protobuf::rt::int32_size(11, v);
21170        }
21171        if let Some(v) = self.time {
21172            my_size += ::protobuf::rt::int32_size(12, v);
21173        }
21174        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21175        self.special_fields.cached_size().set(my_size as u32);
21176        my_size
21177    }
21178
21179    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21180        if let Some(v) = self.type_ {
21181            os.write_int32(1, v)?;
21182        }
21183        if let Some(v) = self.text.as_ref() {
21184            os.write_string(2, v)?;
21185        }
21186        if let Some(v) = self.color.as_ref() {
21187            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
21188        }
21189        if let Some(v) = self.duration {
21190            os.write_int32(4, v)?;
21191        }
21192        if let Some(v) = self.continuation {
21193            os.write_bool(5, v)?;
21194        }
21195        if let Some(v) = self.unconscious {
21196            os.write_bool(6, v)?;
21197        }
21198        if let Some(v) = self.announcement {
21199            os.write_bool(7, v)?;
21200        }
21201        if let Some(v) = self.repeat_count {
21202            os.write_int32(8, v)?;
21203        }
21204        if let Some(v) = self.pos.as_ref() {
21205            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
21206        }
21207        if let Some(v) = self.id {
21208            os.write_int32(10, v)?;
21209        }
21210        if let Some(v) = self.year {
21211            os.write_int32(11, v)?;
21212        }
21213        if let Some(v) = self.time {
21214            os.write_int32(12, v)?;
21215        }
21216        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21217        ::std::result::Result::Ok(())
21218    }
21219
21220    fn special_fields(&self) -> &::protobuf::SpecialFields {
21221        &self.special_fields
21222    }
21223
21224    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21225        &mut self.special_fields
21226    }
21227
21228    fn new() -> Report {
21229        Report::new()
21230    }
21231
21232    fn clear(&mut self) {
21233        self.type_ = ::std::option::Option::None;
21234        self.text = ::std::option::Option::None;
21235        self.color.clear();
21236        self.duration = ::std::option::Option::None;
21237        self.continuation = ::std::option::Option::None;
21238        self.unconscious = ::std::option::Option::None;
21239        self.announcement = ::std::option::Option::None;
21240        self.repeat_count = ::std::option::Option::None;
21241        self.pos.clear();
21242        self.id = ::std::option::Option::None;
21243        self.year = ::std::option::Option::None;
21244        self.time = ::std::option::Option::None;
21245        self.special_fields.clear();
21246    }
21247
21248    fn default_instance() -> &'static Report {
21249        static instance: Report = Report {
21250            type_: ::std::option::Option::None,
21251            text: ::std::option::Option::None,
21252            color: ::protobuf::MessageField::none(),
21253            duration: ::std::option::Option::None,
21254            continuation: ::std::option::Option::None,
21255            unconscious: ::std::option::Option::None,
21256            announcement: ::std::option::Option::None,
21257            repeat_count: ::std::option::Option::None,
21258            pos: ::protobuf::MessageField::none(),
21259            id: ::std::option::Option::None,
21260            year: ::std::option::Option::None,
21261            time: ::std::option::Option::None,
21262            special_fields: ::protobuf::SpecialFields::new(),
21263        };
21264        &instance
21265    }
21266}
21267
21268impl ::protobuf::MessageFull for Report {
21269    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21270        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21271        descriptor.get(|| file_descriptor().message_by_package_relative_name("Report").unwrap()).clone()
21272    }
21273}
21274
21275impl ::std::fmt::Display for Report {
21276    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21277        ::protobuf::text_format::fmt(self, f)
21278    }
21279}
21280
21281impl ::protobuf::reflect::ProtobufValue for Report {
21282    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21283}
21284
21285// @@protoc_insertion_point(message:RemoteFortressReader.Status)
21286#[derive(PartialEq,Clone,Default,Debug)]
21287pub struct Status {
21288    // message fields
21289    // @@protoc_insertion_point(field:RemoteFortressReader.Status.reports)
21290    pub reports: ::std::vec::Vec<Report>,
21291    // special fields
21292    // @@protoc_insertion_point(special_field:RemoteFortressReader.Status.special_fields)
21293    pub special_fields: ::protobuf::SpecialFields,
21294}
21295
21296impl<'a> ::std::default::Default for &'a Status {
21297    fn default() -> &'a Status {
21298        <Status as ::protobuf::Message>::default_instance()
21299    }
21300}
21301
21302impl Status {
21303    pub fn new() -> Status {
21304        ::std::default::Default::default()
21305    }
21306
21307    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21308        let mut fields = ::std::vec::Vec::with_capacity(1);
21309        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21310        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
21311            "reports",
21312            |m: &Status| { &m.reports },
21313            |m: &mut Status| { &mut m.reports },
21314        ));
21315        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Status>(
21316            "Status",
21317            fields,
21318            oneofs,
21319        )
21320    }
21321}
21322
21323impl ::protobuf::Message for Status {
21324    const NAME: &'static str = "Status";
21325
21326    fn is_initialized(&self) -> bool {
21327        for v in &self.reports {
21328            if !v.is_initialized() {
21329                return false;
21330            }
21331        };
21332        true
21333    }
21334
21335    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21336        while let Some(tag) = is.read_raw_tag_or_eof()? {
21337            match tag {
21338                10 => {
21339                    self.reports.push(is.read_message()?);
21340                },
21341                tag => {
21342                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21343                },
21344            };
21345        }
21346        ::std::result::Result::Ok(())
21347    }
21348
21349    // Compute sizes of nested messages
21350    #[allow(unused_variables)]
21351    fn compute_size(&self) -> u64 {
21352        let mut my_size = 0;
21353        for value in &self.reports {
21354            let len = value.compute_size();
21355            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21356        };
21357        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21358        self.special_fields.cached_size().set(my_size as u32);
21359        my_size
21360    }
21361
21362    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21363        for v in &self.reports {
21364            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21365        };
21366        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21367        ::std::result::Result::Ok(())
21368    }
21369
21370    fn special_fields(&self) -> &::protobuf::SpecialFields {
21371        &self.special_fields
21372    }
21373
21374    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21375        &mut self.special_fields
21376    }
21377
21378    fn new() -> Status {
21379        Status::new()
21380    }
21381
21382    fn clear(&mut self) {
21383        self.reports.clear();
21384        self.special_fields.clear();
21385    }
21386
21387    fn default_instance() -> &'static Status {
21388        static instance: Status = Status {
21389            reports: ::std::vec::Vec::new(),
21390            special_fields: ::protobuf::SpecialFields::new(),
21391        };
21392        &instance
21393    }
21394}
21395
21396impl ::protobuf::MessageFull for Status {
21397    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21398        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21399        descriptor.get(|| file_descriptor().message_by_package_relative_name("Status").unwrap()).clone()
21400    }
21401}
21402
21403impl ::std::fmt::Display for Status {
21404    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21405        ::protobuf::text_format::fmt(self, f)
21406    }
21407}
21408
21409impl ::protobuf::reflect::ProtobufValue for Status {
21410    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21411}
21412
21413// @@protoc_insertion_point(message:RemoteFortressReader.ShapeDescriptior)
21414#[derive(PartialEq,Clone,Default,Debug)]
21415pub struct ShapeDescriptior {
21416    // message fields
21417    // @@protoc_insertion_point(field:RemoteFortressReader.ShapeDescriptior.id)
21418    pub id: ::std::option::Option<::std::string::String>,
21419    // @@protoc_insertion_point(field:RemoteFortressReader.ShapeDescriptior.tile)
21420    pub tile: ::std::option::Option<i32>,
21421    // special fields
21422    // @@protoc_insertion_point(special_field:RemoteFortressReader.ShapeDescriptior.special_fields)
21423    pub special_fields: ::protobuf::SpecialFields,
21424}
21425
21426impl<'a> ::std::default::Default for &'a ShapeDescriptior {
21427    fn default() -> &'a ShapeDescriptior {
21428        <ShapeDescriptior as ::protobuf::Message>::default_instance()
21429    }
21430}
21431
21432impl ShapeDescriptior {
21433    pub fn new() -> ShapeDescriptior {
21434        ::std::default::Default::default()
21435    }
21436
21437    // optional string id = 1;
21438
21439    pub fn id(&self) -> &str {
21440        match self.id.as_ref() {
21441            Some(v) => v,
21442            None => "",
21443        }
21444    }
21445
21446    pub fn clear_id(&mut self) {
21447        self.id = ::std::option::Option::None;
21448    }
21449
21450    pub fn has_id(&self) -> bool {
21451        self.id.is_some()
21452    }
21453
21454    // Param is passed by value, moved
21455    pub fn set_id(&mut self, v: ::std::string::String) {
21456        self.id = ::std::option::Option::Some(v);
21457    }
21458
21459    // Mutable pointer to the field.
21460    // If field is not initialized, it is initialized with default value first.
21461    pub fn mut_id(&mut self) -> &mut ::std::string::String {
21462        if self.id.is_none() {
21463            self.id = ::std::option::Option::Some(::std::string::String::new());
21464        }
21465        self.id.as_mut().unwrap()
21466    }
21467
21468    // Take field
21469    pub fn take_id(&mut self) -> ::std::string::String {
21470        self.id.take().unwrap_or_else(|| ::std::string::String::new())
21471    }
21472
21473    // optional int32 tile = 2;
21474
21475    pub fn tile(&self) -> i32 {
21476        self.tile.unwrap_or(0)
21477    }
21478
21479    pub fn clear_tile(&mut self) {
21480        self.tile = ::std::option::Option::None;
21481    }
21482
21483    pub fn has_tile(&self) -> bool {
21484        self.tile.is_some()
21485    }
21486
21487    // Param is passed by value, moved
21488    pub fn set_tile(&mut self, v: i32) {
21489        self.tile = ::std::option::Option::Some(v);
21490    }
21491
21492    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21493        let mut fields = ::std::vec::Vec::with_capacity(2);
21494        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21495        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21496            "id",
21497            |m: &ShapeDescriptior| { &m.id },
21498            |m: &mut ShapeDescriptior| { &mut m.id },
21499        ));
21500        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21501            "tile",
21502            |m: &ShapeDescriptior| { &m.tile },
21503            |m: &mut ShapeDescriptior| { &mut m.tile },
21504        ));
21505        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ShapeDescriptior>(
21506            "ShapeDescriptior",
21507            fields,
21508            oneofs,
21509        )
21510    }
21511}
21512
21513impl ::protobuf::Message for ShapeDescriptior {
21514    const NAME: &'static str = "ShapeDescriptior";
21515
21516    fn is_initialized(&self) -> bool {
21517        true
21518    }
21519
21520    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21521        while let Some(tag) = is.read_raw_tag_or_eof()? {
21522            match tag {
21523                10 => {
21524                    self.id = ::std::option::Option::Some(is.read_string()?);
21525                },
21526                16 => {
21527                    self.tile = ::std::option::Option::Some(is.read_int32()?);
21528                },
21529                tag => {
21530                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21531                },
21532            };
21533        }
21534        ::std::result::Result::Ok(())
21535    }
21536
21537    // Compute sizes of nested messages
21538    #[allow(unused_variables)]
21539    fn compute_size(&self) -> u64 {
21540        let mut my_size = 0;
21541        if let Some(v) = self.id.as_ref() {
21542            my_size += ::protobuf::rt::string_size(1, &v);
21543        }
21544        if let Some(v) = self.tile {
21545            my_size += ::protobuf::rt::int32_size(2, v);
21546        }
21547        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21548        self.special_fields.cached_size().set(my_size as u32);
21549        my_size
21550    }
21551
21552    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21553        if let Some(v) = self.id.as_ref() {
21554            os.write_string(1, v)?;
21555        }
21556        if let Some(v) = self.tile {
21557            os.write_int32(2, v)?;
21558        }
21559        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21560        ::std::result::Result::Ok(())
21561    }
21562
21563    fn special_fields(&self) -> &::protobuf::SpecialFields {
21564        &self.special_fields
21565    }
21566
21567    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21568        &mut self.special_fields
21569    }
21570
21571    fn new() -> ShapeDescriptior {
21572        ShapeDescriptior::new()
21573    }
21574
21575    fn clear(&mut self) {
21576        self.id = ::std::option::Option::None;
21577        self.tile = ::std::option::Option::None;
21578        self.special_fields.clear();
21579    }
21580
21581    fn default_instance() -> &'static ShapeDescriptior {
21582        static instance: ShapeDescriptior = ShapeDescriptior {
21583            id: ::std::option::Option::None,
21584            tile: ::std::option::Option::None,
21585            special_fields: ::protobuf::SpecialFields::new(),
21586        };
21587        &instance
21588    }
21589}
21590
21591impl ::protobuf::MessageFull for ShapeDescriptior {
21592    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21593        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21594        descriptor.get(|| file_descriptor().message_by_package_relative_name("ShapeDescriptior").unwrap()).clone()
21595    }
21596}
21597
21598impl ::std::fmt::Display for ShapeDescriptior {
21599    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21600        ::protobuf::text_format::fmt(self, f)
21601    }
21602}
21603
21604impl ::protobuf::reflect::ProtobufValue for ShapeDescriptior {
21605    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21606}
21607
21608// @@protoc_insertion_point(message:RemoteFortressReader.Language)
21609#[derive(PartialEq,Clone,Default,Debug)]
21610pub struct Language {
21611    // message fields
21612    // @@protoc_insertion_point(field:RemoteFortressReader.Language.shapes)
21613    pub shapes: ::std::vec::Vec<ShapeDescriptior>,
21614    // special fields
21615    // @@protoc_insertion_point(special_field:RemoteFortressReader.Language.special_fields)
21616    pub special_fields: ::protobuf::SpecialFields,
21617}
21618
21619impl<'a> ::std::default::Default for &'a Language {
21620    fn default() -> &'a Language {
21621        <Language as ::protobuf::Message>::default_instance()
21622    }
21623}
21624
21625impl Language {
21626    pub fn new() -> Language {
21627        ::std::default::Default::default()
21628    }
21629
21630    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21631        let mut fields = ::std::vec::Vec::with_capacity(1);
21632        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21633        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
21634            "shapes",
21635            |m: &Language| { &m.shapes },
21636            |m: &mut Language| { &mut m.shapes },
21637        ));
21638        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Language>(
21639            "Language",
21640            fields,
21641            oneofs,
21642        )
21643    }
21644}
21645
21646impl ::protobuf::Message for Language {
21647    const NAME: &'static str = "Language";
21648
21649    fn is_initialized(&self) -> bool {
21650        true
21651    }
21652
21653    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21654        while let Some(tag) = is.read_raw_tag_or_eof()? {
21655            match tag {
21656                10 => {
21657                    self.shapes.push(is.read_message()?);
21658                },
21659                tag => {
21660                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21661                },
21662            };
21663        }
21664        ::std::result::Result::Ok(())
21665    }
21666
21667    // Compute sizes of nested messages
21668    #[allow(unused_variables)]
21669    fn compute_size(&self) -> u64 {
21670        let mut my_size = 0;
21671        for value in &self.shapes {
21672            let len = value.compute_size();
21673            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21674        };
21675        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21676        self.special_fields.cached_size().set(my_size as u32);
21677        my_size
21678    }
21679
21680    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21681        for v in &self.shapes {
21682            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21683        };
21684        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21685        ::std::result::Result::Ok(())
21686    }
21687
21688    fn special_fields(&self) -> &::protobuf::SpecialFields {
21689        &self.special_fields
21690    }
21691
21692    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21693        &mut self.special_fields
21694    }
21695
21696    fn new() -> Language {
21697        Language::new()
21698    }
21699
21700    fn clear(&mut self) {
21701        self.shapes.clear();
21702        self.special_fields.clear();
21703    }
21704
21705    fn default_instance() -> &'static Language {
21706        static instance: Language = Language {
21707            shapes: ::std::vec::Vec::new(),
21708            special_fields: ::protobuf::SpecialFields::new(),
21709        };
21710        &instance
21711    }
21712}
21713
21714impl ::protobuf::MessageFull for Language {
21715    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21716        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21717        descriptor.get(|| file_descriptor().message_by_package_relative_name("Language").unwrap()).clone()
21718    }
21719}
21720
21721impl ::std::fmt::Display for Language {
21722    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21723        ::protobuf::text_format::fmt(self, f)
21724    }
21725}
21726
21727impl ::protobuf::reflect::ProtobufValue for Language {
21728    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21729}
21730
21731// @@protoc_insertion_point(message:RemoteFortressReader.ItemImprovement)
21732#[derive(PartialEq,Clone,Default,Debug)]
21733pub struct ItemImprovement {
21734    // message fields
21735    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.material)
21736    pub material: ::protobuf::MessageField<MatPair>,
21737    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.shape)
21738    pub shape: ::std::option::Option<i32>,
21739    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.specific_type)
21740    pub specific_type: ::std::option::Option<i32>,
21741    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.image)
21742    pub image: ::protobuf::MessageField<ArtImage>,
21743    // @@protoc_insertion_point(field:RemoteFortressReader.ItemImprovement.type)
21744    pub type_: ::std::option::Option<i32>,
21745    // special fields
21746    // @@protoc_insertion_point(special_field:RemoteFortressReader.ItemImprovement.special_fields)
21747    pub special_fields: ::protobuf::SpecialFields,
21748}
21749
21750impl<'a> ::std::default::Default for &'a ItemImprovement {
21751    fn default() -> &'a ItemImprovement {
21752        <ItemImprovement as ::protobuf::Message>::default_instance()
21753    }
21754}
21755
21756impl ItemImprovement {
21757    pub fn new() -> ItemImprovement {
21758        ::std::default::Default::default()
21759    }
21760
21761    // optional int32 shape = 3;
21762
21763    pub fn shape(&self) -> i32 {
21764        self.shape.unwrap_or(0)
21765    }
21766
21767    pub fn clear_shape(&mut self) {
21768        self.shape = ::std::option::Option::None;
21769    }
21770
21771    pub fn has_shape(&self) -> bool {
21772        self.shape.is_some()
21773    }
21774
21775    // Param is passed by value, moved
21776    pub fn set_shape(&mut self, v: i32) {
21777        self.shape = ::std::option::Option::Some(v);
21778    }
21779
21780    // optional int32 specific_type = 4;
21781
21782    pub fn specific_type(&self) -> i32 {
21783        self.specific_type.unwrap_or(0)
21784    }
21785
21786    pub fn clear_specific_type(&mut self) {
21787        self.specific_type = ::std::option::Option::None;
21788    }
21789
21790    pub fn has_specific_type(&self) -> bool {
21791        self.specific_type.is_some()
21792    }
21793
21794    // Param is passed by value, moved
21795    pub fn set_specific_type(&mut self, v: i32) {
21796        self.specific_type = ::std::option::Option::Some(v);
21797    }
21798
21799    // optional int32 type = 6;
21800
21801    pub fn type_(&self) -> i32 {
21802        self.type_.unwrap_or(0)
21803    }
21804
21805    pub fn clear_type_(&mut self) {
21806        self.type_ = ::std::option::Option::None;
21807    }
21808
21809    pub fn has_type(&self) -> bool {
21810        self.type_.is_some()
21811    }
21812
21813    // Param is passed by value, moved
21814    pub fn set_type(&mut self, v: i32) {
21815        self.type_ = ::std::option::Option::Some(v);
21816    }
21817
21818    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
21819        let mut fields = ::std::vec::Vec::with_capacity(5);
21820        let mut oneofs = ::std::vec::Vec::with_capacity(0);
21821        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
21822            "material",
21823            |m: &ItemImprovement| { &m.material },
21824            |m: &mut ItemImprovement| { &mut m.material },
21825        ));
21826        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21827            "shape",
21828            |m: &ItemImprovement| { &m.shape },
21829            |m: &mut ItemImprovement| { &mut m.shape },
21830        ));
21831        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21832            "specific_type",
21833            |m: &ItemImprovement| { &m.specific_type },
21834            |m: &mut ItemImprovement| { &mut m.specific_type },
21835        ));
21836        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
21837            "image",
21838            |m: &ItemImprovement| { &m.image },
21839            |m: &mut ItemImprovement| { &mut m.image },
21840        ));
21841        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
21842            "type",
21843            |m: &ItemImprovement| { &m.type_ },
21844            |m: &mut ItemImprovement| { &mut m.type_ },
21845        ));
21846        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ItemImprovement>(
21847            "ItemImprovement",
21848            fields,
21849            oneofs,
21850        )
21851    }
21852}
21853
21854impl ::protobuf::Message for ItemImprovement {
21855    const NAME: &'static str = "ItemImprovement";
21856
21857    fn is_initialized(&self) -> bool {
21858        for v in &self.material {
21859            if !v.is_initialized() {
21860                return false;
21861            }
21862        };
21863        for v in &self.image {
21864            if !v.is_initialized() {
21865                return false;
21866            }
21867        };
21868        true
21869    }
21870
21871    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
21872        while let Some(tag) = is.read_raw_tag_or_eof()? {
21873            match tag {
21874                10 => {
21875                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
21876                },
21877                24 => {
21878                    self.shape = ::std::option::Option::Some(is.read_int32()?);
21879                },
21880                32 => {
21881                    self.specific_type = ::std::option::Option::Some(is.read_int32()?);
21882                },
21883                42 => {
21884                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
21885                },
21886                48 => {
21887                    self.type_ = ::std::option::Option::Some(is.read_int32()?);
21888                },
21889                tag => {
21890                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
21891                },
21892            };
21893        }
21894        ::std::result::Result::Ok(())
21895    }
21896
21897    // Compute sizes of nested messages
21898    #[allow(unused_variables)]
21899    fn compute_size(&self) -> u64 {
21900        let mut my_size = 0;
21901        if let Some(v) = self.material.as_ref() {
21902            let len = v.compute_size();
21903            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21904        }
21905        if let Some(v) = self.shape {
21906            my_size += ::protobuf::rt::int32_size(3, v);
21907        }
21908        if let Some(v) = self.specific_type {
21909            my_size += ::protobuf::rt::int32_size(4, v);
21910        }
21911        if let Some(v) = self.image.as_ref() {
21912            let len = v.compute_size();
21913            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
21914        }
21915        if let Some(v) = self.type_ {
21916            my_size += ::protobuf::rt::int32_size(6, v);
21917        }
21918        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
21919        self.special_fields.cached_size().set(my_size as u32);
21920        my_size
21921    }
21922
21923    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
21924        if let Some(v) = self.material.as_ref() {
21925            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
21926        }
21927        if let Some(v) = self.shape {
21928            os.write_int32(3, v)?;
21929        }
21930        if let Some(v) = self.specific_type {
21931            os.write_int32(4, v)?;
21932        }
21933        if let Some(v) = self.image.as_ref() {
21934            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
21935        }
21936        if let Some(v) = self.type_ {
21937            os.write_int32(6, v)?;
21938        }
21939        os.write_unknown_fields(self.special_fields.unknown_fields())?;
21940        ::std::result::Result::Ok(())
21941    }
21942
21943    fn special_fields(&self) -> &::protobuf::SpecialFields {
21944        &self.special_fields
21945    }
21946
21947    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
21948        &mut self.special_fields
21949    }
21950
21951    fn new() -> ItemImprovement {
21952        ItemImprovement::new()
21953    }
21954
21955    fn clear(&mut self) {
21956        self.material.clear();
21957        self.shape = ::std::option::Option::None;
21958        self.specific_type = ::std::option::Option::None;
21959        self.image.clear();
21960        self.type_ = ::std::option::Option::None;
21961        self.special_fields.clear();
21962    }
21963
21964    fn default_instance() -> &'static ItemImprovement {
21965        static instance: ItemImprovement = ItemImprovement {
21966            material: ::protobuf::MessageField::none(),
21967            shape: ::std::option::Option::None,
21968            specific_type: ::std::option::Option::None,
21969            image: ::protobuf::MessageField::none(),
21970            type_: ::std::option::Option::None,
21971            special_fields: ::protobuf::SpecialFields::new(),
21972        };
21973        &instance
21974    }
21975}
21976
21977impl ::protobuf::MessageFull for ItemImprovement {
21978    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
21979        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
21980        descriptor.get(|| file_descriptor().message_by_package_relative_name("ItemImprovement").unwrap()).clone()
21981    }
21982}
21983
21984impl ::std::fmt::Display for ItemImprovement {
21985    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
21986        ::protobuf::text_format::fmt(self, f)
21987    }
21988}
21989
21990impl ::protobuf::reflect::ProtobufValue for ItemImprovement {
21991    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
21992}
21993
21994// @@protoc_insertion_point(message:RemoteFortressReader.ArtImageElement)
21995#[derive(PartialEq,Clone,Default,Debug)]
21996pub struct ArtImageElement {
21997    // message fields
21998    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.count)
21999    pub count: ::std::option::Option<i32>,
22000    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.type)
22001    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImageElementType>>,
22002    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.creature_item)
22003    pub creature_item: ::protobuf::MessageField<MatPair>,
22004    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.material)
22005    pub material: ::protobuf::MessageField<MatPair>,
22006    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageElement.id)
22007    pub id: ::std::option::Option<i32>,
22008    // special fields
22009    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImageElement.special_fields)
22010    pub special_fields: ::protobuf::SpecialFields,
22011}
22012
22013impl<'a> ::std::default::Default for &'a ArtImageElement {
22014    fn default() -> &'a ArtImageElement {
22015        <ArtImageElement as ::protobuf::Message>::default_instance()
22016    }
22017}
22018
22019impl ArtImageElement {
22020    pub fn new() -> ArtImageElement {
22021        ::std::default::Default::default()
22022    }
22023
22024    // optional int32 count = 1;
22025
22026    pub fn count(&self) -> i32 {
22027        self.count.unwrap_or(0)
22028    }
22029
22030    pub fn clear_count(&mut self) {
22031        self.count = ::std::option::Option::None;
22032    }
22033
22034    pub fn has_count(&self) -> bool {
22035        self.count.is_some()
22036    }
22037
22038    // Param is passed by value, moved
22039    pub fn set_count(&mut self, v: i32) {
22040        self.count = ::std::option::Option::Some(v);
22041    }
22042
22043    // optional .RemoteFortressReader.ArtImageElementType type = 2;
22044
22045    pub fn type_(&self) -> ArtImageElementType {
22046        match self.type_ {
22047            Some(e) => e.enum_value_or(ArtImageElementType::IMAGE_CREATURE),
22048            None => ArtImageElementType::IMAGE_CREATURE,
22049        }
22050    }
22051
22052    pub fn clear_type_(&mut self) {
22053        self.type_ = ::std::option::Option::None;
22054    }
22055
22056    pub fn has_type(&self) -> bool {
22057        self.type_.is_some()
22058    }
22059
22060    // Param is passed by value, moved
22061    pub fn set_type(&mut self, v: ArtImageElementType) {
22062        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22063    }
22064
22065    // optional int32 id = 6;
22066
22067    pub fn id(&self) -> i32 {
22068        self.id.unwrap_or(0)
22069    }
22070
22071    pub fn clear_id(&mut self) {
22072        self.id = ::std::option::Option::None;
22073    }
22074
22075    pub fn has_id(&self) -> bool {
22076        self.id.is_some()
22077    }
22078
22079    // Param is passed by value, moved
22080    pub fn set_id(&mut self, v: i32) {
22081        self.id = ::std::option::Option::Some(v);
22082    }
22083
22084    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22085        let mut fields = ::std::vec::Vec::with_capacity(5);
22086        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22087        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22088            "count",
22089            |m: &ArtImageElement| { &m.count },
22090            |m: &mut ArtImageElement| { &mut m.count },
22091        ));
22092        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22093            "type",
22094            |m: &ArtImageElement| { &m.type_ },
22095            |m: &mut ArtImageElement| { &mut m.type_ },
22096        ));
22097        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22098            "creature_item",
22099            |m: &ArtImageElement| { &m.creature_item },
22100            |m: &mut ArtImageElement| { &mut m.creature_item },
22101        ));
22102        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22103            "material",
22104            |m: &ArtImageElement| { &m.material },
22105            |m: &mut ArtImageElement| { &mut m.material },
22106        ));
22107        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22108            "id",
22109            |m: &ArtImageElement| { &m.id },
22110            |m: &mut ArtImageElement| { &mut m.id },
22111        ));
22112        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImageElement>(
22113            "ArtImageElement",
22114            fields,
22115            oneofs,
22116        )
22117    }
22118}
22119
22120impl ::protobuf::Message for ArtImageElement {
22121    const NAME: &'static str = "ArtImageElement";
22122
22123    fn is_initialized(&self) -> bool {
22124        for v in &self.creature_item {
22125            if !v.is_initialized() {
22126                return false;
22127            }
22128        };
22129        for v in &self.material {
22130            if !v.is_initialized() {
22131                return false;
22132            }
22133        };
22134        true
22135    }
22136
22137    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22138        while let Some(tag) = is.read_raw_tag_or_eof()? {
22139            match tag {
22140                8 => {
22141                    self.count = ::std::option::Option::Some(is.read_int32()?);
22142                },
22143                16 => {
22144                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22145                },
22146                26 => {
22147                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.creature_item)?;
22148                },
22149                42 => {
22150                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
22151                },
22152                48 => {
22153                    self.id = ::std::option::Option::Some(is.read_int32()?);
22154                },
22155                tag => {
22156                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22157                },
22158            };
22159        }
22160        ::std::result::Result::Ok(())
22161    }
22162
22163    // Compute sizes of nested messages
22164    #[allow(unused_variables)]
22165    fn compute_size(&self) -> u64 {
22166        let mut my_size = 0;
22167        if let Some(v) = self.count {
22168            my_size += ::protobuf::rt::int32_size(1, v);
22169        }
22170        if let Some(v) = self.type_ {
22171            my_size += ::protobuf::rt::int32_size(2, v.value());
22172        }
22173        if let Some(v) = self.creature_item.as_ref() {
22174            let len = v.compute_size();
22175            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22176        }
22177        if let Some(v) = self.material.as_ref() {
22178            let len = v.compute_size();
22179            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22180        }
22181        if let Some(v) = self.id {
22182            my_size += ::protobuf::rt::int32_size(6, v);
22183        }
22184        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22185        self.special_fields.cached_size().set(my_size as u32);
22186        my_size
22187    }
22188
22189    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22190        if let Some(v) = self.count {
22191            os.write_int32(1, v)?;
22192        }
22193        if let Some(v) = self.type_ {
22194            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
22195        }
22196        if let Some(v) = self.creature_item.as_ref() {
22197            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
22198        }
22199        if let Some(v) = self.material.as_ref() {
22200            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
22201        }
22202        if let Some(v) = self.id {
22203            os.write_int32(6, v)?;
22204        }
22205        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22206        ::std::result::Result::Ok(())
22207    }
22208
22209    fn special_fields(&self) -> &::protobuf::SpecialFields {
22210        &self.special_fields
22211    }
22212
22213    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22214        &mut self.special_fields
22215    }
22216
22217    fn new() -> ArtImageElement {
22218        ArtImageElement::new()
22219    }
22220
22221    fn clear(&mut self) {
22222        self.count = ::std::option::Option::None;
22223        self.type_ = ::std::option::Option::None;
22224        self.creature_item.clear();
22225        self.material.clear();
22226        self.id = ::std::option::Option::None;
22227        self.special_fields.clear();
22228    }
22229
22230    fn default_instance() -> &'static ArtImageElement {
22231        static instance: ArtImageElement = ArtImageElement {
22232            count: ::std::option::Option::None,
22233            type_: ::std::option::Option::None,
22234            creature_item: ::protobuf::MessageField::none(),
22235            material: ::protobuf::MessageField::none(),
22236            id: ::std::option::Option::None,
22237            special_fields: ::protobuf::SpecialFields::new(),
22238        };
22239        &instance
22240    }
22241}
22242
22243impl ::protobuf::MessageFull for ArtImageElement {
22244    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22245        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22246        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImageElement").unwrap()).clone()
22247    }
22248}
22249
22250impl ::std::fmt::Display for ArtImageElement {
22251    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22252        ::protobuf::text_format::fmt(self, f)
22253    }
22254}
22255
22256impl ::protobuf::reflect::ProtobufValue for ArtImageElement {
22257    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22258}
22259
22260// @@protoc_insertion_point(message:RemoteFortressReader.ArtImageProperty)
22261#[derive(PartialEq,Clone,Default,Debug)]
22262pub struct ArtImageProperty {
22263    // message fields
22264    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.subject)
22265    pub subject: ::std::option::Option<i32>,
22266    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.object)
22267    pub object: ::std::option::Option<i32>,
22268    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.verb)
22269    pub verb: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImageVerb>>,
22270    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImageProperty.type)
22271    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<ArtImagePropertyType>>,
22272    // special fields
22273    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImageProperty.special_fields)
22274    pub special_fields: ::protobuf::SpecialFields,
22275}
22276
22277impl<'a> ::std::default::Default for &'a ArtImageProperty {
22278    fn default() -> &'a ArtImageProperty {
22279        <ArtImageProperty as ::protobuf::Message>::default_instance()
22280    }
22281}
22282
22283impl ArtImageProperty {
22284    pub fn new() -> ArtImageProperty {
22285        ::std::default::Default::default()
22286    }
22287
22288    // optional int32 subject = 1;
22289
22290    pub fn subject(&self) -> i32 {
22291        self.subject.unwrap_or(0)
22292    }
22293
22294    pub fn clear_subject(&mut self) {
22295        self.subject = ::std::option::Option::None;
22296    }
22297
22298    pub fn has_subject(&self) -> bool {
22299        self.subject.is_some()
22300    }
22301
22302    // Param is passed by value, moved
22303    pub fn set_subject(&mut self, v: i32) {
22304        self.subject = ::std::option::Option::Some(v);
22305    }
22306
22307    // optional int32 object = 2;
22308
22309    pub fn object(&self) -> i32 {
22310        self.object.unwrap_or(0)
22311    }
22312
22313    pub fn clear_object(&mut self) {
22314        self.object = ::std::option::Option::None;
22315    }
22316
22317    pub fn has_object(&self) -> bool {
22318        self.object.is_some()
22319    }
22320
22321    // Param is passed by value, moved
22322    pub fn set_object(&mut self, v: i32) {
22323        self.object = ::std::option::Option::Some(v);
22324    }
22325
22326    // optional .RemoteFortressReader.ArtImageVerb verb = 3;
22327
22328    pub fn verb(&self) -> ArtImageVerb {
22329        match self.verb {
22330            Some(e) => e.enum_value_or(ArtImageVerb::VERB_WITHERING),
22331            None => ArtImageVerb::VERB_WITHERING,
22332        }
22333    }
22334
22335    pub fn clear_verb(&mut self) {
22336        self.verb = ::std::option::Option::None;
22337    }
22338
22339    pub fn has_verb(&self) -> bool {
22340        self.verb.is_some()
22341    }
22342
22343    // Param is passed by value, moved
22344    pub fn set_verb(&mut self, v: ArtImageVerb) {
22345        self.verb = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22346    }
22347
22348    // optional .RemoteFortressReader.ArtImagePropertyType type = 4;
22349
22350    pub fn type_(&self) -> ArtImagePropertyType {
22351        match self.type_ {
22352            Some(e) => e.enum_value_or(ArtImagePropertyType::TRANSITIVE_VERB),
22353            None => ArtImagePropertyType::TRANSITIVE_VERB,
22354        }
22355    }
22356
22357    pub fn clear_type_(&mut self) {
22358        self.type_ = ::std::option::Option::None;
22359    }
22360
22361    pub fn has_type(&self) -> bool {
22362        self.type_.is_some()
22363    }
22364
22365    // Param is passed by value, moved
22366    pub fn set_type(&mut self, v: ArtImagePropertyType) {
22367        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
22368    }
22369
22370    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22371        let mut fields = ::std::vec::Vec::with_capacity(4);
22372        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22373        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22374            "subject",
22375            |m: &ArtImageProperty| { &m.subject },
22376            |m: &mut ArtImageProperty| { &mut m.subject },
22377        ));
22378        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22379            "object",
22380            |m: &ArtImageProperty| { &m.object },
22381            |m: &mut ArtImageProperty| { &mut m.object },
22382        ));
22383        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22384            "verb",
22385            |m: &ArtImageProperty| { &m.verb },
22386            |m: &mut ArtImageProperty| { &mut m.verb },
22387        ));
22388        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22389            "type",
22390            |m: &ArtImageProperty| { &m.type_ },
22391            |m: &mut ArtImageProperty| { &mut m.type_ },
22392        ));
22393        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImageProperty>(
22394            "ArtImageProperty",
22395            fields,
22396            oneofs,
22397        )
22398    }
22399}
22400
22401impl ::protobuf::Message for ArtImageProperty {
22402    const NAME: &'static str = "ArtImageProperty";
22403
22404    fn is_initialized(&self) -> bool {
22405        true
22406    }
22407
22408    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22409        while let Some(tag) = is.read_raw_tag_or_eof()? {
22410            match tag {
22411                8 => {
22412                    self.subject = ::std::option::Option::Some(is.read_int32()?);
22413                },
22414                16 => {
22415                    self.object = ::std::option::Option::Some(is.read_int32()?);
22416                },
22417                24 => {
22418                    self.verb = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22419                },
22420                32 => {
22421                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
22422                },
22423                tag => {
22424                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22425                },
22426            };
22427        }
22428        ::std::result::Result::Ok(())
22429    }
22430
22431    // Compute sizes of nested messages
22432    #[allow(unused_variables)]
22433    fn compute_size(&self) -> u64 {
22434        let mut my_size = 0;
22435        if let Some(v) = self.subject {
22436            my_size += ::protobuf::rt::int32_size(1, v);
22437        }
22438        if let Some(v) = self.object {
22439            my_size += ::protobuf::rt::int32_size(2, v);
22440        }
22441        if let Some(v) = self.verb {
22442            my_size += ::protobuf::rt::int32_size(3, v.value());
22443        }
22444        if let Some(v) = self.type_ {
22445            my_size += ::protobuf::rt::int32_size(4, v.value());
22446        }
22447        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22448        self.special_fields.cached_size().set(my_size as u32);
22449        my_size
22450    }
22451
22452    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22453        if let Some(v) = self.subject {
22454            os.write_int32(1, v)?;
22455        }
22456        if let Some(v) = self.object {
22457            os.write_int32(2, v)?;
22458        }
22459        if let Some(v) = self.verb {
22460            os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
22461        }
22462        if let Some(v) = self.type_ {
22463            os.write_enum(4, ::protobuf::EnumOrUnknown::value(&v))?;
22464        }
22465        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22466        ::std::result::Result::Ok(())
22467    }
22468
22469    fn special_fields(&self) -> &::protobuf::SpecialFields {
22470        &self.special_fields
22471    }
22472
22473    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22474        &mut self.special_fields
22475    }
22476
22477    fn new() -> ArtImageProperty {
22478        ArtImageProperty::new()
22479    }
22480
22481    fn clear(&mut self) {
22482        self.subject = ::std::option::Option::None;
22483        self.object = ::std::option::Option::None;
22484        self.verb = ::std::option::Option::None;
22485        self.type_ = ::std::option::Option::None;
22486        self.special_fields.clear();
22487    }
22488
22489    fn default_instance() -> &'static ArtImageProperty {
22490        static instance: ArtImageProperty = ArtImageProperty {
22491            subject: ::std::option::Option::None,
22492            object: ::std::option::Option::None,
22493            verb: ::std::option::Option::None,
22494            type_: ::std::option::Option::None,
22495            special_fields: ::protobuf::SpecialFields::new(),
22496        };
22497        &instance
22498    }
22499}
22500
22501impl ::protobuf::MessageFull for ArtImageProperty {
22502    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22503        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22504        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImageProperty").unwrap()).clone()
22505    }
22506}
22507
22508impl ::std::fmt::Display for ArtImageProperty {
22509    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22510        ::protobuf::text_format::fmt(self, f)
22511    }
22512}
22513
22514impl ::protobuf::reflect::ProtobufValue for ArtImageProperty {
22515    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22516}
22517
22518// @@protoc_insertion_point(message:RemoteFortressReader.ArtImage)
22519#[derive(PartialEq,Clone,Default,Debug)]
22520pub struct ArtImage {
22521    // message fields
22522    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.elements)
22523    pub elements: ::std::vec::Vec<ArtImageElement>,
22524    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.id)
22525    pub id: ::protobuf::MessageField<MatPair>,
22526    // @@protoc_insertion_point(field:RemoteFortressReader.ArtImage.properties)
22527    pub properties: ::std::vec::Vec<ArtImageProperty>,
22528    // special fields
22529    // @@protoc_insertion_point(special_field:RemoteFortressReader.ArtImage.special_fields)
22530    pub special_fields: ::protobuf::SpecialFields,
22531}
22532
22533impl<'a> ::std::default::Default for &'a ArtImage {
22534    fn default() -> &'a ArtImage {
22535        <ArtImage as ::protobuf::Message>::default_instance()
22536    }
22537}
22538
22539impl ArtImage {
22540    pub fn new() -> ArtImage {
22541        ::std::default::Default::default()
22542    }
22543
22544    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22545        let mut fields = ::std::vec::Vec::with_capacity(3);
22546        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22547        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
22548            "elements",
22549            |m: &ArtImage| { &m.elements },
22550            |m: &mut ArtImage| { &mut m.elements },
22551        ));
22552        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
22553            "id",
22554            |m: &ArtImage| { &m.id },
22555            |m: &mut ArtImage| { &mut m.id },
22556        ));
22557        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
22558            "properties",
22559            |m: &ArtImage| { &m.properties },
22560            |m: &mut ArtImage| { &mut m.properties },
22561        ));
22562        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ArtImage>(
22563            "ArtImage",
22564            fields,
22565            oneofs,
22566        )
22567    }
22568}
22569
22570impl ::protobuf::Message for ArtImage {
22571    const NAME: &'static str = "ArtImage";
22572
22573    fn is_initialized(&self) -> bool {
22574        for v in &self.elements {
22575            if !v.is_initialized() {
22576                return false;
22577            }
22578        };
22579        for v in &self.id {
22580            if !v.is_initialized() {
22581                return false;
22582            }
22583        };
22584        for v in &self.properties {
22585            if !v.is_initialized() {
22586                return false;
22587            }
22588        };
22589        true
22590    }
22591
22592    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
22593        while let Some(tag) = is.read_raw_tag_or_eof()? {
22594            match tag {
22595                10 => {
22596                    self.elements.push(is.read_message()?);
22597                },
22598                18 => {
22599                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.id)?;
22600                },
22601                26 => {
22602                    self.properties.push(is.read_message()?);
22603                },
22604                tag => {
22605                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
22606                },
22607            };
22608        }
22609        ::std::result::Result::Ok(())
22610    }
22611
22612    // Compute sizes of nested messages
22613    #[allow(unused_variables)]
22614    fn compute_size(&self) -> u64 {
22615        let mut my_size = 0;
22616        for value in &self.elements {
22617            let len = value.compute_size();
22618            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22619        };
22620        if let Some(v) = self.id.as_ref() {
22621            let len = v.compute_size();
22622            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22623        }
22624        for value in &self.properties {
22625            let len = value.compute_size();
22626            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
22627        };
22628        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
22629        self.special_fields.cached_size().set(my_size as u32);
22630        my_size
22631    }
22632
22633    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
22634        for v in &self.elements {
22635            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
22636        };
22637        if let Some(v) = self.id.as_ref() {
22638            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
22639        }
22640        for v in &self.properties {
22641            ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?;
22642        };
22643        os.write_unknown_fields(self.special_fields.unknown_fields())?;
22644        ::std::result::Result::Ok(())
22645    }
22646
22647    fn special_fields(&self) -> &::protobuf::SpecialFields {
22648        &self.special_fields
22649    }
22650
22651    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
22652        &mut self.special_fields
22653    }
22654
22655    fn new() -> ArtImage {
22656        ArtImage::new()
22657    }
22658
22659    fn clear(&mut self) {
22660        self.elements.clear();
22661        self.id.clear();
22662        self.properties.clear();
22663        self.special_fields.clear();
22664    }
22665
22666    fn default_instance() -> &'static ArtImage {
22667        static instance: ArtImage = ArtImage {
22668            elements: ::std::vec::Vec::new(),
22669            id: ::protobuf::MessageField::none(),
22670            properties: ::std::vec::Vec::new(),
22671            special_fields: ::protobuf::SpecialFields::new(),
22672        };
22673        &instance
22674    }
22675}
22676
22677impl ::protobuf::MessageFull for ArtImage {
22678    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
22679        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
22680        descriptor.get(|| file_descriptor().message_by_package_relative_name("ArtImage").unwrap()).clone()
22681    }
22682}
22683
22684impl ::std::fmt::Display for ArtImage {
22685    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
22686        ::protobuf::text_format::fmt(self, f)
22687    }
22688}
22689
22690impl ::protobuf::reflect::ProtobufValue for ArtImage {
22691    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
22692}
22693
22694// @@protoc_insertion_point(message:RemoteFortressReader.Engraving)
22695#[derive(PartialEq,Clone,Default,Debug)]
22696pub struct Engraving {
22697    // message fields
22698    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.pos)
22699    pub pos: ::protobuf::MessageField<Coord>,
22700    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.quality)
22701    pub quality: ::std::option::Option<i32>,
22702    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.tile)
22703    pub tile: ::std::option::Option<i32>,
22704    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.image)
22705    pub image: ::protobuf::MessageField<ArtImage>,
22706    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.floor)
22707    pub floor: ::std::option::Option<bool>,
22708    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.west)
22709    pub west: ::std::option::Option<bool>,
22710    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.east)
22711    pub east: ::std::option::Option<bool>,
22712    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.north)
22713    pub north: ::std::option::Option<bool>,
22714    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.south)
22715    pub south: ::std::option::Option<bool>,
22716    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.hidden)
22717    pub hidden: ::std::option::Option<bool>,
22718    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.northwest)
22719    pub northwest: ::std::option::Option<bool>,
22720    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.northeast)
22721    pub northeast: ::std::option::Option<bool>,
22722    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.southwest)
22723    pub southwest: ::std::option::Option<bool>,
22724    // @@protoc_insertion_point(field:RemoteFortressReader.Engraving.southeast)
22725    pub southeast: ::std::option::Option<bool>,
22726    // special fields
22727    // @@protoc_insertion_point(special_field:RemoteFortressReader.Engraving.special_fields)
22728    pub special_fields: ::protobuf::SpecialFields,
22729}
22730
22731impl<'a> ::std::default::Default for &'a Engraving {
22732    fn default() -> &'a Engraving {
22733        <Engraving as ::protobuf::Message>::default_instance()
22734    }
22735}
22736
22737impl Engraving {
22738    pub fn new() -> Engraving {
22739        ::std::default::Default::default()
22740    }
22741
22742    // optional int32 quality = 2;
22743
22744    pub fn quality(&self) -> i32 {
22745        self.quality.unwrap_or(0)
22746    }
22747
22748    pub fn clear_quality(&mut self) {
22749        self.quality = ::std::option::Option::None;
22750    }
22751
22752    pub fn has_quality(&self) -> bool {
22753        self.quality.is_some()
22754    }
22755
22756    // Param is passed by value, moved
22757    pub fn set_quality(&mut self, v: i32) {
22758        self.quality = ::std::option::Option::Some(v);
22759    }
22760
22761    // optional int32 tile = 3;
22762
22763    pub fn tile(&self) -> i32 {
22764        self.tile.unwrap_or(0)
22765    }
22766
22767    pub fn clear_tile(&mut self) {
22768        self.tile = ::std::option::Option::None;
22769    }
22770
22771    pub fn has_tile(&self) -> bool {
22772        self.tile.is_some()
22773    }
22774
22775    // Param is passed by value, moved
22776    pub fn set_tile(&mut self, v: i32) {
22777        self.tile = ::std::option::Option::Some(v);
22778    }
22779
22780    // optional bool floor = 5;
22781
22782    pub fn floor(&self) -> bool {
22783        self.floor.unwrap_or(false)
22784    }
22785
22786    pub fn clear_floor(&mut self) {
22787        self.floor = ::std::option::Option::None;
22788    }
22789
22790    pub fn has_floor(&self) -> bool {
22791        self.floor.is_some()
22792    }
22793
22794    // Param is passed by value, moved
22795    pub fn set_floor(&mut self, v: bool) {
22796        self.floor = ::std::option::Option::Some(v);
22797    }
22798
22799    // optional bool west = 6;
22800
22801    pub fn west(&self) -> bool {
22802        self.west.unwrap_or(false)
22803    }
22804
22805    pub fn clear_west(&mut self) {
22806        self.west = ::std::option::Option::None;
22807    }
22808
22809    pub fn has_west(&self) -> bool {
22810        self.west.is_some()
22811    }
22812
22813    // Param is passed by value, moved
22814    pub fn set_west(&mut self, v: bool) {
22815        self.west = ::std::option::Option::Some(v);
22816    }
22817
22818    // optional bool east = 7;
22819
22820    pub fn east(&self) -> bool {
22821        self.east.unwrap_or(false)
22822    }
22823
22824    pub fn clear_east(&mut self) {
22825        self.east = ::std::option::Option::None;
22826    }
22827
22828    pub fn has_east(&self) -> bool {
22829        self.east.is_some()
22830    }
22831
22832    // Param is passed by value, moved
22833    pub fn set_east(&mut self, v: bool) {
22834        self.east = ::std::option::Option::Some(v);
22835    }
22836
22837    // optional bool north = 8;
22838
22839    pub fn north(&self) -> bool {
22840        self.north.unwrap_or(false)
22841    }
22842
22843    pub fn clear_north(&mut self) {
22844        self.north = ::std::option::Option::None;
22845    }
22846
22847    pub fn has_north(&self) -> bool {
22848        self.north.is_some()
22849    }
22850
22851    // Param is passed by value, moved
22852    pub fn set_north(&mut self, v: bool) {
22853        self.north = ::std::option::Option::Some(v);
22854    }
22855
22856    // optional bool south = 9;
22857
22858    pub fn south(&self) -> bool {
22859        self.south.unwrap_or(false)
22860    }
22861
22862    pub fn clear_south(&mut self) {
22863        self.south = ::std::option::Option::None;
22864    }
22865
22866    pub fn has_south(&self) -> bool {
22867        self.south.is_some()
22868    }
22869
22870    // Param is passed by value, moved
22871    pub fn set_south(&mut self, v: bool) {
22872        self.south = ::std::option::Option::Some(v);
22873    }
22874
22875    // optional bool hidden = 10;
22876
22877    pub fn hidden(&self) -> bool {
22878        self.hidden.unwrap_or(false)
22879    }
22880
22881    pub fn clear_hidden(&mut self) {
22882        self.hidden = ::std::option::Option::None;
22883    }
22884
22885    pub fn has_hidden(&self) -> bool {
22886        self.hidden.is_some()
22887    }
22888
22889    // Param is passed by value, moved
22890    pub fn set_hidden(&mut self, v: bool) {
22891        self.hidden = ::std::option::Option::Some(v);
22892    }
22893
22894    // optional bool northwest = 11;
22895
22896    pub fn northwest(&self) -> bool {
22897        self.northwest.unwrap_or(false)
22898    }
22899
22900    pub fn clear_northwest(&mut self) {
22901        self.northwest = ::std::option::Option::None;
22902    }
22903
22904    pub fn has_northwest(&self) -> bool {
22905        self.northwest.is_some()
22906    }
22907
22908    // Param is passed by value, moved
22909    pub fn set_northwest(&mut self, v: bool) {
22910        self.northwest = ::std::option::Option::Some(v);
22911    }
22912
22913    // optional bool northeast = 12;
22914
22915    pub fn northeast(&self) -> bool {
22916        self.northeast.unwrap_or(false)
22917    }
22918
22919    pub fn clear_northeast(&mut self) {
22920        self.northeast = ::std::option::Option::None;
22921    }
22922
22923    pub fn has_northeast(&self) -> bool {
22924        self.northeast.is_some()
22925    }
22926
22927    // Param is passed by value, moved
22928    pub fn set_northeast(&mut self, v: bool) {
22929        self.northeast = ::std::option::Option::Some(v);
22930    }
22931
22932    // optional bool southwest = 13;
22933
22934    pub fn southwest(&self) -> bool {
22935        self.southwest.unwrap_or(false)
22936    }
22937
22938    pub fn clear_southwest(&mut self) {
22939        self.southwest = ::std::option::Option::None;
22940    }
22941
22942    pub fn has_southwest(&self) -> bool {
22943        self.southwest.is_some()
22944    }
22945
22946    // Param is passed by value, moved
22947    pub fn set_southwest(&mut self, v: bool) {
22948        self.southwest = ::std::option::Option::Some(v);
22949    }
22950
22951    // optional bool southeast = 14;
22952
22953    pub fn southeast(&self) -> bool {
22954        self.southeast.unwrap_or(false)
22955    }
22956
22957    pub fn clear_southeast(&mut self) {
22958        self.southeast = ::std::option::Option::None;
22959    }
22960
22961    pub fn has_southeast(&self) -> bool {
22962        self.southeast.is_some()
22963    }
22964
22965    // Param is passed by value, moved
22966    pub fn set_southeast(&mut self, v: bool) {
22967        self.southeast = ::std::option::Option::Some(v);
22968    }
22969
22970    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
22971        let mut fields = ::std::vec::Vec::with_capacity(14);
22972        let mut oneofs = ::std::vec::Vec::with_capacity(0);
22973        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
22974            "pos",
22975            |m: &Engraving| { &m.pos },
22976            |m: &mut Engraving| { &mut m.pos },
22977        ));
22978        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22979            "quality",
22980            |m: &Engraving| { &m.quality },
22981            |m: &mut Engraving| { &mut m.quality },
22982        ));
22983        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22984            "tile",
22985            |m: &Engraving| { &m.tile },
22986            |m: &mut Engraving| { &mut m.tile },
22987        ));
22988        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ArtImage>(
22989            "image",
22990            |m: &Engraving| { &m.image },
22991            |m: &mut Engraving| { &mut m.image },
22992        ));
22993        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22994            "floor",
22995            |m: &Engraving| { &m.floor },
22996            |m: &mut Engraving| { &mut m.floor },
22997        ));
22998        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
22999            "west",
23000            |m: &Engraving| { &m.west },
23001            |m: &mut Engraving| { &mut m.west },
23002        ));
23003        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23004            "east",
23005            |m: &Engraving| { &m.east },
23006            |m: &mut Engraving| { &mut m.east },
23007        ));
23008        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23009            "north",
23010            |m: &Engraving| { &m.north },
23011            |m: &mut Engraving| { &mut m.north },
23012        ));
23013        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23014            "south",
23015            |m: &Engraving| { &m.south },
23016            |m: &mut Engraving| { &mut m.south },
23017        ));
23018        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23019            "hidden",
23020            |m: &Engraving| { &m.hidden },
23021            |m: &mut Engraving| { &mut m.hidden },
23022        ));
23023        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23024            "northwest",
23025            |m: &Engraving| { &m.northwest },
23026            |m: &mut Engraving| { &mut m.northwest },
23027        ));
23028        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23029            "northeast",
23030            |m: &Engraving| { &m.northeast },
23031            |m: &mut Engraving| { &mut m.northeast },
23032        ));
23033        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23034            "southwest",
23035            |m: &Engraving| { &m.southwest },
23036            |m: &mut Engraving| { &mut m.southwest },
23037        ));
23038        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23039            "southeast",
23040            |m: &Engraving| { &m.southeast },
23041            |m: &mut Engraving| { &mut m.southeast },
23042        ));
23043        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Engraving>(
23044            "Engraving",
23045            fields,
23046            oneofs,
23047        )
23048    }
23049}
23050
23051impl ::protobuf::Message for Engraving {
23052    const NAME: &'static str = "Engraving";
23053
23054    fn is_initialized(&self) -> bool {
23055        for v in &self.pos {
23056            if !v.is_initialized() {
23057                return false;
23058            }
23059        };
23060        for v in &self.image {
23061            if !v.is_initialized() {
23062                return false;
23063            }
23064        };
23065        true
23066    }
23067
23068    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23069        while let Some(tag) = is.read_raw_tag_or_eof()? {
23070            match tag {
23071                10 => {
23072                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23073                },
23074                16 => {
23075                    self.quality = ::std::option::Option::Some(is.read_int32()?);
23076                },
23077                24 => {
23078                    self.tile = ::std::option::Option::Some(is.read_int32()?);
23079                },
23080                34 => {
23081                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.image)?;
23082                },
23083                40 => {
23084                    self.floor = ::std::option::Option::Some(is.read_bool()?);
23085                },
23086                48 => {
23087                    self.west = ::std::option::Option::Some(is.read_bool()?);
23088                },
23089                56 => {
23090                    self.east = ::std::option::Option::Some(is.read_bool()?);
23091                },
23092                64 => {
23093                    self.north = ::std::option::Option::Some(is.read_bool()?);
23094                },
23095                72 => {
23096                    self.south = ::std::option::Option::Some(is.read_bool()?);
23097                },
23098                80 => {
23099                    self.hidden = ::std::option::Option::Some(is.read_bool()?);
23100                },
23101                88 => {
23102                    self.northwest = ::std::option::Option::Some(is.read_bool()?);
23103                },
23104                96 => {
23105                    self.northeast = ::std::option::Option::Some(is.read_bool()?);
23106                },
23107                104 => {
23108                    self.southwest = ::std::option::Option::Some(is.read_bool()?);
23109                },
23110                112 => {
23111                    self.southeast = ::std::option::Option::Some(is.read_bool()?);
23112                },
23113                tag => {
23114                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23115                },
23116            };
23117        }
23118        ::std::result::Result::Ok(())
23119    }
23120
23121    // Compute sizes of nested messages
23122    #[allow(unused_variables)]
23123    fn compute_size(&self) -> u64 {
23124        let mut my_size = 0;
23125        if let Some(v) = self.pos.as_ref() {
23126            let len = v.compute_size();
23127            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23128        }
23129        if let Some(v) = self.quality {
23130            my_size += ::protobuf::rt::int32_size(2, v);
23131        }
23132        if let Some(v) = self.tile {
23133            my_size += ::protobuf::rt::int32_size(3, v);
23134        }
23135        if let Some(v) = self.image.as_ref() {
23136            let len = v.compute_size();
23137            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23138        }
23139        if let Some(v) = self.floor {
23140            my_size += 1 + 1;
23141        }
23142        if let Some(v) = self.west {
23143            my_size += 1 + 1;
23144        }
23145        if let Some(v) = self.east {
23146            my_size += 1 + 1;
23147        }
23148        if let Some(v) = self.north {
23149            my_size += 1 + 1;
23150        }
23151        if let Some(v) = self.south {
23152            my_size += 1 + 1;
23153        }
23154        if let Some(v) = self.hidden {
23155            my_size += 1 + 1;
23156        }
23157        if let Some(v) = self.northwest {
23158            my_size += 1 + 1;
23159        }
23160        if let Some(v) = self.northeast {
23161            my_size += 1 + 1;
23162        }
23163        if let Some(v) = self.southwest {
23164            my_size += 1 + 1;
23165        }
23166        if let Some(v) = self.southeast {
23167            my_size += 1 + 1;
23168        }
23169        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23170        self.special_fields.cached_size().set(my_size as u32);
23171        my_size
23172    }
23173
23174    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23175        if let Some(v) = self.pos.as_ref() {
23176            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
23177        }
23178        if let Some(v) = self.quality {
23179            os.write_int32(2, v)?;
23180        }
23181        if let Some(v) = self.tile {
23182            os.write_int32(3, v)?;
23183        }
23184        if let Some(v) = self.image.as_ref() {
23185            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
23186        }
23187        if let Some(v) = self.floor {
23188            os.write_bool(5, v)?;
23189        }
23190        if let Some(v) = self.west {
23191            os.write_bool(6, v)?;
23192        }
23193        if let Some(v) = self.east {
23194            os.write_bool(7, v)?;
23195        }
23196        if let Some(v) = self.north {
23197            os.write_bool(8, v)?;
23198        }
23199        if let Some(v) = self.south {
23200            os.write_bool(9, v)?;
23201        }
23202        if let Some(v) = self.hidden {
23203            os.write_bool(10, v)?;
23204        }
23205        if let Some(v) = self.northwest {
23206            os.write_bool(11, v)?;
23207        }
23208        if let Some(v) = self.northeast {
23209            os.write_bool(12, v)?;
23210        }
23211        if let Some(v) = self.southwest {
23212            os.write_bool(13, v)?;
23213        }
23214        if let Some(v) = self.southeast {
23215            os.write_bool(14, v)?;
23216        }
23217        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23218        ::std::result::Result::Ok(())
23219    }
23220
23221    fn special_fields(&self) -> &::protobuf::SpecialFields {
23222        &self.special_fields
23223    }
23224
23225    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23226        &mut self.special_fields
23227    }
23228
23229    fn new() -> Engraving {
23230        Engraving::new()
23231    }
23232
23233    fn clear(&mut self) {
23234        self.pos.clear();
23235        self.quality = ::std::option::Option::None;
23236        self.tile = ::std::option::Option::None;
23237        self.image.clear();
23238        self.floor = ::std::option::Option::None;
23239        self.west = ::std::option::Option::None;
23240        self.east = ::std::option::Option::None;
23241        self.north = ::std::option::Option::None;
23242        self.south = ::std::option::Option::None;
23243        self.hidden = ::std::option::Option::None;
23244        self.northwest = ::std::option::Option::None;
23245        self.northeast = ::std::option::Option::None;
23246        self.southwest = ::std::option::Option::None;
23247        self.southeast = ::std::option::Option::None;
23248        self.special_fields.clear();
23249    }
23250
23251    fn default_instance() -> &'static Engraving {
23252        static instance: Engraving = Engraving {
23253            pos: ::protobuf::MessageField::none(),
23254            quality: ::std::option::Option::None,
23255            tile: ::std::option::Option::None,
23256            image: ::protobuf::MessageField::none(),
23257            floor: ::std::option::Option::None,
23258            west: ::std::option::Option::None,
23259            east: ::std::option::Option::None,
23260            north: ::std::option::Option::None,
23261            south: ::std::option::Option::None,
23262            hidden: ::std::option::Option::None,
23263            northwest: ::std::option::Option::None,
23264            northeast: ::std::option::Option::None,
23265            southwest: ::std::option::Option::None,
23266            southeast: ::std::option::Option::None,
23267            special_fields: ::protobuf::SpecialFields::new(),
23268        };
23269        &instance
23270    }
23271}
23272
23273impl ::protobuf::MessageFull for Engraving {
23274    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23275        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23276        descriptor.get(|| file_descriptor().message_by_package_relative_name("Engraving").unwrap()).clone()
23277    }
23278}
23279
23280impl ::std::fmt::Display for Engraving {
23281    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23282        ::protobuf::text_format::fmt(self, f)
23283    }
23284}
23285
23286impl ::protobuf::reflect::ProtobufValue for Engraving {
23287    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23288}
23289
23290// @@protoc_insertion_point(message:RemoteFortressReader.FlowInfo)
23291#[derive(PartialEq,Clone,Default,Debug)]
23292pub struct FlowInfo {
23293    // message fields
23294    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.index)
23295    pub index: ::std::option::Option<i32>,
23296    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.type)
23297    pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<FlowType>>,
23298    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.density)
23299    pub density: ::std::option::Option<i32>,
23300    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.pos)
23301    pub pos: ::protobuf::MessageField<Coord>,
23302    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.dest)
23303    pub dest: ::protobuf::MessageField<Coord>,
23304    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.expanding)
23305    pub expanding: ::std::option::Option<bool>,
23306    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.reuse)
23307    pub reuse: ::std::option::Option<bool>,
23308    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.guide_id)
23309    pub guide_id: ::std::option::Option<i32>,
23310    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.material)
23311    pub material: ::protobuf::MessageField<MatPair>,
23312    // @@protoc_insertion_point(field:RemoteFortressReader.FlowInfo.item)
23313    pub item: ::protobuf::MessageField<MatPair>,
23314    // special fields
23315    // @@protoc_insertion_point(special_field:RemoteFortressReader.FlowInfo.special_fields)
23316    pub special_fields: ::protobuf::SpecialFields,
23317}
23318
23319impl<'a> ::std::default::Default for &'a FlowInfo {
23320    fn default() -> &'a FlowInfo {
23321        <FlowInfo as ::protobuf::Message>::default_instance()
23322    }
23323}
23324
23325impl FlowInfo {
23326    pub fn new() -> FlowInfo {
23327        ::std::default::Default::default()
23328    }
23329
23330    // optional int32 index = 1;
23331
23332    pub fn index(&self) -> i32 {
23333        self.index.unwrap_or(0)
23334    }
23335
23336    pub fn clear_index(&mut self) {
23337        self.index = ::std::option::Option::None;
23338    }
23339
23340    pub fn has_index(&self) -> bool {
23341        self.index.is_some()
23342    }
23343
23344    // Param is passed by value, moved
23345    pub fn set_index(&mut self, v: i32) {
23346        self.index = ::std::option::Option::Some(v);
23347    }
23348
23349    // optional .RemoteFortressReader.FlowType type = 2;
23350
23351    pub fn type_(&self) -> FlowType {
23352        match self.type_ {
23353            Some(e) => e.enum_value_or(FlowType::Miasma),
23354            None => FlowType::Miasma,
23355        }
23356    }
23357
23358    pub fn clear_type_(&mut self) {
23359        self.type_ = ::std::option::Option::None;
23360    }
23361
23362    pub fn has_type(&self) -> bool {
23363        self.type_.is_some()
23364    }
23365
23366    // Param is passed by value, moved
23367    pub fn set_type(&mut self, v: FlowType) {
23368        self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
23369    }
23370
23371    // optional int32 density = 3;
23372
23373    pub fn density(&self) -> i32 {
23374        self.density.unwrap_or(0)
23375    }
23376
23377    pub fn clear_density(&mut self) {
23378        self.density = ::std::option::Option::None;
23379    }
23380
23381    pub fn has_density(&self) -> bool {
23382        self.density.is_some()
23383    }
23384
23385    // Param is passed by value, moved
23386    pub fn set_density(&mut self, v: i32) {
23387        self.density = ::std::option::Option::Some(v);
23388    }
23389
23390    // optional bool expanding = 6;
23391
23392    pub fn expanding(&self) -> bool {
23393        self.expanding.unwrap_or(false)
23394    }
23395
23396    pub fn clear_expanding(&mut self) {
23397        self.expanding = ::std::option::Option::None;
23398    }
23399
23400    pub fn has_expanding(&self) -> bool {
23401        self.expanding.is_some()
23402    }
23403
23404    // Param is passed by value, moved
23405    pub fn set_expanding(&mut self, v: bool) {
23406        self.expanding = ::std::option::Option::Some(v);
23407    }
23408
23409    // optional bool reuse = 7;
23410
23411    pub fn reuse(&self) -> bool {
23412        self.reuse.unwrap_or(false)
23413    }
23414
23415    pub fn clear_reuse(&mut self) {
23416        self.reuse = ::std::option::Option::None;
23417    }
23418
23419    pub fn has_reuse(&self) -> bool {
23420        self.reuse.is_some()
23421    }
23422
23423    // Param is passed by value, moved
23424    pub fn set_reuse(&mut self, v: bool) {
23425        self.reuse = ::std::option::Option::Some(v);
23426    }
23427
23428    // optional int32 guide_id = 8;
23429
23430    pub fn guide_id(&self) -> i32 {
23431        self.guide_id.unwrap_or(0)
23432    }
23433
23434    pub fn clear_guide_id(&mut self) {
23435        self.guide_id = ::std::option::Option::None;
23436    }
23437
23438    pub fn has_guide_id(&self) -> bool {
23439        self.guide_id.is_some()
23440    }
23441
23442    // Param is passed by value, moved
23443    pub fn set_guide_id(&mut self, v: i32) {
23444        self.guide_id = ::std::option::Option::Some(v);
23445    }
23446
23447    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23448        let mut fields = ::std::vec::Vec::with_capacity(10);
23449        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23450        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23451            "index",
23452            |m: &FlowInfo| { &m.index },
23453            |m: &mut FlowInfo| { &mut m.index },
23454        ));
23455        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23456            "type",
23457            |m: &FlowInfo| { &m.type_ },
23458            |m: &mut FlowInfo| { &mut m.type_ },
23459        ));
23460        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23461            "density",
23462            |m: &FlowInfo| { &m.density },
23463            |m: &mut FlowInfo| { &mut m.density },
23464        ));
23465        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23466            "pos",
23467            |m: &FlowInfo| { &m.pos },
23468            |m: &mut FlowInfo| { &mut m.pos },
23469        ));
23470        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23471            "dest",
23472            |m: &FlowInfo| { &m.dest },
23473            |m: &mut FlowInfo| { &mut m.dest },
23474        ));
23475        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23476            "expanding",
23477            |m: &FlowInfo| { &m.expanding },
23478            |m: &mut FlowInfo| { &mut m.expanding },
23479        ));
23480        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23481            "reuse",
23482            |m: &FlowInfo| { &m.reuse },
23483            |m: &mut FlowInfo| { &mut m.reuse },
23484        ));
23485        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
23486            "guide_id",
23487            |m: &FlowInfo| { &m.guide_id },
23488            |m: &mut FlowInfo| { &mut m.guide_id },
23489        ));
23490        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
23491            "material",
23492            |m: &FlowInfo| { &m.material },
23493            |m: &mut FlowInfo| { &mut m.material },
23494        ));
23495        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, MatPair>(
23496            "item",
23497            |m: &FlowInfo| { &m.item },
23498            |m: &mut FlowInfo| { &mut m.item },
23499        ));
23500        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<FlowInfo>(
23501            "FlowInfo",
23502            fields,
23503            oneofs,
23504        )
23505    }
23506}
23507
23508impl ::protobuf::Message for FlowInfo {
23509    const NAME: &'static str = "FlowInfo";
23510
23511    fn is_initialized(&self) -> bool {
23512        for v in &self.pos {
23513            if !v.is_initialized() {
23514                return false;
23515            }
23516        };
23517        for v in &self.dest {
23518            if !v.is_initialized() {
23519                return false;
23520            }
23521        };
23522        for v in &self.material {
23523            if !v.is_initialized() {
23524                return false;
23525            }
23526        };
23527        for v in &self.item {
23528            if !v.is_initialized() {
23529                return false;
23530            }
23531        };
23532        true
23533    }
23534
23535    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23536        while let Some(tag) = is.read_raw_tag_or_eof()? {
23537            match tag {
23538                8 => {
23539                    self.index = ::std::option::Option::Some(is.read_int32()?);
23540                },
23541                16 => {
23542                    self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?);
23543                },
23544                24 => {
23545                    self.density = ::std::option::Option::Some(is.read_int32()?);
23546                },
23547                34 => {
23548                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23549                },
23550                42 => {
23551                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dest)?;
23552                },
23553                48 => {
23554                    self.expanding = ::std::option::Option::Some(is.read_bool()?);
23555                },
23556                56 => {
23557                    self.reuse = ::std::option::Option::Some(is.read_bool()?);
23558                },
23559                64 => {
23560                    self.guide_id = ::std::option::Option::Some(is.read_int32()?);
23561                },
23562                74 => {
23563                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.material)?;
23564                },
23565                82 => {
23566                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.item)?;
23567                },
23568                tag => {
23569                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23570                },
23571            };
23572        }
23573        ::std::result::Result::Ok(())
23574    }
23575
23576    // Compute sizes of nested messages
23577    #[allow(unused_variables)]
23578    fn compute_size(&self) -> u64 {
23579        let mut my_size = 0;
23580        if let Some(v) = self.index {
23581            my_size += ::protobuf::rt::int32_size(1, v);
23582        }
23583        if let Some(v) = self.type_ {
23584            my_size += ::protobuf::rt::int32_size(2, v.value());
23585        }
23586        if let Some(v) = self.density {
23587            my_size += ::protobuf::rt::int32_size(3, v);
23588        }
23589        if let Some(v) = self.pos.as_ref() {
23590            let len = v.compute_size();
23591            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23592        }
23593        if let Some(v) = self.dest.as_ref() {
23594            let len = v.compute_size();
23595            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23596        }
23597        if let Some(v) = self.expanding {
23598            my_size += 1 + 1;
23599        }
23600        if let Some(v) = self.reuse {
23601            my_size += 1 + 1;
23602        }
23603        if let Some(v) = self.guide_id {
23604            my_size += ::protobuf::rt::int32_size(8, v);
23605        }
23606        if let Some(v) = self.material.as_ref() {
23607            let len = v.compute_size();
23608            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23609        }
23610        if let Some(v) = self.item.as_ref() {
23611            let len = v.compute_size();
23612            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23613        }
23614        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23615        self.special_fields.cached_size().set(my_size as u32);
23616        my_size
23617    }
23618
23619    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23620        if let Some(v) = self.index {
23621            os.write_int32(1, v)?;
23622        }
23623        if let Some(v) = self.type_ {
23624            os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
23625        }
23626        if let Some(v) = self.density {
23627            os.write_int32(3, v)?;
23628        }
23629        if let Some(v) = self.pos.as_ref() {
23630            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
23631        }
23632        if let Some(v) = self.dest.as_ref() {
23633            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
23634        }
23635        if let Some(v) = self.expanding {
23636            os.write_bool(6, v)?;
23637        }
23638        if let Some(v) = self.reuse {
23639            os.write_bool(7, v)?;
23640        }
23641        if let Some(v) = self.guide_id {
23642            os.write_int32(8, v)?;
23643        }
23644        if let Some(v) = self.material.as_ref() {
23645            ::protobuf::rt::write_message_field_with_cached_size(9, v, os)?;
23646        }
23647        if let Some(v) = self.item.as_ref() {
23648            ::protobuf::rt::write_message_field_with_cached_size(10, v, os)?;
23649        }
23650        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23651        ::std::result::Result::Ok(())
23652    }
23653
23654    fn special_fields(&self) -> &::protobuf::SpecialFields {
23655        &self.special_fields
23656    }
23657
23658    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23659        &mut self.special_fields
23660    }
23661
23662    fn new() -> FlowInfo {
23663        FlowInfo::new()
23664    }
23665
23666    fn clear(&mut self) {
23667        self.index = ::std::option::Option::None;
23668        self.type_ = ::std::option::Option::None;
23669        self.density = ::std::option::Option::None;
23670        self.pos.clear();
23671        self.dest.clear();
23672        self.expanding = ::std::option::Option::None;
23673        self.reuse = ::std::option::Option::None;
23674        self.guide_id = ::std::option::Option::None;
23675        self.material.clear();
23676        self.item.clear();
23677        self.special_fields.clear();
23678    }
23679
23680    fn default_instance() -> &'static FlowInfo {
23681        static instance: FlowInfo = FlowInfo {
23682            index: ::std::option::Option::None,
23683            type_: ::std::option::Option::None,
23684            density: ::std::option::Option::None,
23685            pos: ::protobuf::MessageField::none(),
23686            dest: ::protobuf::MessageField::none(),
23687            expanding: ::std::option::Option::None,
23688            reuse: ::std::option::Option::None,
23689            guide_id: ::std::option::Option::None,
23690            material: ::protobuf::MessageField::none(),
23691            item: ::protobuf::MessageField::none(),
23692            special_fields: ::protobuf::SpecialFields::new(),
23693        };
23694        &instance
23695    }
23696}
23697
23698impl ::protobuf::MessageFull for FlowInfo {
23699    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23700        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23701        descriptor.get(|| file_descriptor().message_by_package_relative_name("FlowInfo").unwrap()).clone()
23702    }
23703}
23704
23705impl ::std::fmt::Display for FlowInfo {
23706    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23707        ::protobuf::text_format::fmt(self, f)
23708    }
23709}
23710
23711impl ::protobuf::reflect::ProtobufValue for FlowInfo {
23712    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23713}
23714
23715// @@protoc_insertion_point(message:RemoteFortressReader.Wave)
23716#[derive(PartialEq,Clone,Default,Debug)]
23717pub struct Wave {
23718    // message fields
23719    // @@protoc_insertion_point(field:RemoteFortressReader.Wave.dest)
23720    pub dest: ::protobuf::MessageField<Coord>,
23721    // @@protoc_insertion_point(field:RemoteFortressReader.Wave.pos)
23722    pub pos: ::protobuf::MessageField<Coord>,
23723    // special fields
23724    // @@protoc_insertion_point(special_field:RemoteFortressReader.Wave.special_fields)
23725    pub special_fields: ::protobuf::SpecialFields,
23726}
23727
23728impl<'a> ::std::default::Default for &'a Wave {
23729    fn default() -> &'a Wave {
23730        <Wave as ::protobuf::Message>::default_instance()
23731    }
23732}
23733
23734impl Wave {
23735    pub fn new() -> Wave {
23736        ::std::default::Default::default()
23737    }
23738
23739    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
23740        let mut fields = ::std::vec::Vec::with_capacity(2);
23741        let mut oneofs = ::std::vec::Vec::with_capacity(0);
23742        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23743            "dest",
23744            |m: &Wave| { &m.dest },
23745            |m: &mut Wave| { &mut m.dest },
23746        ));
23747        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Coord>(
23748            "pos",
23749            |m: &Wave| { &m.pos },
23750            |m: &mut Wave| { &mut m.pos },
23751        ));
23752        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Wave>(
23753            "Wave",
23754            fields,
23755            oneofs,
23756        )
23757    }
23758}
23759
23760impl ::protobuf::Message for Wave {
23761    const NAME: &'static str = "Wave";
23762
23763    fn is_initialized(&self) -> bool {
23764        true
23765    }
23766
23767    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
23768        while let Some(tag) = is.read_raw_tag_or_eof()? {
23769            match tag {
23770                10 => {
23771                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.dest)?;
23772                },
23773                18 => {
23774                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.pos)?;
23775                },
23776                tag => {
23777                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
23778                },
23779            };
23780        }
23781        ::std::result::Result::Ok(())
23782    }
23783
23784    // Compute sizes of nested messages
23785    #[allow(unused_variables)]
23786    fn compute_size(&self) -> u64 {
23787        let mut my_size = 0;
23788        if let Some(v) = self.dest.as_ref() {
23789            let len = v.compute_size();
23790            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23791        }
23792        if let Some(v) = self.pos.as_ref() {
23793            let len = v.compute_size();
23794            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
23795        }
23796        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
23797        self.special_fields.cached_size().set(my_size as u32);
23798        my_size
23799    }
23800
23801    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
23802        if let Some(v) = self.dest.as_ref() {
23803            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
23804        }
23805        if let Some(v) = self.pos.as_ref() {
23806            ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?;
23807        }
23808        os.write_unknown_fields(self.special_fields.unknown_fields())?;
23809        ::std::result::Result::Ok(())
23810    }
23811
23812    fn special_fields(&self) -> &::protobuf::SpecialFields {
23813        &self.special_fields
23814    }
23815
23816    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
23817        &mut self.special_fields
23818    }
23819
23820    fn new() -> Wave {
23821        Wave::new()
23822    }
23823
23824    fn clear(&mut self) {
23825        self.dest.clear();
23826        self.pos.clear();
23827        self.special_fields.clear();
23828    }
23829
23830    fn default_instance() -> &'static Wave {
23831        static instance: Wave = Wave {
23832            dest: ::protobuf::MessageField::none(),
23833            pos: ::protobuf::MessageField::none(),
23834            special_fields: ::protobuf::SpecialFields::new(),
23835        };
23836        &instance
23837    }
23838}
23839
23840impl ::protobuf::MessageFull for Wave {
23841    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
23842        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
23843        descriptor.get(|| file_descriptor().message_by_package_relative_name("Wave").unwrap()).clone()
23844    }
23845}
23846
23847impl ::std::fmt::Display for Wave {
23848    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
23849        ::protobuf::text_format::fmt(self, f)
23850    }
23851}
23852
23853impl ::protobuf::reflect::ProtobufValue for Wave {
23854    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
23855}
23856
23857#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
23858// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeShape)
23859pub enum TiletypeShape {
23860    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.NO_SHAPE)
23861    NO_SHAPE = -1,
23862    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.EMPTY)
23863    EMPTY = 0,
23864    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.FLOOR)
23865    FLOOR = 1,
23866    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BOULDER)
23867    BOULDER = 2,
23868    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.PEBBLES)
23869    PEBBLES = 3,
23870    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.WALL)
23871    WALL = 4,
23872    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.FORTIFICATION)
23873    FORTIFICATION = 5,
23874    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_UP)
23875    STAIR_UP = 6,
23876    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_DOWN)
23877    STAIR_DOWN = 7,
23878    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.STAIR_UPDOWN)
23879    STAIR_UPDOWN = 8,
23880    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.RAMP)
23881    RAMP = 9,
23882    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.RAMP_TOP)
23883    RAMP_TOP = 10,
23884    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BROOK_BED)
23885    BROOK_BED = 11,
23886    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BROOK_TOP)
23887    BROOK_TOP = 12,
23888    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TREE_SHAPE)
23889    TREE_SHAPE = 13,
23890    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.SAPLING)
23891    SAPLING = 14,
23892    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.SHRUB)
23893    SHRUB = 15,
23894    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.ENDLESS_PIT)
23895    ENDLESS_PIT = 16,
23896    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.BRANCH)
23897    BRANCH = 17,
23898    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TRUNK_BRANCH)
23899    TRUNK_BRANCH = 18,
23900    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeShape.TWIG)
23901    TWIG = 19,
23902}
23903
23904impl ::protobuf::Enum for TiletypeShape {
23905    const NAME: &'static str = "TiletypeShape";
23906
23907    fn value(&self) -> i32 {
23908        *self as i32
23909    }
23910
23911    fn from_i32(value: i32) -> ::std::option::Option<TiletypeShape> {
23912        match value {
23913            -1 => ::std::option::Option::Some(TiletypeShape::NO_SHAPE),
23914            0 => ::std::option::Option::Some(TiletypeShape::EMPTY),
23915            1 => ::std::option::Option::Some(TiletypeShape::FLOOR),
23916            2 => ::std::option::Option::Some(TiletypeShape::BOULDER),
23917            3 => ::std::option::Option::Some(TiletypeShape::PEBBLES),
23918            4 => ::std::option::Option::Some(TiletypeShape::WALL),
23919            5 => ::std::option::Option::Some(TiletypeShape::FORTIFICATION),
23920            6 => ::std::option::Option::Some(TiletypeShape::STAIR_UP),
23921            7 => ::std::option::Option::Some(TiletypeShape::STAIR_DOWN),
23922            8 => ::std::option::Option::Some(TiletypeShape::STAIR_UPDOWN),
23923            9 => ::std::option::Option::Some(TiletypeShape::RAMP),
23924            10 => ::std::option::Option::Some(TiletypeShape::RAMP_TOP),
23925            11 => ::std::option::Option::Some(TiletypeShape::BROOK_BED),
23926            12 => ::std::option::Option::Some(TiletypeShape::BROOK_TOP),
23927            13 => ::std::option::Option::Some(TiletypeShape::TREE_SHAPE),
23928            14 => ::std::option::Option::Some(TiletypeShape::SAPLING),
23929            15 => ::std::option::Option::Some(TiletypeShape::SHRUB),
23930            16 => ::std::option::Option::Some(TiletypeShape::ENDLESS_PIT),
23931            17 => ::std::option::Option::Some(TiletypeShape::BRANCH),
23932            18 => ::std::option::Option::Some(TiletypeShape::TRUNK_BRANCH),
23933            19 => ::std::option::Option::Some(TiletypeShape::TWIG),
23934            _ => ::std::option::Option::None
23935        }
23936    }
23937
23938    fn from_str(str: &str) -> ::std::option::Option<TiletypeShape> {
23939        match str {
23940            "NO_SHAPE" => ::std::option::Option::Some(TiletypeShape::NO_SHAPE),
23941            "EMPTY" => ::std::option::Option::Some(TiletypeShape::EMPTY),
23942            "FLOOR" => ::std::option::Option::Some(TiletypeShape::FLOOR),
23943            "BOULDER" => ::std::option::Option::Some(TiletypeShape::BOULDER),
23944            "PEBBLES" => ::std::option::Option::Some(TiletypeShape::PEBBLES),
23945            "WALL" => ::std::option::Option::Some(TiletypeShape::WALL),
23946            "FORTIFICATION" => ::std::option::Option::Some(TiletypeShape::FORTIFICATION),
23947            "STAIR_UP" => ::std::option::Option::Some(TiletypeShape::STAIR_UP),
23948            "STAIR_DOWN" => ::std::option::Option::Some(TiletypeShape::STAIR_DOWN),
23949            "STAIR_UPDOWN" => ::std::option::Option::Some(TiletypeShape::STAIR_UPDOWN),
23950            "RAMP" => ::std::option::Option::Some(TiletypeShape::RAMP),
23951            "RAMP_TOP" => ::std::option::Option::Some(TiletypeShape::RAMP_TOP),
23952            "BROOK_BED" => ::std::option::Option::Some(TiletypeShape::BROOK_BED),
23953            "BROOK_TOP" => ::std::option::Option::Some(TiletypeShape::BROOK_TOP),
23954            "TREE_SHAPE" => ::std::option::Option::Some(TiletypeShape::TREE_SHAPE),
23955            "SAPLING" => ::std::option::Option::Some(TiletypeShape::SAPLING),
23956            "SHRUB" => ::std::option::Option::Some(TiletypeShape::SHRUB),
23957            "ENDLESS_PIT" => ::std::option::Option::Some(TiletypeShape::ENDLESS_PIT),
23958            "BRANCH" => ::std::option::Option::Some(TiletypeShape::BRANCH),
23959            "TRUNK_BRANCH" => ::std::option::Option::Some(TiletypeShape::TRUNK_BRANCH),
23960            "TWIG" => ::std::option::Option::Some(TiletypeShape::TWIG),
23961            _ => ::std::option::Option::None
23962        }
23963    }
23964
23965    const VALUES: &'static [TiletypeShape] = &[
23966        TiletypeShape::NO_SHAPE,
23967        TiletypeShape::EMPTY,
23968        TiletypeShape::FLOOR,
23969        TiletypeShape::BOULDER,
23970        TiletypeShape::PEBBLES,
23971        TiletypeShape::WALL,
23972        TiletypeShape::FORTIFICATION,
23973        TiletypeShape::STAIR_UP,
23974        TiletypeShape::STAIR_DOWN,
23975        TiletypeShape::STAIR_UPDOWN,
23976        TiletypeShape::RAMP,
23977        TiletypeShape::RAMP_TOP,
23978        TiletypeShape::BROOK_BED,
23979        TiletypeShape::BROOK_TOP,
23980        TiletypeShape::TREE_SHAPE,
23981        TiletypeShape::SAPLING,
23982        TiletypeShape::SHRUB,
23983        TiletypeShape::ENDLESS_PIT,
23984        TiletypeShape::BRANCH,
23985        TiletypeShape::TRUNK_BRANCH,
23986        TiletypeShape::TWIG,
23987    ];
23988}
23989
23990impl ::protobuf::EnumFull for TiletypeShape {
23991    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
23992        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
23993        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeShape").unwrap()).clone()
23994    }
23995
23996    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
23997        let index = match self {
23998            TiletypeShape::NO_SHAPE => 0,
23999            TiletypeShape::EMPTY => 1,
24000            TiletypeShape::FLOOR => 2,
24001            TiletypeShape::BOULDER => 3,
24002            TiletypeShape::PEBBLES => 4,
24003            TiletypeShape::WALL => 5,
24004            TiletypeShape::FORTIFICATION => 6,
24005            TiletypeShape::STAIR_UP => 7,
24006            TiletypeShape::STAIR_DOWN => 8,
24007            TiletypeShape::STAIR_UPDOWN => 9,
24008            TiletypeShape::RAMP => 10,
24009            TiletypeShape::RAMP_TOP => 11,
24010            TiletypeShape::BROOK_BED => 12,
24011            TiletypeShape::BROOK_TOP => 13,
24012            TiletypeShape::TREE_SHAPE => 14,
24013            TiletypeShape::SAPLING => 15,
24014            TiletypeShape::SHRUB => 16,
24015            TiletypeShape::ENDLESS_PIT => 17,
24016            TiletypeShape::BRANCH => 18,
24017            TiletypeShape::TRUNK_BRANCH => 19,
24018            TiletypeShape::TWIG => 20,
24019        };
24020        Self::enum_descriptor().value_by_index(index)
24021    }
24022}
24023
24024// Note, `Default` is implemented although default value is not 0
24025impl ::std::default::Default for TiletypeShape {
24026    fn default() -> Self {
24027        TiletypeShape::NO_SHAPE
24028    }
24029}
24030
24031impl TiletypeShape {
24032    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24033        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeShape>("TiletypeShape")
24034    }
24035}
24036
24037#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24038// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeSpecial)
24039pub enum TiletypeSpecial {
24040    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.NO_SPECIAL)
24041    NO_SPECIAL = -1,
24042    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.NORMAL)
24043    NORMAL = 0,
24044    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.RIVER_SOURCE)
24045    RIVER_SOURCE = 1,
24046    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WATERFALL)
24047    WATERFALL = 2,
24048    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.SMOOTH)
24049    SMOOTH = 3,
24050    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.FURROWED)
24051    FURROWED = 4,
24052    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WET)
24053    WET = 5,
24054    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.DEAD)
24055    DEAD = 6,
24056    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_1)
24057    WORN_1 = 7,
24058    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_2)
24059    WORN_2 = 8,
24060    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.WORN_3)
24061    WORN_3 = 9,
24062    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.TRACK)
24063    TRACK = 10,
24064    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeSpecial.SMOOTH_DEAD)
24065    SMOOTH_DEAD = 11,
24066}
24067
24068impl ::protobuf::Enum for TiletypeSpecial {
24069    const NAME: &'static str = "TiletypeSpecial";
24070
24071    fn value(&self) -> i32 {
24072        *self as i32
24073    }
24074
24075    fn from_i32(value: i32) -> ::std::option::Option<TiletypeSpecial> {
24076        match value {
24077            -1 => ::std::option::Option::Some(TiletypeSpecial::NO_SPECIAL),
24078            0 => ::std::option::Option::Some(TiletypeSpecial::NORMAL),
24079            1 => ::std::option::Option::Some(TiletypeSpecial::RIVER_SOURCE),
24080            2 => ::std::option::Option::Some(TiletypeSpecial::WATERFALL),
24081            3 => ::std::option::Option::Some(TiletypeSpecial::SMOOTH),
24082            4 => ::std::option::Option::Some(TiletypeSpecial::FURROWED),
24083            5 => ::std::option::Option::Some(TiletypeSpecial::WET),
24084            6 => ::std::option::Option::Some(TiletypeSpecial::DEAD),
24085            7 => ::std::option::Option::Some(TiletypeSpecial::WORN_1),
24086            8 => ::std::option::Option::Some(TiletypeSpecial::WORN_2),
24087            9 => ::std::option::Option::Some(TiletypeSpecial::WORN_3),
24088            10 => ::std::option::Option::Some(TiletypeSpecial::TRACK),
24089            11 => ::std::option::Option::Some(TiletypeSpecial::SMOOTH_DEAD),
24090            _ => ::std::option::Option::None
24091        }
24092    }
24093
24094    fn from_str(str: &str) -> ::std::option::Option<TiletypeSpecial> {
24095        match str {
24096            "NO_SPECIAL" => ::std::option::Option::Some(TiletypeSpecial::NO_SPECIAL),
24097            "NORMAL" => ::std::option::Option::Some(TiletypeSpecial::NORMAL),
24098            "RIVER_SOURCE" => ::std::option::Option::Some(TiletypeSpecial::RIVER_SOURCE),
24099            "WATERFALL" => ::std::option::Option::Some(TiletypeSpecial::WATERFALL),
24100            "SMOOTH" => ::std::option::Option::Some(TiletypeSpecial::SMOOTH),
24101            "FURROWED" => ::std::option::Option::Some(TiletypeSpecial::FURROWED),
24102            "WET" => ::std::option::Option::Some(TiletypeSpecial::WET),
24103            "DEAD" => ::std::option::Option::Some(TiletypeSpecial::DEAD),
24104            "WORN_1" => ::std::option::Option::Some(TiletypeSpecial::WORN_1),
24105            "WORN_2" => ::std::option::Option::Some(TiletypeSpecial::WORN_2),
24106            "WORN_3" => ::std::option::Option::Some(TiletypeSpecial::WORN_3),
24107            "TRACK" => ::std::option::Option::Some(TiletypeSpecial::TRACK),
24108            "SMOOTH_DEAD" => ::std::option::Option::Some(TiletypeSpecial::SMOOTH_DEAD),
24109            _ => ::std::option::Option::None
24110        }
24111    }
24112
24113    const VALUES: &'static [TiletypeSpecial] = &[
24114        TiletypeSpecial::NO_SPECIAL,
24115        TiletypeSpecial::NORMAL,
24116        TiletypeSpecial::RIVER_SOURCE,
24117        TiletypeSpecial::WATERFALL,
24118        TiletypeSpecial::SMOOTH,
24119        TiletypeSpecial::FURROWED,
24120        TiletypeSpecial::WET,
24121        TiletypeSpecial::DEAD,
24122        TiletypeSpecial::WORN_1,
24123        TiletypeSpecial::WORN_2,
24124        TiletypeSpecial::WORN_3,
24125        TiletypeSpecial::TRACK,
24126        TiletypeSpecial::SMOOTH_DEAD,
24127    ];
24128}
24129
24130impl ::protobuf::EnumFull for TiletypeSpecial {
24131    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24132        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24133        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeSpecial").unwrap()).clone()
24134    }
24135
24136    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24137        let index = match self {
24138            TiletypeSpecial::NO_SPECIAL => 0,
24139            TiletypeSpecial::NORMAL => 1,
24140            TiletypeSpecial::RIVER_SOURCE => 2,
24141            TiletypeSpecial::WATERFALL => 3,
24142            TiletypeSpecial::SMOOTH => 4,
24143            TiletypeSpecial::FURROWED => 5,
24144            TiletypeSpecial::WET => 6,
24145            TiletypeSpecial::DEAD => 7,
24146            TiletypeSpecial::WORN_1 => 8,
24147            TiletypeSpecial::WORN_2 => 9,
24148            TiletypeSpecial::WORN_3 => 10,
24149            TiletypeSpecial::TRACK => 11,
24150            TiletypeSpecial::SMOOTH_DEAD => 12,
24151        };
24152        Self::enum_descriptor().value_by_index(index)
24153    }
24154}
24155
24156// Note, `Default` is implemented although default value is not 0
24157impl ::std::default::Default for TiletypeSpecial {
24158    fn default() -> Self {
24159        TiletypeSpecial::NO_SPECIAL
24160    }
24161}
24162
24163impl TiletypeSpecial {
24164    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24165        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeSpecial>("TiletypeSpecial")
24166    }
24167}
24168
24169#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24170// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeMaterial)
24171pub enum TiletypeMaterial {
24172    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.NO_MATERIAL)
24173    NO_MATERIAL = -1,
24174    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.AIR)
24175    AIR = 0,
24176    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.SOIL)
24177    SOIL = 1,
24178    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.STONE)
24179    STONE = 2,
24180    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FEATURE)
24181    FEATURE = 3,
24182    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.LAVA_STONE)
24183    LAVA_STONE = 4,
24184    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MINERAL)
24185    MINERAL = 5,
24186    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FROZEN_LIQUID)
24187    FROZEN_LIQUID = 6,
24188    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.CONSTRUCTION)
24189    CONSTRUCTION = 7,
24190    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_LIGHT)
24191    GRASS_LIGHT = 8,
24192    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DARK)
24193    GRASS_DARK = 9,
24194    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DRY)
24195    GRASS_DRY = 10,
24196    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.GRASS_DEAD)
24197    GRASS_DEAD = 11,
24198    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.PLANT)
24199    PLANT = 12,
24200    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.HFS)
24201    HFS = 13,
24202    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.CAMPFIRE)
24203    CAMPFIRE = 14,
24204    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.FIRE)
24205    FIRE = 15,
24206    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.ASHES)
24207    ASHES = 16,
24208    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MAGMA)
24209    MAGMA = 17,
24210    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.DRIFTWOOD)
24211    DRIFTWOOD = 18,
24212    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.POOL)
24213    POOL = 19,
24214    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.BROOK)
24215    BROOK = 20,
24216    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.RIVER)
24217    RIVER = 21,
24218    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.ROOT)
24219    ROOT = 22,
24220    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.TREE_MATERIAL)
24221    TREE_MATERIAL = 23,
24222    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.MUSHROOM)
24223    MUSHROOM = 24,
24224    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeMaterial.UNDERWORLD_GATE)
24225    UNDERWORLD_GATE = 25,
24226}
24227
24228impl ::protobuf::Enum for TiletypeMaterial {
24229    const NAME: &'static str = "TiletypeMaterial";
24230
24231    fn value(&self) -> i32 {
24232        *self as i32
24233    }
24234
24235    fn from_i32(value: i32) -> ::std::option::Option<TiletypeMaterial> {
24236        match value {
24237            -1 => ::std::option::Option::Some(TiletypeMaterial::NO_MATERIAL),
24238            0 => ::std::option::Option::Some(TiletypeMaterial::AIR),
24239            1 => ::std::option::Option::Some(TiletypeMaterial::SOIL),
24240            2 => ::std::option::Option::Some(TiletypeMaterial::STONE),
24241            3 => ::std::option::Option::Some(TiletypeMaterial::FEATURE),
24242            4 => ::std::option::Option::Some(TiletypeMaterial::LAVA_STONE),
24243            5 => ::std::option::Option::Some(TiletypeMaterial::MINERAL),
24244            6 => ::std::option::Option::Some(TiletypeMaterial::FROZEN_LIQUID),
24245            7 => ::std::option::Option::Some(TiletypeMaterial::CONSTRUCTION),
24246            8 => ::std::option::Option::Some(TiletypeMaterial::GRASS_LIGHT),
24247            9 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DARK),
24248            10 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DRY),
24249            11 => ::std::option::Option::Some(TiletypeMaterial::GRASS_DEAD),
24250            12 => ::std::option::Option::Some(TiletypeMaterial::PLANT),
24251            13 => ::std::option::Option::Some(TiletypeMaterial::HFS),
24252            14 => ::std::option::Option::Some(TiletypeMaterial::CAMPFIRE),
24253            15 => ::std::option::Option::Some(TiletypeMaterial::FIRE),
24254            16 => ::std::option::Option::Some(TiletypeMaterial::ASHES),
24255            17 => ::std::option::Option::Some(TiletypeMaterial::MAGMA),
24256            18 => ::std::option::Option::Some(TiletypeMaterial::DRIFTWOOD),
24257            19 => ::std::option::Option::Some(TiletypeMaterial::POOL),
24258            20 => ::std::option::Option::Some(TiletypeMaterial::BROOK),
24259            21 => ::std::option::Option::Some(TiletypeMaterial::RIVER),
24260            22 => ::std::option::Option::Some(TiletypeMaterial::ROOT),
24261            23 => ::std::option::Option::Some(TiletypeMaterial::TREE_MATERIAL),
24262            24 => ::std::option::Option::Some(TiletypeMaterial::MUSHROOM),
24263            25 => ::std::option::Option::Some(TiletypeMaterial::UNDERWORLD_GATE),
24264            _ => ::std::option::Option::None
24265        }
24266    }
24267
24268    fn from_str(str: &str) -> ::std::option::Option<TiletypeMaterial> {
24269        match str {
24270            "NO_MATERIAL" => ::std::option::Option::Some(TiletypeMaterial::NO_MATERIAL),
24271            "AIR" => ::std::option::Option::Some(TiletypeMaterial::AIR),
24272            "SOIL" => ::std::option::Option::Some(TiletypeMaterial::SOIL),
24273            "STONE" => ::std::option::Option::Some(TiletypeMaterial::STONE),
24274            "FEATURE" => ::std::option::Option::Some(TiletypeMaterial::FEATURE),
24275            "LAVA_STONE" => ::std::option::Option::Some(TiletypeMaterial::LAVA_STONE),
24276            "MINERAL" => ::std::option::Option::Some(TiletypeMaterial::MINERAL),
24277            "FROZEN_LIQUID" => ::std::option::Option::Some(TiletypeMaterial::FROZEN_LIQUID),
24278            "CONSTRUCTION" => ::std::option::Option::Some(TiletypeMaterial::CONSTRUCTION),
24279            "GRASS_LIGHT" => ::std::option::Option::Some(TiletypeMaterial::GRASS_LIGHT),
24280            "GRASS_DARK" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DARK),
24281            "GRASS_DRY" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DRY),
24282            "GRASS_DEAD" => ::std::option::Option::Some(TiletypeMaterial::GRASS_DEAD),
24283            "PLANT" => ::std::option::Option::Some(TiletypeMaterial::PLANT),
24284            "HFS" => ::std::option::Option::Some(TiletypeMaterial::HFS),
24285            "CAMPFIRE" => ::std::option::Option::Some(TiletypeMaterial::CAMPFIRE),
24286            "FIRE" => ::std::option::Option::Some(TiletypeMaterial::FIRE),
24287            "ASHES" => ::std::option::Option::Some(TiletypeMaterial::ASHES),
24288            "MAGMA" => ::std::option::Option::Some(TiletypeMaterial::MAGMA),
24289            "DRIFTWOOD" => ::std::option::Option::Some(TiletypeMaterial::DRIFTWOOD),
24290            "POOL" => ::std::option::Option::Some(TiletypeMaterial::POOL),
24291            "BROOK" => ::std::option::Option::Some(TiletypeMaterial::BROOK),
24292            "RIVER" => ::std::option::Option::Some(TiletypeMaterial::RIVER),
24293            "ROOT" => ::std::option::Option::Some(TiletypeMaterial::ROOT),
24294            "TREE_MATERIAL" => ::std::option::Option::Some(TiletypeMaterial::TREE_MATERIAL),
24295            "MUSHROOM" => ::std::option::Option::Some(TiletypeMaterial::MUSHROOM),
24296            "UNDERWORLD_GATE" => ::std::option::Option::Some(TiletypeMaterial::UNDERWORLD_GATE),
24297            _ => ::std::option::Option::None
24298        }
24299    }
24300
24301    const VALUES: &'static [TiletypeMaterial] = &[
24302        TiletypeMaterial::NO_MATERIAL,
24303        TiletypeMaterial::AIR,
24304        TiletypeMaterial::SOIL,
24305        TiletypeMaterial::STONE,
24306        TiletypeMaterial::FEATURE,
24307        TiletypeMaterial::LAVA_STONE,
24308        TiletypeMaterial::MINERAL,
24309        TiletypeMaterial::FROZEN_LIQUID,
24310        TiletypeMaterial::CONSTRUCTION,
24311        TiletypeMaterial::GRASS_LIGHT,
24312        TiletypeMaterial::GRASS_DARK,
24313        TiletypeMaterial::GRASS_DRY,
24314        TiletypeMaterial::GRASS_DEAD,
24315        TiletypeMaterial::PLANT,
24316        TiletypeMaterial::HFS,
24317        TiletypeMaterial::CAMPFIRE,
24318        TiletypeMaterial::FIRE,
24319        TiletypeMaterial::ASHES,
24320        TiletypeMaterial::MAGMA,
24321        TiletypeMaterial::DRIFTWOOD,
24322        TiletypeMaterial::POOL,
24323        TiletypeMaterial::BROOK,
24324        TiletypeMaterial::RIVER,
24325        TiletypeMaterial::ROOT,
24326        TiletypeMaterial::TREE_MATERIAL,
24327        TiletypeMaterial::MUSHROOM,
24328        TiletypeMaterial::UNDERWORLD_GATE,
24329    ];
24330}
24331
24332impl ::protobuf::EnumFull for TiletypeMaterial {
24333    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24334        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24335        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeMaterial").unwrap()).clone()
24336    }
24337
24338    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24339        let index = match self {
24340            TiletypeMaterial::NO_MATERIAL => 0,
24341            TiletypeMaterial::AIR => 1,
24342            TiletypeMaterial::SOIL => 2,
24343            TiletypeMaterial::STONE => 3,
24344            TiletypeMaterial::FEATURE => 4,
24345            TiletypeMaterial::LAVA_STONE => 5,
24346            TiletypeMaterial::MINERAL => 6,
24347            TiletypeMaterial::FROZEN_LIQUID => 7,
24348            TiletypeMaterial::CONSTRUCTION => 8,
24349            TiletypeMaterial::GRASS_LIGHT => 9,
24350            TiletypeMaterial::GRASS_DARK => 10,
24351            TiletypeMaterial::GRASS_DRY => 11,
24352            TiletypeMaterial::GRASS_DEAD => 12,
24353            TiletypeMaterial::PLANT => 13,
24354            TiletypeMaterial::HFS => 14,
24355            TiletypeMaterial::CAMPFIRE => 15,
24356            TiletypeMaterial::FIRE => 16,
24357            TiletypeMaterial::ASHES => 17,
24358            TiletypeMaterial::MAGMA => 18,
24359            TiletypeMaterial::DRIFTWOOD => 19,
24360            TiletypeMaterial::POOL => 20,
24361            TiletypeMaterial::BROOK => 21,
24362            TiletypeMaterial::RIVER => 22,
24363            TiletypeMaterial::ROOT => 23,
24364            TiletypeMaterial::TREE_MATERIAL => 24,
24365            TiletypeMaterial::MUSHROOM => 25,
24366            TiletypeMaterial::UNDERWORLD_GATE => 26,
24367        };
24368        Self::enum_descriptor().value_by_index(index)
24369    }
24370}
24371
24372// Note, `Default` is implemented although default value is not 0
24373impl ::std::default::Default for TiletypeMaterial {
24374    fn default() -> Self {
24375        TiletypeMaterial::NO_MATERIAL
24376    }
24377}
24378
24379impl TiletypeMaterial {
24380    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24381        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeMaterial>("TiletypeMaterial")
24382    }
24383}
24384
24385#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24386// @@protoc_insertion_point(enum:RemoteFortressReader.TiletypeVariant)
24387pub enum TiletypeVariant {
24388    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.NO_VARIANT)
24389    NO_VARIANT = -1,
24390    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_1)
24391    VAR_1 = 0,
24392    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_2)
24393    VAR_2 = 1,
24394    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_3)
24395    VAR_3 = 2,
24396    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TiletypeVariant.VAR_4)
24397    VAR_4 = 3,
24398}
24399
24400impl ::protobuf::Enum for TiletypeVariant {
24401    const NAME: &'static str = "TiletypeVariant";
24402
24403    fn value(&self) -> i32 {
24404        *self as i32
24405    }
24406
24407    fn from_i32(value: i32) -> ::std::option::Option<TiletypeVariant> {
24408        match value {
24409            -1 => ::std::option::Option::Some(TiletypeVariant::NO_VARIANT),
24410            0 => ::std::option::Option::Some(TiletypeVariant::VAR_1),
24411            1 => ::std::option::Option::Some(TiletypeVariant::VAR_2),
24412            2 => ::std::option::Option::Some(TiletypeVariant::VAR_3),
24413            3 => ::std::option::Option::Some(TiletypeVariant::VAR_4),
24414            _ => ::std::option::Option::None
24415        }
24416    }
24417
24418    fn from_str(str: &str) -> ::std::option::Option<TiletypeVariant> {
24419        match str {
24420            "NO_VARIANT" => ::std::option::Option::Some(TiletypeVariant::NO_VARIANT),
24421            "VAR_1" => ::std::option::Option::Some(TiletypeVariant::VAR_1),
24422            "VAR_2" => ::std::option::Option::Some(TiletypeVariant::VAR_2),
24423            "VAR_3" => ::std::option::Option::Some(TiletypeVariant::VAR_3),
24424            "VAR_4" => ::std::option::Option::Some(TiletypeVariant::VAR_4),
24425            _ => ::std::option::Option::None
24426        }
24427    }
24428
24429    const VALUES: &'static [TiletypeVariant] = &[
24430        TiletypeVariant::NO_VARIANT,
24431        TiletypeVariant::VAR_1,
24432        TiletypeVariant::VAR_2,
24433        TiletypeVariant::VAR_3,
24434        TiletypeVariant::VAR_4,
24435    ];
24436}
24437
24438impl ::protobuf::EnumFull for TiletypeVariant {
24439    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24440        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24441        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TiletypeVariant").unwrap()).clone()
24442    }
24443
24444    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24445        let index = match self {
24446            TiletypeVariant::NO_VARIANT => 0,
24447            TiletypeVariant::VAR_1 => 1,
24448            TiletypeVariant::VAR_2 => 2,
24449            TiletypeVariant::VAR_3 => 3,
24450            TiletypeVariant::VAR_4 => 4,
24451        };
24452        Self::enum_descriptor().value_by_index(index)
24453    }
24454}
24455
24456// Note, `Default` is implemented although default value is not 0
24457impl ::std::default::Default for TiletypeVariant {
24458    fn default() -> Self {
24459        TiletypeVariant::NO_VARIANT
24460    }
24461}
24462
24463impl TiletypeVariant {
24464    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24465        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TiletypeVariant>("TiletypeVariant")
24466    }
24467}
24468
24469#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24470// @@protoc_insertion_point(enum:RemoteFortressReader.WorldPoles)
24471pub enum WorldPoles {
24472    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.NO_POLES)
24473    NO_POLES = 0,
24474    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.NORTH_POLE)
24475    NORTH_POLE = 1,
24476    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.SOUTH_POLE)
24477    SOUTH_POLE = 2,
24478    // @@protoc_insertion_point(enum_value:RemoteFortressReader.WorldPoles.BOTH_POLES)
24479    BOTH_POLES = 3,
24480}
24481
24482impl ::protobuf::Enum for WorldPoles {
24483    const NAME: &'static str = "WorldPoles";
24484
24485    fn value(&self) -> i32 {
24486        *self as i32
24487    }
24488
24489    fn from_i32(value: i32) -> ::std::option::Option<WorldPoles> {
24490        match value {
24491            0 => ::std::option::Option::Some(WorldPoles::NO_POLES),
24492            1 => ::std::option::Option::Some(WorldPoles::NORTH_POLE),
24493            2 => ::std::option::Option::Some(WorldPoles::SOUTH_POLE),
24494            3 => ::std::option::Option::Some(WorldPoles::BOTH_POLES),
24495            _ => ::std::option::Option::None
24496        }
24497    }
24498
24499    fn from_str(str: &str) -> ::std::option::Option<WorldPoles> {
24500        match str {
24501            "NO_POLES" => ::std::option::Option::Some(WorldPoles::NO_POLES),
24502            "NORTH_POLE" => ::std::option::Option::Some(WorldPoles::NORTH_POLE),
24503            "SOUTH_POLE" => ::std::option::Option::Some(WorldPoles::SOUTH_POLE),
24504            "BOTH_POLES" => ::std::option::Option::Some(WorldPoles::BOTH_POLES),
24505            _ => ::std::option::Option::None
24506        }
24507    }
24508
24509    const VALUES: &'static [WorldPoles] = &[
24510        WorldPoles::NO_POLES,
24511        WorldPoles::NORTH_POLE,
24512        WorldPoles::SOUTH_POLE,
24513        WorldPoles::BOTH_POLES,
24514    ];
24515}
24516
24517impl ::protobuf::EnumFull for WorldPoles {
24518    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24519        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24520        descriptor.get(|| file_descriptor().enum_by_package_relative_name("WorldPoles").unwrap()).clone()
24521    }
24522
24523    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24524        let index = *self as usize;
24525        Self::enum_descriptor().value_by_index(index)
24526    }
24527}
24528
24529impl ::std::default::Default for WorldPoles {
24530    fn default() -> Self {
24531        WorldPoles::NO_POLES
24532    }
24533}
24534
24535impl WorldPoles {
24536    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24537        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<WorldPoles>("WorldPoles")
24538    }
24539}
24540
24541#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24542// @@protoc_insertion_point(enum:RemoteFortressReader.BuildingDirection)
24543pub enum BuildingDirection {
24544    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NORTH)
24545    NORTH = 0,
24546    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.EAST)
24547    EAST = 1,
24548    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.SOUTH)
24549    SOUTH = 2,
24550    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.WEST)
24551    WEST = 3,
24552    // @@protoc_insertion_point(enum_value:RemoteFortressReader.BuildingDirection.NONE)
24553    NONE = 4,
24554}
24555
24556impl ::protobuf::Enum for BuildingDirection {
24557    const NAME: &'static str = "BuildingDirection";
24558
24559    fn value(&self) -> i32 {
24560        *self as i32
24561    }
24562
24563    fn from_i32(value: i32) -> ::std::option::Option<BuildingDirection> {
24564        match value {
24565            0 => ::std::option::Option::Some(BuildingDirection::NORTH),
24566            1 => ::std::option::Option::Some(BuildingDirection::EAST),
24567            2 => ::std::option::Option::Some(BuildingDirection::SOUTH),
24568            3 => ::std::option::Option::Some(BuildingDirection::WEST),
24569            4 => ::std::option::Option::Some(BuildingDirection::NONE),
24570            _ => ::std::option::Option::None
24571        }
24572    }
24573
24574    fn from_str(str: &str) -> ::std::option::Option<BuildingDirection> {
24575        match str {
24576            "NORTH" => ::std::option::Option::Some(BuildingDirection::NORTH),
24577            "EAST" => ::std::option::Option::Some(BuildingDirection::EAST),
24578            "SOUTH" => ::std::option::Option::Some(BuildingDirection::SOUTH),
24579            "WEST" => ::std::option::Option::Some(BuildingDirection::WEST),
24580            "NONE" => ::std::option::Option::Some(BuildingDirection::NONE),
24581            _ => ::std::option::Option::None
24582        }
24583    }
24584
24585    const VALUES: &'static [BuildingDirection] = &[
24586        BuildingDirection::NORTH,
24587        BuildingDirection::EAST,
24588        BuildingDirection::SOUTH,
24589        BuildingDirection::WEST,
24590        BuildingDirection::NONE,
24591    ];
24592}
24593
24594impl ::protobuf::EnumFull for BuildingDirection {
24595    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24596        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24597        descriptor.get(|| file_descriptor().enum_by_package_relative_name("BuildingDirection").unwrap()).clone()
24598    }
24599
24600    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24601        let index = *self as usize;
24602        Self::enum_descriptor().value_by_index(index)
24603    }
24604}
24605
24606impl ::std::default::Default for BuildingDirection {
24607    fn default() -> Self {
24608        BuildingDirection::NORTH
24609    }
24610}
24611
24612impl BuildingDirection {
24613    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24614        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<BuildingDirection>("BuildingDirection")
24615    }
24616}
24617
24618#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24619// @@protoc_insertion_point(enum:RemoteFortressReader.TileDigDesignation)
24620pub enum TileDigDesignation {
24621    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.NO_DIG)
24622    NO_DIG = 0,
24623    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.DEFAULT_DIG)
24624    DEFAULT_DIG = 1,
24625    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.UP_DOWN_STAIR_DIG)
24626    UP_DOWN_STAIR_DIG = 2,
24627    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.CHANNEL_DIG)
24628    CHANNEL_DIG = 3,
24629    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.RAMP_DIG)
24630    RAMP_DIG = 4,
24631    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.DOWN_STAIR_DIG)
24632    DOWN_STAIR_DIG = 5,
24633    // @@protoc_insertion_point(enum_value:RemoteFortressReader.TileDigDesignation.UP_STAIR_DIG)
24634    UP_STAIR_DIG = 6,
24635}
24636
24637impl ::protobuf::Enum for TileDigDesignation {
24638    const NAME: &'static str = "TileDigDesignation";
24639
24640    fn value(&self) -> i32 {
24641        *self as i32
24642    }
24643
24644    fn from_i32(value: i32) -> ::std::option::Option<TileDigDesignation> {
24645        match value {
24646            0 => ::std::option::Option::Some(TileDigDesignation::NO_DIG),
24647            1 => ::std::option::Option::Some(TileDigDesignation::DEFAULT_DIG),
24648            2 => ::std::option::Option::Some(TileDigDesignation::UP_DOWN_STAIR_DIG),
24649            3 => ::std::option::Option::Some(TileDigDesignation::CHANNEL_DIG),
24650            4 => ::std::option::Option::Some(TileDigDesignation::RAMP_DIG),
24651            5 => ::std::option::Option::Some(TileDigDesignation::DOWN_STAIR_DIG),
24652            6 => ::std::option::Option::Some(TileDigDesignation::UP_STAIR_DIG),
24653            _ => ::std::option::Option::None
24654        }
24655    }
24656
24657    fn from_str(str: &str) -> ::std::option::Option<TileDigDesignation> {
24658        match str {
24659            "NO_DIG" => ::std::option::Option::Some(TileDigDesignation::NO_DIG),
24660            "DEFAULT_DIG" => ::std::option::Option::Some(TileDigDesignation::DEFAULT_DIG),
24661            "UP_DOWN_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::UP_DOWN_STAIR_DIG),
24662            "CHANNEL_DIG" => ::std::option::Option::Some(TileDigDesignation::CHANNEL_DIG),
24663            "RAMP_DIG" => ::std::option::Option::Some(TileDigDesignation::RAMP_DIG),
24664            "DOWN_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::DOWN_STAIR_DIG),
24665            "UP_STAIR_DIG" => ::std::option::Option::Some(TileDigDesignation::UP_STAIR_DIG),
24666            _ => ::std::option::Option::None
24667        }
24668    }
24669
24670    const VALUES: &'static [TileDigDesignation] = &[
24671        TileDigDesignation::NO_DIG,
24672        TileDigDesignation::DEFAULT_DIG,
24673        TileDigDesignation::UP_DOWN_STAIR_DIG,
24674        TileDigDesignation::CHANNEL_DIG,
24675        TileDigDesignation::RAMP_DIG,
24676        TileDigDesignation::DOWN_STAIR_DIG,
24677        TileDigDesignation::UP_STAIR_DIG,
24678    ];
24679}
24680
24681impl ::protobuf::EnumFull for TileDigDesignation {
24682    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24683        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24684        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TileDigDesignation").unwrap()).clone()
24685    }
24686
24687    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24688        let index = *self as usize;
24689        Self::enum_descriptor().value_by_index(index)
24690    }
24691}
24692
24693impl ::std::default::Default for TileDigDesignation {
24694    fn default() -> Self {
24695        TileDigDesignation::NO_DIG
24696    }
24697}
24698
24699impl TileDigDesignation {
24700    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24701        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TileDigDesignation>("TileDigDesignation")
24702    }
24703}
24704
24705#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24706// @@protoc_insertion_point(enum:RemoteFortressReader.HairStyle)
24707pub enum HairStyle {
24708    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.UNKEMPT)
24709    UNKEMPT = -1,
24710    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.NEATLY_COMBED)
24711    NEATLY_COMBED = 0,
24712    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.BRAIDED)
24713    BRAIDED = 1,
24714    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.DOUBLE_BRAID)
24715    DOUBLE_BRAID = 2,
24716    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.PONY_TAILS)
24717    PONY_TAILS = 3,
24718    // @@protoc_insertion_point(enum_value:RemoteFortressReader.HairStyle.CLEAN_SHAVEN)
24719    CLEAN_SHAVEN = 4,
24720}
24721
24722impl ::protobuf::Enum for HairStyle {
24723    const NAME: &'static str = "HairStyle";
24724
24725    fn value(&self) -> i32 {
24726        *self as i32
24727    }
24728
24729    fn from_i32(value: i32) -> ::std::option::Option<HairStyle> {
24730        match value {
24731            -1 => ::std::option::Option::Some(HairStyle::UNKEMPT),
24732            0 => ::std::option::Option::Some(HairStyle::NEATLY_COMBED),
24733            1 => ::std::option::Option::Some(HairStyle::BRAIDED),
24734            2 => ::std::option::Option::Some(HairStyle::DOUBLE_BRAID),
24735            3 => ::std::option::Option::Some(HairStyle::PONY_TAILS),
24736            4 => ::std::option::Option::Some(HairStyle::CLEAN_SHAVEN),
24737            _ => ::std::option::Option::None
24738        }
24739    }
24740
24741    fn from_str(str: &str) -> ::std::option::Option<HairStyle> {
24742        match str {
24743            "UNKEMPT" => ::std::option::Option::Some(HairStyle::UNKEMPT),
24744            "NEATLY_COMBED" => ::std::option::Option::Some(HairStyle::NEATLY_COMBED),
24745            "BRAIDED" => ::std::option::Option::Some(HairStyle::BRAIDED),
24746            "DOUBLE_BRAID" => ::std::option::Option::Some(HairStyle::DOUBLE_BRAID),
24747            "PONY_TAILS" => ::std::option::Option::Some(HairStyle::PONY_TAILS),
24748            "CLEAN_SHAVEN" => ::std::option::Option::Some(HairStyle::CLEAN_SHAVEN),
24749            _ => ::std::option::Option::None
24750        }
24751    }
24752
24753    const VALUES: &'static [HairStyle] = &[
24754        HairStyle::UNKEMPT,
24755        HairStyle::NEATLY_COMBED,
24756        HairStyle::BRAIDED,
24757        HairStyle::DOUBLE_BRAID,
24758        HairStyle::PONY_TAILS,
24759        HairStyle::CLEAN_SHAVEN,
24760    ];
24761}
24762
24763impl ::protobuf::EnumFull for HairStyle {
24764    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24765        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24766        descriptor.get(|| file_descriptor().enum_by_package_relative_name("HairStyle").unwrap()).clone()
24767    }
24768
24769    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24770        let index = match self {
24771            HairStyle::UNKEMPT => 0,
24772            HairStyle::NEATLY_COMBED => 1,
24773            HairStyle::BRAIDED => 2,
24774            HairStyle::DOUBLE_BRAID => 3,
24775            HairStyle::PONY_TAILS => 4,
24776            HairStyle::CLEAN_SHAVEN => 5,
24777        };
24778        Self::enum_descriptor().value_by_index(index)
24779    }
24780}
24781
24782// Note, `Default` is implemented although default value is not 0
24783impl ::std::default::Default for HairStyle {
24784    fn default() -> Self {
24785        HairStyle::UNKEMPT
24786    }
24787}
24788
24789impl HairStyle {
24790    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24791        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<HairStyle>("HairStyle")
24792    }
24793}
24794
24795#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24796// @@protoc_insertion_point(enum:RemoteFortressReader.InventoryMode)
24797pub enum InventoryMode {
24798    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Hauled)
24799    Hauled = 0,
24800    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Weapon)
24801    Weapon = 1,
24802    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Worn)
24803    Worn = 2,
24804    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Piercing)
24805    Piercing = 3,
24806    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Flask)
24807    Flask = 4,
24808    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.WrappedAround)
24809    WrappedAround = 5,
24810    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.StuckIn)
24811    StuckIn = 6,
24812    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.InMouth)
24813    InMouth = 7,
24814    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Pet)
24815    Pet = 8,
24816    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.SewnInto)
24817    SewnInto = 9,
24818    // @@protoc_insertion_point(enum_value:RemoteFortressReader.InventoryMode.Strapped)
24819    Strapped = 10,
24820}
24821
24822impl ::protobuf::Enum for InventoryMode {
24823    const NAME: &'static str = "InventoryMode";
24824
24825    fn value(&self) -> i32 {
24826        *self as i32
24827    }
24828
24829    fn from_i32(value: i32) -> ::std::option::Option<InventoryMode> {
24830        match value {
24831            0 => ::std::option::Option::Some(InventoryMode::Hauled),
24832            1 => ::std::option::Option::Some(InventoryMode::Weapon),
24833            2 => ::std::option::Option::Some(InventoryMode::Worn),
24834            3 => ::std::option::Option::Some(InventoryMode::Piercing),
24835            4 => ::std::option::Option::Some(InventoryMode::Flask),
24836            5 => ::std::option::Option::Some(InventoryMode::WrappedAround),
24837            6 => ::std::option::Option::Some(InventoryMode::StuckIn),
24838            7 => ::std::option::Option::Some(InventoryMode::InMouth),
24839            8 => ::std::option::Option::Some(InventoryMode::Pet),
24840            9 => ::std::option::Option::Some(InventoryMode::SewnInto),
24841            10 => ::std::option::Option::Some(InventoryMode::Strapped),
24842            _ => ::std::option::Option::None
24843        }
24844    }
24845
24846    fn from_str(str: &str) -> ::std::option::Option<InventoryMode> {
24847        match str {
24848            "Hauled" => ::std::option::Option::Some(InventoryMode::Hauled),
24849            "Weapon" => ::std::option::Option::Some(InventoryMode::Weapon),
24850            "Worn" => ::std::option::Option::Some(InventoryMode::Worn),
24851            "Piercing" => ::std::option::Option::Some(InventoryMode::Piercing),
24852            "Flask" => ::std::option::Option::Some(InventoryMode::Flask),
24853            "WrappedAround" => ::std::option::Option::Some(InventoryMode::WrappedAround),
24854            "StuckIn" => ::std::option::Option::Some(InventoryMode::StuckIn),
24855            "InMouth" => ::std::option::Option::Some(InventoryMode::InMouth),
24856            "Pet" => ::std::option::Option::Some(InventoryMode::Pet),
24857            "SewnInto" => ::std::option::Option::Some(InventoryMode::SewnInto),
24858            "Strapped" => ::std::option::Option::Some(InventoryMode::Strapped),
24859            _ => ::std::option::Option::None
24860        }
24861    }
24862
24863    const VALUES: &'static [InventoryMode] = &[
24864        InventoryMode::Hauled,
24865        InventoryMode::Weapon,
24866        InventoryMode::Worn,
24867        InventoryMode::Piercing,
24868        InventoryMode::Flask,
24869        InventoryMode::WrappedAround,
24870        InventoryMode::StuckIn,
24871        InventoryMode::InMouth,
24872        InventoryMode::Pet,
24873        InventoryMode::SewnInto,
24874        InventoryMode::Strapped,
24875    ];
24876}
24877
24878impl ::protobuf::EnumFull for InventoryMode {
24879    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24880        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24881        descriptor.get(|| file_descriptor().enum_by_package_relative_name("InventoryMode").unwrap()).clone()
24882    }
24883
24884    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24885        let index = *self as usize;
24886        Self::enum_descriptor().value_by_index(index)
24887    }
24888}
24889
24890impl ::std::default::Default for InventoryMode {
24891    fn default() -> Self {
24892        InventoryMode::Hauled
24893    }
24894}
24895
24896impl InventoryMode {
24897    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24898        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<InventoryMode>("InventoryMode")
24899    }
24900}
24901
24902#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24903// @@protoc_insertion_point(enum:RemoteFortressReader.ArmorLayer)
24904pub enum ArmorLayer {
24905    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_UNDER)
24906    LAYER_UNDER = 0,
24907    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_OVER)
24908    LAYER_OVER = 1,
24909    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_ARMOR)
24910    LAYER_ARMOR = 2,
24911    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArmorLayer.LAYER_COVER)
24912    LAYER_COVER = 3,
24913}
24914
24915impl ::protobuf::Enum for ArmorLayer {
24916    const NAME: &'static str = "ArmorLayer";
24917
24918    fn value(&self) -> i32 {
24919        *self as i32
24920    }
24921
24922    fn from_i32(value: i32) -> ::std::option::Option<ArmorLayer> {
24923        match value {
24924            0 => ::std::option::Option::Some(ArmorLayer::LAYER_UNDER),
24925            1 => ::std::option::Option::Some(ArmorLayer::LAYER_OVER),
24926            2 => ::std::option::Option::Some(ArmorLayer::LAYER_ARMOR),
24927            3 => ::std::option::Option::Some(ArmorLayer::LAYER_COVER),
24928            _ => ::std::option::Option::None
24929        }
24930    }
24931
24932    fn from_str(str: &str) -> ::std::option::Option<ArmorLayer> {
24933        match str {
24934            "LAYER_UNDER" => ::std::option::Option::Some(ArmorLayer::LAYER_UNDER),
24935            "LAYER_OVER" => ::std::option::Option::Some(ArmorLayer::LAYER_OVER),
24936            "LAYER_ARMOR" => ::std::option::Option::Some(ArmorLayer::LAYER_ARMOR),
24937            "LAYER_COVER" => ::std::option::Option::Some(ArmorLayer::LAYER_COVER),
24938            _ => ::std::option::Option::None
24939        }
24940    }
24941
24942    const VALUES: &'static [ArmorLayer] = &[
24943        ArmorLayer::LAYER_UNDER,
24944        ArmorLayer::LAYER_OVER,
24945        ArmorLayer::LAYER_ARMOR,
24946        ArmorLayer::LAYER_COVER,
24947    ];
24948}
24949
24950impl ::protobuf::EnumFull for ArmorLayer {
24951    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
24952        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
24953        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArmorLayer").unwrap()).clone()
24954    }
24955
24956    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
24957        let index = *self as usize;
24958        Self::enum_descriptor().value_by_index(index)
24959    }
24960}
24961
24962impl ::std::default::Default for ArmorLayer {
24963    fn default() -> Self {
24964        ArmorLayer::LAYER_UNDER
24965    }
24966}
24967
24968impl ArmorLayer {
24969    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
24970        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArmorLayer>("ArmorLayer")
24971    }
24972}
24973
24974#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
24975// @@protoc_insertion_point(enum:RemoteFortressReader.MatterState)
24976pub enum MatterState {
24977    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Solid)
24978    Solid = 0,
24979    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Liquid)
24980    Liquid = 1,
24981    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Gas)
24982    Gas = 2,
24983    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Powder)
24984    Powder = 3,
24985    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Paste)
24986    Paste = 4,
24987    // @@protoc_insertion_point(enum_value:RemoteFortressReader.MatterState.Pressed)
24988    Pressed = 5,
24989}
24990
24991impl ::protobuf::Enum for MatterState {
24992    const NAME: &'static str = "MatterState";
24993
24994    fn value(&self) -> i32 {
24995        *self as i32
24996    }
24997
24998    fn from_i32(value: i32) -> ::std::option::Option<MatterState> {
24999        match value {
25000            0 => ::std::option::Option::Some(MatterState::Solid),
25001            1 => ::std::option::Option::Some(MatterState::Liquid),
25002            2 => ::std::option::Option::Some(MatterState::Gas),
25003            3 => ::std::option::Option::Some(MatterState::Powder),
25004            4 => ::std::option::Option::Some(MatterState::Paste),
25005            5 => ::std::option::Option::Some(MatterState::Pressed),
25006            _ => ::std::option::Option::None
25007        }
25008    }
25009
25010    fn from_str(str: &str) -> ::std::option::Option<MatterState> {
25011        match str {
25012            "Solid" => ::std::option::Option::Some(MatterState::Solid),
25013            "Liquid" => ::std::option::Option::Some(MatterState::Liquid),
25014            "Gas" => ::std::option::Option::Some(MatterState::Gas),
25015            "Powder" => ::std::option::Option::Some(MatterState::Powder),
25016            "Paste" => ::std::option::Option::Some(MatterState::Paste),
25017            "Pressed" => ::std::option::Option::Some(MatterState::Pressed),
25018            _ => ::std::option::Option::None
25019        }
25020    }
25021
25022    const VALUES: &'static [MatterState] = &[
25023        MatterState::Solid,
25024        MatterState::Liquid,
25025        MatterState::Gas,
25026        MatterState::Powder,
25027        MatterState::Paste,
25028        MatterState::Pressed,
25029    ];
25030}
25031
25032impl ::protobuf::EnumFull for MatterState {
25033    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25034        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25035        descriptor.get(|| file_descriptor().enum_by_package_relative_name("MatterState").unwrap()).clone()
25036    }
25037
25038    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25039        let index = *self as usize;
25040        Self::enum_descriptor().value_by_index(index)
25041    }
25042}
25043
25044impl ::std::default::Default for MatterState {
25045    fn default() -> Self {
25046        MatterState::Solid
25047    }
25048}
25049
25050impl MatterState {
25051    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25052        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<MatterState>("MatterState")
25053    }
25054}
25055
25056#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25057// @@protoc_insertion_point(enum:RemoteFortressReader.FrontType)
25058pub enum FrontType {
25059    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_NONE)
25060    FRONT_NONE = 0,
25061    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_WARM)
25062    FRONT_WARM = 1,
25063    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_COLD)
25064    FRONT_COLD = 2,
25065    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FrontType.FRONT_OCCLUDED)
25066    FRONT_OCCLUDED = 3,
25067}
25068
25069impl ::protobuf::Enum for FrontType {
25070    const NAME: &'static str = "FrontType";
25071
25072    fn value(&self) -> i32 {
25073        *self as i32
25074    }
25075
25076    fn from_i32(value: i32) -> ::std::option::Option<FrontType> {
25077        match value {
25078            0 => ::std::option::Option::Some(FrontType::FRONT_NONE),
25079            1 => ::std::option::Option::Some(FrontType::FRONT_WARM),
25080            2 => ::std::option::Option::Some(FrontType::FRONT_COLD),
25081            3 => ::std::option::Option::Some(FrontType::FRONT_OCCLUDED),
25082            _ => ::std::option::Option::None
25083        }
25084    }
25085
25086    fn from_str(str: &str) -> ::std::option::Option<FrontType> {
25087        match str {
25088            "FRONT_NONE" => ::std::option::Option::Some(FrontType::FRONT_NONE),
25089            "FRONT_WARM" => ::std::option::Option::Some(FrontType::FRONT_WARM),
25090            "FRONT_COLD" => ::std::option::Option::Some(FrontType::FRONT_COLD),
25091            "FRONT_OCCLUDED" => ::std::option::Option::Some(FrontType::FRONT_OCCLUDED),
25092            _ => ::std::option::Option::None
25093        }
25094    }
25095
25096    const VALUES: &'static [FrontType] = &[
25097        FrontType::FRONT_NONE,
25098        FrontType::FRONT_WARM,
25099        FrontType::FRONT_COLD,
25100        FrontType::FRONT_OCCLUDED,
25101    ];
25102}
25103
25104impl ::protobuf::EnumFull for FrontType {
25105    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25106        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25107        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FrontType").unwrap()).clone()
25108    }
25109
25110    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25111        let index = *self as usize;
25112        Self::enum_descriptor().value_by_index(index)
25113    }
25114}
25115
25116impl ::std::default::Default for FrontType {
25117    fn default() -> Self {
25118        FrontType::FRONT_NONE
25119    }
25120}
25121
25122impl FrontType {
25123    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25124        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FrontType>("FrontType")
25125    }
25126}
25127
25128#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25129// @@protoc_insertion_point(enum:RemoteFortressReader.CumulusType)
25130pub enum CumulusType {
25131    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_NONE)
25132    CUMULUS_NONE = 0,
25133    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_MEDIUM)
25134    CUMULUS_MEDIUM = 1,
25135    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_MULTI)
25136    CUMULUS_MULTI = 2,
25137    // @@protoc_insertion_point(enum_value:RemoteFortressReader.CumulusType.CUMULUS_NIMBUS)
25138    CUMULUS_NIMBUS = 3,
25139}
25140
25141impl ::protobuf::Enum for CumulusType {
25142    const NAME: &'static str = "CumulusType";
25143
25144    fn value(&self) -> i32 {
25145        *self as i32
25146    }
25147
25148    fn from_i32(value: i32) -> ::std::option::Option<CumulusType> {
25149        match value {
25150            0 => ::std::option::Option::Some(CumulusType::CUMULUS_NONE),
25151            1 => ::std::option::Option::Some(CumulusType::CUMULUS_MEDIUM),
25152            2 => ::std::option::Option::Some(CumulusType::CUMULUS_MULTI),
25153            3 => ::std::option::Option::Some(CumulusType::CUMULUS_NIMBUS),
25154            _ => ::std::option::Option::None
25155        }
25156    }
25157
25158    fn from_str(str: &str) -> ::std::option::Option<CumulusType> {
25159        match str {
25160            "CUMULUS_NONE" => ::std::option::Option::Some(CumulusType::CUMULUS_NONE),
25161            "CUMULUS_MEDIUM" => ::std::option::Option::Some(CumulusType::CUMULUS_MEDIUM),
25162            "CUMULUS_MULTI" => ::std::option::Option::Some(CumulusType::CUMULUS_MULTI),
25163            "CUMULUS_NIMBUS" => ::std::option::Option::Some(CumulusType::CUMULUS_NIMBUS),
25164            _ => ::std::option::Option::None
25165        }
25166    }
25167
25168    const VALUES: &'static [CumulusType] = &[
25169        CumulusType::CUMULUS_NONE,
25170        CumulusType::CUMULUS_MEDIUM,
25171        CumulusType::CUMULUS_MULTI,
25172        CumulusType::CUMULUS_NIMBUS,
25173    ];
25174}
25175
25176impl ::protobuf::EnumFull for CumulusType {
25177    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25178        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25179        descriptor.get(|| file_descriptor().enum_by_package_relative_name("CumulusType").unwrap()).clone()
25180    }
25181
25182    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25183        let index = *self as usize;
25184        Self::enum_descriptor().value_by_index(index)
25185    }
25186}
25187
25188impl ::std::default::Default for CumulusType {
25189    fn default() -> Self {
25190        CumulusType::CUMULUS_NONE
25191    }
25192}
25193
25194impl CumulusType {
25195    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25196        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<CumulusType>("CumulusType")
25197    }
25198}
25199
25200#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25201// @@protoc_insertion_point(enum:RemoteFortressReader.StratusType)
25202pub enum StratusType {
25203    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_NONE)
25204    STRATUS_NONE = 0,
25205    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_ALTO)
25206    STRATUS_ALTO = 1,
25207    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_PROPER)
25208    STRATUS_PROPER = 2,
25209    // @@protoc_insertion_point(enum_value:RemoteFortressReader.StratusType.STRATUS_NIMBUS)
25210    STRATUS_NIMBUS = 3,
25211}
25212
25213impl ::protobuf::Enum for StratusType {
25214    const NAME: &'static str = "StratusType";
25215
25216    fn value(&self) -> i32 {
25217        *self as i32
25218    }
25219
25220    fn from_i32(value: i32) -> ::std::option::Option<StratusType> {
25221        match value {
25222            0 => ::std::option::Option::Some(StratusType::STRATUS_NONE),
25223            1 => ::std::option::Option::Some(StratusType::STRATUS_ALTO),
25224            2 => ::std::option::Option::Some(StratusType::STRATUS_PROPER),
25225            3 => ::std::option::Option::Some(StratusType::STRATUS_NIMBUS),
25226            _ => ::std::option::Option::None
25227        }
25228    }
25229
25230    fn from_str(str: &str) -> ::std::option::Option<StratusType> {
25231        match str {
25232            "STRATUS_NONE" => ::std::option::Option::Some(StratusType::STRATUS_NONE),
25233            "STRATUS_ALTO" => ::std::option::Option::Some(StratusType::STRATUS_ALTO),
25234            "STRATUS_PROPER" => ::std::option::Option::Some(StratusType::STRATUS_PROPER),
25235            "STRATUS_NIMBUS" => ::std::option::Option::Some(StratusType::STRATUS_NIMBUS),
25236            _ => ::std::option::Option::None
25237        }
25238    }
25239
25240    const VALUES: &'static [StratusType] = &[
25241        StratusType::STRATUS_NONE,
25242        StratusType::STRATUS_ALTO,
25243        StratusType::STRATUS_PROPER,
25244        StratusType::STRATUS_NIMBUS,
25245    ];
25246}
25247
25248impl ::protobuf::EnumFull for StratusType {
25249    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25250        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25251        descriptor.get(|| file_descriptor().enum_by_package_relative_name("StratusType").unwrap()).clone()
25252    }
25253
25254    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25255        let index = *self as usize;
25256        Self::enum_descriptor().value_by_index(index)
25257    }
25258}
25259
25260impl ::std::default::Default for StratusType {
25261    fn default() -> Self {
25262        StratusType::STRATUS_NONE
25263    }
25264}
25265
25266impl StratusType {
25267    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25268        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StratusType>("StratusType")
25269    }
25270}
25271
25272#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25273// @@protoc_insertion_point(enum:RemoteFortressReader.FogType)
25274pub enum FogType {
25275    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_NONE)
25276    FOG_NONE = 0,
25277    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_MIST)
25278    FOG_MIST = 1,
25279    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.FOG_NORMAL)
25280    FOG_NORMAL = 2,
25281    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FogType.F0G_THICK)
25282    F0G_THICK = 3,
25283}
25284
25285impl ::protobuf::Enum for FogType {
25286    const NAME: &'static str = "FogType";
25287
25288    fn value(&self) -> i32 {
25289        *self as i32
25290    }
25291
25292    fn from_i32(value: i32) -> ::std::option::Option<FogType> {
25293        match value {
25294            0 => ::std::option::Option::Some(FogType::FOG_NONE),
25295            1 => ::std::option::Option::Some(FogType::FOG_MIST),
25296            2 => ::std::option::Option::Some(FogType::FOG_NORMAL),
25297            3 => ::std::option::Option::Some(FogType::F0G_THICK),
25298            _ => ::std::option::Option::None
25299        }
25300    }
25301
25302    fn from_str(str: &str) -> ::std::option::Option<FogType> {
25303        match str {
25304            "FOG_NONE" => ::std::option::Option::Some(FogType::FOG_NONE),
25305            "FOG_MIST" => ::std::option::Option::Some(FogType::FOG_MIST),
25306            "FOG_NORMAL" => ::std::option::Option::Some(FogType::FOG_NORMAL),
25307            "F0G_THICK" => ::std::option::Option::Some(FogType::F0G_THICK),
25308            _ => ::std::option::Option::None
25309        }
25310    }
25311
25312    const VALUES: &'static [FogType] = &[
25313        FogType::FOG_NONE,
25314        FogType::FOG_MIST,
25315        FogType::FOG_NORMAL,
25316        FogType::F0G_THICK,
25317    ];
25318}
25319
25320impl ::protobuf::EnumFull for FogType {
25321    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25322        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25323        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FogType").unwrap()).clone()
25324    }
25325
25326    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25327        let index = *self as usize;
25328        Self::enum_descriptor().value_by_index(index)
25329    }
25330}
25331
25332impl ::std::default::Default for FogType {
25333    fn default() -> Self {
25334        FogType::FOG_NONE
25335    }
25336}
25337
25338impl FogType {
25339    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25340        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FogType>("FogType")
25341    }
25342}
25343
25344#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25345// @@protoc_insertion_point(enum:RemoteFortressReader.PatternType)
25346pub enum PatternType {
25347    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.MONOTONE)
25348    MONOTONE = 0,
25349    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.STRIPES)
25350    STRIPES = 1,
25351    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.IRIS_EYE)
25352    IRIS_EYE = 2,
25353    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.SPOTS)
25354    SPOTS = 3,
25355    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.PUPIL_EYE)
25356    PUPIL_EYE = 4,
25357    // @@protoc_insertion_point(enum_value:RemoteFortressReader.PatternType.MOTTLED)
25358    MOTTLED = 5,
25359}
25360
25361impl ::protobuf::Enum for PatternType {
25362    const NAME: &'static str = "PatternType";
25363
25364    fn value(&self) -> i32 {
25365        *self as i32
25366    }
25367
25368    fn from_i32(value: i32) -> ::std::option::Option<PatternType> {
25369        match value {
25370            0 => ::std::option::Option::Some(PatternType::MONOTONE),
25371            1 => ::std::option::Option::Some(PatternType::STRIPES),
25372            2 => ::std::option::Option::Some(PatternType::IRIS_EYE),
25373            3 => ::std::option::Option::Some(PatternType::SPOTS),
25374            4 => ::std::option::Option::Some(PatternType::PUPIL_EYE),
25375            5 => ::std::option::Option::Some(PatternType::MOTTLED),
25376            _ => ::std::option::Option::None
25377        }
25378    }
25379
25380    fn from_str(str: &str) -> ::std::option::Option<PatternType> {
25381        match str {
25382            "MONOTONE" => ::std::option::Option::Some(PatternType::MONOTONE),
25383            "STRIPES" => ::std::option::Option::Some(PatternType::STRIPES),
25384            "IRIS_EYE" => ::std::option::Option::Some(PatternType::IRIS_EYE),
25385            "SPOTS" => ::std::option::Option::Some(PatternType::SPOTS),
25386            "PUPIL_EYE" => ::std::option::Option::Some(PatternType::PUPIL_EYE),
25387            "MOTTLED" => ::std::option::Option::Some(PatternType::MOTTLED),
25388            _ => ::std::option::Option::None
25389        }
25390    }
25391
25392    const VALUES: &'static [PatternType] = &[
25393        PatternType::MONOTONE,
25394        PatternType::STRIPES,
25395        PatternType::IRIS_EYE,
25396        PatternType::SPOTS,
25397        PatternType::PUPIL_EYE,
25398        PatternType::MOTTLED,
25399    ];
25400}
25401
25402impl ::protobuf::EnumFull for PatternType {
25403    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25404        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25405        descriptor.get(|| file_descriptor().enum_by_package_relative_name("PatternType").unwrap()).clone()
25406    }
25407
25408    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25409        let index = *self as usize;
25410        Self::enum_descriptor().value_by_index(index)
25411    }
25412}
25413
25414impl ::std::default::Default for PatternType {
25415    fn default() -> Self {
25416        PatternType::MONOTONE
25417    }
25418}
25419
25420impl PatternType {
25421    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25422        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<PatternType>("PatternType")
25423    }
25424}
25425
25426#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25427// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImageElementType)
25428pub enum ArtImageElementType {
25429    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_CREATURE)
25430    IMAGE_CREATURE = 0,
25431    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_PLANT)
25432    IMAGE_PLANT = 1,
25433    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_TREE)
25434    IMAGE_TREE = 2,
25435    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_SHAPE)
25436    IMAGE_SHAPE = 3,
25437    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageElementType.IMAGE_ITEM)
25438    IMAGE_ITEM = 4,
25439}
25440
25441impl ::protobuf::Enum for ArtImageElementType {
25442    const NAME: &'static str = "ArtImageElementType";
25443
25444    fn value(&self) -> i32 {
25445        *self as i32
25446    }
25447
25448    fn from_i32(value: i32) -> ::std::option::Option<ArtImageElementType> {
25449        match value {
25450            0 => ::std::option::Option::Some(ArtImageElementType::IMAGE_CREATURE),
25451            1 => ::std::option::Option::Some(ArtImageElementType::IMAGE_PLANT),
25452            2 => ::std::option::Option::Some(ArtImageElementType::IMAGE_TREE),
25453            3 => ::std::option::Option::Some(ArtImageElementType::IMAGE_SHAPE),
25454            4 => ::std::option::Option::Some(ArtImageElementType::IMAGE_ITEM),
25455            _ => ::std::option::Option::None
25456        }
25457    }
25458
25459    fn from_str(str: &str) -> ::std::option::Option<ArtImageElementType> {
25460        match str {
25461            "IMAGE_CREATURE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_CREATURE),
25462            "IMAGE_PLANT" => ::std::option::Option::Some(ArtImageElementType::IMAGE_PLANT),
25463            "IMAGE_TREE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_TREE),
25464            "IMAGE_SHAPE" => ::std::option::Option::Some(ArtImageElementType::IMAGE_SHAPE),
25465            "IMAGE_ITEM" => ::std::option::Option::Some(ArtImageElementType::IMAGE_ITEM),
25466            _ => ::std::option::Option::None
25467        }
25468    }
25469
25470    const VALUES: &'static [ArtImageElementType] = &[
25471        ArtImageElementType::IMAGE_CREATURE,
25472        ArtImageElementType::IMAGE_PLANT,
25473        ArtImageElementType::IMAGE_TREE,
25474        ArtImageElementType::IMAGE_SHAPE,
25475        ArtImageElementType::IMAGE_ITEM,
25476    ];
25477}
25478
25479impl ::protobuf::EnumFull for ArtImageElementType {
25480    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25481        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25482        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImageElementType").unwrap()).clone()
25483    }
25484
25485    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25486        let index = *self as usize;
25487        Self::enum_descriptor().value_by_index(index)
25488    }
25489}
25490
25491impl ::std::default::Default for ArtImageElementType {
25492    fn default() -> Self {
25493        ArtImageElementType::IMAGE_CREATURE
25494    }
25495}
25496
25497impl ArtImageElementType {
25498    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25499        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImageElementType>("ArtImageElementType")
25500    }
25501}
25502
25503#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25504// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImagePropertyType)
25505pub enum ArtImagePropertyType {
25506    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImagePropertyType.TRANSITIVE_VERB)
25507    TRANSITIVE_VERB = 0,
25508    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImagePropertyType.INTRANSITIVE_VERB)
25509    INTRANSITIVE_VERB = 1,
25510}
25511
25512impl ::protobuf::Enum for ArtImagePropertyType {
25513    const NAME: &'static str = "ArtImagePropertyType";
25514
25515    fn value(&self) -> i32 {
25516        *self as i32
25517    }
25518
25519    fn from_i32(value: i32) -> ::std::option::Option<ArtImagePropertyType> {
25520        match value {
25521            0 => ::std::option::Option::Some(ArtImagePropertyType::TRANSITIVE_VERB),
25522            1 => ::std::option::Option::Some(ArtImagePropertyType::INTRANSITIVE_VERB),
25523            _ => ::std::option::Option::None
25524        }
25525    }
25526
25527    fn from_str(str: &str) -> ::std::option::Option<ArtImagePropertyType> {
25528        match str {
25529            "TRANSITIVE_VERB" => ::std::option::Option::Some(ArtImagePropertyType::TRANSITIVE_VERB),
25530            "INTRANSITIVE_VERB" => ::std::option::Option::Some(ArtImagePropertyType::INTRANSITIVE_VERB),
25531            _ => ::std::option::Option::None
25532        }
25533    }
25534
25535    const VALUES: &'static [ArtImagePropertyType] = &[
25536        ArtImagePropertyType::TRANSITIVE_VERB,
25537        ArtImagePropertyType::INTRANSITIVE_VERB,
25538    ];
25539}
25540
25541impl ::protobuf::EnumFull for ArtImagePropertyType {
25542    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25543        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25544        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImagePropertyType").unwrap()).clone()
25545    }
25546
25547    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25548        let index = *self as usize;
25549        Self::enum_descriptor().value_by_index(index)
25550    }
25551}
25552
25553impl ::std::default::Default for ArtImagePropertyType {
25554    fn default() -> Self {
25555        ArtImagePropertyType::TRANSITIVE_VERB
25556    }
25557}
25558
25559impl ArtImagePropertyType {
25560    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25561        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImagePropertyType>("ArtImagePropertyType")
25562    }
25563}
25564
25565#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25566// @@protoc_insertion_point(enum:RemoteFortressReader.ArtImageVerb)
25567pub enum ArtImageVerb {
25568    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_WITHERING)
25569    VERB_WITHERING = 0,
25570    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SURROUNDEDBY)
25571    VERB_SURROUNDEDBY = 1,
25572    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MASSACRING)
25573    VERB_MASSACRING = 2,
25574    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FIGHTING)
25575    VERB_FIGHTING = 3,
25576    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LABORING)
25577    VERB_LABORING = 4,
25578    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_GREETING)
25579    VERB_GREETING = 5,
25580    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_REFUSING)
25581    VERB_REFUSING = 6,
25582    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SPEAKING)
25583    VERB_SPEAKING = 7,
25584    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_EMBRACING)
25585    VERB_EMBRACING = 8,
25586    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_STRIKINGDOWN)
25587    VERB_STRIKINGDOWN = 9,
25588    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MENACINGPOSE)
25589    VERB_MENACINGPOSE = 10,
25590    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TRAVELING)
25591    VERB_TRAVELING = 11,
25592    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_RAISING)
25593    VERB_RAISING = 12,
25594    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_HIDING)
25595    VERB_HIDING = 13,
25596    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGCONFUSED)
25597    VERB_LOOKINGCONFUSED = 14,
25598    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGTERRIFIED)
25599    VERB_LOOKINGTERRIFIED = 15,
25600    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_DEVOURING)
25601    VERB_DEVOURING = 16,
25602    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_ADMIRING)
25603    VERB_ADMIRING = 17,
25604    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BURNING)
25605    VERB_BURNING = 18,
25606    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_WEEPING)
25607    VERB_WEEPING = 19,
25608    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGDEJECTED)
25609    VERB_LOOKINGDEJECTED = 20,
25610    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_CRINGING)
25611    VERB_CRINGING = 21,
25612    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SCREAMING)
25613    VERB_SCREAMING = 22,
25614    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SUBMISSIVEGESTURE)
25615    VERB_SUBMISSIVEGESTURE = 23,
25616    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FETALPOSITION)
25617    VERB_FETALPOSITION = 24,
25618    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SMEAREDINTOSPIRAL)
25619    VERB_SMEAREDINTOSPIRAL = 25,
25620    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_FALLING)
25621    VERB_FALLING = 26,
25622    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_DEAD)
25623    VERB_DEAD = 27,
25624    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LAUGHING)
25625    VERB_LAUGHING = 28,
25626    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_LOOKINGOFFENDED)
25627    VERB_LOOKINGOFFENDED = 29,
25628    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGSHOT)
25629    VERB_BEINGSHOT = 30,
25630    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PLAINTIVEGESTURE)
25631    VERB_PLAINTIVEGESTURE = 31,
25632    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_MELTING)
25633    VERB_MELTING = 32,
25634    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SHOOTING)
25635    VERB_SHOOTING = 33,
25636    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TORTURING)
25637    VERB_TORTURING = 34,
25638    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_COMMITTINGDEPRAVEDACT)
25639    VERB_COMMITTINGDEPRAVEDACT = 35,
25640    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PRAYING)
25641    VERB_PRAYING = 36,
25642    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_CONTEMPLATING)
25643    VERB_CONTEMPLATING = 37,
25644    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_COOKING)
25645    VERB_COOKING = 38,
25646    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_ENGRAVING)
25647    VERB_ENGRAVING = 39,
25648    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_PROSTRATING)
25649    VERB_PROSTRATING = 40,
25650    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_SUFFERING)
25651    VERB_SUFFERING = 41,
25652    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGIMPALED)
25653    VERB_BEINGIMPALED = 42,
25654    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGCONTORTED)
25655    VERB_BEINGCONTORTED = 43,
25656    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGFLAYED)
25657    VERB_BEINGFLAYED = 44,
25658    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_HANGINGFROM)
25659    VERB_HANGINGFROM = 45,
25660    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_BEINGMUTILATED)
25661    VERB_BEINGMUTILATED = 46,
25662    // @@protoc_insertion_point(enum_value:RemoteFortressReader.ArtImageVerb.VERB_TRIUMPHANTPOSE)
25663    VERB_TRIUMPHANTPOSE = 47,
25664}
25665
25666impl ::protobuf::Enum for ArtImageVerb {
25667    const NAME: &'static str = "ArtImageVerb";
25668
25669    fn value(&self) -> i32 {
25670        *self as i32
25671    }
25672
25673    fn from_i32(value: i32) -> ::std::option::Option<ArtImageVerb> {
25674        match value {
25675            0 => ::std::option::Option::Some(ArtImageVerb::VERB_WITHERING),
25676            1 => ::std::option::Option::Some(ArtImageVerb::VERB_SURROUNDEDBY),
25677            2 => ::std::option::Option::Some(ArtImageVerb::VERB_MASSACRING),
25678            3 => ::std::option::Option::Some(ArtImageVerb::VERB_FIGHTING),
25679            4 => ::std::option::Option::Some(ArtImageVerb::VERB_LABORING),
25680            5 => ::std::option::Option::Some(ArtImageVerb::VERB_GREETING),
25681            6 => ::std::option::Option::Some(ArtImageVerb::VERB_REFUSING),
25682            7 => ::std::option::Option::Some(ArtImageVerb::VERB_SPEAKING),
25683            8 => ::std::option::Option::Some(ArtImageVerb::VERB_EMBRACING),
25684            9 => ::std::option::Option::Some(ArtImageVerb::VERB_STRIKINGDOWN),
25685            10 => ::std::option::Option::Some(ArtImageVerb::VERB_MENACINGPOSE),
25686            11 => ::std::option::Option::Some(ArtImageVerb::VERB_TRAVELING),
25687            12 => ::std::option::Option::Some(ArtImageVerb::VERB_RAISING),
25688            13 => ::std::option::Option::Some(ArtImageVerb::VERB_HIDING),
25689            14 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGCONFUSED),
25690            15 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGTERRIFIED),
25691            16 => ::std::option::Option::Some(ArtImageVerb::VERB_DEVOURING),
25692            17 => ::std::option::Option::Some(ArtImageVerb::VERB_ADMIRING),
25693            18 => ::std::option::Option::Some(ArtImageVerb::VERB_BURNING),
25694            19 => ::std::option::Option::Some(ArtImageVerb::VERB_WEEPING),
25695            20 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGDEJECTED),
25696            21 => ::std::option::Option::Some(ArtImageVerb::VERB_CRINGING),
25697            22 => ::std::option::Option::Some(ArtImageVerb::VERB_SCREAMING),
25698            23 => ::std::option::Option::Some(ArtImageVerb::VERB_SUBMISSIVEGESTURE),
25699            24 => ::std::option::Option::Some(ArtImageVerb::VERB_FETALPOSITION),
25700            25 => ::std::option::Option::Some(ArtImageVerb::VERB_SMEAREDINTOSPIRAL),
25701            26 => ::std::option::Option::Some(ArtImageVerb::VERB_FALLING),
25702            27 => ::std::option::Option::Some(ArtImageVerb::VERB_DEAD),
25703            28 => ::std::option::Option::Some(ArtImageVerb::VERB_LAUGHING),
25704            29 => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGOFFENDED),
25705            30 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGSHOT),
25706            31 => ::std::option::Option::Some(ArtImageVerb::VERB_PLAINTIVEGESTURE),
25707            32 => ::std::option::Option::Some(ArtImageVerb::VERB_MELTING),
25708            33 => ::std::option::Option::Some(ArtImageVerb::VERB_SHOOTING),
25709            34 => ::std::option::Option::Some(ArtImageVerb::VERB_TORTURING),
25710            35 => ::std::option::Option::Some(ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT),
25711            36 => ::std::option::Option::Some(ArtImageVerb::VERB_PRAYING),
25712            37 => ::std::option::Option::Some(ArtImageVerb::VERB_CONTEMPLATING),
25713            38 => ::std::option::Option::Some(ArtImageVerb::VERB_COOKING),
25714            39 => ::std::option::Option::Some(ArtImageVerb::VERB_ENGRAVING),
25715            40 => ::std::option::Option::Some(ArtImageVerb::VERB_PROSTRATING),
25716            41 => ::std::option::Option::Some(ArtImageVerb::VERB_SUFFERING),
25717            42 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGIMPALED),
25718            43 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGCONTORTED),
25719            44 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGFLAYED),
25720            45 => ::std::option::Option::Some(ArtImageVerb::VERB_HANGINGFROM),
25721            46 => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGMUTILATED),
25722            47 => ::std::option::Option::Some(ArtImageVerb::VERB_TRIUMPHANTPOSE),
25723            _ => ::std::option::Option::None
25724        }
25725    }
25726
25727    fn from_str(str: &str) -> ::std::option::Option<ArtImageVerb> {
25728        match str {
25729            "VERB_WITHERING" => ::std::option::Option::Some(ArtImageVerb::VERB_WITHERING),
25730            "VERB_SURROUNDEDBY" => ::std::option::Option::Some(ArtImageVerb::VERB_SURROUNDEDBY),
25731            "VERB_MASSACRING" => ::std::option::Option::Some(ArtImageVerb::VERB_MASSACRING),
25732            "VERB_FIGHTING" => ::std::option::Option::Some(ArtImageVerb::VERB_FIGHTING),
25733            "VERB_LABORING" => ::std::option::Option::Some(ArtImageVerb::VERB_LABORING),
25734            "VERB_GREETING" => ::std::option::Option::Some(ArtImageVerb::VERB_GREETING),
25735            "VERB_REFUSING" => ::std::option::Option::Some(ArtImageVerb::VERB_REFUSING),
25736            "VERB_SPEAKING" => ::std::option::Option::Some(ArtImageVerb::VERB_SPEAKING),
25737            "VERB_EMBRACING" => ::std::option::Option::Some(ArtImageVerb::VERB_EMBRACING),
25738            "VERB_STRIKINGDOWN" => ::std::option::Option::Some(ArtImageVerb::VERB_STRIKINGDOWN),
25739            "VERB_MENACINGPOSE" => ::std::option::Option::Some(ArtImageVerb::VERB_MENACINGPOSE),
25740            "VERB_TRAVELING" => ::std::option::Option::Some(ArtImageVerb::VERB_TRAVELING),
25741            "VERB_RAISING" => ::std::option::Option::Some(ArtImageVerb::VERB_RAISING),
25742            "VERB_HIDING" => ::std::option::Option::Some(ArtImageVerb::VERB_HIDING),
25743            "VERB_LOOKINGCONFUSED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGCONFUSED),
25744            "VERB_LOOKINGTERRIFIED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGTERRIFIED),
25745            "VERB_DEVOURING" => ::std::option::Option::Some(ArtImageVerb::VERB_DEVOURING),
25746            "VERB_ADMIRING" => ::std::option::Option::Some(ArtImageVerb::VERB_ADMIRING),
25747            "VERB_BURNING" => ::std::option::Option::Some(ArtImageVerb::VERB_BURNING),
25748            "VERB_WEEPING" => ::std::option::Option::Some(ArtImageVerb::VERB_WEEPING),
25749            "VERB_LOOKINGDEJECTED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGDEJECTED),
25750            "VERB_CRINGING" => ::std::option::Option::Some(ArtImageVerb::VERB_CRINGING),
25751            "VERB_SCREAMING" => ::std::option::Option::Some(ArtImageVerb::VERB_SCREAMING),
25752            "VERB_SUBMISSIVEGESTURE" => ::std::option::Option::Some(ArtImageVerb::VERB_SUBMISSIVEGESTURE),
25753            "VERB_FETALPOSITION" => ::std::option::Option::Some(ArtImageVerb::VERB_FETALPOSITION),
25754            "VERB_SMEAREDINTOSPIRAL" => ::std::option::Option::Some(ArtImageVerb::VERB_SMEAREDINTOSPIRAL),
25755            "VERB_FALLING" => ::std::option::Option::Some(ArtImageVerb::VERB_FALLING),
25756            "VERB_DEAD" => ::std::option::Option::Some(ArtImageVerb::VERB_DEAD),
25757            "VERB_LAUGHING" => ::std::option::Option::Some(ArtImageVerb::VERB_LAUGHING),
25758            "VERB_LOOKINGOFFENDED" => ::std::option::Option::Some(ArtImageVerb::VERB_LOOKINGOFFENDED),
25759            "VERB_BEINGSHOT" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGSHOT),
25760            "VERB_PLAINTIVEGESTURE" => ::std::option::Option::Some(ArtImageVerb::VERB_PLAINTIVEGESTURE),
25761            "VERB_MELTING" => ::std::option::Option::Some(ArtImageVerb::VERB_MELTING),
25762            "VERB_SHOOTING" => ::std::option::Option::Some(ArtImageVerb::VERB_SHOOTING),
25763            "VERB_TORTURING" => ::std::option::Option::Some(ArtImageVerb::VERB_TORTURING),
25764            "VERB_COMMITTINGDEPRAVEDACT" => ::std::option::Option::Some(ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT),
25765            "VERB_PRAYING" => ::std::option::Option::Some(ArtImageVerb::VERB_PRAYING),
25766            "VERB_CONTEMPLATING" => ::std::option::Option::Some(ArtImageVerb::VERB_CONTEMPLATING),
25767            "VERB_COOKING" => ::std::option::Option::Some(ArtImageVerb::VERB_COOKING),
25768            "VERB_ENGRAVING" => ::std::option::Option::Some(ArtImageVerb::VERB_ENGRAVING),
25769            "VERB_PROSTRATING" => ::std::option::Option::Some(ArtImageVerb::VERB_PROSTRATING),
25770            "VERB_SUFFERING" => ::std::option::Option::Some(ArtImageVerb::VERB_SUFFERING),
25771            "VERB_BEINGIMPALED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGIMPALED),
25772            "VERB_BEINGCONTORTED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGCONTORTED),
25773            "VERB_BEINGFLAYED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGFLAYED),
25774            "VERB_HANGINGFROM" => ::std::option::Option::Some(ArtImageVerb::VERB_HANGINGFROM),
25775            "VERB_BEINGMUTILATED" => ::std::option::Option::Some(ArtImageVerb::VERB_BEINGMUTILATED),
25776            "VERB_TRIUMPHANTPOSE" => ::std::option::Option::Some(ArtImageVerb::VERB_TRIUMPHANTPOSE),
25777            _ => ::std::option::Option::None
25778        }
25779    }
25780
25781    const VALUES: &'static [ArtImageVerb] = &[
25782        ArtImageVerb::VERB_WITHERING,
25783        ArtImageVerb::VERB_SURROUNDEDBY,
25784        ArtImageVerb::VERB_MASSACRING,
25785        ArtImageVerb::VERB_FIGHTING,
25786        ArtImageVerb::VERB_LABORING,
25787        ArtImageVerb::VERB_GREETING,
25788        ArtImageVerb::VERB_REFUSING,
25789        ArtImageVerb::VERB_SPEAKING,
25790        ArtImageVerb::VERB_EMBRACING,
25791        ArtImageVerb::VERB_STRIKINGDOWN,
25792        ArtImageVerb::VERB_MENACINGPOSE,
25793        ArtImageVerb::VERB_TRAVELING,
25794        ArtImageVerb::VERB_RAISING,
25795        ArtImageVerb::VERB_HIDING,
25796        ArtImageVerb::VERB_LOOKINGCONFUSED,
25797        ArtImageVerb::VERB_LOOKINGTERRIFIED,
25798        ArtImageVerb::VERB_DEVOURING,
25799        ArtImageVerb::VERB_ADMIRING,
25800        ArtImageVerb::VERB_BURNING,
25801        ArtImageVerb::VERB_WEEPING,
25802        ArtImageVerb::VERB_LOOKINGDEJECTED,
25803        ArtImageVerb::VERB_CRINGING,
25804        ArtImageVerb::VERB_SCREAMING,
25805        ArtImageVerb::VERB_SUBMISSIVEGESTURE,
25806        ArtImageVerb::VERB_FETALPOSITION,
25807        ArtImageVerb::VERB_SMEAREDINTOSPIRAL,
25808        ArtImageVerb::VERB_FALLING,
25809        ArtImageVerb::VERB_DEAD,
25810        ArtImageVerb::VERB_LAUGHING,
25811        ArtImageVerb::VERB_LOOKINGOFFENDED,
25812        ArtImageVerb::VERB_BEINGSHOT,
25813        ArtImageVerb::VERB_PLAINTIVEGESTURE,
25814        ArtImageVerb::VERB_MELTING,
25815        ArtImageVerb::VERB_SHOOTING,
25816        ArtImageVerb::VERB_TORTURING,
25817        ArtImageVerb::VERB_COMMITTINGDEPRAVEDACT,
25818        ArtImageVerb::VERB_PRAYING,
25819        ArtImageVerb::VERB_CONTEMPLATING,
25820        ArtImageVerb::VERB_COOKING,
25821        ArtImageVerb::VERB_ENGRAVING,
25822        ArtImageVerb::VERB_PROSTRATING,
25823        ArtImageVerb::VERB_SUFFERING,
25824        ArtImageVerb::VERB_BEINGIMPALED,
25825        ArtImageVerb::VERB_BEINGCONTORTED,
25826        ArtImageVerb::VERB_BEINGFLAYED,
25827        ArtImageVerb::VERB_HANGINGFROM,
25828        ArtImageVerb::VERB_BEINGMUTILATED,
25829        ArtImageVerb::VERB_TRIUMPHANTPOSE,
25830    ];
25831}
25832
25833impl ::protobuf::EnumFull for ArtImageVerb {
25834    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25835        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25836        descriptor.get(|| file_descriptor().enum_by_package_relative_name("ArtImageVerb").unwrap()).clone()
25837    }
25838
25839    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25840        let index = *self as usize;
25841        Self::enum_descriptor().value_by_index(index)
25842    }
25843}
25844
25845impl ::std::default::Default for ArtImageVerb {
25846    fn default() -> Self {
25847        ArtImageVerb::VERB_WITHERING
25848    }
25849}
25850
25851impl ArtImageVerb {
25852    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25853        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<ArtImageVerb>("ArtImageVerb")
25854    }
25855}
25856
25857#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
25858// @@protoc_insertion_point(enum:RemoteFortressReader.FlowType)
25859pub enum FlowType {
25860    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Miasma)
25861    Miasma = 0,
25862    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Steam)
25863    Steam = 1,
25864    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Mist)
25865    Mist = 2,
25866    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialDust)
25867    MaterialDust = 3,
25868    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MagmaMist)
25869    MagmaMist = 4,
25870    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Smoke)
25871    Smoke = 5,
25872    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Dragonfire)
25873    Dragonfire = 6,
25874    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Fire)
25875    Fire = 7,
25876    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.Web)
25877    Web = 8,
25878    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialGas)
25879    MaterialGas = 9,
25880    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.MaterialVapor)
25881    MaterialVapor = 10,
25882    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.OceanWave)
25883    OceanWave = 11,
25884    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.SeaFoam)
25885    SeaFoam = 12,
25886    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.ItemCloud)
25887    ItemCloud = 13,
25888    // @@protoc_insertion_point(enum_value:RemoteFortressReader.FlowType.CampFire)
25889    CampFire = -1,
25890}
25891
25892impl ::protobuf::Enum for FlowType {
25893    const NAME: &'static str = "FlowType";
25894
25895    fn value(&self) -> i32 {
25896        *self as i32
25897    }
25898
25899    fn from_i32(value: i32) -> ::std::option::Option<FlowType> {
25900        match value {
25901            0 => ::std::option::Option::Some(FlowType::Miasma),
25902            1 => ::std::option::Option::Some(FlowType::Steam),
25903            2 => ::std::option::Option::Some(FlowType::Mist),
25904            3 => ::std::option::Option::Some(FlowType::MaterialDust),
25905            4 => ::std::option::Option::Some(FlowType::MagmaMist),
25906            5 => ::std::option::Option::Some(FlowType::Smoke),
25907            6 => ::std::option::Option::Some(FlowType::Dragonfire),
25908            7 => ::std::option::Option::Some(FlowType::Fire),
25909            8 => ::std::option::Option::Some(FlowType::Web),
25910            9 => ::std::option::Option::Some(FlowType::MaterialGas),
25911            10 => ::std::option::Option::Some(FlowType::MaterialVapor),
25912            11 => ::std::option::Option::Some(FlowType::OceanWave),
25913            12 => ::std::option::Option::Some(FlowType::SeaFoam),
25914            13 => ::std::option::Option::Some(FlowType::ItemCloud),
25915            -1 => ::std::option::Option::Some(FlowType::CampFire),
25916            _ => ::std::option::Option::None
25917        }
25918    }
25919
25920    fn from_str(str: &str) -> ::std::option::Option<FlowType> {
25921        match str {
25922            "Miasma" => ::std::option::Option::Some(FlowType::Miasma),
25923            "Steam" => ::std::option::Option::Some(FlowType::Steam),
25924            "Mist" => ::std::option::Option::Some(FlowType::Mist),
25925            "MaterialDust" => ::std::option::Option::Some(FlowType::MaterialDust),
25926            "MagmaMist" => ::std::option::Option::Some(FlowType::MagmaMist),
25927            "Smoke" => ::std::option::Option::Some(FlowType::Smoke),
25928            "Dragonfire" => ::std::option::Option::Some(FlowType::Dragonfire),
25929            "Fire" => ::std::option::Option::Some(FlowType::Fire),
25930            "Web" => ::std::option::Option::Some(FlowType::Web),
25931            "MaterialGas" => ::std::option::Option::Some(FlowType::MaterialGas),
25932            "MaterialVapor" => ::std::option::Option::Some(FlowType::MaterialVapor),
25933            "OceanWave" => ::std::option::Option::Some(FlowType::OceanWave),
25934            "SeaFoam" => ::std::option::Option::Some(FlowType::SeaFoam),
25935            "ItemCloud" => ::std::option::Option::Some(FlowType::ItemCloud),
25936            "CampFire" => ::std::option::Option::Some(FlowType::CampFire),
25937            _ => ::std::option::Option::None
25938        }
25939    }
25940
25941    const VALUES: &'static [FlowType] = &[
25942        FlowType::Miasma,
25943        FlowType::Steam,
25944        FlowType::Mist,
25945        FlowType::MaterialDust,
25946        FlowType::MagmaMist,
25947        FlowType::Smoke,
25948        FlowType::Dragonfire,
25949        FlowType::Fire,
25950        FlowType::Web,
25951        FlowType::MaterialGas,
25952        FlowType::MaterialVapor,
25953        FlowType::OceanWave,
25954        FlowType::SeaFoam,
25955        FlowType::ItemCloud,
25956        FlowType::CampFire,
25957    ];
25958}
25959
25960impl ::protobuf::EnumFull for FlowType {
25961    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
25962        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
25963        descriptor.get(|| file_descriptor().enum_by_package_relative_name("FlowType").unwrap()).clone()
25964    }
25965
25966    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
25967        let index = match self {
25968            FlowType::Miasma => 0,
25969            FlowType::Steam => 1,
25970            FlowType::Mist => 2,
25971            FlowType::MaterialDust => 3,
25972            FlowType::MagmaMist => 4,
25973            FlowType::Smoke => 5,
25974            FlowType::Dragonfire => 6,
25975            FlowType::Fire => 7,
25976            FlowType::Web => 8,
25977            FlowType::MaterialGas => 9,
25978            FlowType::MaterialVapor => 10,
25979            FlowType::OceanWave => 11,
25980            FlowType::SeaFoam => 12,
25981            FlowType::ItemCloud => 13,
25982            FlowType::CampFire => 14,
25983        };
25984        Self::enum_descriptor().value_by_index(index)
25985    }
25986}
25987
25988impl ::std::default::Default for FlowType {
25989    fn default() -> Self {
25990        FlowType::Miasma
25991    }
25992}
25993
25994impl FlowType {
25995    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
25996        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<FlowType>("FlowType")
25997    }
25998}
25999
26000static file_descriptor_proto_data: &'static [u8] = b"\
26001    \n\x1aRemoteFortressReader.proto\x12\x14RemoteFortressReader\x1a\x17Item\
26002    defInstrument.proto\"1\n\x05Coord\x12\x0c\n\x01x\x18\x01\x20\x01(\x05R\
26003    \x01x\x12\x0c\n\x01y\x18\x02\x20\x01(\x05R\x01y\x12\x0c\n\x01z\x18\x03\
26004    \x20\x01(\x05R\x01z\"\xe7\x02\n\x08Tiletype\x12\x0e\n\x02id\x18\x01\x20\
26005    \x02(\x05R\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12\x18\n\
26006    \x07caption\x18\x03\x20\x01(\tR\x07caption\x129\n\x05shape\x18\x04\x20\
26007    \x01(\x0e2#.RemoteFortressReader.TiletypeShapeR\x05shape\x12?\n\x07speci\
26008    al\x18\x05\x20\x01(\x0e2%.RemoteFortressReader.TiletypeSpecialR\x07speci\
26009    al\x12B\n\x08material\x18\x06\x20\x01(\x0e2&.RemoteFortressReader.Tilety\
26010    peMaterialR\x08material\x12?\n\x07variant\x18\x07\x20\x01(\x0e2%.RemoteF\
26011    ortressReader.TiletypeVariantR\x07variant\x12\x1c\n\tdirection\x18\x08\
26012    \x20\x01(\tR\tdirection\"S\n\x0cTiletypeList\x12C\n\rtiletype_list\x18\
26013    \x01\x20\x03(\x0b2\x1e.RemoteFortressReader.TiletypeR\x0ctiletypeList\"\
26014    \x83\x01\n\x0fBuildingExtents\x12\x13\n\x05pos_x\x18\x01\x20\x02(\x05R\
26015    \x04posX\x12\x13\n\x05pos_y\x18\x02\x20\x02(\x05R\x04posY\x12\x14\n\x05w\
26016    idth\x18\x03\x20\x02(\x05R\x05width\x12\x16\n\x06height\x18\x04\x20\x02(\
26017    \x05R\x06height\x12\x18\n\x07extents\x18\x05\x20\x03(\x05R\x07extents\"R\
26018    \n\x0cBuildingItem\x12.\n\x04item\x18\x01\x20\x01(\x0b2\x1a.RemoteFortre\
26019    ssReader.ItemR\x04item\x12\x12\n\x04mode\x18\x02\x20\x01(\x05R\x04mode\"\
26020    \xe8\x04\n\x10BuildingInstance\x12\x14\n\x05index\x18\x01\x20\x02(\x05R\
26021    \x05index\x12\x1a\n\tpos_x_min\x18\x02\x20\x01(\x05R\x07posXMin\x12\x1a\
26022    \n\tpos_y_min\x18\x03\x20\x01(\x05R\x07posYMin\x12\x1a\n\tpos_z_min\x18\
26023    \x04\x20\x01(\x05R\x07posZMin\x12\x1a\n\tpos_x_max\x18\x05\x20\x01(\x05R\
26024    \x07posXMax\x12\x1a\n\tpos_y_max\x18\x06\x20\x01(\x05R\x07posYMax\x12\
26025    \x1a\n\tpos_z_max\x18\x07\x20\x01(\x05R\x07posZMax\x12G\n\rbuilding_type\
26026    \x18\x08\x20\x01(\x0b2\".RemoteFortressReader.BuildingTypeR\x0cbuildingT\
26027    ype\x129\n\x08material\x18\t\x20\x01(\x0b2\x1d.RemoteFortressReader.MatP\
26028    airR\x08material\x12%\n\x0ebuilding_flags\x18\n\x20\x01(\rR\rbuildingFla\
26029    gs\x12\x17\n\x07is_room\x18\x0b\x20\x01(\x08R\x06isRoom\x129\n\x04room\
26030    \x18\x0c\x20\x01(\x0b2%.RemoteFortressReader.BuildingExtentsR\x04room\
26031    \x12E\n\tdirection\x18\r\x20\x01(\x0e2'.RemoteFortressReader.BuildingDir\
26032    ectionR\tdirection\x128\n\x05items\x18\x0e\x20\x03(\x0b2\".RemoteFortres\
26033    sReader.BuildingItemR\x05items\x12\x16\n\x06active\x18\x0f\x20\x01(\x05R\
26034    \x06active\"s\n\tRiverEdge\x12\x17\n\x07min_pos\x18\x01\x20\x01(\x05R\
26035    \x06minPos\x12\x17\n\x07max_pos\x18\x02\x20\x01(\x05R\x06maxPos\x12\x16\
26036    \n\x06active\x18\x03\x20\x01(\x05R\x06active\x12\x1c\n\televation\x18\
26037    \x04\x20\x01(\x05R\televation\"\xe3\x01\n\tRiverTile\x125\n\x05north\x18\
26038    \x01\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverEdgeR\x05north\x125\n\
26039    \x05south\x18\x02\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverEdgeR\x05s\
26040    outh\x123\n\x04east\x18\x03\x20\x01(\x0b2\x1f.RemoteFortressReader.River\
26041    EdgeR\x04east\x123\n\x04west\x18\x04\x20\x01(\x0b2\x1f.RemoteFortressRea\
26042    der.RiverEdgeR\x04west\"\xc8\x01\n\x07Spatter\x129\n\x08material\x18\x01\
26043    \x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x12\x16\n\
26044    \x06amount\x18\x02\x20\x01(\x05R\x06amount\x127\n\x05state\x18\x03\x20\
26045    \x01(\x0e2!.RemoteFortressReader.MatterStateR\x05state\x121\n\x04item\
26046    \x18\x04\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04item\"H\n\
26047    \x0bSpatterPile\x129\n\x08spatters\x18\x01\x20\x03(\x0b2\x1d.RemoteFortr\
26048    essReader.SpatterR\x08spatters\"\xa2\x05\n\x04Item\x12\x0e\n\x02id\x18\
26049    \x01\x20\x01(\x05R\x02id\x12-\n\x03pos\x18\x02\x20\x01(\x0b2\x1b.RemoteF\
26050    ortressReader.CoordR\x03pos\x12\x16\n\x06flags1\x18\x03\x20\x01(\rR\x06f\
26051    lags1\x12\x16\n\x06flags2\x18\x04\x20\x01(\rR\x06flags2\x121\n\x04type\
26052    \x18\x05\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x04type\x129\n\
26053    \x08material\x18\x06\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08\
26054    material\x127\n\x03dye\x18\x07\x20\x01(\x0b2%.RemoteFortressReader.Color\
26055    DefinitionR\x03dye\x12\x1d\n\nstack_size\x18\x08\x20\x01(\x05R\tstackSiz\
26056    e\x12\x19\n\x08subpos_x\x18\t\x20\x01(\x02R\x07subposX\x12\x19\n\x08subp\
26057    os_y\x18\n\x20\x01(\x02R\x07subposY\x12\x19\n\x08subpos_z\x18\x0b\x20\
26058    \x01(\x02R\x07subposZ\x12\x1e\n\nprojectile\x18\x0c\x20\x01(\x08R\nproje\
26059    ctile\x12\x1d\n\nvelocity_x\x18\r\x20\x01(\x02R\tvelocityX\x12\x1d\n\nve\
26060    locity_y\x18\x0e\x20\x01(\x02R\tvelocityY\x12\x1d\n\nvelocity_z\x18\x0f\
26061    \x20\x01(\x02R\tvelocityZ\x12\x16\n\x06volume\x18\x10\x20\x01(\x05R\x06v\
26062    olume\x12I\n\x0cimprovements\x18\x11\x20\x03(\x0b2%.RemoteFortressReader\
26063    .ItemImprovementR\x0cimprovements\x124\n\x05image\x18\x12\x20\x01(\x0b2\
26064    \x1e.RemoteFortressReader.ArtImageR\x05image\"\xbf\x02\n\tPlantTile\x12\
26065    \x14\n\x05trunk\x18\x01\x20\x01(\x08R\x05trunk\x12'\n\x0fconnection_east\
26066    \x18\x02\x20\x01(\x08R\x0econnectionEast\x12)\n\x10connection_south\x18\
26067    \x03\x20\x01(\x08R\x0fconnectionSouth\x12'\n\x0fconnection_west\x18\x04\
26068    \x20\x01(\x08R\x0econnectionWest\x12)\n\x10connection_north\x18\x05\x20\
26069    \x01(\x08R\x0fconnectionNorth\x12\x1a\n\x08branches\x18\x06\x20\x01(\x08\
26070    R\x08branches\x12\x14\n\x05twigs\x18\x07\x20\x01(\x08R\x05twigs\x12B\n\t\
26071    tile_type\x18\x08\x20\x01(\x0e2%.RemoteFortressReader.TiletypeSpecialR\
26072    \x08tileType\"r\n\x08TreeInfo\x12/\n\x04size\x18\x01\x20\x01(\x0b2\x1b.R\
26073    emoteFortressReader.CoordR\x04size\x125\n\x05tiles\x18\x02\x20\x03(\x0b2\
26074    \x1f.RemoteFortressReader.PlantTileR\x05tiles\"\x9a\x01\n\rPlantInstance\
26075    \x12\x1d\n\nplant_type\x18\x01\x20\x01(\x05R\tplantType\x12-\n\x03pos\
26076    \x18\x02\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos\x12;\n\ttr\
26077    ee_info\x18\x03\x20\x01(\x0b2\x1e.RemoteFortressReader.TreeInfoR\x08tree\
26078    Info\"\x8c\n\n\x08MapBlock\x12\x13\n\x05map_x\x18\x01\x20\x02(\x05R\x04m\
26079    apX\x12\x13\n\x05map_y\x18\x02\x20\x02(\x05R\x04mapY\x12\x13\n\x05map_z\
26080    \x18\x03\x20\x02(\x05R\x04mapZ\x12\x14\n\x05tiles\x18\x04\x20\x03(\x05R\
26081    \x05tiles\x12;\n\tmaterials\x18\x05\x20\x03(\x0b2\x1d.RemoteFortressRead\
26082    er.MatPairR\tmaterials\x12F\n\x0flayer_materials\x18\x06\x20\x03(\x0b2\
26083    \x1d.RemoteFortressReader.MatPairR\x0elayerMaterials\x12D\n\x0evein_mate\
26084    rials\x18\x07\x20\x03(\x0b2\x1d.RemoteFortressReader.MatPairR\rveinMater\
26085    ials\x12D\n\x0ebase_materials\x18\x08\x20\x03(\x0b2\x1d.RemoteFortressRe\
26086    ader.MatPairR\rbaseMaterials\x12\x14\n\x05magma\x18\t\x20\x03(\x05R\x05m\
26087    agma\x12\x14\n\x05water\x18\n\x20\x03(\x05R\x05water\x12\x16\n\x06hidden\
26088    \x18\x0b\x20\x03(\x08R\x06hidden\x12\x14\n\x05light\x18\x0c\x20\x03(\x08\
26089    R\x05light\x12\"\n\x0csubterranean\x18\r\x20\x03(\x08R\x0csubterranean\
26090    \x12\x18\n\x07outside\x18\x0e\x20\x03(\x08R\x07outside\x12\x18\n\x07aqui\
26091    fer\x18\x0f\x20\x03(\x08R\x07aquifer\x12%\n\x0ewater_stagnant\x18\x10\
26092    \x20\x03(\x08R\rwaterStagnant\x12\x1d\n\nwater_salt\x18\x11\x20\x03(\x08\
26093    R\twaterSalt\x12L\n\x12construction_items\x18\x12\x20\x03(\x0b2\x1d.Remo\
26094    teFortressReader.MatPairR\x11constructionItems\x12D\n\tbuildings\x18\x13\
26095    \x20\x03(\x0b2&.RemoteFortressReader.BuildingInstanceR\tbuildings\x12!\n\
26096    \x0ctree_percent\x18\x14\x20\x03(\x05R\x0btreePercent\x12\x15\n\x06tree_\
26097    x\x18\x15\x20\x03(\x05R\x05treeX\x12\x15\n\x06tree_y\x18\x16\x20\x03(\
26098    \x05R\x05treeY\x12\x15\n\x06tree_z\x18\x17\x20\x03(\x05R\x05treeZ\x12Z\n\
26099    \x14tile_dig_designation\x18\x18\x20\x03(\x0e2(.RemoteFortressReader.Til\
26100    eDigDesignationR\x12tileDigDesignation\x12C\n\x0bspatterPile\x18\x19\x20\
26101    \x03(\x0b2!.RemoteFortressReader.SpatterPileR\x0bspatterPile\x120\n\x05i\
26102    tems\x18\x1a\x20\x03(\x0b2\x1a.RemoteFortressReader.ItemR\x05items\x12=\
26103    \n\x1btile_dig_designation_marker\x18\x1b\x20\x03(\x08R\x18tileDigDesign\
26104    ationMarker\x129\n\x19tile_dig_designation_auto\x18\x1c\x20\x03(\x08R\
26105    \x16tileDigDesignationAuto\x12#\n\rgrass_percent\x18\x1d\x20\x03(\x05R\
26106    \x0cgrassPercent\x124\n\x05flows\x18\x1e\x20\x03(\x0b2\x1e.RemoteFortres\
26107    sReader.FlowInfoR\x05flows\"A\n\x07MatPair\x12\x19\n\x08mat_type\x18\x01\
26108    \x20\x02(\x05R\x07matType\x12\x1b\n\tmat_index\x18\x02\x20\x02(\x05R\x08\
26109    matIndex\"M\n\x0fColorDefinition\x12\x10\n\x03red\x18\x01\x20\x02(\x05R\
26110    \x03red\x12\x14\n\x05green\x18\x02\x20\x02(\x05R\x05green\x12\x12\n\x04b\
26111    lue\x18\x03\x20\x02(\x05R\x04blue\"\xea\x02\n\x12MaterialDefinition\x128\
26112    \n\x08mat_pair\x18\x01\x20\x02(\x0b2\x1d.RemoteFortressReader.MatPairR\
26113    \x07matPair\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02id\x12\x12\n\x04name\
26114    \x18\x03\x20\x01(\x0cR\x04name\x12F\n\x0bstate_color\x18\x04\x20\x01(\
26115    \x0b2%.RemoteFortressReader.ColorDefinitionR\nstateColor\x12@\n\ninstrum\
26116    ent\x18\x05\x20\x01(\x0b2\x20.ItemdefInstrument.InstrumentDefR\ninstrume\
26117    nt\x12\x17\n\x07up_step\x18\x06\x20\x01(\x05R\x06upStep\x12\x1b\n\tdown_\
26118    step\x18\x07\x20\x01(\x05R\x08downStep\x126\n\x05layer\x18\x08\x20\x01(\
26119    \x0e2\x20.RemoteFortressReader.ArmorLayerR\x05layer\"\x87\x01\n\x0cBuild\
26120    ingType\x12#\n\rbuilding_type\x18\x01\x20\x02(\x05R\x0cbuildingType\x12)\
26121    \n\x10building_subtype\x18\x02\x20\x02(\x05R\x0fbuildingSubtype\x12'\n\
26122    \x0fbuilding_custom\x18\x03\x20\x02(\x05R\x0ebuildingCustom\"\x81\x01\n\
26123    \x12BuildingDefinition\x12G\n\rbuilding_type\x18\x01\x20\x02(\x0b2\".Rem\
26124    oteFortressReader.BuildingTypeR\x0cbuildingType\x12\x0e\n\x02id\x18\x02\
26125    \x20\x01(\tR\x02id\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\"]\n\
26126    \x0cBuildingList\x12M\n\rbuilding_list\x18\x01\x20\x03(\x0b2(.RemoteFort\
26127    ressReader.BuildingDefinitionR\x0cbuildingList\"]\n\x0cMaterialList\x12M\
26128    \n\rmaterial_list\x18\x01\x20\x03(\x0b2(.RemoteFortressReader.MaterialDe\
26129    finitionR\x0cmaterialList\"U\n\x04Hair\x12\x16\n\x06length\x18\x01\x20\
26130    \x01(\x05R\x06length\x125\n\x05style\x18\x02\x20\x01(\x0e2\x1f.RemoteFor\
26131    tressReader.HairStyleR\x05style\"\xbe\x01\n\x0cBodySizeInfo\x12\x19\n\
26132    \x08size_cur\x18\x01\x20\x01(\x05R\x07sizeCur\x12\x1b\n\tsize_base\x18\
26133    \x02\x20\x01(\x05R\x08sizeBase\x12\x19\n\x08area_cur\x18\x03\x20\x01(\
26134    \x05R\x07areaCur\x12\x1b\n\tarea_base\x18\x04\x20\x01(\x05R\x08areaBase\
26135    \x12\x1d\n\nlength_cur\x18\x05\x20\x01(\x05R\tlengthCur\x12\x1f\n\x0blen\
26136    gth_base\x18\x06\x20\x01(\x05R\nlengthBase\"\xa0\x03\n\x0eUnitAppearance\
26137    \x12%\n\x0ebody_modifiers\x18\x01\x20\x03(\x05R\rbodyModifiers\x12!\n\
26138    \x0cbp_modifiers\x18\x02\x20\x03(\x05R\x0bbpModifiers\x12#\n\rsize_modif\
26139    ier\x18\x03\x20\x01(\x05R\x0csizeModifier\x12\x16\n\x06colors\x18\x04\
26140    \x20\x03(\x05R\x06colors\x12.\n\x04hair\x18\x05\x20\x01(\x0b2\x1a.Remote\
26141    FortressReader.HairR\x04hair\x120\n\x05beard\x18\x06\x20\x01(\x0b2\x1a.R\
26142    emoteFortressReader.HairR\x05beard\x128\n\tmoustache\x18\x07\x20\x01(\
26143    \x0b2\x1a.RemoteFortressReader.HairR\tmoustache\x128\n\tsideburns\x18\
26144    \x08\x20\x01(\x0b2\x1a.RemoteFortressReader.HairR\tsideburns\x121\n\x14p\
26145    hysical_description\x18\t\x20\x01(\tR\x13physicalDescription\"\x9a\x01\n\
26146    \rInventoryItem\x127\n\x04mode\x18\x01\x20\x01(\x0e2#.RemoteFortressRead\
26147    er.InventoryModeR\x04mode\x12.\n\x04item\x18\x02\x20\x01(\x0b2\x1a.Remot\
26148    eFortressReader.ItemR\x04item\x12\x20\n\x0cbody_part_id\x18\x03\x20\x01(\
26149    \x05R\nbodyPartId\"t\n\tWoundPart\x12(\n\x10global_layer_idx\x18\x01\x20\
26150    \x01(\x05R\x0eglobalLayerIdx\x12\x20\n\x0cbody_part_id\x18\x02\x20\x01(\
26151    \x05R\nbodyPartId\x12\x1b\n\tlayer_idx\x18\x03\x20\x01(\x05R\x08layerIdx\
26152    \"e\n\tUnitWound\x125\n\x05parts\x18\x01\x20\x03(\x0b2\x1f.RemoteFortres\
26153    sReader.WoundPartR\x05parts\x12!\n\x0csevered_part\x18\x02\x20\x01(\x08R\
26154    \x0bseveredPart\"\xbb\x07\n\x0eUnitDefinition\x12\x0e\n\x02id\x18\x01\
26155    \x20\x02(\x05R\x02id\x12\x18\n\x07isValid\x18\x02\x20\x01(\x08R\x07isVal\
26156    id\x12\x13\n\x05pos_x\x18\x03\x20\x01(\x05R\x04posX\x12\x13\n\x05pos_y\
26157    \x18\x04\x20\x01(\x05R\x04posY\x12\x13\n\x05pos_z\x18\x05\x20\x01(\x05R\
26158    \x04posZ\x121\n\x04race\x18\x06\x20\x01(\x0b2\x1d.RemoteFortressReader.M\
26159    atPairR\x04race\x12P\n\x10profession_color\x18\x07\x20\x01(\x0b2%.Remote\
26160    FortressReader.ColorDefinitionR\x0fprofessionColor\x12\x16\n\x06flags1\
26161    \x18\x08\x20\x01(\rR\x06flags1\x12\x16\n\x06flags2\x18\t\x20\x01(\rR\x06\
26162    flags2\x12\x16\n\x06flags3\x18\n\x20\x01(\rR\x06flags3\x12\x1d\n\nis_sol\
26163    dier\x18\x0b\x20\x01(\x08R\tisSoldier\x12?\n\tsize_info\x18\x0c\x20\x01(\
26164    \x0b2\".RemoteFortressReader.BodySizeInfoR\x08sizeInfo\x12\x12\n\x04name\
26165    \x18\r\x20\x01(\tR\x04name\x12\x1b\n\tblood_max\x18\x0e\x20\x01(\x05R\
26166    \x08bloodMax\x12\x1f\n\x0bblood_count\x18\x0f\x20\x01(\x05R\nbloodCount\
26167    \x12D\n\nappearance\x18\x10\x20\x01(\x0b2$.RemoteFortressReader.UnitAppe\
26168    aranceR\nappearance\x12#\n\rprofession_id\x18\x11\x20\x01(\x05R\x0cprofe\
26169    ssionId\x12'\n\x0fnoble_positions\x18\x12\x20\x03(\tR\x0enoblePositions\
26170    \x12\x19\n\x08rider_id\x18\x13\x20\x01(\x05R\x07riderId\x12A\n\tinventor\
26171    y\x18\x14\x20\x03(\x0b2#.RemoteFortressReader.InventoryItemR\tinventory\
26172    \x12\x19\n\x08subpos_x\x18\x15\x20\x01(\x02R\x07subposX\x12\x19\n\x08sub\
26173    pos_y\x18\x16\x20\x01(\x02R\x07subposY\x12\x19\n\x08subpos_z\x18\x17\x20\
26174    \x01(\x02R\x07subposZ\x123\n\x06facing\x18\x18\x20\x01(\x0b2\x1b.RemoteF\
26175    ortressReader.CoordR\x06facing\x12\x10\n\x03age\x18\x19\x20\x01(\x05R\
26176    \x03age\x127\n\x06wounds\x18\x1a\x20\x03(\x0b2\x1f.RemoteFortressReader.\
26177    UnitWoundR\x06wounds\"U\n\x08UnitList\x12I\n\rcreature_list\x18\x01\x20\
26178    \x03(\x0b2$.RemoteFortressReader.UnitDefinitionR\x0ccreatureList\"\xb1\
26179    \x01\n\x0cBlockRequest\x12#\n\rblocks_needed\x18\x01\x20\x01(\x05R\x0cbl\
26180    ocksNeeded\x12\x13\n\x05min_x\x18\x02\x20\x01(\x05R\x04minX\x12\x13\n\
26181    \x05max_x\x18\x03\x20\x01(\x05R\x04maxX\x12\x13\n\x05min_y\x18\x04\x20\
26182    \x01(\x05R\x04minY\x12\x13\n\x05max_y\x18\x05\x20\x01(\x05R\x04maxY\x12\
26183    \x13\n\x05min_z\x18\x06\x20\x01(\x05R\x04minZ\x12\x13\n\x05max_z\x18\x07\
26184    \x20\x01(\x05R\x04maxZ\"\xf2\x01\n\tBlockList\x12=\n\nmap_blocks\x18\x01\
26185    \x20\x03(\x0b2\x1e.RemoteFortressReader.MapBlockR\tmapBlocks\x12\x13\n\
26186    \x05map_x\x18\x02\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x03\x20\
26187    \x01(\x05R\x04mapY\x12?\n\nengravings\x18\x04\x20\x03(\x0b2\x1f.RemoteFo\
26188    rtressReader.EngravingR\nengravings\x12;\n\x0bocean_waves\x18\x05\x20\
26189    \x03(\x0b2\x1a.RemoteFortressReader.WaveR\noceanWaves\"_\n\x08PlantDef\
26190    \x12\x13\n\x05pos_x\x18\x01\x20\x02(\x05R\x04posX\x12\x13\n\x05pos_y\x18\
26191    \x02\x20\x02(\x05R\x04posY\x12\x13\n\x05pos_z\x18\x03\x20\x02(\x05R\x04p\
26192    osZ\x12\x14\n\x05index\x18\x04\x20\x02(\x05R\x05index\"J\n\tPlantList\
26193    \x12=\n\nplant_list\x18\x01\x20\x03(\x0b2\x1e.RemoteFortressReader.Plant\
26194    DefR\tplantList\"\xe2\x02\n\x08ViewInfo\x12\x1c\n\nview_pos_x\x18\x01\
26195    \x20\x01(\x05R\x08viewPosX\x12\x1c\n\nview_pos_y\x18\x02\x20\x01(\x05R\
26196    \x08viewPosY\x12\x1c\n\nview_pos_z\x18\x03\x20\x01(\x05R\x08viewPosZ\x12\
26197    \x1e\n\x0bview_size_x\x18\x04\x20\x01(\x05R\tviewSizeX\x12\x1e\n\x0bview\
26198    _size_y\x18\x05\x20\x01(\x05R\tviewSizeY\x12\x20\n\x0ccursor_pos_x\x18\
26199    \x06\x20\x01(\x05R\ncursorPosX\x12\x20\n\x0ccursor_pos_y\x18\x07\x20\x01\
26200    (\x05R\ncursorPosY\x12\x20\n\x0ccursor_pos_z\x18\x08\x20\x01(\x05R\ncurs\
26201    orPosZ\x12*\n\x0efollow_unit_id\x18\t\x20\x01(\x05:\x02-1R\x0cfollowUnit\
26202    IdB\0\x12*\n\x0efollow_item_id\x18\n\x20\x01(\x05:\x02-1R\x0cfollowItemI\
26203    dB\0\"\xb9\x02\n\x07MapInfo\x12\x20\n\x0cblock_size_x\x18\x01\x20\x01(\
26204    \x05R\nblockSizeX\x12\x20\n\x0cblock_size_y\x18\x02\x20\x01(\x05R\nblock\
26205    SizeY\x12\x20\n\x0cblock_size_z\x18\x03\x20\x01(\x05R\nblockSizeZ\x12\
26206    \x1e\n\x0bblock_pos_x\x18\x04\x20\x01(\x05R\tblockPosX\x12\x1e\n\x0bbloc\
26207    k_pos_y\x18\x05\x20\x01(\x05R\tblockPosY\x12\x1e\n\x0bblock_pos_z\x18\
26208    \x06\x20\x01(\x05R\tblockPosZ\x12\x1d\n\nworld_name\x18\x07\x20\x01(\tR\
26209    \tworldName\x12,\n\x12world_name_english\x18\x08\x20\x01(\tR\x10worldNam\
26210    eEnglish\x12\x1b\n\tsave_name\x18\t\x20\x01(\tR\x08saveName\"\x81\x02\n\
26211    \x05Cloud\x125\n\x05front\x18\x01\x20\x01(\x0e2\x1f.RemoteFortressReader\
26212    .FrontTypeR\x05front\x12;\n\x07cumulus\x18\x02\x20\x01(\x0e2!.RemoteFort\
26213    ressReader.CumulusTypeR\x07cumulus\x12\x16\n\x06cirrus\x18\x03\x20\x01(\
26214    \x08R\x06cirrus\x12;\n\x07stratus\x18\x04\x20\x01(\x0e2!.RemoteFortressR\
26215    eader.StratusTypeR\x07stratus\x12/\n\x03fog\x18\x05\x20\x01(\x0e2\x1d.Re\
26216    moteFortressReader.FogTypeR\x03fog\"\xf1\x06\n\x08WorldMap\x12\x1f\n\x0b\
26217    world_width\x18\x01\x20\x02(\x05R\nworldWidth\x12!\n\x0cworld_height\x18\
26218    \x02\x20\x02(\x05R\x0bworldHeight\x12\x12\n\x04name\x18\x03\x20\x01(\x0c\
26219    R\x04name\x12!\n\x0cname_english\x18\x04\x20\x01(\tR\x0bnameEnglish\x12\
26220    \x1c\n\televation\x18\x05\x20\x03(\x05R\televation\x12\x1a\n\x08rainfall\
26221    \x18\x06\x20\x03(\x05R\x08rainfall\x12\x1e\n\nvegetation\x18\x07\x20\x03\
26222    (\x05R\nvegetation\x12\x20\n\x0btemperature\x18\x08\x20\x03(\x05R\x0btem\
26223    perature\x12\x1a\n\x08evilness\x18\t\x20\x03(\x05R\x08evilness\x12\x1a\n\
26224    \x08drainage\x18\n\x20\x03(\x05R\x08drainage\x12\x1c\n\tvolcanism\x18\
26225    \x0b\x20\x03(\x05R\tvolcanism\x12\x1a\n\x08savagery\x18\x0c\x20\x03(\x05\
26226    R\x08savagery\x123\n\x06clouds\x18\r\x20\x03(\x0b2\x1b.RemoteFortressRea\
26227    der.CloudR\x06clouds\x12\x1a\n\x08salinity\x18\x0e\x20\x03(\x05R\x08sali\
26228    nity\x12\x13\n\x05map_x\x18\x0f\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\
26229    \x18\x10\x20\x01(\x05R\x04mapY\x12\x19\n\x08center_x\x18\x11\x20\x01(\
26230    \x05R\x07centerX\x12\x19\n\x08center_y\x18\x12\x20\x01(\x05R\x07centerY\
26231    \x12\x19\n\x08center_z\x18\x13\x20\x01(\x05R\x07centerZ\x12\x19\n\x08cur\
26232    _year\x18\x14\x20\x01(\x05R\x07curYear\x12\"\n\rcur_year_tick\x18\x15\
26233    \x20\x01(\x05R\x0bcurYearTick\x12A\n\x0bworld_poles\x18\x16\x20\x01(\x0e\
26234    2\x20.RemoteFortressReader.WorldPolesR\nworldPoles\x12@\n\x0briver_tiles\
26235    \x18\x17\x20\x03(\x0b2\x1f.RemoteFortressReader.RiverTileR\nriverTiles\
26236    \x12'\n\x0fwater_elevation\x18\x18\x20\x03(\x05R\x0ewaterElevation\x12C\
26237    \n\x0cregion_tiles\x18\x19\x20\x03(\x0b2\x20.RemoteFortressReader.Region\
26238    TileR\x0bregionTiles\"\xa7\x01\n\x1bSiteRealizationBuildingWall\x12\x17\
26239    \n\x07start_x\x18\x01\x20\x01(\x05R\x06startX\x12\x17\n\x07start_y\x18\
26240    \x02\x20\x01(\x05R\x06startY\x12\x17\n\x07start_z\x18\x03\x20\x01(\x05R\
26241    \x06startZ\x12\x13\n\x05end_x\x18\x04\x20\x01(\x05R\x04endX\x12\x13\n\
26242    \x05end_y\x18\x05\x20\x01(\x05R\x04endY\x12\x13\n\x05end_z\x18\x06\x20\
26243    \x01(\x05R\x04endZ\"c\n\x1cSiteRealizationBuildingTower\x12\x15\n\x06roo\
26244    f_z\x18\x01\x20\x01(\x05R\x05roofZ\x12\x14\n\x05round\x18\x02\x20\x01(\
26245    \x08R\x05round\x12\x16\n\x06goblin\x18\x03\x20\x01(\x08R\x06goblin\"\x8d\
26246    \x01\n\x0bTrenchSpoke\x12\x1f\n\x0bmound_start\x18\x01\x20\x01(\x05R\nmo\
26247    undStart\x12!\n\x0ctrench_start\x18\x02\x20\x01(\x05R\x0btrenchStart\x12\
26248    \x1d\n\ntrench_end\x18\x03\x20\x01(\x05R\ttrenchEnd\x12\x1b\n\tmound_end\
26249    \x18\x04\x20\x01(\x05R\x08moundEnd\"\\\n\x1fSiteRealizationBuildingTrenc\
26250    hes\x129\n\x06spokes\x18\x01\x20\x03(\x0b2!.RemoteFortressReader.TrenchS\
26251    pokeR\x06spokes\"\xc7\x03\n\x17SiteRealizationBuilding\x12\x0e\n\x02id\
26252    \x18\x01\x20\x01(\x05R\x02id\x12\x13\n\x05min_x\x18\x03\x20\x01(\x05R\
26253    \x04minX\x12\x13\n\x05min_y\x18\x04\x20\x01(\x05R\x04minY\x12\x13\n\x05m\
26254    ax_x\x18\x05\x20\x01(\x05R\x04maxX\x12\x13\n\x05max_y\x18\x06\x20\x01(\
26255    \x05R\x04maxY\x129\n\x08material\x18\x07\x20\x01(\x0b2\x1d.RemoteFortres\
26256    sReader.MatPairR\x08material\x12N\n\twall_info\x18\x08\x20\x01(\x0b21.Re\
26257    moteFortressReader.SiteRealizationBuildingWallR\x08wallInfo\x12Q\n\ntowe\
26258    r_info\x18\t\x20\x01(\x0b22.RemoteFortressReader.SiteRealizationBuilding\
26259    TowerR\ttowerInfo\x12V\n\x0btrench_info\x18\n\x20\x01(\x0b25.RemoteFortr\
26260    essReader.SiteRealizationBuildingTrenchesR\ntrenchInfo\x12\x12\n\x04type\
26261    \x18\x0b\x20\x01(\x05R\x04type\"\x82\x06\n\nRegionTile\x12\x1c\n\televat\
26262    ion\x18\x01\x20\x01(\x05R\televation\x12\x1a\n\x08rainfall\x18\x02\x20\
26263    \x01(\x05R\x08rainfall\x12\x1e\n\nvegetation\x18\x03\x20\x01(\x05R\nvege\
26264    tation\x12\x20\n\x0btemperature\x18\x04\x20\x01(\x05R\x0btemperature\x12\
26265    \x1a\n\x08evilness\x18\x05\x20\x01(\x05R\x08evilness\x12\x1a\n\x08draina\
26266    ge\x18\x06\x20\x01(\x05R\x08drainage\x12\x1c\n\tvolcanism\x18\x07\x20\
26267    \x01(\x05R\tvolcanism\x12\x1a\n\x08savagery\x18\x08\x20\x01(\x05R\x08sav\
26268    agery\x12\x1a\n\x08salinity\x18\t\x20\x01(\x05R\x08salinity\x12@\n\x0bri\
26269    ver_tiles\x18\n\x20\x01(\x0b2\x1f.RemoteFortressReader.RiverTileR\nriver\
26270    Tiles\x12'\n\x0fwater_elevation\x18\x0b\x20\x01(\x05R\x0ewaterElevation\
26271    \x12H\n\x10surface_material\x18\x0c\x20\x01(\x0b2\x1d.RemoteFortressRead\
26272    er.MatPairR\x0fsurfaceMaterial\x12F\n\x0fplant_materials\x18\r\x20\x03(\
26273    \x0b2\x1d.RemoteFortressReader.MatPairR\x0eplantMaterials\x12K\n\tbuildi\
26274    ngs\x18\x0e\x20\x03(\x0b2-.RemoteFortressReader.SiteRealizationBuildingR\
26275    \tbuildings\x12F\n\x0fstone_materials\x18\x0f\x20\x03(\x0b2\x1d.RemoteFo\
26276    rtressReader.MatPairR\x0estoneMaterials\x12D\n\x0etree_materials\x18\x10\
26277    \x20\x03(\x0b2\x1d.RemoteFortressReader.MatPairR\rtreeMaterials\x12\x12\
26278    \n\x04snow\x18\x11\x20\x01(\x05R\x04snow\"\xa4\x01\n\tRegionMap\x12\x13\
26279    \n\x05map_x\x18\x01\x20\x01(\x05R\x04mapX\x12\x13\n\x05map_y\x18\x02\x20\
26280    \x01(\x05R\x04mapY\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12!\n\
26281    \x0cname_english\x18\x04\x20\x01(\tR\x0bnameEnglish\x126\n\x05tiles\x18\
26282    \x05\x20\x03(\x0b2\x20.RemoteFortressReader.RegionTileR\x05tiles\"\x8d\
26283    \x01\n\nRegionMaps\x12=\n\nworld_maps\x18\x01\x20\x03(\x0b2\x1e.RemoteFo\
26284    rtressReader.WorldMapR\tworldMaps\x12@\n\x0bregion_maps\x18\x02\x20\x03(\
26285    \x0b2\x1f.RemoteFortressReader.RegionMapR\nregionMaps\"\x9f\x01\n\x11Pat\
26286    ternDescriptor\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\x12=\n\x06color\
26287    s\x18\x02\x20\x03(\x0b2%.RemoteFortressReader.ColorDefinitionR\x06colors\
26288    \x12;\n\x07pattern\x18\x03\x20\x01(\x0e2!.RemoteFortressReader.PatternTy\
26289    peR\x07pattern\"\xef\x01\n\x10ColorModifierRaw\x12C\n\x08patterns\x18\
26290    \x01\x20\x03(\x0b2'.RemoteFortressReader.PatternDescriptorR\x08patterns\
26291    \x12\x20\n\x0cbody_part_id\x18\x02\x20\x03(\x05R\nbodyPartId\x12&\n\x0ft\
26292    issue_layer_id\x18\x03\x20\x03(\x05R\rtissueLayerId\x12\x1d\n\nstart_dat\
26293    e\x18\x04\x20\x01(\x05R\tstartDate\x12\x19\n\x08end_date\x18\x05\x20\x01\
26294    (\x05R\x07endDate\x12\x12\n\x04part\x18\x06\x20\x01(\tR\x04part\"\x92\
26295    \x01\n\x10BodyPartLayerRaw\x12\x1d\n\nlayer_name\x18\x01\x20\x01(\tR\tla\
26296    yerName\x12\x1b\n\ttissue_id\x18\x02\x20\x01(\x05R\x08tissueId\x12\x1f\n\
26297    \x0blayer_depth\x18\x03\x20\x01(\x05R\nlayerDepth\x12!\n\x0cbp_modifiers\
26298    \x18\x04\x20\x03(\x05R\x0bbpModifiers\"\xc7\x01\n\x0bBodyPartRaw\x12\x14\
26299    \n\x05token\x18\x01\x20\x01(\tR\x05token\x12\x1a\n\x08category\x18\x02\
26300    \x20\x01(\tR\x08category\x12\x16\n\x06parent\x18\x03\x20\x01(\x05R\x06pa\
26301    rent\x12\x14\n\x05flags\x18\x04\x20\x03(\x08R\x05flags\x12>\n\x06layers\
26302    \x18\x05\x20\x03(\x0b2&.RemoteFortressReader.BodyPartLayerRawR\x06layers\
26303    \x12\x18\n\x07relsize\x18\x06\x20\x01(\x05R\x07relsize\"\\\n\x14BpAppear\
26304    anceModifier\x12\x12\n\x04type\x18\x01\x20\x01(\tR\x04type\x12\x17\n\x07\
26305    mod_min\x18\x02\x20\x01(\x05R\x06modMin\x12\x17\n\x07mod_max\x18\x03\x20\
26306    \x01(\x05R\x06modMax\"\x9e\x01\n\tTissueRaw\x12\x0e\n\x02id\x18\x01\x20\
26307    \x01(\tR\x02id\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x129\n\x08m\
26308    aterial\x18\x03\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08mater\
26309    ial\x122\n\x15subordinate_to_tissue\x18\x04\x20\x01(\tR\x13subordinateTo\
26310    Tissue\"\xb4\x05\n\x08CasteRaw\x12\x14\n\x05index\x18\x01\x20\x01(\x05R\
26311    \x05index\x12\x19\n\x08caste_id\x18\x02\x20\x01(\tR\x07casteId\x12\x1d\n\
26312    \ncaste_name\x18\x03\x20\x03(\tR\tcasteName\x12\x1b\n\tbaby_name\x18\x04\
26313    \x20\x03(\tR\x08babyName\x12\x1d\n\nchild_name\x18\x05\x20\x03(\tR\tchil\
26314    dName\x12\x16\n\x06gender\x18\x06\x20\x01(\x05R\x06gender\x12@\n\nbody_p\
26315    arts\x18\x07\x20\x03(\x0b2!.RemoteFortressReader.BodyPartRawR\tbodyParts\
26316    \x12#\n\rtotal_relsize\x18\x08\x20\x01(\x05R\x0ctotalRelsize\x12H\n\tmod\
26317    ifiers\x18\t\x20\x03(\x0b2*.RemoteFortressReader.BpAppearanceModifierR\t\
26318    modifiers\x12!\n\x0cmodifier_idx\x18\n\x20\x03(\x05R\x0bmodifierIdx\x12\
26319    \x19\n\x08part_idx\x18\x0b\x20\x03(\x05R\x07partIdx\x12\x1b\n\tlayer_idx\
26320    \x18\x0c\x20\x03(\x05R\x08layerIdx\x12f\n\x19body_appearance_modifiers\
26321    \x18\r\x20\x03(\x0b2*.RemoteFortressReader.BpAppearanceModifierR\x17body\
26322    AppearanceModifiers\x12O\n\x0fcolor_modifiers\x18\x0e\x20\x03(\x0b2&.Rem\
26323    oteFortressReader.ColorModifierRawR\x0ecolorModifiers\x12\x20\n\x0bdescr\
26324    iption\x18\x0f\x20\x01(\tR\x0bdescription\x12\x1d\n\nadult_size\x18\x10\
26325    \x20\x01(\x05R\tadultSize\"\xed\x03\n\x0bCreatureRaw\x12\x14\n\x05index\
26326    \x18\x01\x20\x01(\x05R\x05index\x12\x1f\n\x0bcreature_id\x18\x02\x20\x01\
26327    (\tR\ncreatureId\x12\x12\n\x04name\x18\x03\x20\x03(\tR\x04name\x12*\n\
26328    \x11general_baby_name\x18\x04\x20\x03(\tR\x0fgeneralBabyName\x12,\n\x12g\
26329    eneral_child_name\x18\x05\x20\x03(\tR\x10generalChildName\x12#\n\rcreatu\
26330    re_tile\x18\x06\x20\x01(\x05R\x0ccreatureTile\x122\n\x15creature_soldier\
26331    _tile\x18\x07\x20\x01(\x05R\x13creatureSoldierTile\x12;\n\x05color\x18\
26332    \x08\x20\x01(\x0b2%.RemoteFortressReader.ColorDefinitionR\x05color\x12\
26333    \x1c\n\tadultsize\x18\t\x20\x01(\x05R\tadultsize\x124\n\x05caste\x18\n\
26334    \x20\x03(\x0b2\x1e.RemoteFortressReader.CasteRawR\x05caste\x129\n\x07tis\
26335    sues\x18\x0b\x20\x03(\x0b2\x1f.RemoteFortressReader.TissueRawR\x07tissue\
26336    s\x12\x14\n\x05flags\x18\x0c\x20\x03(\x08R\x05flags\"Y\n\x0fCreatureRawL\
26337    ist\x12F\n\rcreature_raws\x18\x01\x20\x03(\x0b2!.RemoteFortressReader.Cr\
26338    eatureRawR\x0ccreatureRaws\"\xe9\x01\n\x04Army\x12\x0e\n\x02id\x18\x01\
26339    \x20\x01(\x05R\x02id\x12\x13\n\x05pos_x\x18\x02\x20\x01(\x05R\x04posX\
26340    \x12\x13\n\x05pos_y\x18\x03\x20\x01(\x05R\x04posY\x12\x13\n\x05pos_z\x18\
26341    \x04\x20\x01(\x05R\x04posZ\x12<\n\x06leader\x18\x05\x20\x01(\x0b2$.Remot\
26342    eFortressReader.UnitDefinitionR\x06leader\x12>\n\x07members\x18\x06\x20\
26343    \x03(\x0b2$.RemoteFortressReader.UnitDefinitionR\x07members\x12\x14\n\
26344    \x05flags\x18\x07\x20\x01(\rR\x05flags\">\n\x08ArmyList\x122\n\x06armies\
26345    \x18\x01\x20\x03(\x0b2\x1a.RemoteFortressReader.ArmyR\x06armies\"\x95\
26346    \x01\n\x0bGrowthPrint\x12\x1a\n\x08priority\x18\x01\x20\x01(\x05R\x08pri\
26347    ority\x12\x14\n\x05color\x18\x02\x20\x01(\x05R\x05color\x12!\n\x0ctiming\
26348    _start\x18\x03\x20\x01(\x05R\x0btimingStart\x12\x1d\n\ntiming_end\x18\
26349    \x04\x20\x01(\x05R\ttimingEnd\x12\x12\n\x04tile\x18\x05\x20\x01(\x05R\
26350    \x04tile\"\x88\x04\n\nTreeGrowth\x12\x14\n\x05index\x18\x01\x20\x01(\x05\
26351    R\x05index\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02id\x12\x12\n\x04name\
26352    \x18\x03\x20\x01(\tR\x04name\x12/\n\x03mat\x18\x04\x20\x01(\x0b2\x1d.Rem\
26353    oteFortressReader.MatPairR\x03mat\x129\n\x06prints\x18\x05\x20\x03(\x0b2\
26354    !.RemoteFortressReader.GrowthPrintR\x06prints\x12!\n\x0ctiming_start\x18\
26355    \x06\x20\x01(\x05R\x0btimingStart\x12\x1d\n\ntiming_end\x18\x07\x20\x01(\
26356    \x05R\ttimingEnd\x12\x14\n\x05twigs\x18\x08\x20\x01(\x08R\x05twigs\x12%\
26357    \n\x0elight_branches\x18\t\x20\x01(\x08R\rlightBranches\x12%\n\x0eheavy_\
26358    branches\x18\n\x20\x01(\x08R\rheavyBranches\x12\x14\n\x05trunk\x18\x0b\
26359    \x20\x01(\x08R\x05trunk\x12\x14\n\x05roots\x18\x0c\x20\x01(\x08R\x05root\
26360    s\x12\x10\n\x03cap\x18\r\x20\x01(\x08R\x03cap\x12\x18\n\x07sapling\x18\
26361    \x0e\x20\x01(\x08R\x07sapling\x12,\n\x12trunk_height_start\x18\x0f\x20\
26362    \x01(\x05R\x10trunkHeightStart\x12(\n\x10trunk_height_end\x18\x10\x20\
26363    \x01(\x05R\x0etrunkHeightEnd\"\x94\x01\n\x08PlantRaw\x12\x14\n\x05index\
26364    \x18\x01\x20\x01(\x05R\x05index\x12\x0e\n\x02id\x18\x02\x20\x01(\tR\x02i\
26365    d\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12:\n\x07growths\x18\
26366    \x04\x20\x03(\x0b2\x20.RemoteFortressReader.TreeGrowthR\x07growths\x12\
26367    \x12\n\x04tile\x18\x05\x20\x01(\x05R\x04tile\"M\n\x0cPlantRawList\x12=\n\
26368    \nplant_raws\x18\x01\x20\x03(\x0b2\x1e.RemoteFortressReader.PlantRawR\tp\
26369    lantRaws\"j\n\nScreenTile\x12\x1c\n\tcharacter\x18\x01\x20\x01(\rR\tchar\
26370    acter\x12\x1e\n\nforeground\x18\x02\x20\x01(\rR\nforeground\x12\x1e\n\nb\
26371    ackground\x18\x03\x20\x01(\rR\nbackground\"u\n\rScreenCapture\x12\x14\n\
26372    \x05width\x18\x01\x20\x01(\rR\x05width\x12\x16\n\x06height\x18\x02\x20\
26373    \x01(\rR\x06height\x126\n\x05tiles\x18\x03\x20\x03(\x0b2\x20.RemoteFortr\
26374    essReader.ScreenTileR\x05tiles\"\xa9\x01\n\rKeyboardEvent\x12\x12\n\x04t\
26375    ype\x18\x01\x20\x01(\rR\x04type\x12\x14\n\x05which\x18\x02\x20\x01(\rR\
26376    \x05which\x12\x14\n\x05state\x18\x03\x20\x01(\rR\x05state\x12\x1a\n\x08s\
26377    cancode\x18\x04\x20\x01(\rR\x08scancode\x12\x10\n\x03sym\x18\x05\x20\x01\
26378    (\rR\x03sym\x12\x10\n\x03mod\x18\x06\x20\x01(\rR\x03mod\x12\x18\n\x07uni\
26379    code\x18\x07\x20\x01(\rR\x07unicode\"\x93\x01\n\nDigCommand\x12J\n\x0bde\
26380    signation\x18\x01\x20\x01(\x0e2(.RemoteFortressReader.TileDigDesignation\
26381    R\x0bdesignation\x129\n\tlocations\x18\x02\x20\x03(\x0b2\x1b.RemoteFortr\
26382    essReader.CoordR\tlocations\"\"\n\nSingleBool\x12\x14\n\x05Value\x18\x01\
26383    \x20\x01(\x08R\x05Value\"\xaf\x01\n\x0bVersionInfo\x124\n\x16dwarf_fortr\
26384    ess_version\x18\x01\x20\x01(\tR\x14dwarfFortressVersion\x12%\n\x0edfhack\
26385    _version\x18\x02\x20\x01(\tR\rdfhackVersion\x12C\n\x1eremote_fortress_re\
26386    ader_version\x18\x03\x20\x01(\tR\x1bremoteFortressReaderVersion\"G\n\x0b\
26387    ListRequest\x12\x1d\n\nlist_start\x18\x01\x20\x01(\x05R\tlistStart\x12\
26388    \x19\n\x08list_end\x18\x02\x20\x01(\x05R\x07listEnd\"\xfd\x02\n\x06Repor\
26389    t\x12\x12\n\x04type\x18\x01\x20\x01(\x05R\x04type\x12\x12\n\x04text\x18\
26390    \x02\x20\x01(\tR\x04text\x12;\n\x05color\x18\x03\x20\x01(\x0b2%.RemoteFo\
26391    rtressReader.ColorDefinitionR\x05color\x12\x1a\n\x08duration\x18\x04\x20\
26392    \x01(\x05R\x08duration\x12\"\n\x0ccontinuation\x18\x05\x20\x01(\x08R\x0c\
26393    continuation\x12\x20\n\x0bunconscious\x18\x06\x20\x01(\x08R\x0bunconscio\
26394    us\x12\"\n\x0cannouncement\x18\x07\x20\x01(\x08R\x0cannouncement\x12!\n\
26395    \x0crepeat_count\x18\x08\x20\x01(\x05R\x0brepeatCount\x12-\n\x03pos\x18\
26396    \t\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos\x12\x0e\n\x02id\
26397    \x18\n\x20\x01(\x05R\x02id\x12\x12\n\x04year\x18\x0b\x20\x01(\x05R\x04ye\
26398    ar\x12\x12\n\x04time\x18\x0c\x20\x01(\x05R\x04time\"@\n\x06Status\x126\n\
26399    \x07reports\x18\x01\x20\x03(\x0b2\x1c.RemoteFortressReader.ReportR\x07re\
26400    ports\"6\n\x10ShapeDescriptior\x12\x0e\n\x02id\x18\x01\x20\x01(\tR\x02id\
26401    \x12\x12\n\x04tile\x18\x02\x20\x01(\x05R\x04tile\"J\n\x08Language\x12>\n\
26402    \x06shapes\x18\x01\x20\x03(\x0b2&.RemoteFortressReader.ShapeDescriptiorR\
26403    \x06shapes\"\xd1\x01\n\x0fItemImprovement\x129\n\x08material\x18\x01\x20\
26404    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08material\x12\x14\n\x05sh\
26405    ape\x18\x03\x20\x01(\x05R\x05shape\x12#\n\rspecific_type\x18\x04\x20\x01\
26406    (\x05R\x0cspecificType\x124\n\x05image\x18\x05\x20\x01(\x0b2\x1e.RemoteF\
26407    ortressReader.ArtImageR\x05image\x12\x12\n\x04type\x18\x06\x20\x01(\x05R\
26408    \x04type\"\xf5\x01\n\x0fArtImageElement\x12\x14\n\x05count\x18\x01\x20\
26409    \x01(\x05R\x05count\x12=\n\x04type\x18\x02\x20\x01(\x0e2).RemoteFortress\
26410    Reader.ArtImageElementTypeR\x04type\x12B\n\rcreature_item\x18\x03\x20\
26411    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x0ccreatureItem\x129\n\x08m\
26412    aterial\x18\x05\x20\x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x08mater\
26413    ial\x12\x0e\n\x02id\x18\x06\x20\x01(\x05R\x02id\"\xbc\x01\n\x10ArtImageP\
26414    roperty\x12\x18\n\x07subject\x18\x01\x20\x01(\x05R\x07subject\x12\x16\n\
26415    \x06object\x18\x02\x20\x01(\x05R\x06object\x126\n\x04verb\x18\x03\x20\
26416    \x01(\x0e2\".RemoteFortressReader.ArtImageVerbR\x04verb\x12>\n\x04type\
26417    \x18\x04\x20\x01(\x0e2*.RemoteFortressReader.ArtImagePropertyTypeR\x04ty\
26418    pe\"\xc4\x01\n\x08ArtImage\x12A\n\x08elements\x18\x01\x20\x03(\x0b2%.Rem\
26419    oteFortressReader.ArtImageElementR\x08elements\x12-\n\x02id\x18\x02\x20\
26420    \x01(\x0b2\x1d.RemoteFortressReader.MatPairR\x02id\x12F\n\nproperties\
26421    \x18\x03\x20\x03(\x0b2&.RemoteFortressReader.ArtImagePropertyR\nproperti\
26422    es\"\x98\x03\n\tEngraving\x12-\n\x03pos\x18\x01\x20\x01(\x0b2\x1b.Remote\
26423    FortressReader.CoordR\x03pos\x12\x18\n\x07quality\x18\x02\x20\x01(\x05R\
26424    \x07quality\x12\x12\n\x04tile\x18\x03\x20\x01(\x05R\x04tile\x124\n\x05im\
26425    age\x18\x04\x20\x01(\x0b2\x1e.RemoteFortressReader.ArtImageR\x05image\
26426    \x12\x14\n\x05floor\x18\x05\x20\x01(\x08R\x05floor\x12\x12\n\x04west\x18\
26427    \x06\x20\x01(\x08R\x04west\x12\x12\n\x04east\x18\x07\x20\x01(\x08R\x04ea\
26428    st\x12\x14\n\x05north\x18\x08\x20\x01(\x08R\x05north\x12\x14\n\x05south\
26429    \x18\t\x20\x01(\x08R\x05south\x12\x16\n\x06hidden\x18\n\x20\x01(\x08R\
26430    \x06hidden\x12\x1c\n\tnorthwest\x18\x0b\x20\x01(\x08R\tnorthwest\x12\x1c\
26431    \n\tnortheast\x18\x0c\x20\x01(\x08R\tnortheast\x12\x1c\n\tsouthwest\x18\
26432    \r\x20\x01(\x08R\tsouthwest\x12\x1c\n\tsoutheast\x18\x0e\x20\x01(\x08R\t\
26433    southeast\"\x8b\x03\n\x08FlowInfo\x12\x14\n\x05index\x18\x01\x20\x01(\
26434    \x05R\x05index\x122\n\x04type\x18\x02\x20\x01(\x0e2\x1e.RemoteFortressRe\
26435    ader.FlowTypeR\x04type\x12\x18\n\x07density\x18\x03\x20\x01(\x05R\x07den\
26436    sity\x12-\n\x03pos\x18\x04\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\
26437    \x03pos\x12/\n\x04dest\x18\x05\x20\x01(\x0b2\x1b.RemoteFortressReader.Co\
26438    ordR\x04dest\x12\x1c\n\texpanding\x18\x06\x20\x01(\x08R\texpanding\x12\
26439    \x14\n\x05reuse\x18\x07\x20\x01(\x08R\x05reuse\x12\x19\n\x08guide_id\x18\
26440    \x08\x20\x01(\x05R\x07guideId\x129\n\x08material\x18\t\x20\x01(\x0b2\x1d\
26441    .RemoteFortressReader.MatPairR\x08material\x121\n\x04item\x18\n\x20\x01(\
26442    \x0b2\x1d.RemoteFortressReader.MatPairR\x04item\"f\n\x04Wave\x12/\n\x04d\
26443    est\x18\x01\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x04dest\x12-\n\
26444    \x03pos\x18\x02\x20\x01(\x0b2\x1b.RemoteFortressReader.CoordR\x03pos*\
26445    \xba\x02\n\rTiletypeShape\x12\x15\n\x08NO_SHAPE\x10\xff\xff\xff\xff\xff\
26446    \xff\xff\xff\xff\x01\x12\t\n\x05EMPTY\x10\0\x12\t\n\x05FLOOR\x10\x01\x12\
26447    \x0b\n\x07BOULDER\x10\x02\x12\x0b\n\x07PEBBLES\x10\x03\x12\x08\n\x04WALL\
26448    \x10\x04\x12\x11\n\rFORTIFICATION\x10\x05\x12\x0c\n\x08STAIR_UP\x10\x06\
26449    \x12\x0e\n\nSTAIR_DOWN\x10\x07\x12\x10\n\x0cSTAIR_UPDOWN\x10\x08\x12\x08\
26450    \n\x04RAMP\x10\t\x12\x0c\n\x08RAMP_TOP\x10\n\x12\r\n\tBROOK_BED\x10\x0b\
26451    \x12\r\n\tBROOK_TOP\x10\x0c\x12\x0e\n\nTREE_SHAPE\x10\r\x12\x0b\n\x07SAP\
26452    LING\x10\x0e\x12\t\n\x05SHRUB\x10\x0f\x12\x0f\n\x0bENDLESS_PIT\x10\x10\
26453    \x12\n\n\x06BRANCH\x10\x11\x12\x10\n\x0cTRUNK_BRANCH\x10\x12\x12\x08\n\
26454    \x04TWIG\x10\x13*\xc4\x01\n\x0fTiletypeSpecial\x12\x17\n\nNO_SPECIAL\x10\
26455    \xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\n\n\x06NORMAL\x10\0\x12\x10\
26456    \n\x0cRIVER_SOURCE\x10\x01\x12\r\n\tWATERFALL\x10\x02\x12\n\n\x06SMOOTH\
26457    \x10\x03\x12\x0c\n\x08FURROWED\x10\x04\x12\x07\n\x03WET\x10\x05\x12\x08\
26458    \n\x04DEAD\x10\x06\x12\n\n\x06WORN_1\x10\x07\x12\n\n\x06WORN_2\x10\x08\
26459    \x12\n\n\x06WORN_3\x10\t\x12\t\n\x05TRACK\x10\n\x12\x0f\n\x0bSMOOTH_DEAD\
26460    \x10\x0b*\x8a\x03\n\x10TiletypeMaterial\x12\x18\n\x0bNO_MATERIAL\x10\xff\
26461    \xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x07\n\x03AIR\x10\0\x12\x08\n\
26462    \x04SOIL\x10\x01\x12\t\n\x05STONE\x10\x02\x12\x0b\n\x07FEATURE\x10\x03\
26463    \x12\x0e\n\nLAVA_STONE\x10\x04\x12\x0b\n\x07MINERAL\x10\x05\x12\x11\n\rF\
26464    ROZEN_LIQUID\x10\x06\x12\x10\n\x0cCONSTRUCTION\x10\x07\x12\x0f\n\x0bGRAS\
26465    S_LIGHT\x10\x08\x12\x0e\n\nGRASS_DARK\x10\t\x12\r\n\tGRASS_DRY\x10\n\x12\
26466    \x0e\n\nGRASS_DEAD\x10\x0b\x12\t\n\x05PLANT\x10\x0c\x12\x07\n\x03HFS\x10\
26467    \r\x12\x0c\n\x08CAMPFIRE\x10\x0e\x12\x08\n\x04FIRE\x10\x0f\x12\t\n\x05AS\
26468    HES\x10\x10\x12\t\n\x05MAGMA\x10\x11\x12\r\n\tDRIFTWOOD\x10\x12\x12\x08\
26469    \n\x04POOL\x10\x13\x12\t\n\x05BROOK\x10\x14\x12\t\n\x05RIVER\x10\x15\x12\
26470    \x08\n\x04ROOT\x10\x16\x12\x11\n\rTREE_MATERIAL\x10\x17\x12\x0c\n\x08MUS\
26471    HROOM\x10\x18\x12\x13\n\x0fUNDERWORLD_GATE\x10\x19*V\n\x0fTiletypeVarian\
26472    t\x12\x17\n\nNO_VARIANT\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\
26473    \t\n\x05VAR_1\x10\0\x12\t\n\x05VAR_2\x10\x01\x12\t\n\x05VAR_3\x10\x02\
26474    \x12\t\n\x05VAR_4\x10\x03*J\n\nWorldPoles\x12\x0c\n\x08NO_POLES\x10\0\
26475    \x12\x0e\n\nNORTH_POLE\x10\x01\x12\x0e\n\nSOUTH_POLE\x10\x02\x12\x0e\n\n\
26476    BOTH_POLES\x10\x03*G\n\x11BuildingDirection\x12\t\n\x05NORTH\x10\0\x12\
26477    \x08\n\x04EAST\x10\x01\x12\t\n\x05SOUTH\x10\x02\x12\x08\n\x04WEST\x10\
26478    \x03\x12\x08\n\x04NONE\x10\x04*\x8d\x01\n\x12TileDigDesignation\x12\n\n\
26479    \x06NO_DIG\x10\0\x12\x0f\n\x0bDEFAULT_DIG\x10\x01\x12\x15\n\x11UP_DOWN_S\
26480    TAIR_DIG\x10\x02\x12\x0f\n\x0bCHANNEL_DIG\x10\x03\x12\x0c\n\x08RAMP_DIG\
26481    \x10\x04\x12\x12\n\x0eDOWN_STAIR_DIG\x10\x05\x12\x10\n\x0cUP_STAIR_DIG\
26482    \x10\x06*u\n\tHairStyle\x12\x14\n\x07UNKEMPT\x10\xff\xff\xff\xff\xff\xff\
26483    \xff\xff\xff\x01\x12\x11\n\rNEATLY_COMBED\x10\0\x12\x0b\n\x07BRAIDED\x10\
26484    \x01\x12\x10\n\x0cDOUBLE_BRAID\x10\x02\x12\x0e\n\nPONY_TAILS\x10\x03\x12\
26485    \x10\n\x0cCLEAN_SHAVEN\x10\x04*\x9c\x01\n\rInventoryMode\x12\n\n\x06Haul\
26486    ed\x10\0\x12\n\n\x06Weapon\x10\x01\x12\x08\n\x04Worn\x10\x02\x12\x0c\n\
26487    \x08Piercing\x10\x03\x12\t\n\x05Flask\x10\x04\x12\x11\n\rWrappedAround\
26488    \x10\x05\x12\x0b\n\x07StuckIn\x10\x06\x12\x0b\n\x07InMouth\x10\x07\x12\
26489    \x07\n\x03Pet\x10\x08\x12\x0c\n\x08SewnInto\x10\t\x12\x0c\n\x08Strapped\
26490    \x10\n*O\n\nArmorLayer\x12\x0f\n\x0bLAYER_UNDER\x10\0\x12\x0e\n\nLAYER_O\
26491    VER\x10\x01\x12\x0f\n\x0bLAYER_ARMOR\x10\x02\x12\x0f\n\x0bLAYER_COVER\
26492    \x10\x03*Q\n\x0bMatterState\x12\t\n\x05Solid\x10\0\x12\n\n\x06Liquid\x10\
26493    \x01\x12\x07\n\x03Gas\x10\x02\x12\n\n\x06Powder\x10\x03\x12\t\n\x05Paste\
26494    \x10\x04\x12\x0b\n\x07Pressed\x10\x05*O\n\tFrontType\x12\x0e\n\nFRONT_NO\
26495    NE\x10\0\x12\x0e\n\nFRONT_WARM\x10\x01\x12\x0e\n\nFRONT_COLD\x10\x02\x12\
26496    \x12\n\x0eFRONT_OCCLUDED\x10\x03*Z\n\x0bCumulusType\x12\x10\n\x0cCUMULUS\
26497    _NONE\x10\0\x12\x12\n\x0eCUMULUS_MEDIUM\x10\x01\x12\x11\n\rCUMULUS_MULTI\
26498    \x10\x02\x12\x12\n\x0eCUMULUS_NIMBUS\x10\x03*Y\n\x0bStratusType\x12\x10\
26499    \n\x0cSTRATUS_NONE\x10\0\x12\x10\n\x0cSTRATUS_ALTO\x10\x01\x12\x12\n\x0e\
26500    STRATUS_PROPER\x10\x02\x12\x12\n\x0eSTRATUS_NIMBUS\x10\x03*D\n\x07FogTyp\
26501    e\x12\x0c\n\x08FOG_NONE\x10\0\x12\x0c\n\x08FOG_MIST\x10\x01\x12\x0e\n\nF\
26502    OG_NORMAL\x10\x02\x12\r\n\tF0G_THICK\x10\x03*]\n\x0bPatternType\x12\x0c\
26503    \n\x08MONOTONE\x10\0\x12\x0b\n\x07STRIPES\x10\x01\x12\x0c\n\x08IRIS_EYE\
26504    \x10\x02\x12\t\n\x05SPOTS\x10\x03\x12\r\n\tPUPIL_EYE\x10\x04\x12\x0b\n\
26505    \x07MOTTLED\x10\x05*k\n\x13ArtImageElementType\x12\x12\n\x0eIMAGE_CREATU\
26506    RE\x10\0\x12\x0f\n\x0bIMAGE_PLANT\x10\x01\x12\x0e\n\nIMAGE_TREE\x10\x02\
26507    \x12\x0f\n\x0bIMAGE_SHAPE\x10\x03\x12\x0e\n\nIMAGE_ITEM\x10\x04*B\n\x14A\
26508    rtImagePropertyType\x12\x13\n\x0fTRANSITIVE_VERB\x10\0\x12\x15\n\x11INTR\
26509    ANSITIVE_VERB\x10\x01*\x95\x08\n\x0cArtImageVerb\x12\x12\n\x0eVERB_WITHE\
26510    RING\x10\0\x12\x15\n\x11VERB_SURROUNDEDBY\x10\x01\x12\x13\n\x0fVERB_MASS\
26511    ACRING\x10\x02\x12\x11\n\rVERB_FIGHTING\x10\x03\x12\x11\n\rVERB_LABORING\
26512    \x10\x04\x12\x11\n\rVERB_GREETING\x10\x05\x12\x11\n\rVERB_REFUSING\x10\
26513    \x06\x12\x11\n\rVERB_SPEAKING\x10\x07\x12\x12\n\x0eVERB_EMBRACING\x10\
26514    \x08\x12\x15\n\x11VERB_STRIKINGDOWN\x10\t\x12\x15\n\x11VERB_MENACINGPOSE\
26515    \x10\n\x12\x12\n\x0eVERB_TRAVELING\x10\x0b\x12\x10\n\x0cVERB_RAISING\x10\
26516    \x0c\x12\x0f\n\x0bVERB_HIDING\x10\r\x12\x18\n\x14VERB_LOOKINGCONFUSED\
26517    \x10\x0e\x12\x19\n\x15VERB_LOOKINGTERRIFIED\x10\x0f\x12\x12\n\x0eVERB_DE\
26518    VOURING\x10\x10\x12\x11\n\rVERB_ADMIRING\x10\x11\x12\x10\n\x0cVERB_BURNI\
26519    NG\x10\x12\x12\x10\n\x0cVERB_WEEPING\x10\x13\x12\x18\n\x14VERB_LOOKINGDE\
26520    JECTED\x10\x14\x12\x11\n\rVERB_CRINGING\x10\x15\x12\x12\n\x0eVERB_SCREAM\
26521    ING\x10\x16\x12\x1a\n\x16VERB_SUBMISSIVEGESTURE\x10\x17\x12\x16\n\x12VER\
26522    B_FETALPOSITION\x10\x18\x12\x1a\n\x16VERB_SMEAREDINTOSPIRAL\x10\x19\x12\
26523    \x10\n\x0cVERB_FALLING\x10\x1a\x12\r\n\tVERB_DEAD\x10\x1b\x12\x11\n\rVER\
26524    B_LAUGHING\x10\x1c\x12\x18\n\x14VERB_LOOKINGOFFENDED\x10\x1d\x12\x12\n\
26525    \x0eVERB_BEINGSHOT\x10\x1e\x12\x19\n\x15VERB_PLAINTIVEGESTURE\x10\x1f\
26526    \x12\x10\n\x0cVERB_MELTING\x10\x20\x12\x11\n\rVERB_SHOOTING\x10!\x12\x12\
26527    \n\x0eVERB_TORTURING\x10\"\x12\x1e\n\x1aVERB_COMMITTINGDEPRAVEDACT\x10#\
26528    \x12\x10\n\x0cVERB_PRAYING\x10$\x12\x16\n\x12VERB_CONTEMPLATING\x10%\x12\
26529    \x10\n\x0cVERB_COOKING\x10&\x12\x12\n\x0eVERB_ENGRAVING\x10'\x12\x14\n\
26530    \x10VERB_PROSTRATING\x10(\x12\x12\n\x0eVERB_SUFFERING\x10)\x12\x15\n\x11\
26531    VERB_BEINGIMPALED\x10*\x12\x17\n\x13VERB_BEINGCONTORTED\x10+\x12\x14\n\
26532    \x10VERB_BEINGFLAYED\x10,\x12\x14\n\x10VERB_HANGINGFROM\x10-\x12\x17\n\
26533    \x13VERB_BEINGMUTILATED\x10.\x12\x17\n\x13VERB_TRIUMPHANTPOSE\x10/*\xe0\
26534    \x01\n\x08FlowType\x12\n\n\x06Miasma\x10\0\x12\t\n\x05Steam\x10\x01\x12\
26535    \x08\n\x04Mist\x10\x02\x12\x10\n\x0cMaterialDust\x10\x03\x12\r\n\tMagmaM\
26536    ist\x10\x04\x12\t\n\x05Smoke\x10\x05\x12\x0e\n\nDragonfire\x10\x06\x12\
26537    \x08\n\x04Fire\x10\x07\x12\x07\n\x03Web\x10\x08\x12\x0f\n\x0bMaterialGas\
26538    \x10\t\x12\x11\n\rMaterialVapor\x10\n\x12\r\n\tOceanWave\x10\x0b\x12\x0b\
26539    \n\x07SeaFoam\x10\x0c\x12\r\n\tItemCloud\x10\r\x12\x15\n\x08CampFire\x10\
26540    \xff\xff\xff\xff\xff\xff\xff\xff\xff\x01B\x02H\x03b\x06proto2\
26541";
26542
26543/// `FileDescriptorProto` object which was a source for this generated file
26544fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
26545    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
26546    file_descriptor_proto_lazy.get(|| {
26547        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
26548    })
26549}
26550
26551/// `FileDescriptor` object which allows dynamic access to files
26552pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
26553    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
26554    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
26555    file_descriptor.get(|| {
26556        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
26557            let mut deps = ::std::vec::Vec::with_capacity(1);
26558            deps.push(super::ItemdefInstrument::file_descriptor().clone());
26559            let mut messages = ::std::vec::Vec::with_capacity(79);
26560            messages.push(Coord::generated_message_descriptor_data());
26561            messages.push(Tiletype::generated_message_descriptor_data());
26562            messages.push(TiletypeList::generated_message_descriptor_data());
26563            messages.push(BuildingExtents::generated_message_descriptor_data());
26564            messages.push(BuildingItem::generated_message_descriptor_data());
26565            messages.push(BuildingInstance::generated_message_descriptor_data());
26566            messages.push(RiverEdge::generated_message_descriptor_data());
26567            messages.push(RiverTile::generated_message_descriptor_data());
26568            messages.push(Spatter::generated_message_descriptor_data());
26569            messages.push(SpatterPile::generated_message_descriptor_data());
26570            messages.push(Item::generated_message_descriptor_data());
26571            messages.push(PlantTile::generated_message_descriptor_data());
26572            messages.push(TreeInfo::generated_message_descriptor_data());
26573            messages.push(PlantInstance::generated_message_descriptor_data());
26574            messages.push(MapBlock::generated_message_descriptor_data());
26575            messages.push(MatPair::generated_message_descriptor_data());
26576            messages.push(ColorDefinition::generated_message_descriptor_data());
26577            messages.push(MaterialDefinition::generated_message_descriptor_data());
26578            messages.push(BuildingType::generated_message_descriptor_data());
26579            messages.push(BuildingDefinition::generated_message_descriptor_data());
26580            messages.push(BuildingList::generated_message_descriptor_data());
26581            messages.push(MaterialList::generated_message_descriptor_data());
26582            messages.push(Hair::generated_message_descriptor_data());
26583            messages.push(BodySizeInfo::generated_message_descriptor_data());
26584            messages.push(UnitAppearance::generated_message_descriptor_data());
26585            messages.push(InventoryItem::generated_message_descriptor_data());
26586            messages.push(WoundPart::generated_message_descriptor_data());
26587            messages.push(UnitWound::generated_message_descriptor_data());
26588            messages.push(UnitDefinition::generated_message_descriptor_data());
26589            messages.push(UnitList::generated_message_descriptor_data());
26590            messages.push(BlockRequest::generated_message_descriptor_data());
26591            messages.push(BlockList::generated_message_descriptor_data());
26592            messages.push(PlantDef::generated_message_descriptor_data());
26593            messages.push(PlantList::generated_message_descriptor_data());
26594            messages.push(ViewInfo::generated_message_descriptor_data());
26595            messages.push(MapInfo::generated_message_descriptor_data());
26596            messages.push(Cloud::generated_message_descriptor_data());
26597            messages.push(WorldMap::generated_message_descriptor_data());
26598            messages.push(SiteRealizationBuildingWall::generated_message_descriptor_data());
26599            messages.push(SiteRealizationBuildingTower::generated_message_descriptor_data());
26600            messages.push(TrenchSpoke::generated_message_descriptor_data());
26601            messages.push(SiteRealizationBuildingTrenches::generated_message_descriptor_data());
26602            messages.push(SiteRealizationBuilding::generated_message_descriptor_data());
26603            messages.push(RegionTile::generated_message_descriptor_data());
26604            messages.push(RegionMap::generated_message_descriptor_data());
26605            messages.push(RegionMaps::generated_message_descriptor_data());
26606            messages.push(PatternDescriptor::generated_message_descriptor_data());
26607            messages.push(ColorModifierRaw::generated_message_descriptor_data());
26608            messages.push(BodyPartLayerRaw::generated_message_descriptor_data());
26609            messages.push(BodyPartRaw::generated_message_descriptor_data());
26610            messages.push(BpAppearanceModifier::generated_message_descriptor_data());
26611            messages.push(TissueRaw::generated_message_descriptor_data());
26612            messages.push(CasteRaw::generated_message_descriptor_data());
26613            messages.push(CreatureRaw::generated_message_descriptor_data());
26614            messages.push(CreatureRawList::generated_message_descriptor_data());
26615            messages.push(Army::generated_message_descriptor_data());
26616            messages.push(ArmyList::generated_message_descriptor_data());
26617            messages.push(GrowthPrint::generated_message_descriptor_data());
26618            messages.push(TreeGrowth::generated_message_descriptor_data());
26619            messages.push(PlantRaw::generated_message_descriptor_data());
26620            messages.push(PlantRawList::generated_message_descriptor_data());
26621            messages.push(ScreenTile::generated_message_descriptor_data());
26622            messages.push(ScreenCapture::generated_message_descriptor_data());
26623            messages.push(KeyboardEvent::generated_message_descriptor_data());
26624            messages.push(DigCommand::generated_message_descriptor_data());
26625            messages.push(SingleBool::generated_message_descriptor_data());
26626            messages.push(VersionInfo::generated_message_descriptor_data());
26627            messages.push(ListRequest::generated_message_descriptor_data());
26628            messages.push(Report::generated_message_descriptor_data());
26629            messages.push(Status::generated_message_descriptor_data());
26630            messages.push(ShapeDescriptior::generated_message_descriptor_data());
26631            messages.push(Language::generated_message_descriptor_data());
26632            messages.push(ItemImprovement::generated_message_descriptor_data());
26633            messages.push(ArtImageElement::generated_message_descriptor_data());
26634            messages.push(ArtImageProperty::generated_message_descriptor_data());
26635            messages.push(ArtImage::generated_message_descriptor_data());
26636            messages.push(Engraving::generated_message_descriptor_data());
26637            messages.push(FlowInfo::generated_message_descriptor_data());
26638            messages.push(Wave::generated_message_descriptor_data());
26639            let mut enums = ::std::vec::Vec::with_capacity(20);
26640            enums.push(TiletypeShape::generated_enum_descriptor_data());
26641            enums.push(TiletypeSpecial::generated_enum_descriptor_data());
26642            enums.push(TiletypeMaterial::generated_enum_descriptor_data());
26643            enums.push(TiletypeVariant::generated_enum_descriptor_data());
26644            enums.push(WorldPoles::generated_enum_descriptor_data());
26645            enums.push(BuildingDirection::generated_enum_descriptor_data());
26646            enums.push(TileDigDesignation::generated_enum_descriptor_data());
26647            enums.push(HairStyle::generated_enum_descriptor_data());
26648            enums.push(InventoryMode::generated_enum_descriptor_data());
26649            enums.push(ArmorLayer::generated_enum_descriptor_data());
26650            enums.push(MatterState::generated_enum_descriptor_data());
26651            enums.push(FrontType::generated_enum_descriptor_data());
26652            enums.push(CumulusType::generated_enum_descriptor_data());
26653            enums.push(StratusType::generated_enum_descriptor_data());
26654            enums.push(FogType::generated_enum_descriptor_data());
26655            enums.push(PatternType::generated_enum_descriptor_data());
26656            enums.push(ArtImageElementType::generated_enum_descriptor_data());
26657            enums.push(ArtImagePropertyType::generated_enum_descriptor_data());
26658            enums.push(ArtImageVerb::generated_enum_descriptor_data());
26659            enums.push(FlowType::generated_enum_descriptor_data());
26660            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
26661                file_descriptor_proto(),
26662                deps,
26663                messages,
26664                enums,
26665            )
26666        });
26667        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
26668    })
26669}